index.vue 48 KB

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