You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.6 KiB
Vue
83 lines
2.6 KiB
Vue
<template>
|
|
<view class="container">
|
|
<view class="card">
|
|
<view class="confirm-title">预约信息确认</view>
|
|
<view class="card-row"><text class="card-label">检查项目</text><text class="card-value">{{ appName }}</text></view>
|
|
<view class="card-row"><text class="card-label">预约日期</text><text class="card-value highlight">{{ date }}</text></view>
|
|
</view>
|
|
|
|
<view class="card" v-if="tips">
|
|
<view class="card-title">检查须知</view>
|
|
<view class="tips-text">{{ tips }}</view>
|
|
</view>
|
|
|
|
<view class="confirm-area">
|
|
<view class="btn-primary" @tap="handleConfirm" :class="{ disabled: submitting }">
|
|
{{ submitting ? '提交中...' : '确认预约' }}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { getApplicationDetail } from '../../services/application'
|
|
import { createAppointment } from '../../services/appointment'
|
|
import { formatTime } from '../../utils/format'
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
applicationIds: '',
|
|
planId: '',
|
|
date: '',
|
|
appName: '',
|
|
tips: '',
|
|
submitting: false
|
|
}
|
|
},
|
|
onLoad(options) {
|
|
this.applicationIds = options.application_ids || ''
|
|
this.planId = options.plan_id || ''
|
|
this.date = options.date || ''
|
|
this.loadInfo()
|
|
},
|
|
methods: {
|
|
async loadInfo() {
|
|
try {
|
|
const ids = this.applicationIds.split(',')
|
|
const res = await getApplicationDetail({ application_id: ids[0] })
|
|
this.appName = res.data.examination_item_name || ''
|
|
if (res.data.exam_item_detail) {
|
|
this.tips = res.data.exam_item_detail.check_tips || ''
|
|
}
|
|
} catch (e) {}
|
|
},
|
|
async handleConfirm() {
|
|
if (this.submitting) return
|
|
this.submitting = true
|
|
try {
|
|
const ids = this.applicationIds.split(',').map(Number)
|
|
await createAppointment({
|
|
application_ids: ids,
|
|
channel_id: 3,
|
|
plan_id: Number(this.planId)
|
|
})
|
|
uni.redirectTo({ url: `/pages/appointment/result?success=1&date=${this.date}&name=${encodeURIComponent(this.appName)}` })
|
|
} catch (e) {
|
|
uni.redirectTo({ url: `/pages/appointment/result?success=0&msg=${encodeURIComponent(e.message || '预约失败')}` })
|
|
}
|
|
this.submitting = false
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
.confirm-title { font-size: 36rpx; font-weight: 700; color: #333; margin-bottom: 24rpx; }
|
|
.tips-text { font-size: 26rpx; color: #666; line-height: 1.8; }
|
|
.highlight { color: #2B7FD2; font-weight: 600; }
|
|
.confirm-area { padding: 40rpx 0; }
|
|
.confirm-area .btn-primary { margin-top: 20rpx; }
|
|
.confirm-area .btn-primary.disabled { opacity: 0.6; }
|
|
</style>
|