index.vue 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975
  1. <template>
  2. <view class="content">
  3. <!-- 背景图片 -->
  4. <image class="bg" src="../../static/images/hp_top_bg.png" mode=""></image>
  5. <view >
  6. <view class="top-inner" >
  7. <view class="fixed-top-box" :style="{ background: bg }">
  8. <!-- 这里是状态栏 -->
  9. <view class="status_bar" :style="{height: statusBarHeight}"></view>
  10. <view class="top-title">
  11. <view class="name">芳华悦选</view>
  12. <!-- <view class="dot">•</view><view class="sub-name">七彩互联网医院</view> -->
  13. </view>
  14. <!-- 搜索框、购物车、客服 -->
  15. <view class="func-cont" >
  16. <view class="search-cont">
  17. <image class="icon-search" src="../../static/images/search.png" mode=""></image>
  18. <input type="text" disabled value="" placeholder="搜索商品、症状、功能主治" placeholder-style="font-size:28rpx;color:#BBBBBB;font-family: PingFang SC;" @click="toSearch" />
  19. </view>
  20. <!-- 购物车 -->
  21. <!-- <uni-badge size="small" :text="cartCount" absolute="rightTop" type="error">
  22. <view class="img-item" @click="goAuthUrl('../shopping/cart')">
  23. <image src="../../static/images/cart_wihte.png" mode=""></image>
  24. </view>
  25. </uni-badge> -->
  26. <view class="img-item" style="position: relative;">
  27. <image src="../../static/images/customer.png" mode=""></image>
  28. <button class="contact-btn" open-type="contact"></button>
  29. </view>
  30. </view>
  31. <!-- <view class="tips">
  32. <view class="left"></view>
  33. <view class="right" @click="navTo('./cert')">资质证明</view>
  34. </view> -->
  35. </view>
  36. </view>
  37. <!-- 头部间距 -->
  38. <view style="padding-bottom:220rpx" >
  39. <view class="status_bar" :style="{height: statusBarHeight}"></view>
  40. </view>
  41. <!-- 轮播图 -->
  42. <view class="banner-box" >
  43. <view class="inner">
  44. <swiper
  45. class="swiper"
  46. :indicator-dots="true"
  47. :circular="true"
  48. :autoplay="true"
  49. :interval="3000"
  50. :duration="1000"
  51. indicator-color="rgba(255, 255, 255, 0.6)"
  52. indicator-active-color="#ffffff"
  53. >
  54. <swiper-item class="swiper-item" v-for="(item,index) in advList" :key="index" @click="handleAdvClick(item)">
  55. <image :src="item.imageUrl" mode=""></image>
  56. </swiper-item>
  57. </swiper>
  58. </view>
  59. </view>
  60. <!-- 菜单 -->
  61. <view class="menu-content" >
  62. <view class="menu-box">
  63. <Menu :list="menus" @menuClick="menuClick" v-if="menus.length>0" style="width:100%;"></Menu>
  64. </view>
  65. </view>
  66. </view>
  67. <!-- 在线问诊、处方查询 -->
  68. <view class="online-inquiry">
  69. <view class="item" @click="navTo('/pages_shopping/shopping/productSalesList')" >
  70. <!-- <image class="bg-img" src="../../static/images/banner1.png" mode=""></image> -->
  71. <image class="bg-img" src="https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20250320/f2d3ba32a9344dc79b4df7c228189243.png" mode=""></image>
  72. <!-- <view class="inner">
  73. <text class="title">用药榜</text>
  74. <text class="sub-title"></text>
  75. <image src="https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20250320/f2d3ba32a9344dc79b4df7c228189243.png" mode=""></image>
  76. </view> -->
  77. </view>
  78. <view class="item" @click="navTo('/pages_course/livingList')">
  79. <image class="bg-img" src="/static/images/banner2.png" mode=""></image>
  80. </view>
  81. </view>
  82. <view class="index-cont">
  83. <!-- 医生团队 -->
  84. <!-- <view class="pub-item">
  85. <view class="pub-title-box">
  86. <text class="left">医生团队</text>
  87. <view class="right" @click="navTo('../doctor/doctorList')">
  88. <text class="text">全部医生</text>
  89. <image src="../../static/images/arrow_gray.png" mode=""></image>
  90. </view>
  91. </view>
  92. <view class="doc-cont">
  93. <view class="inner">
  94. <view class="item" v-for="(item,index) in doctorList" :key="index" @click="shopDoctor(item)">
  95. <view class="head-box">
  96. <image :src="item.headImg" mode="aspectFill"></image>
  97. </view>
  98. <text class="name ellipsis">{{ item.doctorName }}</text>
  99. <text class="position ellipsis">
  100. {{utils.getDictLabelName("doctorPosition",item.position)}}
  101. </text>
  102. </view>
  103. </view>
  104. </view>
  105. </view> -->
  106. <!-- <view class="pub-item">
  107. <view class="tabs">
  108. <view class="tab" @click="docTabChange(1)">
  109. <image v-if="docTab==1" class="img" src="../../static/images/tab1.png" mode=""></image>
  110. <view class="inner">
  111. <text :class="docTab == 1?'title active':'title'" >推荐医生</text>
  112. </view>
  113. </view>
  114. <view class="tab" @click="docTabChange(2)">
  115. <image v-if="docTab==2" class="img" src="../../static/images/tab2.png" mode=""></image>
  116. <view class="inner">
  117. <text :class="docTab == 2?'title active':'title'" >推荐药师</text>
  118. </view>
  119. </view>
  120. <view class="tab" @click="docTabChange(3)">
  121. <image v-if="docTab==3" class="img" src="../../static/images/tab3.png" mode=""></image>
  122. <view class="inner">
  123. <text :class="docTab == 3?'title active':'title'" >推荐营养师</text>
  124. </view>
  125. </view>
  126. </view>
  127. <view class="doc-tab-box">
  128. <view class="tab-inner" >
  129. <view
  130. v-for="(item,index) in depts"
  131. :key="index"
  132. :class="item.departmentId == deptId?'item active':'item'"
  133. @click="deptChange(item)"
  134. >
  135. <view class="text">
  136. {{ item.departmentName }}
  137. <image v-show="item.departmentId == deptId" class="tab-bg" src="../../static/images/tab_bg.png" mode=""></image>
  138. </view>
  139. </view>
  140. </view>
  141. <image class="right-mask" src="../../static/images/mask.png" mode=""></image>
  142. </view>
  143. <view class="doc-list">
  144. <view class="item" v-for="(item,index) in doctorList" :key="index" @click="shopDoctor(item)"> -->
  145. <!-- 头像 -->
  146. <!-- <view class="head-box">
  147. <image :src="item.headImg" mode="aspectFill"></image>
  148. </view> -->
  149. <!-- 详细信息 -->
  150. <!-- <view class="info"> -->
  151. <!-- 姓名等 -->
  152. <!-- <view class="top">
  153. <text class="name">{{ item.doctorName }}</text>
  154. <view class="line"></view>
  155. <text class="other">{{utils.getDictLabelName("doctorPosition",item.position)}}</text>
  156. <view class="line"></view>
  157. <text class="other">{{ item.departmentName }}</text>
  158. </view> -->
  159. <!-- 单位 -->
  160. <!-- <view class="unit-box"> -->
  161. <!-- <view class="level">三甲</view> -->
  162. <!-- <view class="name">{{ item.hospitalName }}</view>
  163. </view> -->
  164. <!-- 擅长 -->
  165. <!-- <view class="expertise ellipsis2">
  166. 擅长:{{ item.doctorDesc }}
  167. </view> -->
  168. <!-- 评分 -->
  169. <!-- <view class="rate-box">
  170. <view class="star">
  171. <image src="../../static/images/star.png" mode=""></image>
  172. <text>{{ item.pings }}</text>
  173. </view>
  174. <view class="line"></view>
  175. <view class="num-box">
  176. <text class="label">接诊数</text>
  177. <text class="num">{{ item.orders }}</text>
  178. </view>
  179. <view class="line"></view>
  180. <view class="num-box">
  181. <text class="label">响应速度</text>
  182. <text class="num">{{ item.speed }}分钟</text>
  183. </view>
  184. </view> -->
  185. <!-- 价格 -->
  186. <!-- <view class="price-box">
  187. <view class="btn-item" v-for="(subitme) in item.price">
  188. <text class="label" >{{subitme.priceType==1?'图文':'语音'}}</text>
  189. <text class="num">¥{{subitme.price.toFixed(2)}}</text>
  190. </view>
  191. </view>
  192. </view>
  193. </view>
  194. <view class="bottom-title" @click="navTo('../doctor/doctorList?doctorType='+docTab)">
  195. <text >{{allDoctorTitle}}</text>
  196. <image src="../../static/images/arrow3.png" mode=""></image>
  197. </view>
  198. </view>
  199. -->
  200. <!-- <view class="doc-cont">
  201. <view class="inner">
  202. <view class="item" v-for="(item,index) in doctorList" :key="index" @click="shopDoctor(item)">
  203. <view class="head-box">
  204. <image :src="item.headImg" mode="aspectFill"></image>
  205. </view>
  206. <text class="name ellipsis">{{ item.doctorName }}</text>
  207. <text class="position ellipsis">
  208. {{utils.getDictLabelName("doctorPosition",item.position)}}
  209. </text>
  210. </view>
  211. </view>
  212. </view> -->
  213. <!-- </view> -->
  214. <!-- 问诊案例 -->
  215. <!-- <view class="pub-item">
  216. <view class="pub-title-box">
  217. <text class="left">问诊案例</text>
  218. <view class="right" @click="viewAll('doctorCase')">
  219. <text class="text">全部案例</text>
  220. <image src="../../static/images/arrow_gray.png" mode=""></image>
  221. </view>
  222. </view>
  223. <view class="inner">
  224. <view class="pub-tab-box">
  225. <view class="tab-inner">
  226. <view
  227. v-for="(item,index) in orderTypes"
  228. :key="index"
  229. :class="item.id == orderType?'item cases active':'item cases'"
  230. @click="orderTypeChange(item)"
  231. >
  232. <view class="text">
  233. {{ item.name }}
  234. <image v-show="item.id == orderType" class="tab-bg" src="../../static/images/tab_bg.png" mode=""></image>
  235. </view>
  236. </view>
  237. </view>
  238. <image class="right-mask" src="../../static/images/mask.png" mode=""></image>
  239. </view>
  240. <view class="cases-list">
  241. <view class="item" v-for="(item,index) in doctorOrderList" :key="index">
  242. <view class="dec-text ellipsis2">{{item.title}}</view>
  243. <view class="images-box" v-if="item.imgs!=null" >
  244. <view class="img-item" v-for="(subitem,j) in utils.photosToArr(item.imgs)" @click="showImg(item.imgs)" :key="j">
  245. <image :src="subitem" mode="aspectFill" ></image>
  246. </view>
  247. </view>
  248. <view class="doc-info">
  249. <view class="head">
  250. <image :src="item.doctorHeadImg" mode="aspectFill"></image>
  251. </view>
  252. <view class="name">{{item.doctorName}}</view>
  253. <view class="line"></view>
  254. <view class="posit">
  255. {{utils.getDictLabelName("doctorPosition",item.doctorPosition)}}
  256. </view>
  257. <view class="line"></view>
  258. <view class="address">{{item.hospitalName}}</view>
  259. </view>
  260. <view class="answer-box">
  261. <text class="text-inner" v-if="item.orderType == '1' ">{{item.replyContent}}</text>
  262. <view class="voice-inner" v-if="item.orderType == '2'">
  263. <free-audio
  264. startPic='/static/images/play.png'
  265. endPic='/static/images/pause.png'
  266. activeColor="#2BC7B9"
  267. :audioId="'audio'+index"
  268. :url='item.replyAudioUrl'
  269. ></free-audio>
  270. </view>
  271. </view>
  272. <view class="read-box">
  273. <image src="../../static/images/eye.png" mode=""></image>
  274. <text class="text">{{item.views}}人看过</text>
  275. </view>
  276. </view>
  277. </view>
  278. </view>
  279. </view> -->
  280. <!-- 热门榜单 -->
  281. <!-- <NewProduct :detail="newProductList" /> -->
  282. <HotProduct :detail="hotProductList" />
  283. <!-- 健康百科 -->
  284. <!-- <view class="pub-item" style="margin-top: 20rpx;">
  285. <view class="pub-title-box">
  286. <text class="left">健康百科</text>
  287. <view class="right" @click="switchTo('../healthy/index')">
  288. <text class="text">更多</text>
  289. <image src="../../static/images/arrow_gray.png" mode=""></image>
  290. </view>
  291. </view>
  292. <view class="inner">
  293. <view class="pub-tab-box">
  294. <view class="tab-inner">
  295. <view
  296. v-for="(item,index) in articleCateList"
  297. :key="index"
  298. :class="item.cateId == cateId?'item active':'item'"
  299. @click="articleCateChange(item)"
  300. >
  301. <view class="text">
  302. {{ item.cateName }}
  303. <image v-show="item.cateId == cateId" class="tab-bg" src="../../static/images/tab_bg.png" mode=""></image>
  304. </view>
  305. </view>
  306. </view>
  307. <image class="right-mask" src="../../static/images/mask.png" mode=""></image>
  308. </view>
  309. <view class="know-list">
  310. <view class="item" v-for="(item,index) in articleList" :key="index" @click="showArticle(item)">
  311. <view class="left">
  312. <view class="title ellipsis2">{{ item.title }}</view>
  313. <view class="info-box">
  314. <view class="readers">
  315. <view class="head-box" v-if="item.viewsList!=null&&item.viewsList.length>0">
  316. <view class="head" v-for="(subitem,j) in item.viewsList" :key="j">
  317. <image v-if="subitem!=null" :src="subitem.avatar==null?'/static/images/detault_head.jpg':subitem.avatar" mode=""></image>
  318. </view>
  319. </view>
  320. <view class="readings">
  321. <image class="eye" src="../../static/images/eye.png" mode=""></image>
  322. <text class="num">{{item.views}}</text>
  323. </view>
  324. </view>
  325. <view class="time">{{item.publishTime}}</view>
  326. </view>
  327. </view>
  328. <view class="right">
  329. <image :src="item.imageUrl" mode="aspectFill"></image>
  330. </view>
  331. </view>
  332. </view>
  333. </view>
  334. </view> -->
  335. <!-- 精选药品 -->
  336. <TuiProduct ref="tuiProduct" />
  337. <!-- <view class="feat-title">
  338. <image src="../../static/images/tui.png" mode=""></image>
  339. <text>精选药品</text>
  340. </view>
  341. <view class="drug-list">
  342. <view class="item" v-for="(item,index) in tuiProductList" :key="index" @click="showProduct(item)">
  343. <view class="img-box">
  344. <image :src="item.image" mode="aspectFit"></image>
  345. </view>
  346. <view class="info-box">
  347. <view class="title ellipsis2">{{ item.productName }}</view>
  348. <view class="price-box">
  349. <view class="now">
  350. <text class="unit">¥</text>
  351. <text class="num">{{item.price.toFixed(2)}}</text>
  352. </view>
  353. <view class="old">¥{{item.otPrice.toFixed(2)}}</view>
  354. </view>
  355. </view>
  356. </view>
  357. </view> -->
  358. </view>
  359. <!-- 限时消息 -->
  360. <!-- <view class="message-box" >
  361. <view class="left">
  362. <image src="../../static/images/close24.png" mode="" @click="closeMsg"></image>
  363. <view class="text ellipsis">关注公众号了解更新</view>
  364. </view>
  365. <view class="btn">查看</view>
  366. </view> -->
  367. <!-- #ifdef MP-WEIXIN -->
  368. <view class="official-account" >
  369. <official-account @load="bindload" @error="binderror"></official-account>
  370. </view>
  371. <!-- #endif -->
  372. <view class="popup-box" v-if="activityShow">
  373. <view class="info-mask" @tap="closeActivity()" ></view>
  374. <view class="info-form" >
  375. <image :src="activity.logoUrl" @tap="showActivity()" />
  376. </view>
  377. </view>
  378. <z-modal :show="tuiModalControl" placeholderText="请输入邀请码" :btnGroup="btnGroup" :contentType="2" titleText="填写邀请码" @cancle="cancleTui" @sure="submitTui" ></z-modal>
  379. </view>
  380. </template>
  381. <script>
  382. import zModal from '@/components/z-modal/z-modal.vue'
  383. import {getStoreActivity} from '@/api/activity.js'
  384. import {getDepartmentList} from '@/api/doctorOrder.js'
  385. import {getMenu,getCanvas,getIndexData,getTuiDoctor,getTuiArticle,getTuiDoctorOrder,getCartCount} from '@/api/index'
  386. import {getStoreConfig} from '@/api/common'
  387. import tabBg from "@/static/images/tab_bg.png"
  388. import freeAudio from '@/components/chengpeng-audio/free-audio.vue'
  389. import Menu from '@/components/Menu.vue'
  390. import HotProduct from './components/HotProduct.vue'
  391. // import NewProduct from './components/NewProduct.vue'
  392. import TuiProduct from '@/components/tuiProduct.vue'
  393. import {getUserInfo,bindPromoter} from '@/api/user'
  394. export default {
  395. components: {zModal,freeAudio,Menu,HotProduct,TuiProduct},
  396. data() {
  397. return {
  398. btnGroup: [{
  399. text: '取消',
  400. color: '#FFFFFF',
  401. bgColor: '#999999',
  402. width: '150rpx',
  403. height: '80rpx',
  404. shape: 'fillet',
  405. eventName: 'cancle'
  406. },{
  407. text: '确定',
  408. color: '#FFFFFF',
  409. bgColor: '#2BC7B9',
  410. width: '150rpx',
  411. height: '80rpx',
  412. shape: 'fillet',
  413. eventName: 'sure'
  414. }],
  415. tuiModalControl:false,
  416. activity:null,
  417. activityShow:false,
  418. newProductList: [],
  419. hotProductList: [],
  420. tuiProductList:[],
  421. menus:[],
  422. canvas:[],
  423. allDoctorTitle:"全部医生",
  424. topLen:0,
  425. deptId:0,
  426. depts:[],
  427. docTab:1,
  428. top:0,
  429. cartCount:0,
  430. doctorOrderList:[],
  431. orderType:0,
  432. cateId:null,
  433. articleList:[],
  434. advList:[],
  435. doctorList:[],
  436. articleCateList:[],
  437. // 状态栏的高度
  438. statusBarHeight: uni.getStorageSync('menuInfo').statusBarHeight,
  439. tabBg: tabBg, // tab切换背景
  440. // 问诊案例类型
  441. orderTypes: [{name:'全部',id:0,},{name:'图文',id:1,},{name:'语音',id:2,}],
  442. // 限时消息是否显示
  443. messageShow: true,
  444. }
  445. this.getStoreActivity();
  446. },
  447. onLoad(option) {
  448. if(option.userCode!=null){
  449. uni.setStorageSync('userCode',option.userCode);
  450. if(this.utils.checkLoginState()){
  451. this.getUserInfo();
  452. }
  453. }
  454. if (option.hasOwnProperty('q') && option.q) {
  455. // 通过下面这步解码,可以拿到url的值
  456. const url = decodeURIComponent(option.q)
  457. this.url=url;
  458. // // 对url中携带的参数提取处理
  459. const obj = this.utils.urlToObj(url)
  460. uni.setStorageSync('userCode',obj.userCode);
  461. if(this.utils.checkLoginState()){
  462. this.getUserInfo();
  463. }
  464. }
  465. this.getStoreActivity()
  466. },
  467. // 暂停所有音频(一般用于页面切换时停止正在播放的音频)
  468. onUnload() { //普通页面在 onUnload 生命周期中执行
  469. uni.$emit('stop')
  470. },
  471. onHide() { //tabBar页面在onHide生命周期中执行
  472. uni.$emit('stop')
  473. },
  474. onPageScroll(e) {
  475. //console.log(e)
  476. this.top=e.scrollTop;
  477. },
  478. mounted() {
  479. //this.getDepartmentList();
  480. },
  481. onShareAppMessage(res) {
  482. return {
  483. title: '芳华悦选',
  484. path: `/pages/common/launch`,
  485. imageUrl: '/static/images/logo.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
  486. }
  487. },
  488. onReachBottom() {
  489. console.log("onReachBottom")
  490. this.$refs.tuiProduct.getTuiProducts();
  491. },
  492. //分享到朋友圈
  493. onShareTimeline(res) {
  494. return {
  495. title: '芳华悦选互联网医院',
  496. query:'',//页面参数
  497. imageUrl: 'https://hos-1309931967.cos.ap-chongqing.myqcloud.com/fs/20250721/efce6c594de34caba6537992083a5e47.png' //分享图标,路径可以是本地文件路径、代码包文件路径或者网络图片路径.支持PNG及JPG。显示图片长宽比是 5:4
  498. }
  499. },
  500. computed: {
  501. // 计算属性的 getter
  502. bg: function() {
  503. var top=this.top/30;
  504. // console.log(top)
  505. return 'rgba(43,199,185, ' + top + ')';
  506. },
  507. },
  508. onShow() {
  509. this.getMenu();
  510. this.getIndexData()
  511. //this.getTuiDoctorOrder();
  512. // console.log(uni.getStorageSync('isLocation'))
  513. // if(uni.getStorageSync('isLocation')==""){
  514. // this.getLocation();
  515. // }
  516. if(this.utils.checkLoginState()){
  517. this.getCartCount();
  518. }
  519. this.getStoreConfig();
  520. //this.getTuiDoctor()
  521. this.getCanvas();
  522. },
  523. methods: {
  524. navToMiniProgram(){
  525. uni.navigateToMiniProgram({
  526. // appid 写你要跳转的小程序的 appid
  527. appId: 'wx503cf8ab31f83dd4',
  528. // 路径写 src下的路径,假如你跳转的是pages下的页面,就可以写pages/index
  529. path: '/pages/common/launch',
  530. extraData: {
  531. // 'type': 'out'
  532. },
  533. // 这个不写的话会显示开发环境,不能正常跳转,写上就能正常跳转了
  534. envVersion: 'develop',
  535. success(res) {
  536. // 打开成功
  537. // uni.showToast({
  538. // title: '跳转成功'
  539. // })
  540. },
  541. fail(err) {
  542. // 打开失败/取消
  543. // uni.showToast({
  544. // title: '跳转不成功'
  545. // })
  546. }
  547. })
  548. },
  549. getUserInfo(){
  550. getUserInfo().then(
  551. res => {
  552. if(res.code==200){
  553. if(res.user!=null){
  554. if(res.user.isPromoter==null||res.user.isPromoter==0){
  555. this.tuiModalControl=true
  556. }
  557. }
  558. }else{
  559. uni.showToast({
  560. icon:'none',
  561. title: "请求失败",
  562. });
  563. }
  564. },
  565. rej => {}
  566. );
  567. },
  568. cancleTui(e){
  569. this.tuiModalControl=false
  570. },
  571. submitTui(e){
  572. console.log(e)
  573. if(e.inputText==null||e.inputText==""){
  574. uni.showToast({
  575. icon:'none',
  576. title: "请输入邀请码",
  577. });
  578. return;
  579. }
  580. var data={userCode:e.inputText};
  581. bindPromoter(data).then(
  582. res => {
  583. if(res.code==200){
  584. uni.showToast({
  585. icon:'none',
  586. title: res.msg,
  587. });
  588. this.tuiModalControl=false
  589. }else{
  590. uni.showToast({
  591. icon:'none',
  592. title: res.msg,
  593. });
  594. }
  595. },
  596. rej => {}
  597. );
  598. },
  599. bindload:function(detail){
  600. },
  601. binderror:function(detail){
  602. },
  603. closeActivity(){
  604. this.activityShow=false;
  605. // uni.setStorageSync(this.activity.activityId,null);
  606. },
  607. getStoreActivity() {
  608. let data = { }
  609. getStoreActivity(data).then(res => {
  610. this.activity=res.activity;
  611. if(this.activity!=null){
  612. // if(uni.getStorageSync(this.activity.activityId)!=null)
  613. // {
  614. // uni.setStorageSync(this.activity.activityId,1);
  615. // this.activityShow=true;
  616. // }
  617. // else{
  618. // this.activityShow=false;
  619. // }
  620. this.activityShow=true;
  621. }
  622. else{
  623. this.activityShow=false;
  624. }
  625. })
  626. },
  627. showActivity(){
  628. this.activityShow=false;
  629. uni.navigateTo({
  630. url: '/pages_shopping/shopping/activityDetails?activityId='+this.activity.activityId
  631. })
  632. },
  633. menuClick(item){
  634. if(item.linkType==1){
  635. if(item.linkUrl=="/pages/shopping/index"){
  636. uni.switchTab({
  637. url: item.linkUrl
  638. })
  639. }
  640. else if(item.linkUrl=="/pages/healthy/index"){
  641. uni.switchTab({
  642. url: item.linkUrl
  643. })
  644. }
  645. else{
  646. uni.navigateTo({
  647. url: item.linkUrl
  648. })
  649. }
  650. }
  651. else if(item.linkType==0){
  652. // this.navToMiniProgram();
  653. uni.showToast({
  654. icon:'none',
  655. title: "开发中...",
  656. });
  657. }
  658. },
  659. goDev(){
  660. uni.showToast({
  661. icon:'none',
  662. title: "开发中...",
  663. });
  664. },
  665. handleAdvClick(item){
  666. console.log(item);
  667. if(item.showType==1){
  668. uni.setStorageSync('url',item.advUrl);
  669. uni.navigateTo({
  670. url:"h5"
  671. })
  672. }
  673. else if(item.showType==2){
  674. uni.navigateTo({
  675. url:item.advUrl
  676. })
  677. }
  678. else if(item.showType==3){
  679. uni.setStorageSync('content',item.content);
  680. uni.navigateTo({
  681. url:"content"
  682. })
  683. }
  684. },
  685. deptChange(item){
  686. this.deptId=item.departmentId;
  687. this.getTuiDoctor();
  688. },
  689. getMenu(){
  690. getMenu().then(res => {
  691. console.log(res)
  692. if(res.code==200){
  693. this.menus= res.data
  694. }else{
  695. }
  696. });
  697. },
  698. getCanvas(){
  699. getCanvas().then(res => {
  700. if(res.code==200){
  701. console.log(res.data)
  702. this.canvas= JSON.parse(res.data.json)
  703. }else{
  704. }
  705. });
  706. },
  707. getDepartmentList(){
  708. this.depts=[];
  709. getDepartmentList().then(res => {
  710. if(res.code==200){
  711. var allDept={departmentId:0,departmentName:"全部"}
  712. this.depts.push(allDept);
  713. this.depts=this.depts.concat(res.data);
  714. }else{
  715. uni.showToast({
  716. icon:'none',
  717. title: "请求失败",
  718. });
  719. }
  720. });
  721. },
  722. getTuiDoctor(){
  723. let data = {departmentId:this.deptId,doctorType:this.docTab};
  724. getTuiDoctor(data).then(
  725. res => {
  726. if(res.code==200){
  727. this.doctorList=res.data;
  728. }else{
  729. uni.showToast({
  730. icon:'none',
  731. title: "请求失败",
  732. });
  733. }
  734. },
  735. rej => {}
  736. );
  737. },
  738. docTabChange(val){
  739. if(val==1){
  740. this.allDoctorTitle="全部医师"
  741. }
  742. if(val==2){
  743. this.allDoctorTitle="全部药师"
  744. }
  745. if(val==3){
  746. this.allDoctorTitle="全部营养师"
  747. }
  748. this.docTab=val;
  749. this.getTuiDoctor();
  750. },
  751. showImg(urls) {
  752. var imgArr =urls.split(',');
  753. //预览图片
  754. uni.previewImage({
  755. urls: imgArr,
  756. current: imgArr[0]
  757. });
  758. },
  759. getStoreConfig(){
  760. getStoreConfig().then(
  761. res => {
  762. if(res.code==200){
  763. uni.setStorageSync('config',JSON.stringify(res.data));
  764. }
  765. },
  766. rej => {}
  767. );
  768. },
  769. goAuthUrl(url){
  770. this.utils.isLogin().then(res => {
  771. if(res){
  772. uni.navigateTo({
  773. url:url
  774. })
  775. }
  776. })
  777. },
  778. switchTo(url){
  779. uni.switchTab({
  780. url: url
  781. })
  782. return
  783. },
  784. // 跳转页面
  785. navTo(url){
  786. uni.navigateTo({
  787. url: url
  788. })
  789. },
  790. getLocation(){
  791. var that=this;
  792. uni.authorize({
  793. scope:'scope.userLocation',
  794. success() {
  795. uni.getLocation({
  796. type: 'gcj02',//腾讯地图使用gcj02获取位置坐标
  797. success: function (res) {
  798. uni.setStorageSync('isLocation',1);
  799. uni.setStorageSync('lng',res.longitude);
  800. uni.setStorageSync('lat',res.latitude);
  801. },
  802. })
  803. },
  804. fail(err){
  805. console.log(err)
  806. }
  807. })
  808. },
  809. getIndexData(){
  810. let data = {};
  811. getIndexData(data).then(
  812. res => {
  813. if(res.code==200){
  814. this.advList=res.data.advList;
  815. this.articleCateList=res.data.articleCateList;
  816. if(this.articleCateList!=null&&this.articleCateList.length>0){
  817. this.cateId=this.articleCateList[0].cateId;
  818. this.getTuiArticle()
  819. }
  820. this.tuiProductList=res.data.tuiProductList
  821. this.newProductList = res.data.newProductList
  822. this.hotProductList = res.data.hotProductList
  823. }else{
  824. uni.showToast({
  825. icon:'none',
  826. title: "请求失败",
  827. });
  828. }
  829. },
  830. rej => {}
  831. );
  832. },
  833. getCartCount(){
  834. this.utils.isLogin().then(res => {
  835. if(res){
  836. getCartCount().then(
  837. cartRes => {
  838. if(cartRes.code==200){
  839. this.cartCount=cartRes.data;
  840. }
  841. },
  842. rej => {}
  843. );
  844. }
  845. })
  846. },
  847. getTuiArticle(){
  848. let data = {cateId:this.cateId};
  849. getTuiArticle(data).then(
  850. res => {
  851. if(res.code==200){
  852. this.articleList=res.data;
  853. }else{
  854. uni.showToast({
  855. icon:'none',
  856. title: "请求失败",
  857. });
  858. }
  859. },
  860. rej => {}
  861. );
  862. },
  863. getTuiDoctorOrder(){
  864. let data = {orderType:this.orderType};
  865. getTuiDoctorOrder(data).then(
  866. res => {
  867. if(res.code==200){
  868. this.doctorOrderList=res.data;
  869. }else{
  870. uni.showToast({
  871. icon:'none',
  872. title: "请求失败",
  873. });
  874. }
  875. },
  876. rej => {}
  877. );
  878. },
  879. showArticle(item){
  880. uni.navigateTo({
  881. url: '../healthy/detail?articleId='+item.articleId
  882. })
  883. },
  884. showProduct(item){
  885. uni.navigateTo({
  886. url: '/pages_shopping/shopping/productDetails?productId='+item.productId
  887. })
  888. },
  889. // 顶部搜索
  890. toSearch() {
  891. uni.navigateTo({
  892. url: './productSearch'
  893. })
  894. },
  895. // 健康知识选中
  896. articleCateChange(item) {
  897. this.cateId = item.cateId;
  898. this.getTuiArticle();
  899. },
  900. // 问诊案例选中
  901. orderTypeChange(item) {
  902. this.orderType = item.id;
  903. console.log(this.orderType)
  904. this.getTuiDoctorOrder();
  905. },
  906. // 关闭限时消息
  907. closeMsg() {
  908. this.messageShow = false
  909. },
  910. // 查看全部
  911. viewAll(url) {
  912. uni.navigateTo({
  913. url: '/pages/home/' + url,
  914. });
  915. },
  916. shopDoctor(item){
  917. console.log(item);
  918. uni.navigateTo({
  919. url: "../doctor/doctorDetail?doctorId="+item.doctorId
  920. })
  921. },
  922. // 跳转页面
  923. navgetTo(url) {
  924. uni.navigateTo({
  925. url: url
  926. })
  927. },
  928. switchTo(url){
  929. uni.switchTab({
  930. url: url
  931. })
  932. return
  933. },
  934. // 在线问诊
  935. openIm() {
  936. uni.navigateTo({
  937. url: '../doctor/doctorOrderIM?orderId=10'
  938. })
  939. }
  940. }
  941. }
  942. </script>
  943. <style lang="scss">
  944. .fixed-top-box{
  945. width: 100%;
  946. position: fixed;
  947. top: 0;
  948. left: 0;
  949. z-index: 1000;
  950. transition: all 0.5s;
  951. background-color: #2bc7b9;
  952. &.show-back{
  953. // background: linear-gradient(135deg, #2BC7B9 0%, #60CDC3 100%);
  954. }
  955. .status_bar {
  956. width: 100%;
  957. }
  958. }
  959. .content{
  960. width: 100%;
  961. position: relative;
  962. .bg{
  963. width: 100%;
  964. height: 380rpx;
  965. position: absolute;
  966. top: 0;
  967. left: 0;
  968. }
  969. .top-inner{
  970. width: 100%;
  971. position: absolute;
  972. top: 0;
  973. left: 0;
  974. z-index: 5;
  975. .top-title{
  976. height: 88upx;
  977. line-height: 88upx;
  978. display: flex;
  979. align-items: center;
  980. font-weight: 600;
  981. font-size: 36rpx;
  982. color: #fff;
  983. justify-content: flex-start;
  984. .name{
  985. margin-left: 15rpx;
  986. width: 183rpx;
  987. height: 75rpx;
  988. image{
  989. width:100%;
  990. height:100%;
  991. }
  992. }
  993. .dot{
  994. margin: 0upx 10upx;
  995. font-size: 28upx;
  996. color: #FFFFFF;
  997. opacity: 0.5;
  998. }
  999. .sub-name{
  1000. font-size: 30upx;
  1001. font-family: Source Han Sans CN;
  1002. color: #FFFFFF;
  1003. }
  1004. }
  1005. .func-cont{
  1006. box-sizing: border-box;
  1007. display: flex;
  1008. align-items: center;
  1009. padding: 30upx 20upx 30upx 20upx;
  1010. .search-cont{
  1011. box-sizing: border-box;
  1012. display: flex;
  1013. align-items: center;
  1014. flex: 1;
  1015. height: 72upx;
  1016. background: #FFFFFF;
  1017. border-radius: 36upx;
  1018. padding: 0 30upx;
  1019. .icon-search{
  1020. width: 28upx;
  1021. height: 28upx;
  1022. margin-right: 20upx;
  1023. }
  1024. input{
  1025. height: 60upx;
  1026. line-height: 60upx;
  1027. flex: 1;
  1028. }
  1029. }
  1030. ::v-deep.uni-badge{
  1031. border: none;
  1032. background-color: #FF3636;
  1033. font-family: Roboto;
  1034. }
  1035. .img-item{
  1036. width: 44upx;
  1037. height: 44upx;
  1038. margin-left: 30upx;
  1039. image{
  1040. width: 100%;
  1041. height: 100%;
  1042. }
  1043. }
  1044. }
  1045. .tips{
  1046. margin: 0upx 20rpx 30rpx ;
  1047. height: 40upx;
  1048. line-height: 40upx;
  1049. display: flex;
  1050. justify-content: space-between;
  1051. align-items: center;
  1052. .left{
  1053. font-size: 30upx;
  1054. color: #FFFFFF;
  1055. }
  1056. .right{
  1057. padding: 5upx 20rpx;
  1058. font-size: 24upx;
  1059. color: #FFFFFF;
  1060. background-color: #2bc7b9;
  1061. border-radius: 50rpx;
  1062. }
  1063. }
  1064. }
  1065. .banner-box{
  1066. padding: 0 20upx;
  1067. .inner{
  1068. width: 100%;
  1069. height: 236upx;
  1070. border-radius: 10upx;
  1071. overflow: hidden;
  1072. .swiper,
  1073. .swiper-item,
  1074. .swiper-item image{
  1075. width: 100%;
  1076. height: 100%;
  1077. }
  1078. }
  1079. }
  1080. .menu-content{
  1081. // width: 100%;
  1082. background-color: #fff;
  1083. overflow: hidden;
  1084. padding: 20upx 20upx 0;
  1085. }
  1086. .menu-box{
  1087. display: flex;
  1088. align-items: center;
  1089. background-color: #FFFFFF;
  1090. }
  1091. .online-inquiry{
  1092. box-sizing: border-box;
  1093. width: 100%;
  1094. height: 170upx;
  1095. padding: 0 20upx;
  1096. background: linear-gradient(180deg, rgba(255, 255, 255, 0.38) 62%, rgba(255, 255, 255, 0) 100%);
  1097. display: flex;
  1098. justify-content: space-between;
  1099. .item{
  1100. // width: 46.13%;
  1101. width: 346upx;
  1102. height: 150upx;
  1103. position: relative;
  1104. .bg-img,
  1105. .inner{
  1106. border-radius: 15rpx;
  1107. width: 100%;
  1108. height: 100%;
  1109. position: absolute;
  1110. top: 0;
  1111. left: 0;
  1112. z-index: 1;
  1113. }
  1114. .inner{
  1115. box-sizing: border-box;
  1116. z-index: 2;
  1117. display: flex;
  1118. flex-direction: column;
  1119. justify-content: center;
  1120. padding-left: 32upx;
  1121. .title{
  1122. font-size: 30upx;
  1123. line-height: 1;
  1124. font-family: PingFang SC;
  1125. font-weight: 500;
  1126. color: #111111;
  1127. margin-bottom: 20upx;
  1128. }
  1129. .sub-title{
  1130. font-size: 24upx;
  1131. font-family: PingFang SC;
  1132. font-weight: 500;
  1133. color: #666666;
  1134. }
  1135. image{
  1136. width: 80upx;
  1137. height: 90upx;
  1138. position: absolute;
  1139. right: 7upx;
  1140. bottom: 7upx;
  1141. }
  1142. }
  1143. }
  1144. }
  1145. .index-cont{
  1146. box-sizing: border-box;
  1147. padding: 0 20upx 120rpx;
  1148. .pub-item{
  1149. background: #FFFFFF;
  1150. border-radius: 16upx;
  1151. margin-bottom: 20upx;
  1152. .tabs{
  1153. width: 100%;
  1154. display: flex;
  1155. align-items: center;
  1156. justify-content: flex-start;
  1157. height: 110rpx;
  1158. background-color: #F0F3F4;
  1159. .tab{
  1160. height: 110rpx;
  1161. display: flex;
  1162. align-items: center;
  1163. justify-content: center;
  1164. position: relative;
  1165. flex: 1;
  1166. .img{
  1167. z-index: 1;
  1168. position: absolute;
  1169. top:0rpx;
  1170. left:0rpx;
  1171. width: 100%;
  1172. height: 100%;
  1173. }
  1174. .inner{
  1175. z-index: 2;
  1176. .title{
  1177. font-size: 32upx;
  1178. font-family: PingFang SC;
  1179. font-weight: bold;
  1180. color: #666666;
  1181. }
  1182. .active{
  1183. color: #2BC7B9;
  1184. }
  1185. }
  1186. }
  1187. }
  1188. .pub-title-box{
  1189. box-sizing: border-box;
  1190. padding: 36upx 30upx;
  1191. display: flex;
  1192. align-items: center;
  1193. justify-content: space-between;
  1194. .left{
  1195. font-size: 32upx;
  1196. line-height: 1;
  1197. font-family: PingFang SC;
  1198. font-weight: bold;
  1199. color: #111111;
  1200. }
  1201. .right{
  1202. display: flex;
  1203. align-items: center;
  1204. justify-content: center;
  1205. .text{
  1206. font-size: 24rpx;
  1207. line-height: 1;
  1208. font-family: PingFang SC;
  1209. font-weight: 500;
  1210. color: #999999;
  1211. margin-right: 10upx;
  1212. }
  1213. image{
  1214. width: 14upx;
  1215. height: 24upx;
  1216. }
  1217. }
  1218. }
  1219. .doc-tab-box{
  1220. padding: 14rpx 30rpx 0rpx 30rpx;
  1221. position: relative;
  1222. .tab-inner{
  1223. padding: 14upx 0 30upx;
  1224. display: flex;
  1225. overflow-x: auto;
  1226. }
  1227. .item{
  1228. font-size: 28upx;
  1229. white-space: nowrap;
  1230. line-height: 1;
  1231. font-family: PingFang SC;
  1232. font-weight: 500;
  1233. color: #666666;
  1234. margin-right: 40upx;
  1235. position: relative;
  1236. &:last-child{
  1237. margin-right: 0;
  1238. }
  1239. &.active{
  1240. font-weight: bold;
  1241. color: #333333;
  1242. }
  1243. &.cases{
  1244. margin-right: 60upx;
  1245. }
  1246. .text{
  1247. position: relative;
  1248. z-index: 1;
  1249. }
  1250. .tab-bg{
  1251. width: 72upx;
  1252. height: 28upx;
  1253. position: absolute;
  1254. top: 17upx;
  1255. left: 50%;
  1256. transform: translateX(-36upx);
  1257. z-index: -1;
  1258. }
  1259. }
  1260. .right-mask{
  1261. width: 56upx;
  1262. height: 34upx;
  1263. position: absolute;
  1264. top: 25upx;
  1265. right: 0upx;
  1266. z-index: 1;
  1267. }
  1268. }
  1269. .doc-list{
  1270. padding: 20upx;
  1271. .item{
  1272. box-sizing: border-box;
  1273. background: #FFFFFF;
  1274. // border-radius: 16upx;
  1275. display: flex;
  1276. border-bottom: 1px solid #F0F0F0;
  1277. margin-bottom: 30rpx;
  1278. .head-box{
  1279. width: 120upx;
  1280. height: 120upx;
  1281. background: #EDF1F4;
  1282. border-radius: 50%;
  1283. overflow: hidden;
  1284. margin-right: 30upx;
  1285. image{
  1286. width: 100%;
  1287. height: 100%;
  1288. }
  1289. }
  1290. .info{
  1291. width: calc(100% - 150upx);
  1292. .top{
  1293. display: flex;
  1294. align-items: center;
  1295. font-family: PingFang SC;
  1296. line-height: 1;
  1297. .name{
  1298. font-size: 34upx;
  1299. font-weight: bold;
  1300. color: #111111;
  1301. }
  1302. .line{
  1303. width: 1px;
  1304. height: 26upx;
  1305. background: #DDDDDD;
  1306. margin: 0 20upx;
  1307. }
  1308. .other{
  1309. font-size: 28upx;
  1310. font-weight: 500;
  1311. color: #333333;
  1312. }
  1313. }
  1314. .unit-box{
  1315. display: flex;
  1316. margin-top: 24upx;
  1317. .level{
  1318. padding: 0 10upx;
  1319. height: 30upx;
  1320. line-height: 30upx;
  1321. font-size: 22upx;
  1322. font-family: PingFang SC;
  1323. font-weight: 500;
  1324. color: #FFFFFF;
  1325. background: #2BC7B9;
  1326. border-radius: 10upx 4upx 10upx 4upx;
  1327. margin-right: 12upx;
  1328. }
  1329. .name{
  1330. font-size: 28upx;
  1331. font-family: PingFang SC;
  1332. font-weight: 500;
  1333. color: #333333;
  1334. line-height: 30upx;
  1335. }
  1336. }
  1337. .expertise{
  1338. font-size: 26upx;
  1339. font-family: PingFang SC;
  1340. font-weight: 500;
  1341. color: #666666;
  1342. line-height: 42upx;
  1343. margin: 22upx 0 26upx;
  1344. }
  1345. .rate-box{
  1346. display: flex;
  1347. align-items: center;
  1348. .star{
  1349. display: flex;
  1350. align-items: center;
  1351. image{
  1352. width: 22upx;
  1353. height: 22upx;
  1354. margin-right: 10upx;
  1355. }
  1356. text{
  1357. font-size: 26upx;
  1358. font-family: PingFang SC;
  1359. font-weight: bold;
  1360. color: #CEA764;
  1361. line-height: 1;
  1362. }
  1363. }
  1364. .line{
  1365. width: 1px;
  1366. height: 20upx;
  1367. background: #DDDDDD;
  1368. margin: 0 20upx;
  1369. }
  1370. .num-box{
  1371. display: flex;
  1372. align-items: center;
  1373. font-family: PingFang SC;
  1374. .label{
  1375. font-size: 24upx;
  1376. font-weight: 500;
  1377. color: #999999;
  1378. line-height: 1;
  1379. margin-right: 7px;
  1380. }
  1381. .num{
  1382. font-size: 26upx;
  1383. font-weight: bold;
  1384. color: #CEA764;
  1385. line-height: 1;
  1386. }
  1387. }
  1388. }
  1389. .price-box{
  1390. display: flex;
  1391. align-items: center;
  1392. margin-top: 38upx;
  1393. .btn-item{
  1394. display: flex;
  1395. align-items: center;
  1396. justify-content: center;
  1397. width: 164upx;
  1398. height: 56upx;
  1399. line-height: 56upx;
  1400. border: 1px solid rgba(43, 199, 185, 0.5);
  1401. border-radius: 28upx;
  1402. font-family: PingFang SC;
  1403. margin-right: 30upx;
  1404. &:last-child{
  1405. margin-right: 0;
  1406. }
  1407. .label{
  1408. font-size: 26upx;
  1409. font-weight: 500;
  1410. color: #2BC7B9;
  1411. margin-right: 5upx;
  1412. }
  1413. .num{
  1414. font-size: 28upx;
  1415. font-weight: bold;
  1416. color: #2BC7B9;
  1417. }
  1418. }
  1419. }
  1420. }
  1421. }
  1422. .item:last-child{
  1423. border-bottom: none;
  1424. margin-bottom: 0rpx;
  1425. }
  1426. .bottom-title{
  1427. height: 50rpx;
  1428. display: flex;
  1429. align-items: center;
  1430. justify-content: center;
  1431. font-size: 26rpx;
  1432. font-family: PingFang SC;
  1433. font-weight: bold;
  1434. color: #2BC7B9;
  1435. image{
  1436. margin-left: 8rpx;
  1437. width: 14rpx;
  1438. height: 24rpx;
  1439. }
  1440. }
  1441. }
  1442. // 医师团队
  1443. .doc-cont{
  1444. box-sizing: border-box;
  1445. padding: 0 30upx;
  1446. .inner{
  1447. padding: 4upx 0 40upx;
  1448. display: flex;
  1449. overflow-x: auto;
  1450. }
  1451. .item{
  1452. display: flex;
  1453. align-items: center;
  1454. flex-direction: column;
  1455. margin-right: 40upx;
  1456. &:last-child{
  1457. margin-right: 0;
  1458. }
  1459. .head-box{
  1460. width: 120upx;
  1461. height: 120upx;
  1462. background: #F2F5F9;
  1463. border-radius: 50%;
  1464. margin-bottom: 20upx;
  1465. overflow: hidden;
  1466. image{
  1467. width: 100%;
  1468. height: 100%;
  1469. }
  1470. }
  1471. .name{
  1472. max-width: 120upx;
  1473. font-size: 28upx;
  1474. line-height: 1;
  1475. font-family: PingFang SC;
  1476. font-weight: 500;
  1477. color: #111111;
  1478. margin-bottom: 16upx;
  1479. text-align: center;
  1480. }
  1481. .position{
  1482. max-width: 120upx;
  1483. font-size: 24upx;
  1484. line-height: 1;
  1485. font-family: PingFang SC;
  1486. font-weight: 500;
  1487. color: #999999;
  1488. text-align: center;
  1489. }
  1490. }
  1491. }
  1492. .inner{
  1493. padding: 0 30upx;
  1494. }
  1495. // 健康知识
  1496. .pub-tab-box{
  1497. position: relative;
  1498. .tab-inner{
  1499. padding: 14upx 0 30upx;
  1500. display: flex;
  1501. overflow-x: auto;
  1502. }
  1503. .item{
  1504. font-size: 28upx;
  1505. white-space: nowrap;
  1506. line-height: 1;
  1507. font-family: PingFang SC;
  1508. font-weight: 500;
  1509. color: #666666;
  1510. margin-right: 40upx;
  1511. position: relative;
  1512. &:last-child{
  1513. margin-right: 0;
  1514. }
  1515. &.active{
  1516. font-weight: bold;
  1517. color: #333333;
  1518. }
  1519. &.cases{
  1520. margin-right: 60upx;
  1521. }
  1522. .text{
  1523. position: relative;
  1524. z-index: 1;
  1525. }
  1526. .tab-bg{
  1527. width: 72upx;
  1528. height: 28upx;
  1529. position: absolute;
  1530. top: 17upx;
  1531. left: 50%;
  1532. transform: translateX(-36upx);
  1533. z-index: -1;
  1534. }
  1535. }
  1536. .right-mask{
  1537. width: 56upx;
  1538. height: 34upx;
  1539. position: absolute;
  1540. top: 14upx;
  1541. right: -30upx;
  1542. z-index: 1;
  1543. }
  1544. }
  1545. .know-list{
  1546. padding-right: 10upx;
  1547. .item{
  1548. padding: 30upx 0;
  1549. display: flex;
  1550. align-items: center;
  1551. justify-content: space-between;
  1552. border-bottom: 1px solid #F0F0F0;
  1553. &:last-child{
  1554. border-bottom: none;
  1555. }
  1556. .left{
  1557. flex: 1;
  1558. padding-right: 40upx;
  1559. height: 190upx;
  1560. display: flex;
  1561. flex-direction: column;
  1562. justify-content: space-between;
  1563. .title{
  1564. font-size: 32upx;
  1565. font-family: PingFang SC;
  1566. font-weight: 500;
  1567. color: #111111;
  1568. line-height: 48upx;
  1569. }
  1570. .info-box{
  1571. width: 100%;
  1572. display: flex;
  1573. align-items: center;
  1574. justify-content: space-between;
  1575. .readers{
  1576. display: flex;
  1577. align-items: center;
  1578. .head-box{
  1579. margin-right: 27upx;
  1580. display: flex;
  1581. align-items: center;
  1582. .head{
  1583. width: 48upx;
  1584. height: 48upx;
  1585. border-radius: 50%;
  1586. overflow: hidden;
  1587. box-shadow: 0 0 0 1px #fff;
  1588. margin-right: -10upx;
  1589. image{
  1590. width: 100%;
  1591. height: 100%;
  1592. }
  1593. }
  1594. }
  1595. .readings{
  1596. display: flex;
  1597. align-items: center;
  1598. .eye{
  1599. width: 26upx;
  1600. height: 20upx;
  1601. margin-right: 9upx;
  1602. }
  1603. .num{
  1604. font-size: 24upx;
  1605. font-family: PingFang SC;
  1606. font-weight: 500;
  1607. color: #999999;
  1608. line-height: 1;
  1609. }
  1610. }
  1611. }
  1612. .time{
  1613. font-size: 24upx;
  1614. line-height: 1;
  1615. font-family: PingFang SC;
  1616. font-weight: 500;
  1617. color: #999999;
  1618. }
  1619. }
  1620. }
  1621. .right{
  1622. width: 250upx;
  1623. height: 190upx;
  1624. border-radius: 8upx;
  1625. overflow: hidden;
  1626. image{
  1627. width: 100%;
  1628. height: 100%;
  1629. }
  1630. }
  1631. }
  1632. }
  1633. // 问诊案例
  1634. .cases-list{
  1635. padding-bottom: 10upx;
  1636. .item{
  1637. padding: 30upx 0;
  1638. border-bottom: 1px solid #F0F0F0;
  1639. &:last-child{
  1640. border-bottom: none;
  1641. }
  1642. .dec-text{
  1643. font-size: 32upx;
  1644. font-family: PingFang SC;
  1645. font-weight: bold;
  1646. color: #111111;
  1647. line-height: 48upx;
  1648. }
  1649. .images-box{
  1650. margin-top: 10upx;
  1651. display: flex;
  1652. flex-wrap: wrap;
  1653. .img-item{
  1654. width: 155upx;
  1655. height: 155upx;
  1656. background: #F5F5F5;
  1657. border-radius: 8upx;
  1658. margin: 0 10upx 10upx 0;
  1659. overflow: hidden;
  1660. image{
  1661. width: 100%;
  1662. height: 100%;
  1663. }
  1664. &:nth-child(4n){
  1665. margin-right: 0;
  1666. }
  1667. }
  1668. }
  1669. .doc-info{
  1670. display: flex;
  1671. align-items: center;
  1672. margin: 30upx 0 20upx;
  1673. .head{
  1674. width: 60upx;
  1675. height: 60upx;
  1676. background: #F2F5F9;
  1677. border-radius: 50%;
  1678. margin-right: 20upx;
  1679. overflow: hidden;
  1680. image{
  1681. width: 100%;
  1682. height: 100%;
  1683. }
  1684. }
  1685. .name{
  1686. font-size: 28upx;
  1687. line-height: 1;
  1688. font-family: PingFang SC;
  1689. font-weight: 500;
  1690. color: #111111;
  1691. }
  1692. .line{
  1693. width: 1px;
  1694. height: 22upx;
  1695. background: #DDDDDD;
  1696. margin: 0 16upx;
  1697. }
  1698. .posit,
  1699. .address{
  1700. font-size: 26upx;
  1701. font-family: PingFang SC;
  1702. font-weight: 500;
  1703. color: #999999;
  1704. }
  1705. }
  1706. .answer-box{
  1707. width: 100%;
  1708. // height: 117upx;
  1709. background: #F5F7F7;
  1710. border-radius: 10upx;
  1711. display: flex;
  1712. flex-direction: column;
  1713. justify-content: center;
  1714. .text-inner{
  1715. // height: 84upx;
  1716. font-size: 28upx;
  1717. font-family: PingFang SC;
  1718. font-weight: 500;
  1719. color: #666666;
  1720. line-height: 42upx;
  1721. padding: 15upx;
  1722. }
  1723. }
  1724. .read-box{
  1725. margin-top: 30upx;
  1726. display: flex;
  1727. align-items: center;
  1728. justify-content: flex-end;
  1729. image{
  1730. width: 24upx;
  1731. height: 19upx;
  1732. margin-right: 10upx;
  1733. }
  1734. .text{
  1735. font-size: 24upx;
  1736. font-family: PingFang SC;
  1737. font-weight: 500;
  1738. color: #999999;
  1739. }
  1740. }
  1741. }
  1742. }
  1743. }
  1744. // 精选药品
  1745. .feat-title{
  1746. margin-top: 30upx;
  1747. padding: 10upx 0 33upx;
  1748. display: flex;
  1749. align-items: center;
  1750. justify-content: center;
  1751. image{
  1752. width: 37upx;
  1753. height: 37upx;
  1754. margin: 0upx 20upx;
  1755. }
  1756. text{
  1757. font-size: 36upx;
  1758. line-height: 1;
  1759. font-family: PingFang SC;
  1760. font-weight: bold;
  1761. color: #111111;
  1762. }
  1763. }
  1764. .drug-list{
  1765. display: flex;
  1766. flex-wrap: wrap;
  1767. // margin-bottom: 20upx;
  1768. .item{
  1769. margin-right: 20rpx;
  1770. margin-bottom: 20rpx;
  1771. width: 345rpx;
  1772. background: #FFFFFF;
  1773. box-shadow: 0px 0px 10rpx 4rpx rgba(199, 199, 199, 0.22);
  1774. border-radius: 20rpx;
  1775. overflow: hidden;
  1776. &:nth-child(2n){
  1777. margin-right: 0;
  1778. }
  1779. .img-box{
  1780. width: 100%;
  1781. height: 334upx;
  1782. image{
  1783. width: 100%;
  1784. height: 100%;
  1785. }
  1786. }
  1787. .info-box{
  1788. box-sizing: border-box;
  1789. height: 182upx;
  1790. padding: 20upx;
  1791. .title{
  1792. height: 80upx;
  1793. font-size: 26upx;
  1794. font-family: PingFang SC;
  1795. font-weight: 500;
  1796. color: #111111;
  1797. line-height: 40upx;
  1798. }
  1799. .price-box{
  1800. display: flex;
  1801. align-items: center;
  1802. margin-top: 20upx;
  1803. .now{
  1804. color: #FF6633;
  1805. display: flex;
  1806. align-items: flex-end;
  1807. margin-right: 20upx;
  1808. font-family: PingFang SC;
  1809. .unit{
  1810. font-size: 24upx;
  1811. line-height: 1.4;
  1812. margin-right: 4upx;
  1813. }
  1814. .num{
  1815. font-size: 36upx;
  1816. font-weight: bold;
  1817. line-height: 1;
  1818. }
  1819. }
  1820. .old{
  1821. font-size: 26upx;
  1822. font-family: PingFang SC;
  1823. text-decoration: line-through;
  1824. color: #BBBBBB;
  1825. line-height: 1;
  1826. }
  1827. }
  1828. }
  1829. }
  1830. }
  1831. }
  1832. }
  1833. .official-account{
  1834. box-sizing: border-box;
  1835. width: 100%;
  1836. height: 100upx;
  1837. position: fixed;
  1838. bottom: 30upx;
  1839. z-index: 99;
  1840. padding: 0 20upx 180rpx 20upx;
  1841. }
  1842. // 消息
  1843. .message-box{
  1844. box-sizing: border-box;
  1845. width: 100%;
  1846. height: 84upx;
  1847. background: #F3FFFD;
  1848. border: 1px solid #C7E9E5;
  1849. box-shadow: 0px 4upx 12upx 0px rgba(90, 203, 138, 0.16);
  1850. border-radius: 16upx;
  1851. position: fixed;
  1852. left: 50%;
  1853. transform: translateX(-50%);
  1854. bottom: 30upx;
  1855. z-index: 99;
  1856. display: flex;
  1857. align-items: center;
  1858. justify-content: space-between;
  1859. padding: 0 20upx 0 30upx;
  1860. .left{
  1861. flex:1;
  1862. display: flex;
  1863. align-items: center;
  1864. image{
  1865. width: 24upx;
  1866. height: 24upx;
  1867. margin-right: 18upx;
  1868. }
  1869. .text{
  1870. width: 90%;
  1871. font-size: 28upx;
  1872. font-family: PingFang SC;
  1873. font-weight: 500;
  1874. color: #2BC7B9;
  1875. }
  1876. }
  1877. .btn{
  1878. width: 100upx;
  1879. height: 48upx;
  1880. line-height: 48upx;
  1881. text-align: center;
  1882. font-size: 24upx;
  1883. font-family: PingFang SC;
  1884. font-weight: 500;
  1885. color: #FFFFFF;
  1886. border: 1px solid #D2E6FF;
  1887. background: linear-gradient(135deg, #2BC7B9 0%, #60CDC3 100%);
  1888. border-radius: 24upx;
  1889. margin-left: 30upx;
  1890. }
  1891. }
  1892. .contact-btn{
  1893. display: inline-block;
  1894. position: absolute;
  1895. top: 0;
  1896. left: 0;
  1897. width: 100%;
  1898. height: 100%;
  1899. opacity: 0;
  1900. }
  1901. .popup-box{
  1902. position: fixed;
  1903. top: 0;
  1904. right: 0;
  1905. left: 0;
  1906. bottom: 0;
  1907. z-index: 999;
  1908. display: flex;
  1909. justify-content: center;
  1910. align-items: center;
  1911. .info-mask {
  1912. position: fixed;
  1913. top: 0;
  1914. right: 0;
  1915. bottom: 0;
  1916. left: 0;
  1917. background-color: rgba($color: #000000, $alpha: 0.5);
  1918. z-index: 999;
  1919. }
  1920. .info-form {
  1921. z-index: 1000;
  1922. width: 450rpx;
  1923. display: flex;
  1924. flex-direction: column;
  1925. justify-content: center;
  1926. align-items: center;
  1927. position: relative;
  1928. image{
  1929. width:100%;
  1930. }
  1931. }
  1932. }
  1933. </style>