docDetail.vue 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462
  1. <template>
  2. <view class="content">
  3. <!-- 状态栏占位 -->
  4. <view :style="{height:statusBarHeight+'px'}"></view>
  5. <view class="bg-box"></view>
  6. <!-- 随访 -->
  7. <view class="tab-content">
  8. <!-- 患者信息 -->
  9. <view class="user-info-box">
  10. <!-- 头像 -->
  11. <view class="head-box">
  12. <image src="../../static/images/detault_head.jpg" mode="aspectFill"></image>
  13. </view>
  14. <view class="user-info">
  15. <view class="left" v-if="doc!=null">
  16. <view class="name">{{doc.userName}}</view>
  17. <text class="gray-tag" v-if="doc.sex==1">男</text>
  18. <text class="gray-tag" v-if="doc.sex==2">女</text>
  19. <view class="gray-tag" >{{utils.getAge(doc.birthday)}}岁</view>
  20. <view class="blue-tag">标签</view>
  21. </view>
  22. <!-- <image class="phone" src="../../static/images/icon_phone.png" mode="" @click="callPhone('114')"></image> -->
  23. </view>
  24. <!-- 方案 -->
  25. <view class="copy-writing">
  26. <view class="label">建档时间:</view>
  27. <view class="text">{{doc.createTime}}</view>
  28. </view>
  29. <view class="copy-writing">
  30. <view class="label">备注:</view>
  31. <view class="text">{{doc.remark}}</view>
  32. </view>
  33. </view>
  34. <view class="hand-box">
  35. <view class="title">基本操作</view>
  36. <view class="hand-list">
  37. <view class="item" @click="navTo('./docRecord?docId='+docId)">
  38. <image src="../../static/images/suifang_record.png" mode=""></image>
  39. <text class="text">随访记录</text>
  40. </view>
  41. <!-- <view class="item">
  42. <image src="../../static/images/health_archives.png" mode=""></image>
  43. <text class="text">问医生</text>
  44. </view> -->
  45. <view class="item">
  46. <image src="../../static/images/msg_remind.png" mode=""></image>
  47. <text class="text">消息</text>
  48. </view>
  49. </view>
  50. </view>
  51. <!-- 服务团队 -->
  52. <view class="hand-box">
  53. <view class="title">服务团队</view>
  54. <scroll-view class="team-scroll" scroll-x="true" >
  55. <view class="team-list">
  56. <view v-for="(item,index) in users" :key="index" class="item">
  57. <image class="img" src="../../static/images/detault_head.jpg" mode=""></image>
  58. <text class="name">{{item.nickName}}</text>
  59. <text class="title">{{item.deptName}}</text>
  60. </view>
  61. </view>
  62. </scroll-view>
  63. </view>
  64. </view>
  65. </view>
  66. </template>
  67. <script>
  68. import {getMyDocList,getDocDetails} from '@/api/doc.js'
  69. export default {
  70. data() {
  71. return {
  72. users:[],
  73. docId:null,
  74. doc:null,
  75. statusBarHeight: uni.getStorageSync('statusBarHeight'),
  76. bottomBlackLineHeight: uni.getStorageSync('bottomBlackLineHeight'),
  77. activeDetTab: 1, // 1、随访;2、日志;3、沟通
  78. stageArr: ['阶段一','阶段二','阶段三','阶段四','阶段五','阶段六','阶段七'],
  79. activeStage: 2, // 当前进行的阶段。下标从1开始
  80. }
  81. },
  82. onLoad(options) {
  83. this.docId=options.docId;
  84. this.getDocDetails();
  85. },
  86. methods: {
  87. getDocDetails(){
  88. uni.showLoading({
  89. title:"正在加载中"
  90. })
  91. var data={docId:this.docId}
  92. getDocDetails(data).then(
  93. res => {
  94. uni.hideLoading()
  95. if(res.code==200){
  96. this.doc=res.data;
  97. this.users=res.users;
  98. }else{
  99. uni.showToast({
  100. icon:'none',
  101. title: "请求失败",
  102. });
  103. }
  104. },
  105. rej => {}
  106. );
  107. },
  108. // 返回
  109. goBack() {
  110. uni.navigateBack()
  111. },
  112. // 顶部tab切换
  113. topTabHand(index) {
  114. this.activeDetTab = index
  115. },
  116. // 打电话
  117. callPhone(phone) {
  118. uni.makePhoneCall({
  119. phoneNumber: phone
  120. })
  121. },
  122. // 发布日志
  123. publishLog() {
  124. uni.navigateTo({
  125. url: './publishLog'
  126. })
  127. },
  128. // 基本操作
  129. navTo(url) {
  130. uni.navigateTo({
  131. url: url
  132. })
  133. },
  134. // 查看随访阶段
  135. showPhaseDet(item) {
  136. uni.navigateTo({
  137. url: './followupPhase?type='+ item
  138. })
  139. }
  140. }
  141. }
  142. </script>
  143. <style lang="scss">
  144. page{
  145. background-color: #F7F7F7;
  146. }
  147. </style>
  148. <style scoped lang="scss">
  149. .content{
  150. position: relative;
  151. .bg-box{
  152. width: 100%;
  153. height: 508upx;
  154. position: absolute;
  155. top: 0;
  156. left: 0;
  157. z-index: -1;
  158. background-image: url(/static/images/doc_top_bg.png);
  159. background-repeat: repeat-x;
  160. background-size: 20upx 508upx;
  161. }
  162. }
  163. .tab-content{
  164. padding: 88upx 20upx 20upx;
  165. &.illness{
  166. padding-top: 30upx;
  167. }
  168. .user-info-box{
  169. padding: 78upx 35upx 50upx;
  170. background: #FFFFFF;
  171. border: 2upx solid #EEEEEE;
  172. box-shadow: 0px 16upx 30upx 0px rgba(0,0,0,0.03);
  173. border-radius: 20upx;
  174. position: relative;
  175. .head-box{
  176. width: 110upx;
  177. height: 110upx;
  178. background: #EDF1F4;
  179. border: 4upx solid #FFFFFF;
  180. border-radius: 50%;
  181. overflow: hidden;
  182. position: absolute;
  183. left: 40upx;
  184. top: -56upx;
  185. image{
  186. width: 100%;
  187. height: 100%;
  188. }
  189. }
  190. .user-info{
  191. display: flex;
  192. align-items: center;
  193. justify-content: space-between;
  194. margin-bottom: 60upx;
  195. .left{
  196. display: flex;
  197. align-items: center;
  198. .name{
  199. font-size: 36upx;
  200. font-family: PingFang SC;
  201. font-weight: bold;
  202. color: #111111;
  203. line-height: 1;
  204. margin-right: 20upx;
  205. }
  206. .gray-tag{
  207. height: 46upx;
  208. line-height: 46upx;
  209. padding: 0 16upx;
  210. font-size: 24upx;
  211. font-family: PingFang SC;
  212. font-weight: 500;
  213. color: #333333;
  214. background: #F7F7F7;
  215. border-radius: 8upx;
  216. margin-right: 10upx;
  217. }
  218. .blue-tag{
  219. height: 46upx;
  220. line-height: 46upx;
  221. padding: 0 16upx;
  222. font-size: 24upx;
  223. font-family: PingFang SC;
  224. font-weight: bold;
  225. color: #4BC9B1;
  226. background: #E2F6F2;
  227. border-radius: 8upx;
  228. }
  229. }
  230. .phone{
  231. width: 36upx;
  232. height: 36upx;
  233. }
  234. }
  235. .copy-writing{
  236. display: flex;
  237. margin-bottom: 30upx;
  238. &:last-child{
  239. margin-bottom: 0;
  240. }
  241. .label{
  242. flex-shrink: 0;
  243. font-size: 28upx;
  244. font-family: PingFang SC;
  245. font-weight: 500;
  246. color: #666666;
  247. }
  248. .text{
  249. font-size: 28upx;
  250. font-family: PingFang SC;
  251. font-weight: 500;
  252. color: #111111;
  253. }
  254. }
  255. }
  256. .hand-box{
  257. margin-top: 20upx;
  258. background: #FFFFFF;
  259. border-radius: 20upx;
  260. padding: 40upx 30upx;
  261. .hand-list{
  262. display: flex;
  263. align-items: center;
  264. justify-content: flex-start;
  265. margin-top: 40upx;
  266. .item{
  267. width: 25%;
  268. display: flex;
  269. flex-direction: column;
  270. align-items: center;
  271. justify-content: center;
  272. image{
  273. width: 50upx;
  274. height: 50upx;
  275. margin-bottom: 20upx;
  276. }
  277. .text{
  278. font-size: 24upx;
  279. font-family: PingFang SC;
  280. font-weight: 500;
  281. color: #333333;
  282. line-height: 1;
  283. }
  284. }
  285. }
  286. .team-scroll{
  287. margin-top: 40upx;
  288. .team-list{
  289. display: flex;
  290. align-items: center;
  291. .item{
  292. display: flex;
  293. flex-direction: column;
  294. align-items: center;
  295. justify-content: center;
  296. margin-right: 40upx;
  297. &:last-child{
  298. margin-right: 0;
  299. }
  300. .img{
  301. width: 120upx;
  302. height: 120upx;
  303. background: #F2F5F9;
  304. border-radius: 50%;
  305. }
  306. .name{
  307. margin-top: 20upx;
  308. font-size: 28upx;
  309. font-family: PingFang SC;
  310. font-weight: 500;
  311. color: #111111;
  312. line-height: 1;
  313. }
  314. .title{
  315. font-size: 26upx;
  316. font-family: PingFang SC;
  317. font-weight: 500;
  318. color: #999999;
  319. margin-top: 15upx;
  320. line-height: 1;
  321. }
  322. }
  323. }
  324. }
  325. }
  326. }
  327. .communicate{
  328. padding: 20upx 30upx 170upx;
  329. .chat-item{
  330. padding: 30upx 0;
  331. .time{
  332. font-size: 26upx;
  333. font-family: PingFang SC;
  334. font-weight: 500;
  335. color: #999999;
  336. line-height: 1;
  337. text-align: center;
  338. margin-bottom: 30upx;
  339. }
  340. &.other{
  341. .chat-inner{
  342. .head{
  343. margin-right: 20upx;
  344. }
  345. }
  346. }
  347. &.my{
  348. .chat-inner{
  349. justify-content: flex-end;
  350. .head{
  351. margin-left: 20upx;
  352. }
  353. .info-box{
  354. display: flex;
  355. flex-direction: column;
  356. align-items: flex-end;
  357. .chat-text{
  358. background: #4BC9B1;
  359. color: #FFFFFF;
  360. border-radius: 20upx 0 20upx 20upx;
  361. }
  362. }
  363. }
  364. }
  365. .chat-inner{
  366. display: flex;
  367. .head{
  368. flex-shrink: 0;
  369. width: 80upx;
  370. height: 80upx;
  371. border-radius: 50%;
  372. overflow: hidden;
  373. image{
  374. width: 100%;
  375. height: 100%;
  376. }
  377. }
  378. .info-box{
  379. flex: 1;
  380. .name{
  381. font-size: 28upx;
  382. font-family: PingFang SC;
  383. font-weight: 500;
  384. color: #666666;
  385. line-height: 1;
  386. }
  387. .chat-text{
  388. box-sizing: border-box;
  389. max-width: 88%;
  390. padding: 20upx 26upx;
  391. background: #FFFFFF;
  392. border-radius: 0 20upx 20upx 20upx;
  393. margin-top: 20upx;
  394. font-size: 32upx;
  395. font-family: PingFang SC;
  396. font-weight: 500;
  397. color: #111111;
  398. line-height: 50upx;
  399. }
  400. }
  401. }
  402. }
  403. .bottom-input-cont{
  404. width: 100%;
  405. z-index: 99;
  406. position: fixed;
  407. left: 0;
  408. bottom: 0;
  409. background: #fff;
  410. .inner{
  411. padding: 20upx;
  412. display: flex;
  413. align-items: center;
  414. justify-content: space-between;
  415. .voice{
  416. flex-shrink: 0;
  417. width: 54upx;
  418. height: 54upx;
  419. }
  420. .input-box{
  421. flex-shrink: 0;
  422. width: 63.73%;
  423. height: 80upx;
  424. background: #F2F2F2;
  425. border-radius: 40upx;
  426. padding: 0 30upx;
  427. display: flex;
  428. align-items: center;
  429. input{
  430. width: 100%;
  431. height: 80upx;
  432. font-size: 28upx;
  433. font-family: PingFang SC;
  434. font-weight: 500;
  435. }
  436. .place-hold{
  437. font-size: 28upx;
  438. font-family: PingFang SC;
  439. font-weight: 500;
  440. color: #999999;
  441. }
  442. }
  443. .expression{
  444. flex-shrink: 0;
  445. width: 54upx;
  446. height: 54upx;
  447. }
  448. .add{
  449. flex-shrink: 0;
  450. width: 54upx;
  451. height: 54upx;
  452. }
  453. }
  454. }
  455. }
  456. </style>