diff --git a/app.json b/app.json index 186000c..861d23e 100644 --- a/app.json +++ b/app.json @@ -16,7 +16,9 @@ "pages/askingSyAdd/askingSyAdd", "pages/askingSyDetails/askingSyDetails", "pages/expert/expert", - "pages/expertChat/expertChat" + "pages/expertChat/expertChat", + "pages/medicine/medicine", + "pages/medicineDetails/medicineDetails" ] }, { diff --git a/pages/home/home.js b/pages/home/home.js index b5acc83..41a7db4 100644 --- a/pages/home/home.js +++ b/pages/home/home.js @@ -62,6 +62,13 @@ Page({ }) }, + // 去买药 + bindYao(){ + wx.navigateTo({ + url: '/pagesA/pages/medicine/medicine', + }) + }, + //获取当前位置信息 getLocation() { diff --git a/pages/home/home.wxml b/pages/home/home.wxml index 5bf2d73..829bfbd 100644 --- a/pages/home/home.wxml +++ b/pages/home/home.wxml @@ -51,7 +51,7 @@ 找专家 智能匹配医生 - + 去买药 制定专业的治疗方案 diff --git a/pagesA/images/5.png b/pagesA/images/5.png new file mode 100644 index 0000000..f301bb1 Binary files /dev/null and b/pagesA/images/5.png differ diff --git a/pagesA/images/6.jpg b/pagesA/images/6.jpg new file mode 100644 index 0000000..e78edf5 Binary files /dev/null and b/pagesA/images/6.jpg differ diff --git a/pagesA/images/amxl.png b/pagesA/images/amxl.png new file mode 100644 index 0000000..6e24ef8 Binary files /dev/null and b/pagesA/images/amxl.png differ diff --git a/pagesA/images/blf.png b/pagesA/images/blf.png new file mode 100644 index 0000000..6a3836c Binary files /dev/null and b/pagesA/images/blf.png differ diff --git a/pagesA/images/lh.png b/pagesA/images/lh.png new file mode 100644 index 0000000..2220243 Binary files /dev/null and b/pagesA/images/lh.png differ diff --git a/pagesA/images/wc.png b/pagesA/images/wc.png new file mode 100644 index 0000000..459d89e Binary files /dev/null and b/pagesA/images/wc.png differ diff --git a/pagesA/pages/expert/expert.wxml b/pagesA/pages/expert/expert.wxml index 857f01f..260fb86 100644 --- a/pagesA/pages/expert/expert.wxml +++ b/pagesA/pages/expert/expert.wxml @@ -86,7 +86,6 @@ 暂无相关专家 - 换个关键词试试,或联系客服为您推荐 @@ -149,7 +148,7 @@ {{currentExpert.expert}} - + {{currentExpert.isOnline=='在线' ? '在线可咨询' : '暂时离线'}} @@ -219,7 +218,7 @@ 咨询时间建议 - {{currentExpert.online ? '专家当前在线,可直接联系咨询' : '专家当前不在线,建议在工作时间联系或发送邮件咨询'}} + {{currentExpert.isOnline=='在线' ? '专家当前在线,可直接联系咨询' : '专家当前不在线,建议在工作时间联系或发送邮件咨询'}} 工作日 9:00-18:00 周末 10:00-16:00 @@ -231,7 +230,7 @@ diff --git a/pagesA/pages/expert/expert.wxss b/pagesA/pages/expert/expert.wxss index b520d44..ee9ba16 100644 --- a/pagesA/pages/expert/expert.wxss +++ b/pagesA/pages/expert/expert.wxss @@ -645,7 +645,7 @@ .contact-value { display: block; - font-size: 32rpx; + font-size: 28rpx; color: #333; font-weight: 600; margin-bottom: 4rpx; @@ -665,7 +665,6 @@ font-size: 22rpx; font-weight: 600; border: none; - margin-left: 20rpx; transition: all 0.3s; } @@ -749,6 +748,7 @@ font-size: 32rpx; font-weight: bold; transition: all 0.3s; + } .secondary-btn { diff --git a/pagesA/pages/medicine/medicine.js b/pagesA/pages/medicine/medicine.js new file mode 100644 index 0000000..c3ae8a3 --- /dev/null +++ b/pagesA/pages/medicine/medicine.js @@ -0,0 +1,616 @@ +Page({ + data: { + // 原始药品列表数据 + medicineList: [], + // 筛选后的列表 + filteredList: [], + + // 搜索相关 + searchKeyword: '', + + // 筛选相关 + currentCategory: 'all', + + // 分页相关 + page: 1, + pageSize: 12, + hasMore: true, + loading: false, + + // 弹窗控制 + showDetailModal: false, + currentMedicine: null, + + // 滚动相关 + showBackToTop: false, + scrollTop: 0 + }, + + onLoad: function() { + this.initData(); + }, + + onShow: function() { + // 页面显示时刷新数据 + this.refreshList(); + }, + + onPullDownRefresh: function() { + // 下拉刷新 + this.refreshList(); + }, + + onReachBottom: function() { + // 上拉加载更多 + if (this.data.hasMore && !this.data.loading) { + this.loadMore(); + } + }, + + onPageScroll: function(e) { + // 显示/隐藏返回顶部按钮 + if (e.scrollTop > 300 && !this.data.showBackToTop) { + this.setData({ showBackToTop: true }); + } else if (e.scrollTop <= 300 && this.data.showBackToTop) { + this.setData({ showBackToTop: false }); + } + + this.setData({ scrollTop: e.scrollTop }); + }, + + // 初始化数据 + initData: function() { + const mockData = this.getMockData(); + this.setData({ + medicineList: mockData, + filteredList: mockData + }); + }, + + // 获取模拟数据 + getMockData: function() { + return [ + { + id: 1, + name: "阿莫西林胶囊", + manufacturer: "华北制药股份有限公司", + specification: "0.25g*24粒/盒", + category: "prescription", + categoryText: "处方药", + indication: "用于敏感菌所致的呼吸道感染、泌尿系统感染等", + price: 25.8, + originalPrice: 32.0, + isHot: true, + salesCount: 1280, + stock: 150, + image: "https://via.placeholder.com/300x300/3a7ff3/ffffff?text=阿莫西林", + + expert: { + name: "张明华", + title: "主任医师", + hospital: "北京协和医院", + avatar: "https://via.placeholder.com/100x100/3a7ff3/ffffff?text=张", + reason: "本品为广谱抗生素,对多数革兰氏阳性菌和革兰氏阴性菌均有良好的抗菌作用,是临床常用的一线抗生素。", + expertise: "呼吸内科", + years: 15, + recommendTime: "2024-01-15" + }, + + store: { + name: "仁和堂大药房", + address: "北京市朝阳区建国路88号", + phone: "010-88888888", + businessHours: "8:00-22:00", + features: "24小时营业,专业药师咨询,医保定点药店", + distance: "1.2", + latitude: 39.9042, + longitude: 116.4074, + rating: 4.8, + images: [ + "https://via.placeholder.com/400x300/4CAF50/ffffff?text=药店外观", + "https://via.placeholder.com/400x300/2196F3/ffffff?text=店内环境" + ] + }, + + details: { + usage: "口服。成人一次0.5g,每6~8小时1次,一日剂量不超过4g。", + precautions: "青霉素过敏者禁用,用药期间可能出现腹泻、恶心等胃肠道反应。", + storage: "密封,在干燥处保存。", + validity: "24个月" + } + }, + { + id: 2, + name: "连花清瘟胶囊", + manufacturer: "石家庄以岭药业股份有限公司", + specification: "0.35g*24粒/盒", + category: "chinese", + categoryText: "中成药", + indication: "用于治疗流行性感冒属热毒袭肺证", + price: 28.5, + originalPrice: 35.0, + isHot: true, + salesCount: 2560, + stock: 89, + image: "https://via.placeholder.com/300x300/4CAF50/ffffff?text=连花清瘟", + + expert: { + name: "李芳", + title: "副主任医师", + hospital: "上海瑞金医院", + avatar: "https://via.placeholder.com/100x100/4CAF50/ffffff?text=李", + reason: "在新冠肺炎疫情防控中显示出良好效果,具有清瘟解毒、宣肺泄热的功效,适用于流感治疗。", + expertise: "中医科", + years: 12, + recommendTime: "2024-01-14" + }, + + store: { + name: "同济堂药店", + address: "上海市黄浦区南京东路100号", + phone: "021-66666666", + businessHours: "9:00-21:00", + features: "中药配方齐全,提供代煎服务,老字号药店", + distance: "2.5", + latitude: 31.2304, + longitude: 121.4737, + rating: 4.7, + images: [ + "https://via.placeholder.com/400x300/FF9800/ffffff?text=中药柜台" + ] + }, + + details: { + usage: "口服。一次4粒,一日3次。", + precautions: "风寒感冒者不适用,高血压、心脏病患者慎用。", + storage: "密封,置阴凉干燥处。", + validity: "36个月" + } + }, + { + id: 3, + name: "维生素C片", + manufacturer: "养生堂药业有限公司", + specification: "100mg*60片/瓶", + category: "health", + categoryText: "保健品", + indication: "用于预防和治疗维生素C缺乏症", + price: 18.9, + originalPrice: 24.0, + isHot: false, + salesCount: 890, + stock: 320, + image: "https://via.placeholder.com/300x300/FF9800/ffffff?text=维生素C", + + expert: { + name: "王建国", + title: "执业药师", + hospital: "广州中医药大学附属医院", + avatar: "https://via.placeholder.com/100x100/FF9800/ffffff?text=王", + reason: "增强免疫力,促进铁吸收,抗氧化作用明显,适合日常保健和预防感冒。", + expertise: "临床药学", + years: 8, + recommendTime: "2024-01-13" + }, + + store: { + name: "老百姓大药房", + address: "广州市天河区体育西路189号", + phone: "020-77777777", + businessHours: "7:30-23:00", + features: "连锁品牌,价格实惠,会员优惠,支持医保", + distance: "0.8", + latitude: 23.1358, + longitude: 113.3269, + rating: 4.6, + images: [] + }, + + details: { + usage: "口服。成人一次1片,一日1次。", + precautions: "不宜长期过量服用,肾功能不全者慎用。", + storage: "避光,密封保存。", + validity: "24个月" + } + }, + { + id: 4, + name: "布洛芬缓释胶囊", + manufacturer: "中美天津史克制药有限公司", + specification: "0.3g*20粒/盒", + category: "otc", + categoryText: "非处方药", + indication: "用于缓解轻至中度疼痛如头痛、关节痛、偏头痛等", + price: 22.5, + originalPrice: 28.0, + isHot: true, + salesCount: 1870, + stock: 120, + image: "https://via.placeholder.com/300x300/9C27B0/ffffff?text=布洛芬", + + expert: { + name: "陈晓东", + title: "主任医师", + hospital: "武汉同济医院", + avatar: "https://via.placeholder.com/100x100/9C27B0/ffffff?text=陈", + reason: "解热镇痛效果确切,缓释剂型作用持久,胃肠道刺激小,适合各种疼痛的缓解。", + expertise: "疼痛科", + years: 20, + recommendTime: "2024-01-12" + }, + + store: { + name: "九州通大药房", + address: "武汉市江汉区解放大道688号", + phone: "027-55555555", + businessHours: "8:30-21:30", + features: "药品齐全,支持线上订购,送货上门", + distance: "3.2", + latitude: 30.5928, + longitude: 114.3052, + rating: 4.9, + images: [ + "https://via.placeholder.com/400x300/3F51B5/ffffff?text=现代药店", + "https://via.placeholder.com/400x300/E91E63/ffffff?text=专业服务" + ] + }, + + details: { + usage: "口服。成人一次1粒,一日2次。", + precautions: "胃肠道溃疡患者禁用,不宜长期服用。", + storage: "密封,在阴凉干燥处保存。", + validity: "36个月" + } + }, + { + id: 5, + name: "盐酸左氧氟沙星片", + manufacturer: "浙江医药股份有限公司", + specification: "0.5g*6片/盒", + category: "prescription", + categoryText: "处方药", + indication: "用于敏感细菌引起的呼吸系统、泌尿系统感染", + price: 42.8, + originalPrice: 56.0, + isHot: false, + salesCount: 560, + stock: 75, + image: "https://via.placeholder.com/300x300/2196F3/ffffff?text=左氧氟沙星", + + expert: { + name: "刘涛", + title: "副主任医师", + hospital: "南京鼓楼医院", + avatar: "https://via.placeholder.com/100x100/2196F3/ffffff?text=刘", + reason: "抗菌谱广,对多种革兰氏阴性菌和阳性菌有效,特别适用于泌尿系统感染的治疗。", + expertise: "泌尿外科", + years: 10, + recommendTime: "2024-01-11" + }, + + store: { + name: "金陵大药房", + address: "南京市鼓楼区中山路321号", + phone: "025-44444444", + businessHours: "8:00-21:00", + features: "专业处方药房,药师驻店咨询", + distance: "1.8", + latitude: 32.0603, + longitude: 118.7969, + rating: 4.5, + images: [] + }, + + details: { + usage: "口服。一次1片,一日1次。", + precautions: "18岁以下患者禁用,孕妇及哺乳期妇女禁用。", + storage: "遮光,密封保存。", + validity: "24个月" + } + }, + { + id: 6, + name: "板蓝根颗粒", + manufacturer: "广州白云山和记黄埔中药有限公司", + specification: "10g*20袋/盒", + category: "chinese", + categoryText: "中成药", + indication: "清热解毒,凉血利咽,用于肺胃热盛所致的咽喉肿痛", + price: 15.9, + originalPrice: 19.9, + isHot: true, + salesCount: 3200, + stock: 450, + image: "https://via.placeholder.com/300x300/FF5722/ffffff?text=板蓝根", + + expert: { + name: "孙丽", + title: "主治医师", + hospital: "成都中医药大学附属医院", + avatar: "https://via.placeholder.com/100x100/FF5722/ffffff?text=孙", + reason: "传统经典方剂,清热解毒效果显著,特别适合预防和治疗感冒初期症状。", + expertise: "中医内科", + years: 6, + recommendTime: "2024-01-10" + }, + + store: { + name: "康恩贝大药房", + address: "成都市锦江区春熙路58号", + phone: "028-33333333", + businessHours: "9:00-22:00", + features: "连锁品牌,中药西药齐全", + distance: "0.5", + latitude: 30.6578, + longitude: 104.0657, + rating: 4.4, + images: [] + }, + + details: { + usage: "开水冲服。一次1袋,一日3次。", + precautions: "风寒感冒者不适用,糖尿病患者慎用。", + storage: "密封,防潮。", + validity: "36个月" + } + }, + { + id: 7, + name: "复方甘草片", + manufacturer: "北京双鹤药业股份有限公司", + specification: "100片/瓶", + category: "prescription", + categoryText: "处方药", + indication: "用于镇咳祛痰,适用于感冒咳嗽", + price: 12.5, + originalPrice: 16.0, + isHot: false, + salesCount: 780, + stock: 200, + image: "https://via.placeholder.com/300x300/673AB7/ffffff?text=甘草片", + + expert: { + name: "赵国强", + title: "主任医师", + hospital: "天津医科大学总医院", + avatar: "https://via.placeholder.com/100x100/673AB7/ffffff?text=赵", + reason: "传统止咳良药,镇咳祛痰效果确切,价格实惠,适合普通感冒咳嗽。", + expertise: "呼吸内科", + years: 18, + recommendTime: "2024-01-09" + }, + + store: { + name: "天津医药大药房", + address: "天津市和平区南京路128号", + phone: "022-22222222", + businessHours: "8:00-21:30", + features: "国营药店,药品质量有保障", + distance: "2.0", + latitude: 39.1172, + longitude: 117.2056, + rating: 4.3, + images: [] + }, + + details: { + usage: "口服。一次3-4片,一日3次。", + precautions: "不宜长期服用,孕妇及哺乳期妇女慎用。", + storage: "密封,在干燥处保存。", + validity: "36个月" + } + }, + { + id: 8, + name: "葡萄糖酸钙口服液", + manufacturer: "哈药集团制药六厂", + specification: "10ml*12支/盒", + category: "otc", + categoryText: "非处方药", + indication: "用于预防和治疗钙缺乏症", + price: 35.0, + originalPrice: 42.0, + isHot: true, + salesCount: 1560, + stock: 180, + image: "https://via.placeholder.com/300x300/00BCD4/ffffff?text=葡萄糖酸钙", + + expert: { + name: "周敏", + title: "副主任医师", + hospital: "西安交通大学第一附属医院", + avatar: "https://via.placeholder.com/100x100/00BCD4/ffffff?text=周", + reason: "钙吸收好,口感适宜,特别适合儿童、孕妇和老年人补钙。", + expertise: "儿科", + years: 14, + recommendTime: "2024-01-08" + }, + + store: { + name: "西安医药大药房", + address: "西安市碑林区南大街58号", + phone: "029-11111111", + businessHours: "8:30-21:00", + features: "专业儿科用药,儿童健康咨询", + distance: "1.5", + latitude: 34.2583, + longitude: 108.9426, + rating: 4.7, + images: [] + }, + + details: { + usage: "口服。一次1-2支,一日3次。", + precautions: "肾功能不全者慎用,不宜与洋地黄类药物同时使用。", + storage: "密封,置阴凉处。", + validity: "24个月" + } + } + ]; + }, + + // 获取简短文本(修复undefined问题) + getShortText: function(text, maxLength) { + if (!text || typeof text !== 'string') { + return ''; + } + if (text.length <= maxLength) { + return text; + } + return text.substring(0, maxLength) + '...'; + }, + + // 搜索输入处理(输入时自动搜索) + onSearchInput: function(e) { + const keyword = e.detail.value; + this.setData({ + searchKeyword: keyword + }, () => { + // 输入后立即执行筛选 + this.filterList(); + }); + }, + + // 清除搜索 + clearSearch: function() { + this.setData({ + searchKeyword: '' + }, () => { + this.filterList(); + }); + }, + + // 分类筛选切换 + onCategoryChange: function(e) { + const category = e.currentTarget.dataset.category; + this.setData({ + currentCategory: category + }, () => { + this.filterList(); + }); + }, + + // 筛选列表 + filterList: function() { + const { searchKeyword, currentCategory, medicineList } = this.data; + let filteredList = [...medicineList]; + + // 搜索筛选 + if (searchKeyword && searchKeyword.trim()) { + const keyword = searchKeyword.trim().toLowerCase(); + filteredList = filteredList.filter(item => { + // 搜索药品名称 + if (item.name && item.name.toLowerCase().includes(keyword)) { + return true; + } + // 搜索专家姓名 + if (item.expert && item.expert.name && item.expert.name.toLowerCase().includes(keyword)) { + return true; + } + // 搜索适用症状 + if (item.indication && item.indication.toLowerCase().includes(keyword)) { + return true; + } + // 搜索生产厂家 + if (item.manufacturer && item.manufacturer.toLowerCase().includes(keyword)) { + return true; + } + return false; + }); + } + + // 分类筛选 + if (currentCategory !== 'all') { + filteredList = filteredList.filter(item => item.category === currentCategory); + } + + this.setData({ + filteredList: filteredList, + page: 1, + hasMore: filteredList.length > this.data.pageSize + }); + }, + + // 刷新列表 + refreshList: function() { + wx.showLoading({ + title: '刷新中...', + }); + + // 模拟网络请求 + setTimeout(() => { + const mockData = this.getMockData(); + this.setData({ + medicineList: mockData + }, () => { + // 刷新后重新筛选 + this.filterList(); + }); + + wx.hideLoading(); + wx.stopPullDownRefresh(); + }, 800); + }, + + // 加载更多 + loadMore: function() { + if (!this.data.hasMore) return; + + this.setData({ loading: true }); + + // 模拟网络请求 + setTimeout(() => { + const currentList = this.data.filteredList; + + // 这里简化为直接追加数据(实际项目中应该从服务器获取新数据) + if (currentList.length < this.data.medicineList.length) { + const allData = this.data.medicineList; + const startIndex = currentList.length; + const endIndex = Math.min(startIndex + 4, allData.length); + const newData = allData.slice(startIndex, endIndex); + + const updatedList = [...currentList, ...newData]; + + this.setData({ + filteredList: updatedList, + hasMore: updatedList.length < allData.length, + loading: false + }); + } else { + this.setData({ + hasMore: false, + loading: false + }); + } + }, 1000); + }, + + // 显示药品详情 + showMedicineDetail: function(e) { + const medId = e.currentTarget.dataset.id; + // const medicine = this.data.filteredList[index]; + // this.setData({ + // showDetailModal: true, + // currentMedicine: medicine + // }); + + wx.navigateTo({ + url: `/pagesA/pages/medicineDetails/medicineDetails?id=${medId}`, + }) + }, + + // 详情弹窗关闭 + onDetailModalClose: function() { + this.setData({ + showDetailModal: false + }); + }, + + // 返回顶部 + scrollToTop: function() { + wx.pageScrollTo({ + scrollTop: 0, + duration: 300 + }); + } +}); \ No newline at end of file diff --git a/pagesA/pages/medicine/medicine.json b/pagesA/pages/medicine/medicine.json new file mode 100644 index 0000000..98a16fa --- /dev/null +++ b/pagesA/pages/medicine/medicine.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "药品推荐", + "usingComponents": {} +} \ No newline at end of file diff --git a/pagesA/pages/medicine/medicine.wxml b/pagesA/pages/medicine/medicine.wxml new file mode 100644 index 0000000..aee55c8 --- /dev/null +++ b/pagesA/pages/medicine/medicine.wxml @@ -0,0 +1,155 @@ + + + + + + + + 🔍 + + + ✕ + + + + + + + + + 全部推荐 + + + 处方药 + + + 非处方药 + + + 中成药 + + + 保健品 + + + + + + + + + + + + 未找到"{{searchKeyword}}"相关的药品 + + + 暂无药品推荐 + + + + + + + + + + + + + {{item.categoryText}} + + + + 热销 + + + + + + + {{item.name}} + + + + {{getShortText(item.indication, 12)}} + + + + + {{getShortText(item.manufacturer, 14)}} + + + + + + + + ¥ + {{item.price}} + + + ¥{{item.originalPrice}} + + + + + + + {{item.expert.name}} + + + + + + 🏪 + {{item.store.name}} + + {{item.store.distance}}km + + + + + + + + + + 上拉加载更多 + + + + + + 加载中... + + + + + 没有更多药品了 + + + + + + ↑ + + \ No newline at end of file diff --git a/pagesA/pages/medicine/medicine.wxss b/pagesA/pages/medicine/medicine.wxss new file mode 100644 index 0000000..327b61a --- /dev/null +++ b/pagesA/pages/medicine/medicine.wxss @@ -0,0 +1,410 @@ +/* 页面容器 */ +.page-container { + background-color: #f8f9fa; + min-height: 100vh; + padding-bottom: 40rpx; + } + + /* 顶部栏 */ + .top-bar { + background-color: white; + position: sticky; + top: 0; + z-index: 100; + box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05); + } + + /* 搜索容器 */ + .search-container { + padding: 20rpx 30rpx; + } + + .search-box { + display: flex; + align-items: center; + background-color: #f8f9fa; + border-radius: 50rpx; + padding: 18rpx 30rpx; + } + + .search-icon { + font-size: 32rpx; + color: #999; + margin-right: 20rpx; + } + + .search-input { + flex: 1; + font-size: 28rpx; + color: #333; + height: 40rpx; + } + + .search-clear { + width: 40rpx; + height: 40rpx; + border-radius: 50%; + background-color: #e0e0e0; + color: #666; + font-size: 24rpx; + display: flex; + align-items: center; + justify-content: center; + } + + /* 分类筛选 */ + .category-filters { + padding: 0 20rpx 20rpx; + } + + .filters-scroll { + white-space: nowrap; + height: 70rpx; + } + + .filter-tag { + display: inline-flex; + align-items: center; + padding: 0 30rpx; + height: 60rpx; + line-height: 60rpx; + border-radius: 30rpx; + background-color: #f8f9fa; + color: #666; + font-size: 26rpx; + margin-right: 20rpx; + } + + .filter-tag.active { + background-color: #3a7ff3; + color: white; + font-weight: 500; + } + + .filter-icon { + margin-right: 8rpx; + } + + /* 药品网格布局 */ + .medicine-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 20rpx; + padding: 30rpx; + } + + /* 药品卡片 */ + .medicine-card { + background-color: white; + border-radius: 20rpx; + overflow: hidden; + box-shadow: 0 4rpx 15rpx rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; + } + + .medicine-card:active { + transform: translateY(-4rpx); + box-shadow: 0 8rpx 25rpx rgba(0, 0, 0, 0.1); + } + + /* 卡片图片区域 */ + .card-image { + position: relative; + width: 100%; + height: 320rpx; + overflow: hidden; + } + + .medicine-img { + width: 100%; + height: 100%; + } + + .card-tag { + position: absolute; + top: 20rpx; + left: 20rpx; + padding: 6rpx 16rpx; + border-radius: 20rpx; + font-size: 22rpx; + color: white; + background-color: #3a7ff3; + } + + .card-tag.prescription { + background-color: #f44336; + } + + .card-tag.otc { + background-color: #4CAF50; + } + + .card-tag.chinese { + background-color: #FF9800; + } + + .card-tag.health { + background-color: #9C27B0; + } + + .card-tag.other { + background-color: #607D8B; + } + + .hot-tag { + position: absolute; + top: 20rpx; + right: 20rpx; + padding: 6rpx 16rpx; + border-radius: 20rpx; + font-size: 22rpx; + color: white; + background-color: #ff4444; + } + + /* 卡片内容区域 */ + .card-content { + padding: 25rpx; + } + + .medicine-name { + font-size: 30rpx; + font-weight: bold; + color: #333; + margin-bottom: 10rpx; + line-height: 1.4; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + min-height: 84rpx; + } + + .medicine-indication { + font-size: 24rpx; + color: #666; + margin-bottom: 15rpx; + line-height: 1.4; + } + + .manufacturer { + font-size: 24rpx; + color: #999; + margin-bottom: 20rpx; + } + + /* 卡片底部 */ + .card-footer { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 15rpx; + } + + .price-section { + display: flex; + align-items: center; + } + + .current-price { + color: #ff4444; + font-weight: bold; + display: flex; + align-items: baseline; + } + + .price-symbol { + font-size: 24rpx; + margin-right: 2rpx; + } + + .price-value { + font-size: 36rpx; + } + + .original-price { + font-size: 24rpx; + color: #999; + text-decoration: line-through; + margin-left: 10rpx; + } + + .expert-brief { + display: flex; + align-items: center; + } + + .expert-avatar { + width: 40rpx; + height: 40rpx; + border-radius: 50%; + margin-right: 8rpx; + } + + .expert-name { + font-size: 24rpx; + color: #666; + } + + /* 店铺信息 */ + .store-brief { + display: flex; + align-items: center; + font-size: 24rpx; + color: #666; + padding-top: 15rpx; + border-top: 1rpx solid #f0f0f0; + } + + .store-icon { + margin-right: 8rpx; + } + + .store-name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .distance { + color: #3a7ff3; + font-size: 22rpx; + } + + /* 空状态 */ + .empty-state { + grid-column: 1 / -1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 100rpx 0; + } + + .empty-image { + width: 200rpx; + height: 200rpx; + margin-bottom: 30rpx; + opacity: 0.5; + } + + .empty-text { + font-size: 32rpx; + color: #999; + margin-bottom: 15rpx; + text-align: center; + } + + .empty-subtext { + font-size: 28rpx; + color: #ccc; + margin-bottom: 40rpx; + } + + .empty-btn { + width: 300rpx; + height: 80rpx; + line-height: 80rpx; + background-color: #3a7ff3; + color: white; + border-radius: 12rpx; + font-size: 30rpx; + } + + /* 加载更多 */ + .load-more, + .no-more { + grid-column: 1 / -1; + text-align: center; + padding: 40rpx 0; + color: #999; + font-size: 26rpx; + } + + .load-text { + position: relative; + display: inline-block; + padding: 0 40rpx; + } + + .load-text::before, + .load-text::after { + content: ''; + position: absolute; + top: 50%; + width: 30rpx; + height: 1rpx; + background-color: #ddd; + } + + .load-text::before { + left: 0; + } + + .load-text::after { + right: 0; + } + + /* 加载中 */ + .loading-container { + grid-column: 1 / -1; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 40rpx 0; + } + + .loading-spinner { + width: 60rpx; + height: 60rpx; + border: 6rpx solid #f3f3f3; + border-top: 6rpx solid #3a7ff3; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 20rpx; + } + + @keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + + /* 返回顶部按钮 */ + .back-to-top { + position: fixed; + bottom: 120rpx; + right: 30rpx; + width: 80rpx; + height: 80rpx; + border-radius: 50%; + background-color: #3a7ff3; + color: white; + font-size: 36rpx; + display: flex; + align-items: center; + justify-content: center; + box-shadow: 0 4rpx 15rpx rgba(58, 127, 243, 0.3); + opacity: 0; + transform: translateY(20rpx); + transition: all 0.3s ease; + z-index: 99; + } + + .back-to-top.show { + opacity: 1; + transform: translateY(0); + } + + /* 响应式调整 */ + @media (max-width: 700rpx) { + .medicine-grid { + grid-template-columns: 1fr; + padding: 20rpx; + } + + .card-image { + height: 400rpx; + } + } \ No newline at end of file diff --git a/pagesA/pages/medicineDetails/medicineDetails.js b/pagesA/pages/medicineDetails/medicineDetails.js new file mode 100644 index 0000000..aa3a032 --- /dev/null +++ b/pagesA/pages/medicineDetails/medicineDetails.js @@ -0,0 +1,605 @@ +Page({ + data: { + // 药品数据 + medicineData: null, + // 是否收藏 + isFavorite: false, + // 加载状态 + loading: true, + // 分享配置 + shareTitle: '', + sharePath: '', + shareImageUrl: '' + }, + + onLoad: function(options) { + // 获取传递过来的药品ID + const medicineId = options.id; + + if (medicineId) { + // 根据ID加载药品数据 + this.loadMedicineData(medicineId); + } else { + wx.showToast({ + title: '药品信息不存在', + icon: 'error', + duration: 2000, + complete: () => { + setTimeout(() => { + wx.navigateBack(); + }, 1500); + } + }); + } + }, + + onShow: function() { + // 检查收藏状态 + this.checkFavoriteStatus(); + }, + + onShareAppMessage: function() { + // 分享配置 + return { + title: this.data.shareTitle || '专家推荐药品', + path: this.data.sharePath || '/pages/index/index', + imageUrl: this.data.shareImageUrl || '/images/share-default.jpg' + }; + }, + + // 根据ID加载药品数据 + loadMedicineData: function(id) { + this.setData({ loading: true }); + + // 模拟网络请求,实际项目中应该从服务器获取 + setTimeout(() => { + const mockData = this.getMockData(); + const medicine = mockData.find(item => item.id == id); + + if (medicine) { + this.setData({ + medicineData: medicine, + loading: false, + shareTitle: `${medicine.name} - ${medicine.expert.name}专家推荐`, + sharePath: `/pages/detail/detail?id=${medicine.id}`, + shareImageUrl: medicine.image + }); + + // 更新页面标题 + wx.setNavigationBarTitle({ + title: medicine.name + }); + } else { + this.setData({ loading: false }); + wx.showToast({ + title: '药品信息加载失败', + icon: 'error', + duration: 2000, + complete: () => { + setTimeout(() => { + wx.navigateBack(); + }, 1500); + } + }); + } + }, 500); + }, + + // 获取模拟数据(应与列表页保持一致) + getMockData: function() { + return [ + { + id: 1, + name: "阿莫西林胶囊", + manufacturer: "华北制药股份有限公司", + specification: "0.25g*24粒/盒", + category: "prescription", + categoryText: "处方药", + indication: "用于敏感菌所致的呼吸道感染、泌尿系统感染等", + price: 25.8, + originalPrice: 32.0, + isHot: true, + salesCount: 1280, + stock: 150, + image: "https://via.placeholder.com/300x300/3a7ff3/ffffff?text=阿莫西林", + + expert: { + name: "张明华", + title: "主任医师", + hospital: "北京协和医院", + avatar: "https://via.placeholder.com/100x100/3a7ff3/ffffff?text=张", + reason: "本品为广谱抗生素,对多数革兰氏阳性菌和革兰氏阴性菌均有良好的抗菌作用,是临床常用的一线抗生素。", + expertise: "呼吸内科", + years: 15, + recommendTime: "2024-01-15" + }, + + store: { + name: "仁和堂大药房", + address: "北京市朝阳区建国路88号", + phone: "010-88888888", + businessHours: "8:00-22:00", + features: "24小时营业,专业药师咨询,医保定点药店", + distance: "1.2", + latitude: 39.9042, + longitude: 116.4074, + rating: 4.8, + images: [ + "/pagesA/images/5.png", + "/pagesA/images/6.jpg", + "/pagesA/images/6.jpg" + ] + }, + + details: { + usage: "口服。成人一次0.5g,每6~8小时1次,一日剂量不超过4g。", + precautions: "青霉素过敏者禁用,用药期间可能出现腹泻、恶心等胃肠道反应。", + storage: "密封,在干燥处保存。", + validity: "24个月" + } + }, + { + id: 2, + name: "连花清瘟胶囊", + manufacturer: "石家庄以岭药业股份有限公司", + specification: "0.35g*24粒/盒", + category: "chinese", + categoryText: "中成药", + indication: "用于治疗流行性感冒属热毒袭肺证", + price: 28.5, + originalPrice: 35.0, + isHot: true, + salesCount: 2560, + stock: 89, + image: "https://via.placeholder.com/300x300/4CAF50/ffffff?text=连花清瘟", + + expert: { + name: "李芳", + title: "副主任医师", + hospital: "上海瑞金医院", + avatar: "https://via.placeholder.com/100x100/4CAF50/ffffff?text=李", + reason: "在新冠肺炎疫情防控中显示出良好效果,具有清瘟解毒、宣肺泄热的功效,适用于流感治疗。", + expertise: "中医科", + years: 12, + recommendTime: "2024-01-14" + }, + + store: { + name: "同济堂药店", + address: "上海市黄浦区南京东路100号", + phone: "021-66666666", + businessHours: "9:00-21:00", + features: "中药配方齐全,提供代煎服务,老字号药店", + distance: "2.5", + latitude: 31.2304, + longitude: 121.4737, + rating: 4.7, + images: [ + "https://via.placeholder.com/400x300/FF9800/ffffff?text=中药柜台" + ] + }, + + details: { + usage: "口服。一次4粒,一日3次。", + precautions: "风寒感冒者不适用,高血压、心脏病患者慎用。", + storage: "密封,置阴凉干燥处。", + validity: "36个月" + } + }, + { + id: 3, + name: "维生素C片", + manufacturer: "养生堂药业有限公司", + specification: "100mg*60片/瓶", + category: "health", + categoryText: "保健品", + indication: "用于预防和治疗维生素C缺乏症", + price: 18.9, + originalPrice: 24.0, + isHot: false, + salesCount: 890, + stock: 320, + image: "https://via.placeholder.com/300x300/FF9800/ffffff?text=维生素C", + + expert: { + name: "王建国", + title: "执业药师", + hospital: "广州中医药大学附属医院", + avatar: "https://via.placeholder.com/100x100/FF9800/ffffff?text=王", + reason: "增强免疫力,促进铁吸收,抗氧化作用明显,适合日常保健和预防感冒。", + expertise: "临床药学", + years: 8, + recommendTime: "2024-01-13" + }, + + store: { + name: "老百姓大药房", + address: "广州市天河区体育西路189号", + phone: "020-77777777", + businessHours: "7:30-23:00", + features: "连锁品牌,价格实惠,会员优惠,支持医保", + distance: "0.8", + latitude: 23.1358, + longitude: 113.3269, + rating: 4.6, + images: [] + }, + + details: { + usage: "口服。成人一次1片,一日1次。", + precautions: "不宜长期过量服用,肾功能不全者慎用。", + storage: "避光,密封保存。", + validity: "24个月" + } + }, + { + id: 4, + name: "布洛芬缓释胶囊", + manufacturer: "中美天津史克制药有限公司", + specification: "0.3g*20粒/盒", + category: "otc", + categoryText: "非处方药", + indication: "用于缓解轻至中度疼痛如头痛、关节痛、偏头痛等", + price: 22.5, + originalPrice: 28.0, + isHot: true, + salesCount: 1870, + stock: 120, + image: "https://via.placeholder.com/300x300/9C27B0/ffffff?text=布洛芬", + + expert: { + name: "陈晓东", + title: "主任医师", + hospital: "武汉同济医院", + avatar: "https://via.placeholder.com/100x100/9C27B0/ffffff?text=陈", + reason: "解热镇痛效果确切,缓释剂型作用持久,胃肠道刺激小,适合各种疼痛的缓解。", + expertise: "疼痛科", + years: 20, + recommendTime: "2024-01-12" + }, + + store: { + name: "九州通大药房", + address: "武汉市江汉区解放大道688号", + phone: "027-55555555", + businessHours: "8:30-21:30", + features: "药品齐全,支持线上订购,送货上门", + distance: "3.2", + latitude: 30.5928, + longitude: 114.3052, + rating: 4.9, + images: [ + "https://via.placeholder.com/400x300/3F51B5/ffffff?text=现代药店", + "https://via.placeholder.com/400x300/E91E63/ffffff?text=专业服务" + ] + }, + + details: { + usage: "口服。成人一次1粒,一日2次。", + precautions: "胃肠道溃疡患者禁用,不宜长期服用。", + storage: "密封,在阴凉干燥处保存。", + validity: "36个月" + } + }, + { + id: 5, + name: "盐酸左氧氟沙星片", + manufacturer: "浙江医药股份有限公司", + specification: "0.5g*6片/盒", + category: "prescription", + categoryText: "处方药", + indication: "用于敏感细菌引起的呼吸系统、泌尿系统感染", + price: 42.8, + originalPrice: 56.0, + isHot: false, + salesCount: 560, + stock: 75, + image: "https://via.placeholder.com/300x300/2196F3/ffffff?text=左氧氟沙星", + + expert: { + name: "刘涛", + title: "副主任医师", + hospital: "南京鼓楼医院", + avatar: "https://via.placeholder.com/100x100/2196F3/ffffff?text=刘", + reason: "抗菌谱广,对多种革兰氏阴性菌和阳性菌有效,特别适用于泌尿系统感染的治疗。", + expertise: "泌尿外科", + years: 10, + recommendTime: "2024-01-11" + }, + + store: { + name: "金陵大药房", + address: "南京市鼓楼区中山路321号", + phone: "025-44444444", + businessHours: "8:00-21:00", + features: "专业处方药房,药师驻店咨询", + distance: "1.8", + latitude: 32.0603, + longitude: 118.7969, + rating: 4.5, + images: [] + }, + + details: { + usage: "口服。一次1片,一日1次。", + precautions: "18岁以下患者禁用,孕妇及哺乳期妇女禁用。", + storage: "遮光,密封保存。", + validity: "24个月" + } + }, + { + id: 6, + name: "板蓝根颗粒", + manufacturer: "广州白云山和记黄埔中药有限公司", + specification: "10g*20袋/盒", + category: "chinese", + categoryText: "中成药", + indication: "清热解毒,凉血利咽,用于肺胃热盛所致的咽喉肿痛", + price: 15.9, + originalPrice: 19.9, + isHot: true, + salesCount: 3200, + stock: 450, + image: "https://via.placeholder.com/300x300/FF5722/ffffff?text=板蓝根", + + expert: { + name: "孙丽", + title: "主治医师", + hospital: "成都中医药大学附属医院", + avatar: "https://via.placeholder.com/100x100/FF5722/ffffff?text=孙", + reason: "传统经典方剂,清热解毒效果显著,特别适合预防和治疗感冒初期症状。", + expertise: "中医内科", + years: 6, + recommendTime: "2024-01-10" + }, + + store: { + name: "康恩贝大药房", + address: "成都市锦江区春熙路58号", + phone: "028-33333333", + businessHours: "9:00-22:00", + features: "连锁品牌,中药西药齐全", + distance: "0.5", + latitude: 30.6578, + longitude: 104.0657, + rating: 4.4, + images: [] + }, + + details: { + usage: "开水冲服。一次1袋,一日3次。", + precautions: "风寒感冒者不适用,糖尿病患者慎用。", + storage: "密封,防潮。", + validity: "36个月" + } + }, + { + id: 7, + name: "复方甘草片", + manufacturer: "北京双鹤药业股份有限公司", + specification: "100片/瓶", + category: "prescription", + categoryText: "处方药", + indication: "用于镇咳祛痰,适用于感冒咳嗽", + price: 12.5, + originalPrice: 16.0, + isHot: false, + salesCount: 780, + stock: 200, + image: "https://via.placeholder.com/300x300/673AB7/ffffff?text=甘草片", + + expert: { + name: "赵国强", + title: "主任医师", + hospital: "天津医科大学总医院", + avatar: "https://via.placeholder.com/100x100/673AB7/ffffff?text=赵", + reason: "传统止咳良药,镇咳祛痰效果确切,价格实惠,适合普通感冒咳嗽。", + expertise: "呼吸内科", + years: 18, + recommendTime: "2024-01-09" + }, + + store: { + name: "天津医药大药房", + address: "天津市和平区南京路128号", + phone: "022-22222222", + businessHours: "8:00-21:30", + features: "国营药店,药品质量有保障", + distance: "2.0", + latitude: 39.1172, + longitude: 117.2056, + rating: 4.3, + images: [] + }, + + details: { + usage: "口服。一次3-4片,一日3次。", + precautions: "不宜长期服用,孕妇及哺乳期妇女慎用。", + storage: "密封,在干燥处保存。", + validity: "36个月" + } + }, + { + id: 8, + name: "葡萄糖酸钙口服液", + manufacturer: "哈药集团制药六厂", + specification: "10ml*12支/盒", + category: "otc", + categoryText: "非处方药", + indication: "用于预防和治疗钙缺乏症", + price: 35.0, + originalPrice: 42.0, + isHot: true, + salesCount: 1560, + stock: 180, + image: "https://via.placeholder.com/300x300/00BCD4/ffffff?text=葡萄糖酸钙", + + expert: { + name: "周敏", + title: "副主任医师", + hospital: "西安交通大学第一附属医院", + avatar: "https://via.placeholder.com/100x100/00BCD4/ffffff?text=周", + reason: "钙吸收好,口感适宜,特别适合儿童、孕妇和老年人补钙。", + expertise: "儿科", + years: 14, + recommendTime: "2024-01-08" + }, + + store: { + name: "西安医药大药房", + address: "西安市碑林区南大街58号", + phone: "029-11111111", + businessHours: "8:30-21:00", + features: "专业儿科用药,儿童健康咨询", + distance: "1.5", + latitude: 34.2583, + longitude: 108.9426, + rating: 4.7, + images: [] + }, + + details: { + usage: "口服。一次1-2支,一日3次。", + precautions: "肾功能不全者慎用,不宜与洋地黄类药物同时使用。", + storage: "密封,置阴凉处。", + validity: "24个月" + } + } + ]; + }, + + // 检查收藏状态 + checkFavoriteStatus: function() { + const medicineData = this.data.medicineData; + if (!medicineData) return; + + try { + const favorites = wx.getStorageSync('medicineFavorites') || []; + const isFavorite = favorites.some(item => item.id === medicineData.id); + this.setData({ isFavorite }); + } catch (e) { + console.error('读取收藏失败', e); + } + }, + + // 切换收藏状态 + toggleFavorite: function() { + const medicineData = this.data.medicineData; + if (!medicineData) return; + + const newFavorite = !this.data.isFavorite; + this.setData({ isFavorite: newFavorite }); + + // 保存到本地缓存 + this.saveFavorite(newFavorite); + + wx.showToast({ + title: newFavorite ? '已收藏' : '已取消收藏', + icon: 'success', + duration: 1500 + }); + }, + + // 保存收藏状态到本地缓存 + saveFavorite: function(isFavorite) { + const medicineData = this.data.medicineData; + if (!medicineData) return; + + try { + let favorites = wx.getStorageSync('medicineFavorites') || []; + + if (isFavorite) { + // 添加收藏 + if (!favorites.some(item => item.id === medicineData.id)) { + favorites.push({ + id: medicineData.id, + name: medicineData.name, + price: medicineData.price, + image: medicineData.image, + expert: medicineData.expert.name, + store: medicineData.store.name, + time: new Date().getTime() + }); + } + } else { + // 取消收藏 + favorites = favorites.filter(item => item.id !== medicineData.id); + } + + wx.setStorageSync('medicineFavorites', favorites); + } catch (e) { + console.error('保存收藏失败', e); + } + }, + + // 打开位置地图 + openLocation: function() { + const { store } = this.data.medicineData; + if (store.latitude && store.longitude) { + wx.openLocation({ + latitude: parseFloat(store.latitude), + longitude: parseFloat(store.longitude), + name: store.name, + address: store.address, + scale: 18 + }); + } else { + wx.showToast({ + title: '位置信息不可用', + icon: 'none' + }); + } + }, + + // 拨打电话 + makePhoneCall: function() { + const phone = this.data.medicineData.store.phone; + if (phone) { + wx.makePhoneCall({ + phoneNumber: phone + }) + } + }, + + // 预览主图片 + previewMainImage: function() { + const url = this.data.medicineData.image; + if (url) { + wx.previewImage({ + current: url, + urls: [url] + }); + } + }, + + // 预览轮播图片 + previewImage: function(e) { + const index = parseInt(e.currentTarget.dataset.index); + const images = this.data.medicineData.store.images || []; + const urls = [this.data.medicineData.image, ...images]; + + wx.previewImage({ + current: urls[index + 1], // +1 因为第一个是主图 + urls: urls + }); + }, + + // 预览店铺图片 + previewStoreImage: function(e) { + const index = parseInt(e.currentTarget.dataset.index); + const images = this.data.medicineData.store.images || []; + + wx.previewImage({ + current: images[index], + urls: images + }); + }, + + // 分享给朋友 + onShareToFriend: function() { + wx.showShareMenu({ + withShareTicket: true, + menus: ['shareAppMessage', 'shareTimeline'] + }); + } +}); \ No newline at end of file diff --git a/pagesA/pages/medicineDetails/medicineDetails.json b/pagesA/pages/medicineDetails/medicineDetails.json new file mode 100644 index 0000000..2326c25 --- /dev/null +++ b/pagesA/pages/medicineDetails/medicineDetails.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "药品详情", + "usingComponents": {} +} \ No newline at end of file diff --git a/pagesA/pages/medicineDetails/medicineDetails.wxml b/pagesA/pages/medicineDetails/medicineDetails.wxml new file mode 100644 index 0000000..3c2321c --- /dev/null +++ b/pagesA/pages/medicineDetails/medicineDetails.wxml @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + {{medicineData.categoryText}} + 热销 + + + + + + {{medicineData.name}} + {{medicineData.specification}} + {{medicineData.manufacturer}} + + + + + ¥ + {{medicineData.price}} + + + 原价:¥{{medicineData.originalPrice}} + + + 已售:{{medicineData.salesCount}}件 + + + + + + + 适用症状 + {{medicineData.indication}} + + + + + 专家推荐 + + + + + {{medicineData.expert.name}} | {{medicineData.expert.title}} + {{medicineData.expert.hospital}} + + 专业:{{medicineData.expert.expertise}} + 从业:{{medicineData.expert.years}}年 + + + + + 推荐理由 + {{medicineData.expert.reason}} + + 推荐时间:{{medicineData.expert.recommendTime}} + + + + + + 推荐店铺 + + + {{medicineData.store.name}} + + {{medicineData.store.rating}} + + + + + + + 📍 + {{medicineData.store.address}} + + 距离:{{medicineData.store.distance}}km + + + + + 📞 + {{medicineData.store.phone}} + + + + 🕒 + {{medicineData.store.businessHours}} + + + + + {{medicineData.store.features}} + + + + + + + + + + + + + + + + + + + + + + + + + 药品详情 + + + 用法用量 + {{medicineData.details.usage}} + + + + 注意事项 + {{medicineData.details.precautions}} + + + + 贮藏方式 + {{medicineData.details.storage}} + + + + 有效期 + {{medicineData.details.validity}} + + + + \ No newline at end of file diff --git a/pagesA/pages/medicineDetails/medicineDetails.wxss b/pagesA/pages/medicineDetails/medicineDetails.wxss new file mode 100644 index 0000000..b8b55cd --- /dev/null +++ b/pagesA/pages/medicineDetails/medicineDetails.wxss @@ -0,0 +1,450 @@ +/* 详情页样式 */ +.detail-page { + background-color: #f8f9fa; + min-height: 100vh; + padding-bottom: 120rpx; + } + + /* 药品图片轮播 */ + .medicine-images { + position: relative; + height: 500rpx; + } + + .detail-swiper { + height: 100%; + } + + .detail-image { + width: 100%; + height: 100%; + } + + + /* 药品标签 */ + .detail-tag { + position: absolute; + top: 30rpx; + right: 30rpx; + padding: 10rpx 20rpx; + border-radius: 25rpx; + font-size: 24rpx; + color: white; + background-color: #3a7ff3; + display: flex; + align-items: center; + z-index: 10; + } + + .detail-tag.prescription { + background-color: #f44336; + } + + .detail-tag.otc { + background-color: #4CAF50; + } + + .detail-tag.chinese { + background-color: #FF9800; + } + + .detail-tag.health { + background-color: #9C27B0; + } + + .hot-badge { + margin-left: 10rpx; + padding: 4rpx 10rpx; + background-color: #ff4444; + border-radius: 15rpx; + font-size: 20rpx; + } + + /* 基本信息区域 */ + .basic-info-section { + background-color: white; + padding: 30rpx; + margin-bottom: 20rpx; + } + + .medicine-name { + font-size: 38rpx; + font-weight: bold; + color: #333; + margin-bottom: 15rpx; + line-height: 1.4; + } + + .medicine-spec { + font-size: 28rpx; + color: #666; + margin-bottom: 10rpx; + } + + .manufacturer { + font-size: 26rpx; + color: #999; + margin-bottom: 25rpx; + } + + /* 价格信息 */ + .price-info { + display: flex; + align-items: center; + justify-content: space-between; + padding-top: 20rpx; + border-top: 2rpx solid #f8f9fa; + } + + .current-price { + color: #ff4444; + font-weight: bold; + display: flex; + align-items: baseline; + } + + .price-symbol { + font-size: 28rpx; + margin-right: 4rpx; + } + + .price-value { + font-size: 48rpx; + } + + .original-price { + font-size: 26rpx; + color: #999; + text-decoration: line-through; + } + + .sales-count { + font-size: 26rpx; + color: #666; + } + + /* 信息区块通用样式 */ + .info-section, + .expert-section, + .store-section, + .details-section, + .safety-tips { + background-color: white; + margin-bottom: 20rpx; + padding: 30rpx; + } + + .section-title { + font-size: 34rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + padding-bottom: 15rpx; + border-bottom: 2rpx solid #f8f9fa; + } + + .section-content { + font-size: 28rpx; + color: #666; + line-height: 1.6; + } + + /* 专家卡片 */ + .expert-card { + background-color: #f8f9fa; + border-radius: 15rpx; + padding: 25rpx; + margin-top: 20rpx; + } + + .expert-header { + display: flex; + margin-bottom: 20rpx; + } + + .expert-avatar { + width: 100rpx; + height: 100rpx; + border-radius: 50%; + margin-right: 20rpx; + } + + .expert-info { + flex: 1; + } + + .expert-name { + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 8rpx; + } + + .expert-title { + font-size: 26rpx; + color: #666; + font-weight: normal; + } + + .expert-hospital { + font-size: 26rpx; + color: #3a7ff3; + margin-bottom: 10rpx; + } + + .expert-experience { + font-size: 24rpx; + color: #999; + } + + .experience-label { + + } + + .expert-reason { + background-color: white; + border-radius: 10rpx; + padding: 20rpx; + margin-bottom: 15rpx; + } + + .reason-title { + font-size: 28rpx; + font-weight: bold; + color: #333; + margin-bottom: 10rpx; + } + + .reason-content { + font-size: 26rpx; + color: #666; + line-height: 1.6; + } + + .recommend-time { + font-size: 24rpx; + color: #999; + text-align: right; + } + + /* 店铺卡片 */ + .store-card { + background-color: #f8f9fa; + border-radius: 15rpx; + padding: 25rpx; + margin-top: 20rpx; + } + + .store-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20rpx; + } + + .store-name { + font-size: 32rpx; + font-weight: bold; + color: #333; + flex: 1; + } + + .store-rating { + display: flex; + align-items: center; + color: #ff9900; + } + + .rating-value { + font-size: 28rpx; + font-weight: bold; + margin-right: 5rpx; + } + + .rating-star { + font-size: 24rpx; + } + + .store-info { + margin-bottom: 20rpx; + } + + .info-item { + display: flex; + align-items: flex-start; + margin-bottom: 15rpx; + font-size: 26rpx; + color: #666; + line-height: 1.5; + } + + .info-icon { + margin-right: 15rpx; + flex-shrink: 0; + font-size: 28rpx; + } + + .info-text { + flex: 1; + } + + .store-distance { + color: #3a7ff3; + font-size: 24rpx; + margin-left: 20rpx; + flex-shrink: 0; + } + + /* 店铺图片 */ + .store-images { + margin-bottom: 20rpx; + } + + .store-images-scroll { + white-space: nowrap; + height: 200rpx; + } + + .store-image-item { + display: inline-block; + width: 300rpx; + height: 200rpx; + border-radius: 10rpx; + overflow: hidden; + margin-right: 20rpx; + } + + .store-image { + width: 100%; + height: 100%; + } + + /* 店铺操作按钮 */ + .store-actions { + display: flex; + gap: 20rpx; + } + + .action-btn { + flex: 1; + height: 80rpx; + border-radius: 10rpx; + font-size: 26rpx; + display: flex; + align-items: center; + justify-content: center; + } + + .map-btn { + background-color: #3a7ff3; + color: white; + } + + .call-btn { + background-color: #4CAF50; + color: white; + } + + .btn-icon { + margin-right: 10rpx; + font-size: 30rpx; + } + + /* 药品详细信息网格 */ + .details-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 20rpx; + margin-top: 20rpx; + } + + .detail-item { + background-color: #f8f9fa; + border-radius: 10rpx; + padding: 20rpx; + } + + .item-label { + font-size: 26rpx; + color: #999; + margin-bottom: 10rpx; + } + + .item-value { + font-size: 26rpx; + color: #333; + line-height: 1.5; + } + + /* 加载状态 */ + .loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 60vh; + } + + .loading-spinner { + width: 80rpx; + height: 80rpx; + border: 8rpx solid #f3f3f3; + border-top: 8rpx solid #3a7ff3; + border-radius: 50%; + animation: spin 1s linear infinite; + margin-bottom: 30rpx; + } + + @keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + + /* 错误状态 */ + .error-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 60vh; + padding: 0 50rpx; + } + + .error-icon { + font-size: 120rpx; + color: #ff4444; + margin-bottom: 30rpx; + } + + .error-text { + font-size: 32rpx; + color: #666; + margin-bottom: 40rpx; + text-align: center; + } + + .error-btn { + width: 300rpx; + height: 80rpx; + line-height: 80rpx; + background-color: #3a7ff3; + color: white; + border-radius: 12rpx; + font-size: 30rpx; + } + + /* 响应式调整 */ + @media (max-width: 700rpx) { + .details-grid { + grid-template-columns: 1fr; + } + + .bottom-action-bar { + padding: 15rpx 20rpx; + } + + .action-bar-btn { + font-size: 26rpx; + height: 80rpx; + } + } \ No newline at end of file