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

345 lines
8.8 KiB
Vue
Raw Permalink Normal View History

2023-09-22 11:08:14 +08:00
<template>
<view class="app" v-if="orderlist.totalPrice">
<view class="userinfo">
<view class="item">
<span>姓名</span>
<u-input :clearable='false' v-model="orderlist.caregiverName" type="text" placeholder='请输入'
maxlength='30' />
</view>
<view class="item">
<span>电话</span>
<u-input :clearable='false' v-model="orderlist.caregiverPhone" type="number" placeholder='请输入'
maxlength='11' />
</view>
<view class="item">
<span>医院</span>
<u-input :clearable='false' v-model="orderlist.hospitalName" type="text" placeholder='请输入'
maxlength='20' />
</view>
<view class="item">
<span>科室</span>
<u-input :clearable='false' v-model="orderlist.departmentName" type="text" placeholder='请输入'
maxlength='20' />
</view>
<view class="item">
<span>病床号</span>
<u-input :clearable='false' v-model="orderlist.hospitalBedNumber" type="text" placeholder='请输入'
maxlength='20' />
</view>
<view class="item" style="border: none;" @tap='timepickertrue'>
<span>时间</span>
<p v-if="timevalue" style='color: black;'>{{timevalue}}</p>
<p v-else>请选择服务时间</p>
</view>
</view>
<view class="bottomitem">
<view class="item">
<span>数量</span>
<u-number-box v-model="companionDays" @change="numbervalChange" bg-color='#557BC2' :min='1'
color='#fff'>
</u-number-box>
</view>
</view>
<timepicker :timepicker="timepicker" @timeconfirm='timeconfirm' @input='timeclose'></timepicker>
<u-toast ref="uToast" />
<view class="updata">
<view class="price">
{{orderlist.totalPrice}}
</view>
<view class="purchase" @click="updata">
购买
</view>
</view>
</view>
</template>
<script>
import timepicker from '../../components/timepicker/timepicker.vue'
import {
getAppStationItemInfo,
appletAppointmentOrderPay
2023-09-22 11:45:25 +08:00
} from '@/api/pagesB/appointmenttime/appointmenttime.js'
2023-09-22 11:08:14 +08:00
import {
accompanyingDiagnosis
2023-09-22 11:45:25 +08:00
} from '@/api/pagesB/hospitalcare/index.js'
2023-09-22 11:08:14 +08:00
export default {
components: {
timepicker
},
data() {
return {
timer: null,
companionDays: 1,
orderlist: {
caregiverName: undefined,
caregiverPhone: undefined,
hospitalName: undefined,
departmentName: undefined,
hospitalBedNumber: undefined,
nurseStationItemId: undefined,
companionStartDate: undefined,
companionEndDate: undefined,
totalPrice: undefined,
nurseItemPrice: undefined
},
timevalue: undefined,
timepicker: false,
}
},
onShow() {},
onLoad(options) {
this.orderlist.nurseStationItemId = options.stationItemId
this.orderlist.nurseStationItemPriceId = options.stationItemPriceId
this.getPatientInfo(options.stationId, options.stationItemId, options.stationItemPriceId)
},
watch: {
companionDays() {
this.orderlist.totalPrice = this.argMul(this.companionDays, this.orderlist.nurseItemPrice)
},
},
methods: {
updata() {
var that = this
this.orderlist.companionDays = this.companionDays
this.orderlist.orderType = 'COMPANION_IN_HOSPITAL'
this.orderlist.patientId = uni.getStorageSync('patientId');
this.orderlist.orderCount = 1;
this.orderlist.orderChannel = 'WECHAT_APPLET'
accompanyingDiagnosis(this.orderlist).then(res => {
if (res.code == 500) {
that.$refs.uToast.show({
title: res.msg,
type: 'error'
})
} else if (res.code == 200) {
let obj = {
patientId: uni.getStorageSync('patientId'),
openid: uni.getStorageSync('openid'),
orderNo: res.data.orderNo,
orderChannel: 'WECHAT_APPLET',
paymentPrice: res.data.totalPrice,
payType: "WECHAT_PAY",
buySource: "NURSE_STATION",
}
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.removeStorageSync('scenenurseStationId');
that.$refs.uToast.show({
title: '预约成功',
type: 'success',
duration: 1500,
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.redirectTo({
2023-09-22 11:45:25 +08:00
url: `/pagesB/Nursingstationserviceorder/Nursingstationserviceorder`
2023-09-22 16:01:48 +08:00
// url: `/pagesB/ServiceDetails/ServiceDetails?orderNo=${obj.orderNo}`
2023-09-22 11:08:14 +08:00
})
}, 1500)
},
fail: function(err) {
that.$refs.uToast.show({
title: '取消预约',
type: 'error',
duration: 1500,
})
if (that.timer) {
clearTimeout(that.timer)
}
that.timer = setTimeout(e => {
uni.redirectTo({
2023-09-22 11:45:25 +08:00
url: `/pagesB/ServiceDetails/ServiceDetails?orderNo=${obj.orderNo}`
2023-09-22 11:08:14 +08:00
})
}, 1500)
}
});
} else {
that.$refs.uToast.show({
title: response.msg,
type: 'error',
duration: 2000
})
}
})
}
})
},
//获取耗材包详情
getPatientInfo(stationId, stationItemId, stationItemPriceId) {
getAppStationItemInfo(stationId, stationItemId, stationItemPriceId).then(res => {
res.data.nurseItemContent = ''
this.orderlist.totalPrice = res.data.nurseItemPrice
this.orderlist.nurseItemPrice = res.data.nurseItemPrice
this.orderlist.nurseItemName = res.data.nurseItemName
this.orderlist.itemServeDurationUnit = res.data.serveDurationUnit;
})
},
numbervalChange(e) {
this.orderlist.orderCount = e.value
},
timeclose(e) {
this.timepicker = false
},
timepickertrue() {
this.timepicker = true
},
timeconfirm(e) {
this.orderlist.companionStartDate = e.year + '-' + e.month + '-' + e.day
this.orderlist.companionEndDate = e.year + '-' + e.endmonth + '-' + e.endday
var starttime = e.year + '.' + e.month + '.' + e.day
var endtime = e.year + '.' + e.endmonth + '.' + e.endday
this.timevalue = starttime + ' - ' + endtime
this.timepicker = false
},
argMul(arg1, arg2) {
// 乘法函数
var _this = this,
m = 0,
s1 = arg1.toString(),
s2 = arg2.toString();
try {
m += s1.split(".")[1].length
} catch (e) {}
try {
m += s2.split(".")[1].length
} catch (e) {}
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
},
}
}
</script>
<style lang="scss">
.app {
padding: 10rpx 0 0;
.updata {
width: 100%;
height: 120rpx;
background: #FFFFFF;
position: fixed;
bottom: 0;
.purchase {
position: absolute;
right: 30rpx;
top: 50%;
transform: translateY(-50%);
width: 190rpx;
height: 60rpx;
background: #F44B2F;
border-radius: 30rpx;
font-size: 32rpx;
color: #FFFFFF;
line-height: 60rpx;
text-align: center;
}
.price {
position: absolute;
left: 30rpx;
top: 50%;
transform: translateY(-50%);
font-size: 48rpx;
font-weight: 500;
color: #F44B2F;
}
}
.bottomitem {
height: 120rpx;
line-height: 120rpx;
position: relative;
.u-numberbox {
position: absolute;
right: 5%;
top: 50%;
transform: translateY(-50%);
}
}
.userinfo,
.bottomitem {
background: #FFFFFF;
box-shadow: 0rpx 9rpx 31rpx 9rpx rgba(0, 0, 0, 0.03);
border-radius: 5rpx;
width: 96%;
margin: 0 auto 20rpx;
padding-bottom: 5rpx;
.item {
width: 94%;
margin: 0 auto;
height: 120rpx;
line-height: 120rpx;
border-bottom: 1rpx solid #D8D4D4;
position: relative;
p {
color: #c0c4cc;
display: inline-block;
height: 120rpx;
line-height: 120rpx;
position: absolute;
left: 25%;
top: 50%;
width: 75%;
transform: translateY(-50%);
font-size: 30rpx;
}
.address {
position: absolute;
left: 25%;
top: 50%;
width: 75%;
transform: translateY(-50%);
display: inline-block;
height: 120rpx;
line-height: 120rpx;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
span {
display: inline-block;
line-height: 120rpx;
height: 120rpx;
width: 25%;
font-size: 36rpx;
}
::v-deep .u-input__input {
height: 120rpx;
font-size: 30rpx;
}
::v-deep .uni-input-wrapper {
display: inline-block;
height: 120rpx;
line-height: 120rpx;
}
::v-deep u-input {
height: 120rpx;
line-height: 120rpx;
position: absolute;
left: 25%;
top: 50%;
width: 75%;
transform: translateY(-50%);
}
}
}
}
</style>