xinelu-applet-ui/pagesB/Nursingstationserviceorder/Nursingstationserviceorder.vue

308 lines
8.8 KiB
Vue
Raw Normal View History

2023-09-22 11:08:14 +08:00
<template>
<view class="app">
<view class="" v-if="total>0">
<view class="item" v-for="(item,index) in list" :key="index">
<view class="name">
{{item.createTime}}
<span>{{item.orderStatus=='WAIT_PAY'?'待付款':''}}
{{item.orderStatus=='PAY'?'已付款':''}}
{{item.orderStatus=='WAIT_DISPATCH'&&item.orderType!='COMPANION_IN_HOSPITAL'?'待服务':''}}
{{item.orderStatus=='WAIT_DISPATCH'&&item.orderType=='COMPANION_IN_HOSPITAL'?'已支付(陪诊陪护)':''}}
{{item.orderStatus=='NOT_FINISH'?'待完成':''}}
{{item.orderStatus=='COMPLETE'?'待评价':''}}
{{item.orderStatus=='EVALUATED'?'服务完成':''}}
{{item.orderStatus=='WAIT_REFUND'?'退款中':''}}
{{item.orderStatus=='REFUNDED'?'已退款':''}}
{{item.orderStatus=='CANCEL'?'已取消':''}}
</span>
</view>
<view class="detailslist" @tap="gofinished(item)">
<image :src="baseurl+item.itemPictureUrl" mode=""></image>
<view class="model">
<view class="top">
<span>{{item.nurseItemName}}</span>
<span>{{item.totalPrice}}</span>
</view>
<view class="bottom">
<span>服务时长{{item.itemServeDurationUnit}}</span>
</view>
</view>
</view>
<view class="submit" @tap='buy(item)' style="background-color: darkorange;"
v-if="item.orderStatus=='WAIT_PAY'">
去支付
</view>
<view class="submit" v-if="item.orderStatus=='WAIT_REFUND'" style="background-color: coral;">退款中</view>
<view class="submit" v-if="item.orderStatus=='COMPLETE'" @tap='gorate(item)'
style="background-color: #60c5f1;">立即评价</view>
<view class="submit" v-if="item.orderStatus=='EVALUATED'" @tap='lookrate(item)'>查看评价</view>
</view>
</view>
<view class="noorder" v-else>
<u-empty mode="list" icon-size='220' text='暂无服务订单'></u-empty>
</view>
<u-toast ref="uToast" />
<u-popup v-model="rateshow" mode="bottom" length="50%" border-radius="20" :closeable='true' class='masks'>
<view class="title">
综合评价
</view>
<view class="mask">
<u-rate :count="5" v-model="rateval" :size='70' active-color='#F4EA2A'></u-rate>
</view>
<view class="rateitem">
{{rateval==5?'非常满意':''}}
{{rateval==4?'满意':''}}
{{rateval==3?'一般':''}}
{{rateval==2?'差':''}}
{{rateval==1?'非常差':''}}
</view>
<view class="btn" @tap='taprate'>
确认
</view>
</u-popup>
<u-popup v-model="lookrateshow" mode="bottom" length="60%" border-radius="20" :closeable='true' class='masks'>
<image :src="baseurl+rateimgtitle.img" mode=""></image>
<view class="ratetitle">
{{rateimgtitle.title}}
</view>
<view class="mask" style="top: 450rpx;">
<u-rate :count="5" v-model="rateval" :size='70' active-color='#F4EA2A' disabled></u-rate>
</view>
<view class="rateitem" style="top: 580rpx;">
{{rateval==5?'非常满意':''}}
{{rateval==4?'满意':''}}
{{rateval==3?'一般':''}}
{{rateval==2?'差':''}}
{{rateval==1?'非常差':''}}
</view>
</u-popup>
</view>
</template>
<script>
import baseurl from '@/api/baseurl.js'
import {
lookrate
2023-09-22 11:30:57 +08:00
} from '@/api/pagesB/lookrate/index.js'
2023-09-22 11:08:14 +08:00
import {
appletAppointmentOrderPay
2023-09-22 11:30:57 +08:00
} from '@/api/pagesB/appointmenttime/appointmenttime.js'
2023-09-22 11:08:14 +08:00
import {
addAppointmentEvaluate
2023-09-22 11:30:57 +08:00
} from '@/api/pagesB/ServiceDetails/ServiceDetails.js'
2023-09-22 11:08:14 +08:00
import {
appServiceOrder
2023-09-22 11:30:57 +08:00
} from '@/api/pagesB/Nursingstationserviceorder/Nursingstationserviceorder.js'
2023-09-22 11:08:14 +08:00
export default {
data() {
return {
timer: null, //time
baseurl: null,
rateimgtitle: { //评价mask
img: null,
title: null,
},
ratelist: null, //评价list
rateshow: false, //评价
lookrateshow: false, //查看评价
openid: null, //opedn
patientId: null, //patientId
rateval: 0, //评价星棵树
evaluateSatisfaction: null, //非常差/差/一般/满意/非常满意
pageNum: 1,
total: 0,
pageSize: 15,
list: [], //循环list
orderNo: null, //订单编号
}
},
onShow() {
let that = this
this.baseurl = baseurl
this.pageNum = 1;
const value3 = uni.getStorageSync('Refresh');
if (value3) {
that.getinfo();
}
},
onLoad() {
let that = this
this.pageNum = 1
const value = uni.getStorageSync('patientId');
const value2 = uni.getStorageSync('openid');
if (value && value2) {
that.patientId = value
that.openid = value2
that.getinfo()
} else {
this.$refs.uToast.show({
title: '未登录,请先登录',
type: 'error',
})
}
},
watch: { //监听
rateval() {
if (this.rateval == 5) {
this.evaluateSatisfaction = 'VERYSATISFIED'
} else if (this.rateval == 4) {
this.evaluateSatisfaction = 'SATISFIED'
} else if (this.rateval == 3) {
this.evaluateSatisfaction = 'COMMONLY'
} else if (this.rateval == 2) {
this.evaluateSatisfaction = 'DISSATISFIED'
} else if (this.rateval == 1) {
this.evaluateSatisfaction = 'VERYDISSATISFIED'
}
},
},
methods: {
//查看评价
lookrate(item) {
this.rateval = 0
this.evaluateSatisfaction = null
this.rateimgtitle.img = item.itemPictureUrl
this.rateimgtitle.title = item.nurseItemName
lookrate(item.orderNo).then(res => {
this.ratelist = res.data
this.rateval = res.data.compositeScore
this.lookrateshow = true
})
},
//去评价
gorate(item) {
this.rateval = 0
this.evaluateSatisfaction = null
this.orderNo = item.orderNo
this.rateshow = true
},
//评价
taprate() {
var obj = {
"patientId": this.patientId,
"openid": this.openid,
"orderNo": this.orderNo,
"evaluateChannel": "WE_CHAT_APPLET",
"evaluateSatisfaction": this.evaluateSatisfaction,
"compositeScore": this.rateval
}
addAppointmentEvaluate(obj).then(res => {
uni.setStorageSync("Refresh", 'Refresh')
if (res.code == 200) {
this.getinfo();
this.orderNo = null
this.rateshow = false
this.$refs.uToast.show({
title: '评价成功',
type: 'success',
duration: '1500'
})
if (this.timer) {
clearTimeout(this.timer)
}
this.timer = setTimeout(e => {
uni.navigateTo({
2023-09-22 11:30:57 +08:00
url: `/pagesB/ratesuccess/ratesuccess?delta=${1}`
2023-09-22 11:08:14 +08:00
})
}, 1500)
}
})
},
//支付
buy(item) {
let obj = {
patientId: this.patientId,
openid: this.openid,
orderNo: item.orderNo,
orderChannel: "WECHAT_APPLET",
paymentPrice: item.totalPrice,
payType: "WECHAT_PAY",
buySource: "NURSE_STATION",
}
var that = this
appletAppointmentOrderPay(obj).then(response => {
if (response.code == 200) {
uni.requestPayment({
timeStamp: response.data.timeStamp,
nonceStr: response.data.nonceStr,
package: response.data.prepayId,
signType: response.data.signType,
paySign: response.data.paySign,
success: function(res) {
uni.setStorageSync("Refresh", 'Refresh')
that.$refs.uToast.show({
title: '支付成功',
type: 'success',
duration: 1500,
2023-09-22 16:01:48 +08:00
url: `/pagesB/paysuccess/paysuccess`,
2023-09-22 11:08:14 +08:00
})
},
fail: function(err) {
that.$refs.uToast.show({
title: '取消支付',
type: 'error',
duration: 1500,
})
}
});
} else {
this.$refs.uToast.show({
title: response.msg,
type: 'error',
duration: 2000
})
}
})
},
getinfo() {
appServiceOrder(this.patientId, this.pageSize, this.pageNum).then(res => {
if (res.code == 200) {
uni.removeStorageSync('Refresh');
this.list = res.rows;
// this.list.forEach(e => {
// e.timestamp = null
// var time = new Date(e.createTime).getTime() / 1000 + (60 * 60 * 2)
// var times = new Date().getTime() / 1000
// e.timestamp = time - times
// })
this.total = res.total
} else if (res.code == 9999) {
this.$refs.uToast.show({
title: '未登录,请先登录',
type: 'error',
})
}
})
},
gofinished(item) {
uni.navigateTo({
2023-09-22 11:30:57 +08:00
url: `/pagesB/ServiceDetails/ServiceDetails?orderNo=${item.orderNo}`
2023-09-22 11:08:14 +08:00
})
},
},
onReachBottom() { //下滑加载
if (this.list.length >= this.total) {} else {
this.pageNum++
appServiceOrder(this.patientId, this.pageSize, this.pageNum).then(res => {
res.rows.forEach(e => {
// e.timestamp = null
// var time = new Date(e.createTime).getTime() / 1000 + (60 * 60 * 2)
// var times = new Date().getTime() / 1000
// e.timestamp = time - times
this.list.push(e)
})
})
}
},
onPullDownRefresh() { //下拉刷新
this.pageNum = 1;
this.getinfo()
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style lang="scss">
@import './Nursingstationserviceorder.scss';
</style>