sadjv1/anmo-server-uniapp/pages/therapist/orderDetail.vue

501 lines
14 KiB
Vue

<template>
<view>
<view class="bg">
<view>
<swiper style="height: 662upx;" autoplay="1500" :indicator-dots="false" :circular='true'
indicator-active-color="#ffffff" indicator-color="#cccccc">
<swiper-item v-for="(item,index) in order.lifePhoto" :key='index'
style="height: 662upx;" @click="saveImgs(order.lifePhoto,index)">
<image class="swiper-image" :src="item" style="width: 100%;height: 662upx;">
</image>
</swiper-item>
</swiper>
</view>
<!-- <view class="wrap">
<u-swiper :list="order.lifePhoto" height="500" border-radius="30"></u-swiper>
</view> -->
<view class="flex align-center padding-tb-sm padding-lr justify-around" style="background: #f7fdfb;border-radius: 16rpx;">
<!-- <view class="rir">
<image
src="https://admin.sjajk.com/file/uploadPath/2023/01/18/ddb89075e091f26aa0c84bede245fd6d.png"
style="width: 87rpx;height:29rpx;"></image>
</view> -->
<view class="flex align-center" style="margin-right: 30upx;">
<image src="../../static/images/index/renzheng03.png" style="width: 30rpx;height: 32rpx;"></image>
<text class="margin-left-xs" style="color: #75a794;">实名认证</text>
</view>
<view class="flex align-center" style="margin-right: 30upx;">
<image src="../../static/images/index/renzheng01.png" style="width:25upx;height: 30upx;"></image>
<text class="margin-left-xs" style="color: #75a794;">资质认证</text>
</view>
<view class="flex align-center">
<image src="../../static/images/index/renzheng02.png" style="width: 32rpx;height: 30rpx;"></image>
<text class="margin-left-xs" style="color: #75a794;">平台担保</text>
</view>
</view>
<view class="margin-lr margin-tb-sm padding-bottom">
<view class="flex align-center justify-between" style="padding: 14rpx 0;">
<view class="text-bold" style="font-size: 36rpx;">
{{order.artificerName}}
</view>
<view class="" v-if="myId != order.userId">
<view class="text-center" @click="follow">
<image src="../../static/images/aixin.png" style="width: 28rpx;height: 28rpx;position: relative;top: 4upx;" v-if="!isFollow"></image>
<image src="../../static/images/index/shoucang.png" style="width: 28rpx;height: 28rpx;position: relative;top: 4upx;" v-else></image>
<text style="color: #999999;margin-left: 10upx;" v-if="!isFollow">收藏</text>
<text style="margin-left: 10upx;color: #096f4b;" v-else>已收藏</text>
</view>
</view>
</view>
<view class="padding-bottom flex justify-between">
<view class="margin-right-xs text-sm"
style="color: #fff4a9;background-color: #333;border-radius: 6rpx;padding: 4rpx 10rpx;">
健康理疗师
</view>
</view>
<view class="padding-bottom flex justify-between">
<view class="flex align-center">
<view v-if="order.ordersScore" class="margin-right-sm flex align-center" style="color: #999999;">
<image src="../../static/images/index/start.png" style="width: 24upx;height: 22upx;">
</image>
<text class="margin-left-xs" style="color: #fe831e;">{{order.ordersScore}}.0</text>
<text class="" style="margin-left: 20rpx;font-size: 20rpx;"> | </text>
<text style="color: #999999;margin-left: 20rpx;font-size: 24rpx;"> 已服务{{order.ordersCount}}单</text>
<text class="" style="margin: 0 20rpx;font-size: 20rpx;"> | </text>
<view class="flex align-center">
<image src="../../static/images/index/place.png" style="width: 24rpx;height: 23rpx;"></image>
<view style="color: #999999;margin-left: 5rpx;font-size: 24rpx">距离:{{order.distance}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
<view class="bg padding-lr padding-tb-sm margin-bottom-sm">
<view class=" text-bold padding-bottom" style="font-size: 30rpx;">
自我介绍
</view>
<view class="" style="width: 118rpx;height: 16rpx;background-color: #096f4b;opacity: 0.2;margin-top: -46rpx;"></view>
<view class="margin-top" style="color: #666666;font-size: 28rpx;margin-top: 30rpx;">
{{order.content}}
</view>
</view>
<view class="" style="padding: 0 0 90px 0;background-color: #ffffff;">
<u-tabs :list="tabs" :is-scroll="true" :current="tabIndex" @change="tabChange" active-color="#096f4b"
gutter="60">
</u-tabs>
<view style="border: 1rpx solid #f7f7f7;position: relative;top: -8upx;"></view>
<view v-if="fwIndex == 0&&XCXIsSelect !='否'" class="tab ">
<view class="flex padding-tb padding-lr justify-between" v-for="(item,index) in artificerlist" :key="index" @click="goNav(item.massageTypeId)">
<image :src="item.massageImg" style="width: 170upx;height: 170upx;border-radius:10rpx"></image>
<view class="margin-left-sm" style="flex: 170upx 1;">
<view class="text-bold text-lg">{{item.title}}</view>
<view class="flex align-center justify-between text-df margin-tb-sm" style="color: #999999;">
<view style="font-size: 26rpx;">时长:{{item.duration}}分钟</view>
<view style="font-size: 26rpx;">已售{{item.sales}}</view>
</view>
<view class="flex align-center justify-between">
<view class="text-green text-df" style="color: #FF1200;">
¥<text class="text-green text-xl text-bold"
style="color: #FF1200;">{{item.price}}</text>
<text v-if="hyCheck != '否'">/</text><text v-if="hyCheck != '否'"
class="text-sm">会员价:¥{{item.memberPrice}}</text>
</view>
<view class="btn" style="background: linear-gradient(to right, #223845, #00a85b)">下单</view>
</view>
</view>
</view>
</view>
<view class=" padding u-skeleton-fillet" v-if="fwIndex == 1">
<view v-if="commentList.length<=0" class="margin-top-sm"> 暂无评价</view>
<view class="margin-bottom-sm padding-tb-sm" style="border-bottom: 1upx solid #f0f0f0;"
v-for="(item, index) in commentList" :key='index' v-else>
<view class="flex align-center">
<u-avatar src="/static/logo.png" size="48"></u-avatar>
<view class="flex margin-left-sm" style="line-height: 46upx;">匿名</view>
<view class="flex" style="margin-left: 20rpx;">
<u-icon v-for="ite in item.score" :key='ite' color="#FFAA01" name="star-fill"></u-icon>
</view>
</view>
<view class="margin-top-sm" style="margin-top: 30rpx;margin-bottom: 10rpx;font-size: 26rpx;">{{item.content}}</view>
</view>
</view>
<view v-if="fwIndex == 2">
<view class="flex justify-around flex-wrap" style="width: 100%;">
<view class="flex flex-wrap" style="width: 100%;">
<view style="width: 220rpx;height: 160rpx;margin-right: 10rpx;margin-top: 10rpx;"
v-for="(item,index) in order.certificate" :key="index">
<image :src="item" mode="aspectFit" style="width: 100%;height: 100%;"
@click="saveImg(order.certificate,index)">
</image>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="margin-top-sm bg radius u-skeleton-fillet" style="margin-bottom: 130rpx;">
<view class="text-center padding text-bold" style="font-size: 35rpx;letter-spacing: 3rpx;">服务详情</view>
<view v-for="(item,index) in order.lifePhoto" :key="index" style="width: 100%;"
@click="saveImg(order.lifePhoto,index)">
<image :src="item" style="width: 750upx;height: 963upx;" mode="widthFix"></image>
</view>
</view> -->
<!-- <u-picker v-model="show" mode="time" :params="params" @confirm="statusChange"></u-picker> -->
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
</view>
</template>
<script>
export default {
data() {
return {
tripWay: 1,
game: [],
loading: true, // 是否显示骨架屏组件
customStyle: {
width: '400upx',
color: '#FFFFFF',
background: "#005DFF",
border: 0
},
artificerId: '',
orderDet: {},
page: 1,
limit: 10,
order: {},
commentList: [],
isFollow: false,
myId: '',
isVip: false,
AUDIO: uni.createInnerAudioContext(),
isPlay: false,
show: false,
params: {
year: false,
month: true,
day: true,
hour: true,
minute: true,
second: true,
timestamp: true
},
startTime: '',
mobile: '',
name: '',
cityaddress: '',
detailaddress: '',
latitude: '',
longitude: '',
province: '',
city: '',
district: '',
age: '',
tabs: [{
name: '项目',
status: 0
}, {
name: '评价',
status: 1
}, {
name: '资质证书',
status: 2
}],
tabIndex: 0, // tab下标
fwIndex: 0,
artificerlist: [],
latitude: '',
longitude: '',
imgArr: [],
status: "",
XCXIsSelect: '否',
hyCheck: '否',
imageHeight:'358'
}
},
onLoad(option) {
this.hyCheck = this.$queue.getData('hyCheck');
uni.showLoading({
title: '加载中...',
});
this.XCXIsSelect = this.$queue.getData("XCXIsSelect");
this.artificerId = option.artificerId
this.myId = uni.getStorageSync('userId')
this.isVip = uni.getStorageSync('isVIP')
this.latitude = uni.getStorageSync('latitude')
this.longitude = uni.getStorageSync('longitude')
this.getDet()
this.getordertherapist()
this.getOrderComment()
},
onShow() {
this.imageHeight = this.$queue.getData('imageHeight');
},
onReady() {
this.AUDIO.onEnded(function(res) {
this.isPlay = false;
});
},
methods: {
// 切换菜单
tabChange(index) {
this.tabIndex = index
this.fwIndex = index
},
//换算年龄
getAge(e) {
console.log('出生日期:' + e)
this.birthDate = e
//创建系统日期
var today = new Date();
//把出生日期转换成日期
this.birthDate = new Date(this.birthDate);
//分别获取到年份后相减
this.age = today.getFullYear() - this.birthDate.getFullYear();
// console.log(this.age+'当前年龄')
},
// 详情
getDet() {
// uni.showLoading({
// title: '加载中...',
// icon: 'none'
// });
this.$Request.get("/app/artificer/selectArtificerById", {
artificerId: this.artificerId,
latitude: this.latitude,
longitude: this.longitude,
userId: this.myId
}).then(res => {
uni.hideLoading();
this.loading = false;
if (res.code == 0) {
this.order = res.data
this.status = res.data.status
this.tripWay = res.data.tripWay
if (this.order.lifePhoto) {
this.order.lifePhoto = this.order.lifePhoto.split(',')
}
this.order.certificate = this.order.certificate.split(',')
if (this.order.distance > 1000) {
this.order.distance = (this.order.distance / 1000).toFixed(1) + 'km'
} else {
this.order.distance = (this.order.distance).toFixed(1) + 'm'
}
if (res.data.collectCount == 1) {
this.isFollow = true
} else {
this.isFollow = false
}
} else {
this.loading = false;
uni.hideLoading();
}
uni.hideLoading();
});
},
//服务理疗师
getordertherapist() {
this.$Request.get("/app/artificer/selectArtificerMassageList", {
artificerId: this.artificerId
}).then(res => {
if (res.code == 0) {
this.artificerlist = res.data
// this.commentList = [...this.commentList, ...res.data.list]
}
});
},
// 评价
getOrderComment() {
this.$Request.get("/app/takingComment/selectOrderTakingComment", {
artificerId: this.artificerId,
page: this.page,
limit: this.limit
}).then(res => {
if (res.code == 0) {
this.commentList = [...this.commentList, ...res.data.list]
}
});
},
playVoice() {
console.log(this.isPlay)
this.AUDIO.src = this.order.voiceIntroduce;
if (this.isPlay) {
this.AUDIO.stop();
} else {
this.AUDIO.play();
}
this.isPlay = !this.isPlay;
},
goNav(massageTypeId) {
if (this.status == 2) {
uni.showToast({
title: '理疗师已下线',
icon: 'none'
})
} else {
uni.navigateTo({
url: "/pages/index/order/orderDet?massageTypeId=" + massageTypeId + '&artificerId=' + this
.artificerId + '&tripWay=' + this.tripWay
})
}
},
goMsg() {
let data = {
userId: this.myId,
focusedUserId: this.order.userId
}
this.$Request.postJson('/app/chat/insertChatConversation ', data).then(res => {
if (res.code == 0) {
let id = this.order.userId == res.data.userId ? res.data.focusedUserId : this.order.userId
uni.navigateTo({
url: '/pages/msg/im?chatConversationId=' + res.data.chatConversationId +
'&byUserId=' + id
})
}
})
},
// 收藏
follow() {
let oldIsFollow = this.isFollow;
let that = this
let data = {
artificerId: that.artificerId,
userId: that.myId,
classify: '1'
}
that.$Request.postJson("/app/artificer/insertCollect", data).then(res => {
if (res.code == 0) {
if (oldIsFollow) {
uni.showToast({
title: '取消成功',
icon: 'none'
})
} else {
uni.showToast({
title: '收藏成功',
icon: 'none'
})
}
} else {
uni.showToast({
title: res.msg,
icon: 'none'
})
}
setTimeout(function() {
that.getDet()
}, 500)
});
},
saveImg(imgs, index) {
// console.log(imgs)
let that = this;
let imgArr = imgs
// imgArr.push(imgs);
// //预览图片
uni.previewImage({
urls: imgArr,
current: imgArr[index]
});
},
saveImgs(imgs, index) {
console.log(imgs, index)
// let that = this
let imgArr = imgs
// this.imgArr.push(imgs);
// console.log(this.imgArr)
// //预览图片
uni.previewImage({
urls: imgArr,
current: imgArr[index]
});
},
}
}
</script>
<style>
page {
background-color: #F7F7F7;
}
.bgs {
background-color: #FFFFFF;
}
.bg {
background-color: #FFFFFF;
}
.swiper-image {
width: 100%;
}
.wrap {
padding: 20upx 23upx;
}
.line_s {
display: inline-flex;
width: 14rpx;
height: 14rpx;
background: #1AD566;
border-radius: 50%;
margin-right: 10rpx;
}
.line_x {
display: inline-flex;
width: 14rpx;
height: 14rpx;
background: #000000;
border-radius: 50%;
margin-right: 10rpx;
}
.tab>view {
border-bottom: 2upx solid #F5F5F2;
}
.tab>view:last-of-type {
border: none;
}
.rir {
font-size: 30upx;
font-family: DFZongYi-Bd-80-Win-GB;
font-weight: 800;
color: #30B47A;
margin-right: 30rpx;
}
.btn {
width: 129rpx;
height: 52rpx;
background: #096f4b;
border-radius: 26rpx;
color: #FFFFFF;
text-align: center;
line-height: 54rpx;
}
.swiper {
height: 662rpx;
}
</style>