personal-manage.html 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>康复管理</title>
  6. <link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
  7. <link rel="stylesheet" type="text/css" href="../../../css/cross.ui.css" />
  8. <link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
  9. <link rel="stylesheet" type="text/css" href="../css/new_recover.css" />
  10. <link rel="stylesheet" type="text/css" href="../css/personal-manage.css" />
  11. <style>
  12. .content {height: calc(100% - 14px);}
  13. </style>
  14. </head>
  15. <body class="m0">
  16. <div id="app" class="c-333" v-cloak>
  17. <div class="content clearfix">
  18. <div class="fl c-h100 w350 person_info c-border-r">
  19. <div class="plr5 c-h100">
  20. <h4 class="m0 pl15 lh40 c-border-b c-position-r"><em class="c-position-a set-blue-span"></em>个人基础信息</h4>
  21. <div class="bgc-f5f5fa mt10 ptb10 plr10">
  22. <div class="clearfix">
  23. <div class="fl w-100-66">
  24. <p class="m0 p0 mb10">
  25. <span class="c-999">姓名:</span>{{recoverPatInfo.patientInfo.patientName}}
  26. <span class="c-999 ml20">性别:</span>{{recoverPatInfo.patientInfo.sex == 1 ? "男" : "女"}}
  27. <span class="c-999 ml20">年龄:</span>{{recoverPatInfo.patientInfo.age}}岁
  28. </p>
  29. <p class="m0 p0 mb10">
  30. <span class="c-999">健康情况:</span>{{recoverPatInfo.patientInfo.healthyCondition}}
  31. </p>
  32. <p class="m0 p0 mb10">
  33. <span class="c-999">联系电话:</span><span class="c-12b7f5 cur-pit" v-if="isMobile" @click="changeStatu()">点击查看</span><span v-else>{{recoverPatInfo.patientInfo.mobile}}</span>
  34. </p>
  35. </div>
  36. <div class="fr set-photo">
  37. <img :src="setPatImg(recoverPatInfo.patientInfo.photo)" alt="居民头像" />
  38. </div>
  39. </div>
  40. <p class="m0 p0 mb10">
  41. <span class="c-999">签约社区:</span>{{recoverPatInfo.patientInfo.signHospitalName}}
  42. </p>
  43. <p class="m0 p0">
  44. <span class="c-999">康复机构:</span>{{recoverPatInfo.patientInfo.rehabilitationOrg}}
  45. </p>
  46. </div>
  47. <h4 class="m0 pl15 lh40 c-border-b c-position-r"><em class="c-position-a set-blue-span"></em>服务医生</h4>
  48. <!--<div class="pt10 pb10" style="overflow: hidden; height: 190px;">-->
  49. <div class="pt10 pb10" style="overflow: hidden; height: calc(100% - 271px);">
  50. <ul class="p0 m0 c-h100" style="overflow: auto;">
  51. <li class="clearfix plr20 ptb10 doc-li" v-for="(docInfo, index) in recoverPatInfo.serviceDoctorList" :key="index">
  52. <div class="fl set-photo">
  53. <img :src="setPatImg(docInfo.doctorPhoto, 1)" alt="医生头像" />
  54. </div>
  55. <div class="fl ml10 lh18">
  56. <p class="m0 p0 c-f16">{{docInfo.doctorName}}</p>
  57. <p class="m0 p0 mt10 c-999">{{docInfo.type}}</p>
  58. </div>
  59. <div class="fr w100 ml40 lh18">
  60. <p class="m0 p0">完成项目:<span class="c-orange">{{docInfo.finishedItem}}</span></p>
  61. <p class="m0 p0 mt10">服务次数:<span class="c-orange">{{docInfo.serviceCount}}</span></p>
  62. </div>
  63. </li>
  64. </ul>
  65. </div>
  66. <!--<h4 class="m0 pl10 lh40 c-border-b">出院小结</h4>
  67. <div class="ptb10" style="overflow: hidden; height: calc(100% - 481px);">
  68. <ul class="m0 p0 c-border b-r-3 c-h100" style="overflow: auto;">
  69. <li class="pt5 plr10">
  70. <p class="c-999 lh40 clearfix">
  71. <span class="fl">冠心病诊断</span>
  72. <span class="fr">2018-08-01</span>
  73. </p>
  74. <div class="bgc-f5f5fa plr5 ptb10" style="line-height: 20px;">
  75. &emsp;&emsp;这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容这是诊断内容
  76. </div>
  77. </li>
  78. </ul>
  79. </div>-->
  80. </div>
  81. </div>
  82. <div class="fl c-h100 w-100-350">
  83. <div class="fl w-100-300 c-h100">
  84. <div class="plr5">
  85. <h4 class="m0 pl15 lh40 c-border-b c-position-r clearfix">
  86. <em class="c-position-a set-blue-span"></em>
  87. <span class="fl">康复计划</span>
  88. <span class="fl plr20 ml20 c-f12 bgc-12b7f5 c-fff cur-pit" @click="gotoNewplan()" v-if="doctorType == 1">新建计划</span>
  89. <span class="fr w80 c-333 c-f12 c-t-center">进行中:{{recoverPatInfo.planUnderway}}</span>
  90. <span class="fr w80 c-333 c-f12 c-t-center">已完成:{{recoverPatInfo.planFinish}}</span>
  91. </h4>
  92. <div class="pb10" style="overflow: hidden; height: 230px;">
  93. <ul class="p0 plr5 m0 c-h100" style="overflow: auto;">
  94. <li class="clearfix plr5 ptb10 mt10 plan-li cur-pit c-border b-r-3" v-for="(plan, index) in recoverPatInfo.planList" :key="index" @click="jumpPlan(plan)">
  95. <div class="fl w300">
  96. <p class="p0 m0 lh22 clearfix">
  97. <span class="fl">{{plan.planTypeName}}</span>
  98. <span class="fr c-999">{{plan.time}}</span>
  99. </p>
  100. <div class="clearfix">
  101. <p class="fl w-100-78 bgc-c1c1c1 lh22 b-r-11 c-position-r c-t-center">
  102. <span class="c-position-a bgc-orange lh22 b-r-11 c-t-center c-fff" :style="{width: setPercent(plan), left: 0}"></span>
  103. <span class="c-position-r w-100 c-t-center">{{setPercent(plan)}}</span>
  104. </p>
  105. <span class="fr w60 c-999 lh22">{{plan.allFinishCount}}/{{plan.allCount}}</span>
  106. </div>
  107. </div>
  108. <div class="fr c-007cd9 lh40">{{plan.statusName}}</div>
  109. </li>
  110. <li class="ptb10 c-t-center" v-if="!recoverPatInfo.planList || !recoverPatInfo.planList.length">暂无相关计划</li>
  111. </ul>
  112. </div>
  113. </div>
  114. <h4 class="m0 pl15 pr5 lh40 c-border-tb clearfix c-position-r"><em class="c-position-a set-blue-span"></em>康复相关记录<span class="fr w80 c-333 c-f12 c-t-center">已完成:{{finishData.planDetailFinish}}</span></h4>
  115. <div style="overflow: hidden; height: calc(100% - 323px);">
  116. <ul class="p0 m0 c-h100 c-999" style="overflow: auto;">
  117. <li class="clearfix plr10 cur-pit record-li" v-for="(plan, index) in planDetailList" :class="{'bgc-dff5fc c-12b7f5':plan.istaDay}" @click="lookProject(plan)">
  118. <div class="fl w80 ptb10 c-t-right">
  119. <p class="p0 m0 lh18">{{plan.executeTime}}</p>
  120. </div>
  121. <div class="fl set-dianxian plr20 ptb10 clerfix">
  122. <span class="fl set-taday mt8 c-t-center c-fff" v-if="plan.istaDay">今</span>
  123. <span class="fl mlr5 mt13 set-row bgc-e1e1e1" v-else></span>
  124. </div>
  125. <div class="fl ptb10 w-100-220">
  126. <p class="p0 m0 lh18">{{plan.title}}</p>
  127. <p class="p0 m0 lh18 txt-ells">{{plan.content}}</p>
  128. </div>
  129. <div class="fr ptb10 w60 c-t-center">
  130. <p class="p0 m0 lh18">已完成</p>
  131. <p class="p0 m0 lh18">查看</p>
  132. </div>
  133. </li>
  134. <li class="plr20" v-if="isFinishMore">
  135. <div class="c-border lh40 b-r-3 c-t-center cur-pit" @click="addEventPage()">点击查看更早时间</div>
  136. </li>
  137. <li class="ptb10 c-t-center c-333" v-if="!planDetailList.length">暂无相关记录</li>
  138. </ul>
  139. </div>
  140. </div>
  141. <div class="fr w300 c-h100 c-border-l">
  142. <div class="plr5 c-h100">
  143. <h4 class="m0 pl15 pr5 lh40 c-border-b clearfix c-position-r"><em class="c-position-a set-blue-span"></em>就诊记录</h4>
  144. <div class="lh30 c-border-b c-t-center clearfix">
  145. <span class="fl w96 cur-pit" :class="{'active':eventType == 1}" @click="selectType(1)">门诊</span>
  146. <span class="fl w96 cur-pit c-border-l" :class="{'active':eventType == 2}" @click="selectType(2)">住院</span>
  147. <span class="fl w96 cur-pit c-border-l" :class="{'active':eventType == 3}" @click="selectType(3)">体检</span>
  148. </div>
  149. <div style="overflow: hidden; height: calc(100% - 72px);">
  150. <ul class="c-h100 p0 m0" style="overflow: auto;">
  151. <li class="clearfix" v-for="(record, index) in seeRecord" :key="index">
  152. <div class="fl set-dianxian h73 plr10 pt20 clerfix">
  153. <span class="fl mlr5 set-row bgc-red" v-if="record.eventType == 2"></span>
  154. <span class="fl mlr5 set-row bgc-green" v-if="record.eventType == 3"></span>
  155. <span class="fl mlr5 set-row bgc-orange" v-if="record.eventType == 1"></span>
  156. </div>
  157. <div class="fl w-100-60 pt15">
  158. <div class=" c-border b-r-3">
  159. <p class="m0 p0 plr5 c-fff bgc-red lh22 clearfix" v-if="record.eventType == 2">住院<span class="fr">{{record.eventDate}}</span></p>
  160. <p class="m0 p0 plr5 c-fff bgc-green lh22 clearfix" v-if="record.eventType == 3">体检<span class="fr">{{record.eventDate}}</span></p>
  161. <p class="m0 p0 plr5 c-fff bgc-orange lh22 clearfix" v-if="record.eventType == 1">门诊<span class="fr">{{record.eventDate}}</span></p>
  162. <p class="m0 p0 plr5 pt5 lh22">{{record.dianosis}}</p>
  163. <p class="m0 p0 pr5 pb5 pl20 set-hospital">{{record.orgName}}</p>
  164. </div>
  165. </div>
  166. </li>
  167. <li class="c-t-center c-12b7f5" v-if="hasMoreRecord">查看更多</li>
  168. <li class="c-t-center ptb10" v-if="!seeRecord.length">无就诊记录</li>
  169. </ul>
  170. </div>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
  178. <script src="../../../js/jquery-2.2.4.js"></script>
  179. <script src="../../../plugins/layer/layer.min.js"></script>
  180. <script src="../../../plugins/toastr/toastr.min.js"></script>
  181. <script src="../../../js/bootstrap.min.js"></script>
  182. <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
  183. <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
  184. <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
  185. <script src="../../../api/http-request.js" type="text/javascript"></script>
  186. <script src="../../../api/recover_api.js" type="text/javascript"></script>
  187. <script type="text/javascript">
  188. var doctorType = (JSON.parse(window.localStorage.getItem('wlyyAgent'))||{}).doctorType
  189. var httpData=GetRequest()
  190. function showSuccessMessage(msg) {
  191. layer.msg(msg, {
  192. icon: 1
  193. })
  194. }
  195. function showErrorMessage(msg) {
  196. layer.msg(msg, {
  197. icon: 5
  198. })
  199. }
  200. function showWarningMessage(msg) {
  201. layer.msg(msg, {
  202. icon: 2
  203. })
  204. }
  205. function showInfoMessage(msg) {
  206. layer.msg(msg, {
  207. icon: 6
  208. })
  209. }
  210. var nowDate = new Date().format("yyyy/MM/dd")
  211. recoverVue = new Vue({
  212. el: "#app",
  213. data: {
  214. doctorType: doctorType,
  215. isMobile: true,
  216. recoverPatInfo: null,
  217. finishData: null,
  218. seeRecord: [],
  219. planDetailList: [],
  220. isFinishMore: false,
  221. page: 1,
  222. eventPage: 1,
  223. eventType: 1,
  224. hasMoreRecord: null
  225. },
  226. mounted: function() {
  227. this.patientRehabilitationDetail()
  228. this.recentPlanDetailRecord()
  229. this.archivesEvent()
  230. },
  231. methods: {
  232. changeStatu: function() {
  233. this.isMobile = false
  234. },
  235. gotoNewplan: function() {
  236. location.href = "new_recover.html?patient=" + httpData.patientCode
  237. },
  238. jumpPlan: function(plan) {
  239. location.href = "../../rehabilitation/html/rehabilitation_management.html?planId=" + plan.planId
  240. },
  241. lookProject: function(obj) {
  242. layer.open({
  243. type: 2,
  244. area: ['600px', '500px'],
  245. shade: 0.5,
  246. title: '服务项目内容',
  247. closeBtn: 1,
  248. shift: 5,
  249. shadeClose: false, //点击遮罩关闭层
  250. content: "project-detail.html?planId=" + obj.id
  251. });
  252. },
  253. patientRehabilitationDetail: function() {
  254. var vm = this,
  255. loadding = layer.load(0, {shade: false}),
  256. params = {
  257. patientCode: httpData.patientCode || "e040dd6814b648ceb3ba8d8a04f9f22c"
  258. }
  259. recoverAPI.patientRehabilitationDetail(params).then(function(res) {
  260. layer.close(loadding)
  261. if(res.status == 200) {
  262. vm.recoverPatInfo = res.data
  263. } else {
  264. showErrorMessage(res.msg);
  265. }
  266. })
  267. },
  268. recentPlanDetailRecord: function() {
  269. var vm = this,
  270. loadding = layer.load(0, {shade: false}),
  271. params = {
  272. patientCode: httpData.patientCode || "e040dd6814b648ceb3ba8d8a04f9f22c",
  273. page: vm.eventPage,
  274. pageSize: 10
  275. }
  276. recoverAPI.recentPlanDetailRecord(params).then(function(res) {
  277. layer.close(loadding)
  278. if(res.status == 200) {
  279. vm.finishData = res.data
  280. vm.planDetailList = vm.planDetailList.concat(vm.finishData.planDetailList)
  281. vm.planDetailList = $.each(vm.planDetailList, function(index, o) {
  282. if(nowDate == o.executeTime.split(" ")[0]) {
  283. o.istaDay = true
  284. }
  285. return o
  286. });
  287. if(vm.finishData.planDetailList.length >= 10) {
  288. vm.isFinishMore = true
  289. } else {
  290. vm.isFinishMore = false
  291. }
  292. } else {
  293. showErrorMessage(res.msg);
  294. }
  295. })
  296. },
  297. selectType: function(type) {
  298. this.eventType = type
  299. this.seeRecord = []
  300. this.page = 1
  301. this.archivesEvent()
  302. },
  303. archivesEvent: function() {
  304. var vm = this,
  305. loadding = layer.load(0, {shade: false}),
  306. params = {
  307. patient: httpData.patientCode || "e040dd6814b648ceb3ba8d8a04f9f22c",
  308. type: vm.eventType,
  309. page: vm.page,
  310. pageSize: 20
  311. }
  312. recoverAPI.archivesEvent(params).then(function(res) {
  313. layer.close(loadding)
  314. if(res.status == 200) {
  315. this.hasMoreRecord = res.data.length == 20 ? true : false
  316. vm.seeRecord = vm.seeRecord.concat(res.data)
  317. } else {
  318. showErrorMessage(res.msg);
  319. }
  320. })
  321. },
  322. setPatImg: function(src, doc) {
  323. if(!src) {
  324. if(doc) {
  325. return "../../../images/d-default.png"
  326. } else {
  327. return "../../../images/p-female.png"
  328. }
  329. } else {
  330. var str = httpRequest.getImgUrl(src);
  331. return str
  332. }
  333. },
  334. addEventPage: function() {
  335. this.eventPage++;
  336. this.recentPlanDetailRecord()
  337. },
  338. addPage: function() {
  339. this.page++;
  340. this.archivesEvent()
  341. },
  342. setPercent: function(plan) {
  343. return Math.floor(plan.allFinishCount / plan.allCount * 100) + "%"
  344. }
  345. }
  346. })
  347. </script>
  348. </body>
  349. </html>