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}` } } })