// order.js const mockData = require('../../utils/mockData.js') Page({ data: { currentTab: 0, hospitalKeyword: '', medicineKeyword: '', hospitals: mockData.hospitals, filteredHospitals: mockData.hospitals, priceResults: [], hotMedicines: [ { name: '阿莫西林胶囊', minPrice: 24.8 }, { name: '布洛芬缓释胶囊', minPrice: 17.5 }, { name: '氯雷他定片', minPrice: 30.5 }, { name: '奥美拉唑肠溶胶囊', minPrice: 45.0 } ], showCaseModal: false, showMedicineModal: false, selectedHospital: null, selectedCase: null, selectedMedicines: [], totalPrice: 0 }, onLoad() { console.log('下单页面加载完成') }, // 切换选项卡 switchTab(e) { const tab = parseInt(e.currentTarget.dataset.tab) this.setData({ currentTab: tab }) }, // 医院搜索 onHospitalSearch(e) { const keyword = e.detail.value const filteredHospitals = this.data.hospitals.filter(hospital => hospital.name.includes(keyword) || hospital.address.includes(keyword) ) this.setData({ hospitalKeyword: keyword, filteredHospitals: filteredHospitals }) }, // 药品搜索 onMedicineSearch(e) { const keyword = e.detail.value this.setData({ medicineKeyword: keyword }) if (keyword && mockData.medicinePrices[keyword]) { this.setData({ priceResults: mockData.medicinePrices[keyword] }) } else { this.setData({ priceResults: [] }) } }, // 选择医院 selectHospital(e) { const hospital = e.currentTarget.dataset.hospital this.setData({ selectedHospital: hospital, showCaseModal: true }) }, // 关闭病例单模态框 closeCaseModal() { this.setData({ showCaseModal: false, selectedHospital: null }) }, // 选择病例单 selectCase(e) { const selectedCase = e.currentTarget.dataset.case // 初始化药品数量 const medicines = selectedCase.medicines.map(medicine => ({ ...medicine, quantity: 0 })) this.setData({ selectedCase: { ...selectedCase, medicines }, showCaseModal: false, showMedicineModal: true }) }, // 关闭药品模态框 closeMedicineModal() { this.setData({ showMedicineModal: false, selectedCase: null, selectedMedicines: [], totalPrice: 0 }) }, // 增加药品数量 increaseQuantity(e) { const medicine = e.currentTarget.dataset.medicine const medicines = this.data.selectedCase.medicines.map(item => { if (item.id === medicine.id) { const quantity = (item.quantity || 0) + 1 return { ...item, quantity } } return item }) const totalPrice = medicines.reduce((total, item) => total + (item.price * (item.quantity || 0)), 0) this.setData({ 'selectedCase.medicines': medicines, totalPrice: totalPrice }) }, // 减少药品数量 decreaseQuantity(e) { const medicine = e.currentTarget.dataset.medicine const medicines = this.data.selectedCase.medicines.map(item => { if (item.id === medicine.id && (item.quantity || 0) > 0) { const quantity = item.quantity - 1 return { ...item, quantity } } return item }) const totalPrice = medicines.reduce((total, item) => total + (item.price * (item.quantity || 0)), 0) this.setData({ 'selectedCase.medicines': medicines, totalPrice: totalPrice }) }, // 确认下单 confirmOrder() { const selectedMedicines = this.data.selectedCase.medicines .filter(item => item.quantity > 0) .map(item => ({ name: item.name, price: item.price, quantity: item.quantity })) if (selectedMedicines.length === 0) { wx.showToast({ title: '请选择至少一种药品', icon: 'none' }) return } // 模拟下单成功 wx.showModal({ title: '下单成功', content: `订单总价:¥${this.data.totalPrice}\n药品将尽快通过无人机配送`, showCancel: false, success: () => { this.closeMedicineModal() // 可以跳转到订单详情页面 } }) }, // 选择热门药品 selectHotMedicine(e) { const medicineName = e.currentTarget.dataset.medicine this.setData({ medicineKeyword: medicineName }) if (mockData.medicinePrices[medicineName]) { this.setData({ priceResults: mockData.medicinePrices[medicineName] }) } }, // 通过价格选择医院 selectByPrice(e) { const priceInfo = e.currentTarget.dataset.price wx.showModal({ title: '确认下单', content: `确认在${priceInfo.hospital}购买${this.data.medicineKeyword},价格:¥${priceInfo.price}`, success: (res) => { if (res.confirm) { wx.showToast({ title: '下单成功', icon: 'success' }) } } }) } })