Files
ws_health/xui/wxapp/pages/itemdetail/itemdetail.js
2026-05-25 12:34:16 +08:00

1123 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const API = require('../../utils/api.js')
Page({
data: {
service: {
id: null,
title: '',
subtitle: '',
price: '0.00',
image: '',
tag: '',
description: '',
flow: [],
notices: []
},
totalPrice: '0.00',
showOrderPopup: false,
patientName: '',
patientPhone: '',
province: '',
provinceIndex: 0,
provinces: ['北京市', '天津市', '河北省', '山西省', '内蒙古自治区', '辽宁省', '吉林省', '黑龙江省', '上海市', '江苏省', '浙江省', '安徽省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '广西壮族自治区', '海南省', '重庆市', '四川省', '贵州省', '云南省', '西藏自治区', '陕西省', '甘肃省', '青海省', '宁夏回族自治区', '新疆维吾尔自治区', '台湾省', '香港特别行政区', '澳门特别行政区'],
hospital: '',
appointmentDate: '',
appointmentTime: '',
remark: '',
today: '',
gender: '不限',
genderIndex: 0,
genderOptions: ['不限', '男', '女'],
department: '',
departments: ['内科', '外科', '妇产科', '儿科', '骨科', '神经科', '心血管内科', '消化内科', '呼吸内科', '内分泌科', '皮肤科', '眼科', '耳鼻喉科', '口腔科', '急诊科', '肿瘤科', '康复医学科', '老年病科', '中医科', '针灸推拿科'],
hospitals: [{
id: 1,
name: '中国医学科学院北京协和医院',
level: '三级甲等'
},
{
id: 2,
name: '中国人民解放军总医院301医院',
level: '三级甲等'
},
{
id: 3,
name: '中国医学科学院肿瘤医院',
level: '三级甲等'
},
{
id: 4,
name: '中国医学科学院阜外心血管病医院',
level: '三级甲等'
},
{
id: 5,
name: '中国医学科学院整形外科医院',
level: '三级甲等'
},
{
id: 6,
name: '北京大学第一医院',
level: '三级甲等'
},
{
id: 7,
name: '北京大学人民医院',
level: '三级甲等'
},
{
id: 8,
name: '北京大学第三医院',
level: '三级甲等'
},
{
id: 9,
name: '北京大学肿瘤医院',
level: '三级甲等'
},
{
id: 10,
name: '北京大学口腔医院',
level: '三级甲等'
},
{
id: 11,
name: '北京大学第六医院',
level: '三级甲等'
},
{
id: 12,
name: '北京中医药大学东直门医院',
level: '三级甲等'
},
{
id: 13,
name: '北京中医药大学东直门医院通州院区',
level: '三级甲等'
},
{
id: 14,
name: '北京中医药大学东方医院',
level: '三级甲等'
},
{
id: 15,
name: '北京中医药大学第三附属医院',
level: '三级甲等'
},
{
id: 16,
name: '北京天坛医院',
level: '三级甲等'
},
{
id: 17,
name: '北京宣武医院',
level: '三级甲等'
},
{
id: 18,
name: '北京朝阳医院',
level: '三级甲等'
},
{
id: 19,
name: '北京朝阳医院常营院区',
level: '三级甲等'
},
{
id: 20,
name: '北京朝阳医院石景山院区',
level: '三级甲等'
},
{
id: 21,
name: '北京友谊医院',
level: '三级甲等'
},
{
id: 22,
name: '北京积水潭医院',
level: '三级甲等'
},
{
id: 23,
name: '北京安贞医院',
level: '三级甲等'
},
{
id: 24,
name: '北京世纪坛医院',
level: '三级甲等'
},
{
id: 25,
name: '北京中医医院',
level: '三级甲等'
},
{
id: 26,
name: '北京中医医院顺义医院',
level: '三级甲等'
},
{
id: 27,
name: '北京中医医院延庆医院',
level: '三级甲等'
},
{
id: 28,
name: '北京儿童医院',
level: '三级甲等'
},
{
id: 29,
name: '北京儿童医院顺义妇儿医院',
level: '三级甲等'
},
{
id: 30,
name: '北京妇产医院',
level: '三级甲等'
},
{
id: 31,
name: '北京同仁医院',
level: '三级甲等'
},
{
id: 32,
name: '北京安定医院',
level: '三级甲等'
},
{
id: 33,
name: '北京回龙观医院',
level: '三级甲等'
},
{
id: 34,
name: '北京胸科医院',
level: '三级甲等'
},
{
id: 35,
name: '北京地坛医院',
level: '三级甲等'
},
{
id: 36,
name: '北京佑安医院',
level: '三级甲等'
},
{
id: 37,
name: '北京口腔医院',
level: '三级甲等'
},
{
id: 38,
name: '北京老年医院',
level: '三级甲等'
},
{
id: 39,
name: '北京小汤山医院',
level: '三级甲等'
},
{
id: 40,
name: '北京清华长庚医院',
level: '三级甲等'
},
{
id: 41,
name: '中国康复研究中心北京博爱医院',
level: '三级甲等'
},
{
id: 42,
name: '北京急救中心',
level: '三级甲等'
},
{
id: 43,
name: '解放军空军总医院(空军特色医学中心)',
level: '三级甲等'
},
{
id: 44,
name: '解放军海军总医院',
level: '三级甲等'
},
{
id: 45,
name: '解放军火箭军总医院(火箭军特色医学中心)',
level: '三级甲等'
},
{
id: 46,
name: '解放军总医院第九医学中心',
level: '三级甲等'
},
{
id: 47,
name: '解放军总医院第六医学中心',
level: '三级甲等'
},
{
id: 48,
name: '解放军305医院',
level: '三级甲等'
},
{
id: 49,
name: '武警总医院',
level: '三级甲等'
},
{
id: 50,
name: '中日友好医院',
level: '三级甲等'
},
{
id: 51,
name: '中国中医科学院广安门医院',
level: '三级甲等'
},
{
id: 52,
name: '中国中医科学院广安门医院南区',
level: '三级甲等'
},
{
id: 53,
name: '中国中医科学院西苑医院',
level: '三级甲等'
},
{
id: 54,
name: '中国中医科学院望京医院',
level: '三级甲等'
},
{
id: 55,
name: '中国中医科学院眼科医院',
level: '三级甲等'
},
{
id: 56,
name: '清华大学玉泉医院',
level: '三级甲等'
},
{
id: 57,
name: '清华大学第一附属医院',
level: '三级甲等'
},
{
id: 58,
name: '北京大学首钢医院',
level: '三级甲等'
},
{
id: 59,
name: '首都医科大学附属首都儿童医学中心',
level: '三级甲等'
},
{
id: 60,
name: '首都医科大学附属复兴医院',
level: '三级甲等'
},
{
id: 61,
name: '首都医科大学附属北京康复医院',
level: '三级甲等'
},
{
id: 62,
name: '首都医科大学附属北京潞河医院',
level: '三级甲等'
},
{
id: 63,
name: '首都医科大学附属北京顺义医院',
level: '三级甲等'
},
{
id: 64,
name: '首都医科大学附属北京大兴医院',
level: '三级甲等'
},
{
id: 65,
name: '护国寺中医院',
level: '三级甲等'
},
{
id: 66,
name: '北京市肛肠医院',
level: '三级甲等'
},
{
id: 67,
name: '北京市回民医院',
level: '三级甲等'
},
{
id: 68,
name: '北京市第一中西医结合医院',
level: '三级甲等'
},
{
id: 69,
name: '北京中西医结合医院',
level: '三级甲等'
},
{
id: 70,
name: '北京市海淀区妇幼保健院',
level: '三级甲等'
},
{
id: 71,
name: '北京市丰台区中西医结合医院',
level: '三级甲等'
},
{
id: 72,
name: '北京市和平里医院',
level: '三级甲等'
},
{
id: 73,
name: '北京市隆福医院',
level: '三级甲等'
},
{
id: 74,
name: '北京市昌平区中医医院',
level: '三级甲等'
},
{
id: 75,
name: '北京市昌平区中西医结合医院',
level: '三级甲等'
},
{
id: 76,
name: '北京市房山区中医医院',
level: '三级甲等'
},
{
id: 77,
name: '北京市平谷区中医医院',
level: '三级甲等'
},
{
id: 78,
name: '通州区妇幼保健院',
level: '三级甲等'
},
{
id: 79,
name: '北京燕化医院',
level: '三级甲等'
},
{
id: 80,
name: '北京和睦家医院',
level: '三级甲等'
},
{
id: 81,
name: '北京华德眼科医院',
level: '三级甲等'
},
{
id: 82,
name: '北京希玛林顺潮眼科医院',
level: '三级甲等'
},
{
id: 83,
name: '北京优联医院',
level: '三级甲等'
},
{
id: 84,
name: '北京裕和医院',
level: '三级甲等'
},
{
id: 85,
name: '北京京城皮肤医院',
level: '三级甲等'
},
{
id: 86,
name: '航空总医院',
level: '三级甲等'
},
{
id: 87,
name: '航天中心医院',
level: '三级甲等'
},
{
id: 88,
name: '航天总医院',
level: '三级甲等'
},
{
id: 89,
name: '北京电力医院',
level: '三级甲等'
},
{
id: 90,
name: '北京通用航天医院',
level: '三级甲等'
},
{
id: 91,
name: '应急管理部应急总医院',
level: '三级甲等'
},
{
id: 92,
name: '北京回龙观医院',
level: '三级甲等'
},
{
id: 93,
name: '北京康复医院',
level: '三级甲等'
},
{
id: 94,
name: '北京南郊肿瘤医院',
level: '三级甲等'
},
{
id: 95,
name: '北京美中爱瑞肿瘤医院',
level: '三级甲等'
},
{
id: 96,
name: '北京陆道培医院',
level: '三级甲等'
},
{
id: 97,
name: '北京高博医院',
level: '三级甲等'
},
{
id: 98,
name: '北京高博博仁医院',
level: '三级甲等'
},
{
id: 99,
name: '北京京都儿童医院',
level: '三级甲等'
},
{
id: 100,
name: '北京首大眼耳鼻喉医院',
level: '三级甲等'
},
{
id: 101,
name: '北京市海淀医院',
level: '三级甲等'
},
{
id: 102,
name: '北京市中关村医院',
level: '三级甲等'
},
{
id: 103,
name: '北京市石景山医院',
level: '三级甲等'
},
{
id: 104,
name: '北京市顺义区医院',
level: '三级甲等'
},
{
id: 105,
name: '北京市大兴区人民医院',
level: '三级甲等'
},
{
id: 106,
name: '北京市房山区良乡医院',
level: '三级甲等'
},
{
id: 107,
name: '北京市延庆区医院',
level: '三级甲等'
},
{
id: 108,
name: '北京市平谷区医院',
level: '三级甲等'
},
{
id: 109,
name: '北京市密云区中医医院',
level: '三级甲等'
},
{
id: 110,
name: '北京怀柔医院',
level: '三级甲等'
},
{
id: 111,
name: '北京中医医院怀柔医院',
level: '三级甲等'
},
{
id: 112,
name: '北京协和医院',
level: '三级甲等'
},
{
id: 113,
name: '北京医院',
level: '三级甲等'
},
{
id: 114,
name: '北京市第六医院',
level: '二级甲等'
},
{
id: 115,
name: '北京市普仁医院',
level: '二级甲等'
},
{
id: 116,
name: '北京市鼓楼中医医院',
level: '二级甲等'
},
{
id: 117,
name: '北京市西城区人民医院',
level: '二级甲等'
},
{
id: 118,
name: '北京市西城区平安医院',
level: '二级甲等'
},
{
id: 119,
name: '北京市第二医院',
level: '二级甲等'
},
{
id: 120,
name: '北京市东城区第一人民医院',
level: '二级甲等'
},
{
id: 121,
name: '北京市丰台区中医医院',
level: '二级甲等'
},
{
id: 122,
name: '北京市丰台区医院',
level: '二级甲等'
},
{
id: 123,
name: '北京市丰台区康复医院',
level: '二级甲等'
},
{
id: 124,
name: '北京市石景山区中医医院',
level: '二级甲等'
},
{
id: 125,
name: '北京市通州区中西医结合医院',
level: '二级甲等'
},
{
id: 126,
name: '北京市通州区新华医院',
level: '二级甲等'
},
{
id: 127,
name: '北京市通州区老年病医院',
level: '二级甲等'
},
{
id: 128,
name: '北京市顺义区空港医院',
level: '二级甲等'
},
{
id: 129,
name: '北京市顺义区精神病医院',
level: '二级甲等'
},
{
id: 130,
name: '北京市昌平区医院',
level: '二级甲等'
},
{
id: 131,
name: '北京市昌平区妇幼保健院',
level: '二级甲等'
},
{
id: 132,
name: '北京市昌平区南口医院',
level: '二级甲等'
},
{
id: 133,
name: '北京市大兴区妇幼保健院',
level: '二级甲等'
},
{
id: 134,
name: '北京市大兴区心康医院',
level: '二级甲等'
},
{
id: 135,
name: '北京市房山区第一医院',
level: '二级甲等'
},
{
id: 136,
name: '北京市房山区妇幼保健院',
level: '二级甲等'
},
{
id: 137,
name: '北京市房山区精神病医院',
level: '二级甲等'
},
{
id: 138,
name: '北京市密云区医院',
level: '二级甲等'
},
{
id: 139,
name: '北京市密云区妇幼保健院',
level: '二级甲等'
},
{
id: 140,
name: '北京市平谷区妇幼保健院',
level: '二级甲等'
},
{
id: 141,
name: '北京市平谷区精神病医院',
level: '二级甲等'
},
{
id: 142,
name: '北京市延庆区妇幼保健院',
level: '二级甲等'
},
{
id: 143,
name: '北京市延庆区精神病医院',
level: '二级甲等'
},
{
id: 144,
name: '北京市怀柔区妇幼保健院',
level: '二级甲等'
},
{
id: 145,
name: '北京市怀柔区第二医院',
level: '二级甲等'
},
{
id: 146,
name: '北京市门头沟区医院',
level: '二级甲等'
},
{
id: 147,
name: '北京市门头沟区中医医院',
level: '二级甲等'
},
{
id: 148,
name: '北京市门头沟区妇幼保健院',
level: '二级甲等'
},
{
id: 149,
name: '北京水利医院',
level: '二级甲等'
},
{
id: 150,
name: '北京四季青医院',
level: '二级甲等'
},
{
id: 151,
name: '北京上地医院',
level: '二级甲等'
},
{
id: 152,
name: '北京华医中西医结合皮肤病医院',
level: '二级甲等'
},
{
id: 153,
name: '德尔康尼骨科医院',
level: '二级甲等'
},
{
id: 154,
name: '北京怡德医院',
level: '二级甲等'
},
{
id: 155,
name: '北京万柳美中宜和妇儿医院',
level: '二级甲等'
},
{
id: 156,
name: '北京家圆医院',
level: '二级甲等'
},
{
id: 157,
name: '北京新世纪儿童医院',
level: '二级甲等'
},
{
id: 158,
name: '北京和睦家东城院区',
level: '二级甲等'
},
{
id: 159,
name: '北京嘉禾妇儿医院',
level: '二级甲等'
},
{
id: 160,
name: '垂杨柳医院',
level: '二级甲等'
}
]
},
onLoad(options) {
const today = new Date()
const year = today.getFullYear()
const month = String(today.getMonth() + 1).padStart(2, '0')
const day = String(today.getDate()).padStart(2, '0')
const todayStr = `${year}-${month}-${day}`
this.setData({
today: todayStr
})
const serviceId = parseInt(options.id) || 1
this.loadServiceDetail(serviceId)
},
loadServiceDetail(id) {
const app = getApp()
let service = null
for (const item of app.globalData.services) {
if (item.id === id) {
service = item
break
}
}
if (!service) {
return
}
const totalPrice = this.calculateTotal(service.price, 1)
this.setData({
service: service,
totalPrice: totalPrice
})
},
calculateTotal(price) {
return price
},
openOrderPopup() {
const app = getApp()
if (!app.globalData.user) {
wx.showToast({
title: '请先登录',
icon: 'none'
})
return
}
const user = app.globalData.user
this.setData({
patientName: user.profile?.name || '',
patientPhone: user.profile?.mobile || '',
showOrderPopup: true
})
},
closeOrderPopup() {
this.setData({
showOrderPopup: false
})
},
onPatientNameChange(e) {
this.setData({
patientName: e.detail.value
})
},
onPatientPhoneChange(e) {
this.setData({
patientPhone: e.detail.value
})
},
onProvinceChange(e) {
const index = e.detail.value
const province = this.data.provinces[index]
this.setData({
provinceIndex: index,
province: province
})
},
onHospitalChange(e) {
this.setData({
hospital: e.detail.value
})
},
onDepartmentChange(e) {
this.setData({
department: e.detail.value
})
},
onDateChange(e) {
this.setData({
appointmentDate: e.detail.value
})
},
onTimeChange(e) {
this.setData({
appointmentTime: e.detail.value
})
},
onGenderChange(e) {
const index = e.detail.value
const gender = this.data.genderOptions[index]
this.setData({
genderIndex: index,
gender: gender
})
},
onRemarkChange(e) {
this.setData({
remark: e.detail.value
})
},
submitOrder() {
const {
service,
patientName,
patientPhone,
province,
hospital,
department,
appointmentDate,
appointmentTime,
gender,
remark
} = this.data
if (!patientName.trim()) {
wx.showToast({
title: '请输入就诊人姓名',
icon: 'none'
})
return
}
if (!patientPhone.trim()) {
wx.showToast({
title: '请输入联系电话',
icon: 'none'
})
return
}
if (!hospital.trim()) {
wx.showToast({
title: '请输入就诊医院',
icon: 'none'
})
return
}
if (!department.trim()) {
wx.showToast({
title: '请输入就诊科室',
icon: 'none'
})
return
}
if (!appointmentDate) {
wx.showToast({
title: '请选择预约日期',
icon: 'none'
})
return
}
if (!appointmentTime) {
wx.showToast({
title: '请选择预约时间',
icon: 'none'
})
return
}
const phoneRegex = /^1[3-9]\d{9}$/
if (!phoneRegex.test(patientPhone.trim())) {
wx.showToast({
title: '请输入正确的手机号',
icon: 'none'
})
return
}
const app = getApp()
const user = app.globalData.user
let sex = "none"
if (gender == '男') sex = 'male'
else if (gender == '女') sex = 'female'
const orderData = {
userId: user._id,
patient: {
name: patientName.trim(),
mobile: patientPhone.trim(),
},
escort: {
serviceId: service.id,
serviceName: service.title,
},
hospital: {
province: province,
name: hospital.trim(),
department: department.trim(),
},
attendant: {
sex: sex,
},
schedule: {
date: appointmentDate,
startTime: appointmentTime
},
payment: {
totalFee: service.price
},
notes: {
patientNote: remark.trim()
}
}
wx.showLoading({
title: '提交中...'
})
API.escort.createRecord(orderData)
.then((data) => {
wx.hideLoading()
if (data.code === 0) {
wx.showToast({
title: '下单成功',
icon: 'success'
})
this.setData({
showOrderPopup: false
})
this.resetForm()
} else {
wx.showToast({
title: data.msg || '下单失败',
icon: 'none'
})
}
})
.catch((err) => {
wx.hideLoading()
wx.showToast({
title: '网络请求失败',
icon: 'none'
})
console.log('下单失败', err)
})
},
resetForm() {
this.setData({
patientName: '',
patientPhone: '',
province: '',
provinceIndex: 0,
hospital: '',
department: '',
appointmentDate: '',
appointmentTime: '',
gender: '',
genderIndex: 0,
remark: ''
})
const totalPrice = this.calculateTotal(this.data.service.price)
this.setData({
totalPrice: totalPrice
})
},
onShareAppMessage() {
const {
service
} = this.data
return {
title: `${service.title} - 专业陪诊服务`,
path: `/pages/itemdetail/itemdetail?id=${service.id}`
}
}
})