sadjv3_user/pages/index/order/orderDetail.vue

430 lines
13 KiB
Vue

<template>
<view>
<view class="u-skeleton">
<view class="bg">
<view class="">
<swiper class="swiper" autoplay="1500" :indicator-dots="false" :circular='true'
indicator-active-color="#ffffff" indicator-color="#cccccc">
<swiper-item class="swiper-wrap" v-for="(item,index) in order.lifePhoto" :key='index'
style="height: 662upx;" @click="saveImgs(order.lifePhoto,index)">
<image :src="item" style="width: 100%;height: 662upx;" mode="aspectFill">
</image>
</swiper-item>
</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="wrap">
<u-swiper :list="order.lifePhoto" height="500" border-radius="30"></u-swiper>
</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="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 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/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/address.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">
</u-tabs>
<view style="border: 1rpx solid #f7f7f7;position: relative;top: -8upx;"></view>
<view class=" padding u-skeleton-fillet" v-if="fwIndex == 0">
<view v-if="commentList.length<=0" class="margin-top-sm"> 暂无评价</view>
<view class="margin-bottom-sm padding-tb-sm" style="border-bottom: 1upx solid #f7f7f7;"
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="" style="margin-top: 30rpx;margin-bottom: 10rpx;">{{item.content}}</view>
</view>
</view>
<view v-if="fwIndex == 1">
<view class="flex justify-around flex-wrap" style="width: 100%;padding: 30rpx;">
<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" 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> -->
<view class="u-skeleton-fillet text-lg cu-bar foot bg padding-lr" v-if="myId != order.userId">
<view class="text-center"
style="width: 665upx;line-height: 78upx;background: linear-gradient(to right, #223845, #00a85b);border-radius: 39upx;margin: 0 auto;color: #FFFFFF;"
@click="goOrder(order)" v-if="XCXIsSelect !='否'">
选TA
</view>
</view>
<!-- <u-picker v-model="show" mode="time" :params="params" @confirm="statusChange"></u-picker> -->
</view>
<u-skeleton :loading="loading" :animation="true" bgColor="#FFF"></u-skeleton>
</view>
</template>
<script>
export default {
data() {
return {
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,
tabs: [{
name: '评价',
status: 0
}, {
name: '资质证书',
status: 1
}],
tabIndex: 0, // tab下标
fwIndex: 0,
count: 5,
value: 4,
latitude: '',
longitude: '',
massageTypeId: '',
XCXIsSelect: '否',
}
},
onLoad(option) {
console.log(option)
this.artificerId = option.artificerId
this.massageTypeId = option.massageTypeId
this.myId = uni.getStorageSync('userId')
this.isVip = uni.getStorageSync('isVIP')
this.latitude = uni.getStorageSync('latitude')
this.longitude = uni.getStorageSync('longitude')
this.getDet()
this.getOrderComment()
this.XCXIsSelect = this.$queue.getData("XCXIsSelect");
},
onShow() {
},
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: '加载中...'
});
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
if (this.order.lifePhoto) {
this.order.lifePhoto = this.order.lifePhoto.split(',')
}
if (this.order.certificate) {
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();
});
},
// 评价
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;
},
// 跳转订单
goOrder(e) {
uni.navigateTo({
url: "/pages/index/order/orderDet?artificerId=" + e.artificerId + '&massageTypeId=' + this
.massageTypeId + '&tripWay=' + e.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
}
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;
}
.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: 30upx;
}
.swiper {
height: 662rpx;
}
</style>