appointment_weapp/pages/index/indexInfo.vue

600 lines
14 KiB
Vue

<template>
<view class="index">
<!-- <navbar :Background='Background' :navtitle='navtitle' :navMethodcan='1' :navboxshow="navboxshow"
@fatherMethod='fatherMethod'>
</navbar> -->
<image class="index_top_imge" :src="list.store.background" mode="aspectFill"></image>
<view class="index_box">
<view class="oneindex_box">
<view class="oneindex_box_image">
<image :src="list.store.avatar" mode="aspectFill"></image>
</view>
<view class="oneindex_box_text flex-start">
<view class="oneindex_box_text_one">
{{list.store.title}}
</view>
<view class="oneindex_box_text_tow flex-start">
<u-rate :count="count" v-model="list.store.score" readonly active-color="#f1cb66"
inactive-color="#F1CB66"></u-rate>
<text class="oneindex_box_text_towtext">{{list.store.score}}.0</text>
</view>
</view>
<view class="towindex_box_text flex-between">
<view class="towindex_box_text_one">
营业时间:{{list.store.b_hours}}
</view>
<view class="towindex_box_text_tow flex-start" @click="mobilemobile(list.store.mobile)">
<u-icon name="phone-fill" color="#2ca248" size="20"></u-icon>
<text>联系商家</text>
</view>
</view>
<view class="towindex_box_dw flex-start" @click="openmap">
<image src="@/static/positioning.png" mode="aspectFill"></image>
<text style="margin-left: 12rpx;">{{list.store.address}}</text>
</view>
<view class="towindex_box_bouttn flex-start">
<text v-for="(item,index) in list.store.label" :key="index">{{item}}</text>
</view>
</view>
<view class="towindextow" @click="toworder()" v-if="list.is_balance_vip == 0">
<image :src="list.vip_img" mode="aspectFill"></image>
</view>
<view class="thereindexone flex-between">
<view class="thereindexone_item flex-colum" v-for="(item,indexs) in list.store_type" :key="indexs"
@click="clickthereindexone(item.id)">
<image :src="item.img" mode="aspectFill"></image>
<text>{{item.name}}</text>
</view>
</view>
<view class="fourindexone">
<view class="fourindexone_one flex-center">
<text class="fourindexone_one_o"></text>
<text class="fourindexone_one-text">预约服务</text>
<text class="fourindexone_one_T"></text>
</view>
<view class="fourindexone_box flex-colum" v-for="(item,index) in list.store_service" :key="index"
@click="eeInfo(item)">
<view class="fourindexone_item flex-start">
<image class="fourindexone_itemimage" :src="item.img" mode="aspectFill"></image>
<view class="fourindexone_itemview flex-colum-start">
<view class="fourindexone_itemview_one">
{{item.title}}
</view>
<view class="fourindexone_itemview_tow">
{{item.describe}}
</view>
<view class="fourindexone_itemview_there flex-start">
<view class="fourindexone_itemview_there_text">
<text>¥</text>{{item.price}}
</view>
<view class="fourindexone_itemview_there_text_x">
¥{{item.y_price}}
</view>
</view>
</view>
<view class="fourindexone_item_there">
立即预约
</view>
</view>
</view>
</view>
<view class="fiveindexone">
<view class="fiveindexonehtml" v-html="list.describe">
</view>
<view class="sixindex" @click="clickthereindexone(0)">
立马预约服务
</view>
</view>
</view>
<bottombbar :valuebbar='1'></bottombbar>
</view>
</template>
<script>
import navbar from '@/components/navbar.vue'
import bottombbar from '@/components/bottombbar.vue'
export default {
components: {
navbar,
bottombbar
},
data() {
return {
navtitle: '', //名称
navboxshow: '3', //显示
Background: '#fff',
count: 5,
value: 2,
list: {}
}
},
async onLoad(e) {
if (e) {
uni.cache.set('store_id', e.scene) // 判断显示哪家的作品
}
await this.$onLaunched
// uni.reLaunch({
// url: '/pages/index/components/hairdressing'
// })
this.indexappclassindex()
},
methods: {
async userlogin() { //登录
let res = await this.api.userlogin({
code: uni.cache.get('weixincode'),
// #ifdef H5
code: '0c3KOzFa1lkuMF0enAHa1Eu2xG1KOzFJ'
// #endif
})
try {
if (res) {
uni.cache.set('loginuser', res);
this.positionindex()
} else {
uni.cache.set('loginuser', 0);
}
} catch (e) {
//TODO handle the exception
}
},
fatherMethod() {
uni.cache.set('details_id', '')
uni.cache.set('store_id', '')
uni.reLaunch({
url: '/pages/index/index'
});
},
async toworder() { //会员卡
let res = await this.api.userreceivebalancecar({
store_id: uni.cache.get('store_id') // 判断显示哪家的作品
})
uni.showToast({
title: '领取成功',
icon: 'none'
});
setTimeout(() => {
uni.pro.navigateTo('my/member/index')
}, 1500);
},
openmap() { //打开地图
uni.openLocation({
latitude: Number(this.list.store.lat),
longitude: Number(this.list.store.lng),
name: this.list.store.title,
address: this.list.store.address,
success: (res) => {
console.log('success');
},
fail: (res) => {
console.log(res)
}
})
},
eeInfo(e) { //查看订单详情
uni.pro.navigateTo('order/orderInfo', {
id: e.id,
})
},
clickthereindexone(e) {
uni.pro.navigateTo('order/index', {
id: e
})
},
mobilemobile(e) { //打电话
uni.makePhoneCall({
phoneNumber: e //仅为示例
});
},
async indexappclassindex() { //店铺详情
let res = await this.api.indexappclassindex({
store_id: uni.cache.get('store_id')
})
try {
if (res) {
console.log(res)
this.list = res
uni.cache.set('store_id', res.store.id) // 返回的id
if (uni.cache.get('store_id')) {
this.$store.dispatch("actionsclassification");
}
uni.setNavigationBarTitle({
title: res.store.title
});
this.list.describe = res.describe.replace(/\<img/g,
'<img style="max-width:100%;height:auto" ');
}
} catch (e) {
//TODO handle the exception
}
},
}
}
</script>
<style lang="scss">
page {
background: #FFFFFF;
}
.index {
.index_top_imge {
width: 100%;
height: 448rpx;
z-index: 98;
}
.index_box {
position: relative;
z-index: 99;
background: #FFFFFF;
border-radius: 26rpx 26rpx 0px 0px;
.oneindex_box {
position: relative;
width: 100%;
padding: 44rpx 28rpx;
.oneindex_box_image {
position: absolute;
left: 28rpx;
top: -28rpx;
width: 108rpx;
height: 108rpx;
image {
border-radius: 20rpx;
width: 100%;
height: 100%;
}
}
.oneindex_box_text {
margin-left: 140rpx;
.oneindex_box_text_one {
font-size: 32rpx;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #333333;
}
.oneindex_box_text_tow {
.oneindex_box_text_towtext {
font-size: 24rpx;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #F1CB66;
}
}
}
.towindex_box_text {
margin-top: 32rpx;
.towindex_box_text_one {
font-size: 28rpx;
font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
font-weight: normal;
color: #333333;
}
.towindex_box_text_tow {
font-size: 28rpx;
font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
font-weight: normal;
color: #333333;
}
}
.towindex_box_dw {
image {
width: 25.37rpx;
height: 33.02rpx;
}
margin-top: 24rpx;
font-size: 28rpx;
font-family: Source Han Sans CN-Regular,
Source Han Sans CN;
font-weight: 400;
color: #666666;
}
.towindex_box_bouttn {
margin-top: 32rpx;
text:nth-child(1) {
margin-left: 0 !important;
}
text {
margin-left: 16rpx;
padding: 8rpx 14rpx;
background: #F7F7F7;
border-radius: 8rpx;
font-size: 24rpx;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #999999;
}
}
}
.towindextow {
padding: 32rpx;
border-top: 16rpx solid #F7F7F7;
border-bottom: 16rpx solid #F7F7F7;
background: #FFFFFF;
image {
width: 100%;
height: 150rpx;
}
}
.thereindexone {
padding: 32rpx 28rpx;
.thereindexone_item {
image {
width: 96rpx;
height: 96rpx;
}
text {
margin-top: 16rpx;
font-size: 28rpx;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #1A1A1A;
}
}
}
.fourindexone {
padding: 32rpx 28rpx;
.fourindexone_one {
font-size: 32rpx;
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
font-weight: normal;
color: #1A1A1A;
.fourindexone_one_o {
display: inline-block;
width: 34rpx;
height: 4rpx;
background: linear-gradient(94deg, rgba(255, 255, 255, 0) 0%, #373746 100%);
border-radius: 4rpx;
}
.fourindexone_one-text {
padding: 0 10rpx;
}
.fourindexone_one_T {
display: inline-block;
width: 34rpx;
height: 4rpx;
background: linear-gradient(266deg, rgba(255, 255, 255, 0) 0%, #373746 100%);
border-radius: 4rpx;
}
}
.fourindexone_box {
.fourindexone_item {
position: relative;
width: 100%;
padding: 32rpx 0;
border-bottom: 1rpx dashed #F7F7F7;
.fourindexone_itemimage {
width: 164rpx;
height: 164rpx;
border-radius: 16rpx;
}
.fourindexone_item_there {
position: absolute;
right: 0;
bottom: 32rpx;
padding: 16rpx 22rpx;
font-size: 24rpx;
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
font-weight: normal;
color: #FFFFFF;
background: linear-gradient(180deg, #A3A7D5 0%, #414154 100%);
border-radius: 8rpx;
}
.fourindexone_itemview {
height: 164rpx;
justify-content: space-evenly;
margin-left: 24rpx;
.fourindexone_itemview_one {
width: 300rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 32rpx;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #1A1A1A;
}
.fourindexone_itemview_tow {
width: 300rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 24rpx;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #666666;
}
.fourindexone_itemview_there {
.fourindexone_itemview_there_text {
font-size: 34rpx;
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
font-weight: normal;
color: #FC5F69;
text {
font-size: 24rpx;
}
}
.fourindexone_itemview_there_text_x {
margin-left: 12rpx;
text-decoration: line-through;
font-size: 20rpx;
font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
font-weight: normal;
color: #999999;
}
}
}
}
}
}
.fiveindexone {
// padding: 32rpx 28rpx;
width: 100%;
// background: linear-gradient(309deg, #FFFFFF 0%, #1A1A1A 100%);
// border-radius: 32rpx 32rpx 0px 0px;
.fiveindexonehtml {
width: 100%;
/deep/ img {
width: 100%;
}
}
.fiveindexone_one {
.fiveindexone_oneimage {
width: 28rpx;
height: 28rpx;
}
.fiveindexone_one_text {
margin-left: 12rpx;
font-size: 32rpx;
font-family: SourceHanSansCN-Bold-, SourceHanSansCN-Bold;
font-weight: normal;
color: #FFFFFF;
}
}
.fiveindextow {
padding: 28rpx;
margin-top: 32rpx;
width: 100%;
background: rgba(255, 255, 255, 0.2);
border-radius: 18rpx;
.fiveindextowitem:nth-child(1) {
margin-top: 0;
}
.fiveindextowitem {
margin-top: 32rpx;
width: 100%;
view {
width: 33%;
font-size: 32rpx;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #FFFFFF;
}
}
}
.fiveindexthere {
overflow-x: scroll;
flex-wrap: nowrap;
.fiveindexthere_item:nth-child(1) {
margin-left: 0 !important;
}
.fiveindexthere_item {
margin-left: 54rpx;
.fiveindexthere_itemimage {
width: 120rpx;
height: 152rpx;
}
.fiveindexthere_item_one {
margin-top: 8rpx;
font-size: 28rpx;
font-family: Source Han Sans CN-Medium, Source Han Sans CN;
font-weight: 500;
color: #FFFFFF;
}
.fiveindexthere_item_tow {
margin-top: 8rpx;
font-size: 22rpx;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: rgba(255, 255, 255, 0.57);
}
}
}
.fiveindexfour {
.fiveindexfourimage {
margin-top: 70rpx;
position: relative;
width: 370rpx;
height: 396rpx;
background: linear-gradient(316deg, #636363 0%, #ACACAC 100%);
border-radius: 16rpx;
image {
position: absolute;
top: -30rpx;
left: -18rpx;
border-radius: 16rpx;
width: 372rpx;
height: 412rpx;
}
}
.fiveindexfourtext {
flex: 1;
margin-left: 70rpx;
text {
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
}
}
}
.sixindex {
width: 90%;
margin: 0 auto;
padding: 24rpx 0;
text-align: center;
background: linear-gradient(360deg, #FBDDBB 0%, #FEE3C5 100%);
border-radius: 48rpx;
font-size: 32rpx;
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
font-weight: bold;
color: #422A07;
}
}
}
}
</style>