new_recover.html 55 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>新建计划</title>
  6. <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css" />
  7. <link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
  8. <link rel="stylesheet" type="text/css" href="../../../css/cross.ui.css" />
  9. <link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
  10. <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
  11. <link rel="stylesheet" type="text/css" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" />
  12. <link rel="stylesheet" type="text/css" href="../css/new_recover.css" />
  13. <script src="../../../js/esModule.js" type="text/javascript"></script>
  14. <style>
  15. .c-row{
  16. width: 100%;
  17. }
  18. </style>
  19. </head>
  20. <body class="m0">
  21. <div id="app" v-cloak>
  22. <div class="c-position-a" style="top: -999px; left: -999px;" v-show="isTest"></div>
  23. <div class="c-h100 clearfix">
  24. <div class="fl c-h100 w400 person_info c-border-r" style="overflow: hidden;">
  25. <div v-if="!patiInfo" class="c-h100" style="overflow: auto;">
  26. <div class="c-border-b c-t-center pt20">
  27. <div class="set-photo imgw80">
  28. <img src="../../../images/p-female.png" alt="居民头像" />
  29. </div>
  30. <p class="ptb10">患者名</p>
  31. </div>
  32. <div>
  33. <div class="no-result c-t-center pt20">
  34. <img src="../images/wushuju01_img.png" alt="无数据" />
  35. <p class="c-999">暂无相关信息</p>
  36. <div class="pt30">
  37. <span class="c-fff btn cur-pit plr10 ptb5 bgc-12b7f5 b-r-3" @click="selectPatient()">同步信息</span>
  38. </div>
  39. </div>
  40. </div>
  41. </div>
  42. <div v-else class="c-h100 plr10" style="overflow: auto;">
  43. <div class="c-t-center pt20 c-position-r">
  44. <div class="set-photo imgw80">
  45. <img :src="setPatImg(patiInfo.photo)" alt="居民头像" />
  46. </div>
  47. <h3 class="ptb10 m0 c-f16">{{patiInfo.name}}</h3>
  48. <span v-if="!isEditConfig" class="c-position-a set-qiehuan cur-pit" @click="selectPatient()"></span>
  49. </div>
  50. <h4 class="h30 m0 c-f14 c-border-b f-w500">基本信息</h4>
  51. <ul class="c-333 m0 p0 pb20">
  52. <li class="pt10"><span class="c-999">性&emsp;&emsp;别:</span>{{patiInfo.sex == 1 ? "男" : "女"}}</li>
  53. <li class="pt10"><span class="c-999">年&emsp;&emsp;龄:</span>{{patiInfo.age}}岁</li>
  54. <li class="pt10"><span class="c-999">身份证号:</span>{{patiInfo.idcard}}</li>
  55. <li class="pt10"><span class="c-999">地&emsp;&emsp;址:</span>{{patiInfo.address}}</li>
  56. </ul>
  57. <h4 class="h30 m0 c-f14 c-border-b f-w500">家庭医生</h4>
  58. <ul class="c-333 m0 p0 pb20">
  59. <li class="pt10"><span class="c-999">签约社区:</span>{{patiInfo.ssHospitalName || patiInfo.jtHospitalName}}</li>
  60. <li class="pt10"><span class="c-999">全科医生:</span>{{patiInfo.ssDoctorName || patiInfo.jtDoctorName}}</li>
  61. <li class="pt10"><span class="c-999">健&ensp;管&ensp;师:</span>{{patiInfo.ssDoctorHealthName || patiInfo.jtDoctorHealthName}}</li>
  62. </ul>
  63. <h4 class="h30 m0 c-f14 c-border-b f-w500" style="overflow: hidden;">
  64. 康复建议
  65. <span v-if="!isEditConfig" class="click-text" @click="editAdviceTextarea">
  66. {{isEdit == true? '编辑':'保存'}}
  67. </span>
  68. </h4>
  69. <textarea v-bind:disabled="isEdit||isEditConfig" v-model="adviceContent" class="m0 p10 c-333 mt10" :class="{'bg-f5f5fa':isEdit, 'bd-red':showAdviceContentTip}" style="width: 100%;height: 200px; width: 100%; border:1px solid #e1e1e1; resize:none;" placeholder="请输入您的康复建议..."></textarea>
  70. <h4 class="h30 m0 c-f14 c-border-b f-w500" style="overflow: hidden;">
  71. 住院病历
  72. </h4>
  73. <div v-if="medicalRecordsList.length>0" v-for="(o, i) in medicalRecordsList" class="mt10">
  74. <div class="flex vc c-f14 c-border plr10 ptb5 link-control" style="cursor: pointer;" @click="editMedicalRecords(o, i)" :class="{'bd-12b7f5': curMedicalRecordsIndex==i}">
  75. <span class="c-666 mr15">
  76. {{formatter(o.admissionTime)}}
  77. </span>
  78. <div class="flex1 c-12b7f5 ellipsis-1">
  79. {{o.hospitalName}}
  80. </div>
  81. </div>
  82. </div>
  83. <button v-if="!isEditConfig&&medicalRecordsList.length==0" type="button" class="btn btn-default fr" style="width: 100%; background: #12B7F5; border-radius: 0px ;border: 0px ;padding: 10px;margin-top: 15px;" @click="addMedicalRecords()">添加住院病历</button>
  84. </div>
  85. </div>
  86. <div class="fl c-h100 w-100-400">
  87. <div class="c-h100 plr5" v-if="!isPlan&&!isEditConfig">
  88. <h4 class="m0 pl15 lh40 c-border-b f-w500 c-position-r"><span class="c-position-a set-blue-span"></span>配置康复计划</h4>
  89. <div style="overflow: hidden; height: calc(100% - 41px);">
  90. <div style="overflow: auto; height: 100%;">
  91. <div class="un-select c-t-center pt45" v-if="!patiInfo">
  92. <img src="../images/wushuju_img.png" alt="" />
  93. <p class="c-999">您还没有选择居民</p>
  94. </div>
  95. <ul class="muban_con lh40 c-t-center pt30" v-else>
  96. <li class="mb20" v-for="(muban, index) in mubanList" :key="index" @click="addMuban(muban.id)">{{muban.title}}</li>
  97. <li class="addmuban-btn c-fff" @click="addMuban()">新增模板</li>
  98. </ul>
  99. </div>
  100. </div>
  101. </div>
  102. <div class="clearfix c-h100" v-else>
  103. <div class="fl c-h100" :class="{'c-row':isEditConfig, 'w-100-400':!isEditConfig}">
  104. <div class="plr5 c-h100-79">
  105. <h4 class="m0 pl15 lh40 c-border-b set-label f-w500 c-position-r">
  106. <em class="c-position-a set-blue-span"></em>
  107. 配置康复计划
  108. <!-- <span v-for="(label, index) in spanLabel" :key="index" class="fr ml20 pl20 c-f14 c-999 cur-pit" :class="{'active': index == labelIndex}" @click="setLabelIndex(index, label)">{{label.labelName}}</span> -->
  109. </h4>
  110. <div class="c-h100-41" style="overflow: hidden;">
  111. <ul class="c-h100 p0 m0" style="overflow: auto;">
  112. <li class="mt10 plr10 ptb5 c-border b-r-3 clearfix" v-for="(detail, index) in templateDetail" :key="index">
  113. <div v-if="detail.code=='2'||detail.code=='3'">
  114. <div class="fl w-100-78 c-333">
  115. <p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"'>{{detail.name}}</p>
  116. <div class="clearfix">
  117. <p class="w400 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{docInfo.hospitalName}}</p>
  118. <p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>0.00</p>
  119. </div>
  120. <div class="m0 p0 clearfix">
  121. <div class="w400 m0 mb10 p0 fl clearfix">
  122. <span class="fl c-999">选择频次:</span>
  123. <div class="fl c-position-r w100">
  124. 不限频次
  125. </div>
  126. </div>
  127. </div>
  128. <div class="clearfix">
  129. <span class="fl c-999">备&emsp;&emsp;注:</span>
  130. <div class="fl maxw600 plr15 ptb10 c-border set-textarea">
  131. <textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
  132. </div>
  133. </div>
  134. </div>
  135. <div class='fr w60 c-t-right clearfix'>
  136. <div class="clearfix mb10"><span class="fr sub-tap cur-pit" @click="subTemplate(index, detail)"></span></div>
  137. </div>
  138. </div>
  139. <div v-else>
  140. <div class="fl w-100-78 c-333">
  141. <p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"'>{{detail.name}}</p>
  142. <div class="clearfix">
  143. <p class="w400 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.executeHospitalName}}</p>
  144. <p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>0.00</p>
  145. </div>
  146. <div class="m0 p0 clearfix">
  147. <div class="w400 m0 mb10 p0 fl clearfix">
  148. <span class="fl c-999">选择频次:</span>
  149. <div class="fl c-position-r custom-dropdown">
  150. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectFre}" @click="changeSelectFre(index, detail.selectFre)">{{detail.frequencyName}}</p>
  151. <ul class="m0 p0 c-border-b c-border-l c-border-r c-position-a doc_list" v-if="detail.selectFre" style="overflow-y: auto; height: 100px;">
  152. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.frequencyList" :key="indDoc" @click="selectFre(index, list)">{{list.name}}</li>
  153. </ul>
  154. </div>
  155. </div>
  156. <div v-if="detail.frequencyName!='不限频次'" class="m0 mb10 p0 fl clearfix">
  157. <span class="fl c-999">执行人员:</span>
  158. <div class="fl c-position-r custom-dropdown">
  159. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectDoc}" @click="changeSelectDoc(index, detail.selectDoc)">{{detail.executeDoctorName}}</p>
  160. <ul class="m0 p0 c-border-b c-border-l c-border-r c-position-a doc_list" v-if="detail.selectDoc" style="overflow-y: auto; max-height: 100px;">
  161. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.docList" :key="indDoc" @click="selectLi(index, list)">{{list.name}}</li>
  162. </ul>
  163. </div>
  164. </div>
  165. </div>
  166. <div v-if="detail.frequencyName!='不限频次'" class="pl65 mb10 set-label" v-if="detail.frequency.unit == 'H'">
  167. <span :class="detail.timeType == 1 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 1)">白天</span>
  168. <span :class="detail.timeType == 2 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 2)">晚上</span>
  169. <span :class="detail.timeType == 0 ? 'pl20 cur-pit active' : 'pl20 cur-pit'" @click="selectTimeType(index, 0)">全天</span>
  170. </div>
  171. <div v-if="detail.frequencyName!='不限频次'">
  172. <div class="clearfix">
  173. <span class="fl c-999 lh24">起始时间:</span>
  174. <div class="fl maxw600 mb10">
  175. <el-date-picker v-model="detail.value14[0]" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 0)">
  176. </el-date-picker>
  177. <span>—</span>
  178. <el-date-picker v-model="detail.value14[1]" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptions1" @input="getRandgeDate(index, 1)">
  179. </el-date-picker>
  180. </div>
  181. </el-date-picker>
  182. <span class="fl lh24 mlr10 c-999">或</span>
  183. <div class="fl maxw600 mb10">
  184. <el-date-picker type="dates" :picker-options="pickerOptions1" v-model="detail.value15" value-format="yyyy-MM-dd" @input="getSelectDate(index)" placeholder="选择一个或者多个日期"></el-date-picker>
  185. </div>
  186. </div>
  187. </div>
  188. <div class="clearfix">
  189. <span class="fl c-999">备&emsp;&emsp;注:</span>
  190. <div class="fl maxw600 plr15 ptb10 c-border set-textarea">
  191. <textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
  192. </div>
  193. </div>
  194. </div>
  195. <div class='fr w60 c-t-right clearfix'>
  196. <p v-if="detail.frequencyCode" class="m0 p0 mb10">×{{mul(detail.executeTime.length, detail.frequency.count)}}</p>
  197. <div v-if="detail.frequencyCode" class="clearfix mb10"><span class="fr sub-tap cur-pit" @click="subTemplate(index, detail)"></span></div>
  198. <div v-if="detail.frequencyCode" class="clearfix"><span class="fr fuzhi-tap cur-pit" @click="copyTemplate(index, detail)"></span></div>
  199. </div>
  200. </div>
  201. </li>
  202. <li class="pt100 c-t-center" v-if="!templateDetail.length">
  203. <span class="set-right-arraw pr20">请在右侧“服务项”列表中选择</span>
  204. </li>
  205. </ul>
  206. </div>
  207. </div>
  208. <div>
  209. <p class="m0 p0 pl20 ptb10 c-border-b set-label">支付方式:<span class="ml10 pl20 active">按服务支付</span><em class="c-red ml20">(按选择支付方式完成收费)</em></p>
  210. <div class="pl20 lh40">总费用:
  211. <span class="c-red c-f16">¥{{allFee}}</span>
  212. <span v-if="!isEditConfig" class="fr lh30 cur-pit plr15 c-t-center c-fff" :class="havePlan ? 'bgc-12b7f5' : 'bgc-d7dce6'" @click="createRehabilitationPlan()">生成计划</span>
  213. <span v-else class="fr lh30 cur-pit plr15 c-t-center c-fff" :class="havePlan ? 'bgc-12b7f5' : 'bgc-d7dce6'" @click="updateRehabilitationPlan()">完成编辑</span>
  214. <span class="fr lh30 cur-pit plr15 c-t-center bgc-green c-fff" @click="canclePlan()">取消</span>
  215. </div>
  216. </div>
  217. </div>
  218. <div v-if="!isEditConfig" class="fr w400 c-h100 c-border-l">
  219. <div class="plr5 c-h100">
  220. <h4 class="m0 pl15 lh40 c-border-b c-position-r f-w500">
  221. <em class="c-position-a set-blue-span"></em>添加其他项目
  222. </h4>
  223. <div class="clearfix mtb10 c-border">
  224. <input class="fl search-input plr10" type="text" v-model="searchKey" placeholder="输入项目名称" />
  225. <span class="fr search-btn" @click="searchProject()"></span>
  226. </div>
  227. <div class="c-h100-99" style="overflow: hidden;">
  228. <div class="c-h100 p0 m0" style="overflow: auto;">
  229. <ul class="p0 m0 pr10">
  230. <li v-for="(o, i) in serviceItems" :key="i" class="clearfix ptb5">
  231. <!-- @click="selectProject(i, o)" -->
  232. <div class="fl c-border w-100-66 cur-pit border-c12b7f5 ptb5 plr5 b-r-3 clearfix" :class="o.isSelect ? 'bgc-12b7f5' : 'bgc-fff'">
  233. <p class="fl w-100-78 txt-ells lh18" :class="o.isSelect ? 'c-fff' : 'c-666'">{{o.name}}</p>
  234. </div>
  235. <span class="fr h30 btn cur-pit plr10 bgc-12b7f5 c-fff b-r-3" style="padding: 0 10px;" v-if="!o.isSelect" @click="addProject(i, o)">添加</span>
  236. <span class="fr h30 btn plr10 bgc-e1e1e1 c-fff b-r-3" style="padding: 0 10px;" v-else>添加</span>
  237. </li>
  238. </ul>
  239. </div>
  240. </div>
  241. <!-- <div class="c-h100-99" style="overflow: hidden;">
  242. <ul class="c-h100 p0 m0" style="overflow: auto;">
  243. <li v-for="(project1, index) in projectList" :key="index">
  244. <h4 class="set-arrow c-f14 h30 p0 m0 pl20 f-w500 cur-pit" :class="{'active': index == proIndex1}" @click="selectPro(1, index)">{{project1.itemType == 1 ? '诊疗服务' : '健康服务'}}</h4>
  245. <ul class="c-h100 p0 m0 pl10" v-if="index == proIndex1">
  246. <li v-for="(project2, index2) in project1.item" :key="index2">
  247. <p class="set-arrow h30 c-f14 pl20 m0 c-333 cur-pit" :class="{'active': index2 == proIndex2}" @click="selectPro(2, index2)">{{project2.itemName}}</p>
  248. <ul class="p0 m0 pr10" v-if="index2 == proIndex2">
  249. <li v-for="(project3, index3) in project2.hospitalServiceItems" :key="index3" class="clearfix ptb5">
  250. <div class="fl c-border w-100-66 cur-pit border-c12b7f5 ptb5 plr5 b-r-3 clearfix" :class="project3.isSelect ? 'bgc-12b7f5' : 'bgc-fff'" @click="selectProject(index, index2, index3, project3)">
  251. <p class="fl w-100-78 txt-ells lh18" :class="project3.isSelect ? 'c-fff' : 'c-666'">{{project3.specialistServiceItemDO.title}}</p>
  252. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-4dcd70 plr5 c-fff" v-if="project3.flag == 1 || project3.flag == 3">社区</span>
  253. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-55cefc plr5 c-fff" v-if="project3.flag == 2 || project3.flag == 3">医院</span>
  254. </div>
  255. <span class="fr h30 btn cur-pit plr10 bgc-12b7f5 c-fff b-r-3" style="padding: 0 10px;" v-if="!project3.isSelect" @click="addProject(index, index2, index3, project3)">添加</span>
  256. <span class="fr h30 btn plr10 bgc-e1e1e1 c-fff b-r-3" style="padding: 0 10px;" v-else>添加</span>
  257. </li>
  258. </ul>
  259. </li>
  260. </ul>
  261. </li>
  262. </ul>
  263. </div> -->
  264. </div>
  265. </div>
  266. </div>
  267. </div>
  268. </div>
  269. </div>
  270. <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
  271. <script src="../../../js/jquery-2.2.4.js"></script>
  272. <script src="../../../plugins/layer/layer.min.js"></script>
  273. <script src="../../../plugins/toastr/toastr.min.js"></script>
  274. <script src="../../../js/bootstrap.min.js"></script>
  275. <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
  276. <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
  277. <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
  278. <script src="https://unpkg.com/element-ui/lib/index.js" type="text/javascript" charset="utf-8"></script>
  279. <script src="../../../api/http-request.js" type="text/javascript"></script>
  280. <script src="../../../api/recover_api.js" type="text/javascript"></script>
  281. <script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
  282. <script type="text/javascript">
  283. var doctorType = (JSON.parse(window.localStorage.getItem('wlyyAgent'))||{}).doctorType,
  284. docInfo = JSON.parse(window.localStorage.getItem('wlyyAgent'))
  285. console.log('docInfodocInfodocInfodocInfo', docInfo)
  286. var httpData=GetRequest()
  287. function showSuccessMessage(msg) {
  288. layer.msg(msg, {
  289. icon: 1
  290. })
  291. }
  292. function showErrorMessage(msg) {
  293. layer.msg(msg, {
  294. icon: 5
  295. })
  296. }
  297. function showWarningMessage(msg) {
  298. layer.msg(msg, {
  299. icon: 2
  300. })
  301. }
  302. function showInfoMessage(msg) {
  303. layer.msg(msg, {
  304. icon: 6
  305. })
  306. }
  307. top.recoverVue = new Vue({
  308. el: "#app",
  309. data: {
  310. pickerOptions1: {
  311. disabledDate: function(time) {
  312. return time.getTime() < Date.now() - 8.64e7;
  313. }
  314. },
  315. surefont: '添加',
  316. isTest: false,
  317. pati: null,
  318. isPlan: false,
  319. proIndex1: null,
  320. proIndex2: null,
  321. patiInfo: null,
  322. diseaseObj: null, // 疾病
  323. mubanList: [],
  324. templateDetail: [],
  325. templateResult: [],
  326. allFee: 0,
  327. projectList: null,
  328. serviceItems: null, // 服务项列表
  329. labelIndex: 2,
  330. labelCode: 1,
  331. spanLabel: [{
  332. labelName: "(转)家庭病床",
  333. code: 3
  334. }, {
  335. labelName: "(转)社区医院",
  336. code: 2
  337. }, {
  338. labelName: "康复计划",
  339. code: 1
  340. }],
  341. jDlist: [], //家签医生
  342. zDlist: [], //专科医生
  343. selectProjectDetail: null,
  344. searchKey: null,
  345. havePlan: false,
  346. frequencyList: [],
  347. frequencyListObj: {},
  348. diagnosisInfo:"",
  349. indexOrder:0,
  350. profileRes:[],
  351. nodata:false,
  352. subsidiaryInfo:{},
  353. edit:true,
  354. selectDiseaseIndex:'',
  355. isPlanId :'',
  356. selectPatientIndex: '',
  357. adviceContent: '', //康复建议
  358. isEdit: false,
  359. medicalRecordsList: [],
  360. docInfo: JSON.parse(window.localStorage.getItem('wlyyAgent')),
  361. showAdviceContentTip: false,
  362. curMedicalRecordsIndex: -1,
  363. diseaseCodeArr: [],
  364. diseaseNameArr: [],
  365. teamCode: httpData['teamCode'],
  366. isEditConfig: httpData['isEditConfig']||false,
  367. planId: httpData['planId'],
  368. planInfo: {},
  369. planDetailId: httpData['planDetailId'],
  370. service:{
  371. relationRecordImg:{},
  372. messageList:{},
  373. },
  374. patient: httpData.patient || undefined
  375. },
  376. mounted: function() {
  377. this.selectFrequencys()
  378. if(this.patient) {
  379. this.isPlan = false
  380. this.allFee = 0
  381. this.templateDetail = []
  382. this.pati = {patient: this.patient}
  383. this.getPatientInfo()
  384. }
  385. if(this.teamCode){
  386. this.findTemplateList()
  387. }
  388. if(this.planId){
  389. this.planSchedule()
  390. }
  391. },
  392. watch: {
  393. adviceContent: function(){
  394. var vm = this
  395. if(vm.adviceContent.trim().length>0){
  396. vm.showAdviceContentTip = false
  397. } else {
  398. vm.showAdviceContentTip = true
  399. }
  400. },
  401. templateDetail: function(){
  402. if(this.templateDetail.length==0){
  403. this.havePlan = false
  404. }
  405. }
  406. },
  407. methods: {
  408. getServiceItem: function() {
  409. var vm = this;
  410. var loadding = top.layer.load(0, {
  411. shade: false
  412. }); //0代表加载的风格,支持0-2
  413. rehaAPI.serviceItem({
  414. planDetailId: vm.planDetailId
  415. }).then(function(res) {
  416. top.layer.close(loadding);
  417. if(res.status == 200) {
  418. vm.service = res.data;
  419. var o1 = {}
  420. o1.isSelect = true
  421. o1.selectDoc = false
  422. o1.selectDate = 1
  423. o1.value14 = []
  424. o1.value15 = null
  425. o1.executeTime = []
  426. // 默认频次
  427. o1.selectFre = false
  428. if(vm.service.frequencyCode!=''){
  429. o1.frequencyCode = vm.service.frequencyCode
  430. o1.frequencyName = vm.frequencyListObj[vm.service.frequencyCode]
  431. o1.frequency = vm.frequencyList[1]
  432. } else {
  433. o1.frequencyCode = ''
  434. o1.frequencyName = '不限频次'
  435. o1.frequency = vm.frequencyList[0]
  436. }
  437. o1.frequencyList = vm.frequencyList
  438. o1.timeType = 0
  439. o1.remark = vm.service.remark
  440. o1.executeDoctor = vm.service.executeDoctorCode
  441. o1.executeDoctorName = vm.service.executeDoctorName
  442. o1.executeHospitalName = vm.service.hospitalName
  443. o1.docList = vm.jDlist
  444. o1.code = vm.service.type
  445. o1.name = vm.service.title
  446. vm.templateDetail.push(o1)
  447. vm.judgeHavePlan()
  448. } else {
  449. showErrorMessage(res.msg)
  450. }
  451. })
  452. },
  453. //获取计划表
  454. planSchedule:function(){
  455. var vm = this;
  456. var params = {
  457. planId: this.planId,
  458. patientCode: this.patient
  459. };
  460. rehaAPI.planSchedule(params).then(function(res){
  461. if(res.status == 200){
  462. vm.planInfo = res.data;
  463. vm.adviceContent = vm.planInfo.adviceContent
  464. vm.selectByMedicalCode(res.data.medicalRecordsCode)
  465. }else{
  466. showErrorMessage(res.msg)
  467. }
  468. })
  469. },
  470. // 获取住院病历列表
  471. selectByMedicalCode: function(medicalRecordsCode){
  472. var vm = this;
  473. var params = {
  474. medical: medicalRecordsCode
  475. };
  476. rehaAPI.selectByMedicalCode(params).then(function(res){
  477. if(res.status==200){
  478. vm.medicalRecordsList = res.data
  479. }else {
  480. showErrorMessage(res.msg);
  481. }
  482. })
  483. },
  484. // 添加住院病历
  485. addMedicalRecords: function(){
  486. var vm = this
  487. this.selectPatientIndex = layer.open({
  488. type: 2,
  489. area: ['480px', '650px'],
  490. shade: 0.5,
  491. title: '添加住院病历',
  492. closeBtn: 1,
  493. shift: 5,
  494. shadeClose: false, //点击遮罩关闭层
  495. content: "medical-records.html?patient="+vm.pati.patient+'&patientName='+vm.pati.patientName
  496. });
  497. },
  498. // 编辑住院病历
  499. editMedicalRecords: function(o, i){
  500. var vm = this
  501. vm.curMedicalRecordsIndex = i
  502. window.localStorage.setItem('curMedicalRecords', JSON.stringify(o))
  503. this.selectPatientIndex = layer.open({
  504. type: 2,
  505. area: ['480px', '520px'],
  506. shade: 0.5,
  507. title: '添加住院病历',
  508. closeBtn: 1,
  509. shift: 5,
  510. shadeClose: false, //点击遮罩关闭层
  511. content: "medical-records.html?patient="+vm.pati.patient+'&patientName='+vm.pati.patientName+'&medicalRecordsId='+o.id
  512. });
  513. },
  514. //关闭添加住院病历弹框
  515. closeMedicalRecords: function(){
  516. layer.close(this.selectPatientIndex)
  517. },
  518. completeMedicalRecords: function(type, data){
  519. if(type=='edit'){
  520. this.$set(this.medicalRecordsList, this.curMedicalRecordsIndex, data)
  521. } else {
  522. this.medicalRecordsList.unshift(data)
  523. }
  524. layer.close(this.selectPatientIndex)
  525. },
  526. //获取诊疗信息
  527. diagnosisQuery:function(){
  528. var vm = this;
  529. loadding = layer.load(0, {shade: false});
  530. params = {
  531. patient: this.pati.patient,
  532. // patient:"3b26a7905e034c36a5ba8e65bdc0dc7f",
  533. type: '2',
  534. page: 1,
  535. pageSize: 50,
  536. lastTime: ''
  537. }
  538. recoverAPI.diagnosisQuery(params).then(function(res){
  539. layer.close(loadding)
  540. if (res.status == 200) {
  541. if(res.data.length == 0){
  542. vm.diagnosisInfo = [{orgName:'无'}]
  543. console.log(vm.diagnosisInfo)
  544. vm.nodata = true
  545. }else{
  546. vm.diagnosisInfo = res.data;
  547. }
  548. vm.orderHospital(0)
  549. }else{
  550. vm.diagnosisInfo = [{orgName:'无'}]
  551. vm.orderHospital(0)
  552. showErrorMessage(res.msg);
  553. }
  554. })
  555. },
  556. //按照医院查询诊疗信息
  557. orderHospital:function(index){
  558. var vm = this;
  559. vm.indexOrder = index
  560. loadding = layer.load(0, {shade: false});
  561. var sec_params = {
  562. patient: vm.pati.patient,
  563. event:vm.diagnosisInfo[index].id || "",
  564. catalog:'0213',
  565. serial:"1"
  566. }
  567. recoverAPI.diagnosisSubsidiary(sec_params).then(function(res){
  568. layer.close(loadding)
  569. vm.subsidiaryInfo = vm.selectXmlDom(res,'0213')
  570. console.log(vm.subsidiaryInfo)
  571. })
  572. },
  573. //获取xml数据
  574. selectXmlDom: function (profileRes,tempalteCode) {
  575. var vm = this;
  576. if(profileRes.status == 200){
  577. var $dom = $(profileRes.data.replace(/<\?xml .*\?>/,'')),
  578. version = $dom.find(">version").length?$dom.find(">version").attr("code"):$dom.attr('version');
  579. $.trim(version) || (function () {
  580. version = $dom.find(">ClinicalDocument").length? '2.0.0.1' : '';
  581. })();
  582. if($.trim(version)) {
  583. var verNum = version.split('.')[0];
  584. var jsonData = {}
  585. // xml 转 json
  586. if((typeof profileRes.data=='string')&&profileRes.data.constructor==String) {
  587. // 去除携带的脚本内容
  588. profileRes.data = profileRes.data.replace(/<script[^>]*?>[\s\S]*?<\/script>/ig,'');
  589. // console.log(profileRes.data.replace(/<\?xml .*\?>/,''))
  590. jsonData = vm.handleData(profileRes.data.replace(/<\?xml .*\?>/,''));
  591. }
  592. }
  593. }else{
  594. showErrorMessage(profileRes.msg)
  595. jsonData = {data:{}}
  596. }
  597. return jsonData;
  598. },
  599. handleData :function (xmlStr) {
  600. var $xmlDom = $(xmlStr),
  601. $nodes = {
  602. } ;
  603. var resultData = [];
  604. return {
  605. data:{
  606. "department": $xmlDom.find('component section entry inDept').text(),//科室
  607. "dednumber": $xmlDom.find('component section entry bed').text(),//床号
  608. "HospitalizationNumber": "",//住院号
  609. "name": $xmlDom.find('recordTarget patient name').text(),//姓名
  610. "sex": $xmlDom.find('recordTarget patient sex').text(),//性别
  611. "nation": $xmlDom.find('recordTarget nation').text(),//民族
  612. "marriage": $xmlDom.find('recordTarget marriage').text(),//婚姻
  613. "admissionTime": $xmlDom.find('component section entry inTime').attr('value'),//入院时间
  614. "dischargeTime": $xmlDom.find('component section entry outTime').attr('value'),//出院时间
  615. "lengthStay": $xmlDom.find('component section entry inHospitalDay').text(),//住院天数
  616. "admissionStatus": $xmlDom.find('component section entry inCondition').text(),//入院情况
  617. "admissionDiagnosis": $xmlDom.find('component section entry inDiagnosis').text(),//入院诊断
  618. "dischargeDiagnosis": $xmlDom.find('component section entry outDiagnosis').text(),//出院诊断
  619. "DiagnosisProcess": $xmlDom.find('component section entry remedialCourse').text(),//诊疗经过
  620. "dischargeStatus": $xmlDom.find('component section entry outCondition').text(),//出院情况
  621. "dischargeOrder": $xmlDom.find('component section entry outOrder').text(),//出院医嘱
  622. "treatmentOutcome": $xmlDom.find('component section entry remedialResult').text(),//治疗结果
  623. "residentPhysician": $xmlDom.find('residentDoctor name').text(),//住院医师
  624. "attendingDoctor": $xmlDom.find('inChargeDoctor name').text(),//主治医师
  625. "time": $xmlDom.find('inChargeDoctor time').attr('value')//时间
  626. }
  627. }
  628. },
  629. //编辑诊疗
  630. editdiagnosis:function(){
  631. var vm = this;
  632. vm.edit = !vm.edit;
  633. vm.nodata = false
  634. vm.subsidiaryInfo.data.department = $('#department').find('input').val()
  635. vm.subsidiaryInfo.data.attendingDoctor = $('#attendingDoctor').find('input').val()
  636. vm.subsidiaryInfo.data.admissionDiagnosis = $('#department').find('input').val()
  637. vm.subsidiaryInfo.data.dischargeDiagnosis = $('#dischargeDiagnosis').find('input').val()
  638. },
  639. // 获取居民标签(健康情况、疾病类型、自定义分组)
  640. getPatientLabelInfo: function(){
  641. var vm = this,
  642. loading = layer.load(0, {shade: false})
  643. var params = {
  644. patient: this.pati.patient
  645. }
  646. rehaAPI.getPatientLabelInfo(params).then(function(res){
  647. layer.close(loading)
  648. if(res.status == 200) {
  649. var healthLabel = res.data['healthLabel']||[],
  650. diseaseLabel = res.data['diseaseServer']||[],
  651. customLabel = res.data['customLabel']||[];
  652. $.each(diseaseLabel, function(index, item){
  653. vm.diseaseCodeArr.push(item.disease)
  654. vm.diseaseNameArr.push(item.diseaseName)
  655. })
  656. } else {
  657. showErrorMessage(res.msg);
  658. }
  659. })
  660. },
  661. // 编辑康复建议
  662. editAdviceTextarea: function(){
  663. this.isEdit = !this.isEdit
  664. },
  665. // 获取频次列表
  666. selectFrequencys: function() {
  667. var vm = this,
  668. loadding = layer.load(0, {shade: false});
  669. recoverAPI.selectFrequencys().then(function(res) {
  670. layer.close(loadding)
  671. if(res.status == 200) {
  672. vm.frequencyList = [{code:'', name: '不限频次'}].concat(res.data)
  673. console.log('vm.frequencyList', vm.frequencyList)
  674. $.each(res.data, function(index, item){
  675. vm.frequencyListObj[item.code]=item.name
  676. })
  677. } else {
  678. showErrorMessage(res.msg);
  679. }
  680. })
  681. },
  682. // 获取居民信息
  683. getPatientInfo: function() {
  684. var vm = this,
  685. loadding = layer.load(0, {shade: false}),
  686. params = {
  687. patient: this.pati.patient
  688. }
  689. recoverAPI.getPatientInfo(params).then(function(res) {
  690. layer.close(loadding)
  691. if(res.status == 200) {
  692. vm.patiInfo = res.data
  693. vm.pati.patientName = res.data.name
  694. if(vm.planId){ // 编辑服务项时获取服务医生列表
  695. vm.selectPlanServerDoctor(vm.planId)
  696. } else {
  697. vm.jDlist.push({
  698. name: vm.patiInfo.ssDoctorName || vm.patiInfo.jtDoctorName,
  699. code: vm.patiInfo.ssDoctor || vm.patiInfo.jtDoctor,
  700. hospitalName: vm.patiInfo.jtHospitalName
  701. })
  702. vm.jDlist.push({
  703. name: vm.patiInfo.ssDoctorHealthName || vm.patiInfo.jtDoctorHealthName,
  704. code: vm.patiInfo.ssDoctorHealth || vm.patiInfo.jtDoctorHealth,
  705. hospitalName: vm.patiInfo.jtHospitalName
  706. })
  707. vm.jDlist.push({
  708. name: docInfo.name,
  709. code: docInfo.uid,
  710. hospitalName: docInfo.hospitalName
  711. })
  712. }
  713. // 获取居民标签
  714. vm.getPatientLabelInfo()
  715. if(vm.docInfo.doctorType==1){
  716. vm.findPatientSignSpecialistInfo()
  717. }
  718. } else {
  719. showErrorMessage(res.msg);
  720. }
  721. })
  722. },
  723. // 获取服务医生列表
  724. selectPlanServerDoctor: function(id){
  725. var vm = this,
  726. params = {
  727. planId: id
  728. }
  729. rehaAPI.selectPlanServerDoctor(params).then(function(res){
  730. var jtList = [], zkList = []
  731. if(res.status==200){
  732. $.each(res.data, function(index, item){
  733. if(item.level==1){
  734. zkList.push({
  735. name: item.name,
  736. code: item.code,
  737. hospitalName: item.hospitalName
  738. })
  739. } else {
  740. jtList.push({
  741. name: item.name,
  742. code: item.code,
  743. hospitalName: item.hospitalName
  744. })
  745. }
  746. })
  747. vm.jDlist = jtList.concat(zkList)
  748. vm.getServiceItem()
  749. }else{
  750. layer.msg(res.msg,{icon:5});
  751. }
  752. })
  753. },
  754. // 签约专科信息
  755. findPatientSignSpecialistInfo: function() {
  756. var vm = this,
  757. params = {
  758. patient: this.pati.patient,
  759. doctor: docInfo.uid
  760. }
  761. recoverAPI.findPatientSignSpecialistInfo(params).then(function(res) {
  762. if(res.status == 200) {
  763. vm.pati.teamCode = res.data.teamCode
  764. if(!vm.teamCode){
  765. vm.teamCode = res.data.teamCode
  766. }
  767. vm.specialistTeam(vm.teamCode)
  768. } else {
  769. showErrorMessage(res.msg);
  770. }
  771. })
  772. },
  773. // 获取专科团队
  774. specialistTeam: function(teamCode) {
  775. var vm = this,
  776. params = {
  777. teamId: teamCode
  778. }
  779. recoverAPI.specialistTeam(params).then(function(res) {
  780. if(res.status == 200) {
  781. vm.zDlist = res.data.members
  782. } else {
  783. showErrorMessage(res.msg);
  784. }
  785. })
  786. },
  787. // 模板列表
  788. findTemplateList: function() {
  789. var vm = this,
  790. loadding = layer.load(0, {shade: false}),
  791. params = {
  792. patient: this.pati.patient,
  793. doctor: docInfo.uid,
  794. adminTeamCode: vm.teamCode
  795. }
  796. recoverAPI.findTemplateList(params).then(function(res) {
  797. layer.close(loadding)
  798. if(res.status == 200) {
  799. vm.mubanList = res.data
  800. } else {
  801. showErrorMessage(res.msg);
  802. }
  803. })
  804. },
  805. // 模板详细
  806. findTemplateDetail: function(templateId) {
  807. var vm = this,
  808. loadding = layer.load(0, {shade: false}),
  809. params = {
  810. templateId: templateId
  811. }
  812. recoverAPI.findTemplateDetail(params).then(function(res) {
  813. layer.close(loadding)
  814. if(res.status == 200) {
  815. vm.templateDetail = []
  816. vm.templateResult = res.data
  817. vm.getServiceItemList().then(function(){
  818. var arr = []
  819. $.each(vm.serviceItems, function(index,o) {
  820. $.each(vm.templateResult, function(index1, o1) {
  821. if(o1.code == o.code) {
  822. o.isSelect = true
  823. o1.selectFre = true
  824. o1.isSelect = true
  825. o1.selectDoc = false
  826. o1.selectDate = 1
  827. o1.value14 = []
  828. o1.value15 = null
  829. o1.executeTime = []
  830. // 默认频次
  831. o1.selectFre = false
  832. o1.frequencyCode = ''
  833. o1.frequencyName = '不限频次'
  834. o1.frequency = vm.frequencyList[0]
  835. o1.frequencyList = vm.frequencyList
  836. o1.timeType = 0
  837. o1.remark = null
  838. o1.executeDoctor = vm.jDlist[0].code
  839. o1.executeDoctorName = vm.jDlist[0].name
  840. o1.executeHospitalName = vm.jDlist[0].hospitalName
  841. o1.docList = vm.jDlist
  842. arr.push(o1)
  843. }
  844. })
  845. })
  846. vm.templateDetail = arr
  847. vm.$forceUpdate()
  848. })
  849. // vm.findServiceItemsByHospital()
  850. } else {
  851. showErrorMessage(res.msg);
  852. }
  853. })
  854. },
  855. // 服务项目列表 2020-03-03 新增接口
  856. getServiceItemList: function(isSearch){
  857. var vm = this,
  858. loadding = layer.load(0, {shade: false}),
  859. params = {
  860. name: vm.searchKey
  861. }
  862. return rehaAPI.getServiceItemList(params).then(function(res) {
  863. layer.close(loadding)
  864. if(res.status == 200) {
  865. var serviceItems = res.data
  866. vm.serviceItems = $.each(serviceItems, function(index,o) {
  867. o.isSelect = false
  868. return o;
  869. })
  870. }else {
  871. showErrorMessage(res.msg);
  872. }
  873. })
  874. },
  875. searchProject: function() {
  876. this.getServiceItemList(true)
  877. },
  878. setPatImg: function(src) {
  879. if(!src) {
  880. return "../../../images/p-female.png"
  881. } else {
  882. var str = httpRequest.getImgUrl(src);
  883. return str
  884. }
  885. },
  886. changeSelectFre: function(index, bool) {
  887. this.templateDetail[index].selectFre = !bool
  888. this.isTest = !this.isTest
  889. },
  890. changeSelectDoc: function(index, bool) {
  891. this.templateDetail[index].selectDoc = !bool
  892. this.isTest = !this.isTest
  893. },
  894. // 选择频次
  895. selectFre: function(index, list) {
  896. this.templateDetail[index].selectFre = false
  897. this.templateDetail[index].frequencyCode = list.code
  898. this.templateDetail[index].frequencyName = list.name
  899. this.templateDetail[index].frequency = list
  900. this.templateDetail[index] = this.templateDetail[index]
  901. this.isTest = !this.isTest
  902. // if(this.templateDetail[index].frequencyCode==''&&this.isEditConfig){
  903. // var obj = this.templateDetail[index]
  904. // this.templateDetail = [].push(obj)
  905. // }
  906. this.judgeHavePlan()
  907. },
  908. // 选择时间段
  909. selectTimeType: function(index, timetype) {
  910. this.templateDetail[index].timeType = timetype
  911. this.isTest = !this.isTest
  912. },
  913. // 选择执行医生
  914. selectLi: function(index, list) {
  915. this.templateDetail[index].selectDoc = false
  916. this.templateDetail[index].executeDoctor = list.code
  917. this.templateDetail[index].executeDoctorName = list.name
  918. this.templateDetail[index].executeHospitalName = list.hospitalName
  919. this.templateDetail[index] = this.templateDetail[index]
  920. this.isTest = !this.isTest
  921. },
  922. // 删除配置计划
  923. subTemplate: function(index, detail) {
  924. var vm = this
  925. this.isTest = !this.isTest
  926. this.templateDetail.splice(index, 1)
  927. var len = detail.executeTime.length
  928. var deleteJudge = true
  929. $.each(vm.templateDetail, function(index, o) {
  930. if(o.code == detail.code) {
  931. deleteJudge = false
  932. }
  933. });
  934. if(deleteJudge) {
  935. $.each(vm.serviceItems, function(index, o) {
  936. if(detail.code == o.code) {
  937. o.isSelect = false
  938. o.executeTime = []
  939. vm.serviceItems[index] = o
  940. }
  941. });
  942. }
  943. this.judgeHavePlan()
  944. },
  945. // 复制计划
  946. copyTemplate: function(index, detail) {
  947. var vm = this,
  948. obj = JSON.parse(JSON.stringify(detail));
  949. this.isTest = !this.isTest
  950. obj.executeTime = []
  951. obj.value14 = []
  952. obj.value15 = null
  953. this.templateDetail.push(obj)
  954. if(obj.code!='2'&&obj.code!='3'){
  955. this.havePlan = false
  956. }
  957. },
  958. // 选择项目
  959. selectProject: function(index, index2, index3, o) {
  960. this.selectProjectDetail = o
  961. this.selectPatientIndex = layer.open({
  962. type: 2,
  963. area: ['400px', '500px'],
  964. shade: 0.5,
  965. title: '选择项目',
  966. closeBtn: 1,
  967. shift: 5,
  968. shadeClose: false, //点击遮罩关闭层
  969. content: "select-project.html?isLook=true&projectId=" + o.id + "&index=" + index + "&index3=" + index3 + "&index2=" + index2
  970. });
  971. },
  972. // 添加项目
  973. addProject: function(index, obj) {
  974. if(obj) {
  975. this.selectProjectDetail = obj
  976. }
  977. if(this.selectProjectDetail.isSelect) {
  978. showWarningMessage("已添加!")
  979. return false;
  980. }
  981. this.selectProjectDetail.isSelect = true
  982. this.selectProjectDetail.selectDoc = false
  983. this.selectProjectDetail.selectDate = 1
  984. this.selectProjectDetail.value14 = []
  985. this.selectProjectDetail.value15 = null
  986. this.selectProjectDetail.executeTime = []
  987. // 频次选择
  988. this.selectProjectDetail.selectFre = true
  989. this.selectProjectDetail.frequencyCode = this.frequencyList[0].code
  990. this.selectProjectDetail.frequencyName = this.frequencyList[0].name
  991. this.selectProjectDetail.frequency = this.frequencyList[0]
  992. this.selectProjectDetail.frequencyList = this.frequencyList
  993. this.selectProjectDetail.timeType = 0
  994. this.selectProjectDetail.remark = null
  995. this.selectProjectDetail.executeDoctor = this.jDlist[0].code
  996. this.selectProjectDetail.executeDoctorName = this.jDlist[0].name
  997. this.selectProjectDetail.executeHospitalName = this.jDlist[0].hospitalName
  998. this.selectProjectDetail.docList = this.jDlist
  999. this.templateDetail.push(this.selectProjectDetail)
  1000. this.serviceItems[index] = this.selectProjectDetail
  1001. if(this.selectProjectDetail.code!='2'&&this.selectProjectDetail.code!='3'){
  1002. this.havePlan = false
  1003. }
  1004. this.judgeHavePlan()
  1005. },
  1006. // 选择居民
  1007. selectPatient: function() {
  1008. this.selectPatientIndex = layer.open({
  1009. type: 2,
  1010. area: ['400px', '500px'],
  1011. shade: 0.5,
  1012. title: '同步患者',
  1013. closeBtn: 1,
  1014. shift: 5,
  1015. shadeClose: false, //点击遮罩关闭层
  1016. content: "select-patient.html"
  1017. });
  1018. },
  1019. // 选择居民回调
  1020. selectPatientOk: function(pati) {
  1021. this.isPlan = false
  1022. this.allFee = 0
  1023. this.templateDetail = []
  1024. this.pati = pati
  1025. this.isEdit = false
  1026. this.showAdviceContentTip = false
  1027. this.medicalRecordsList = []
  1028. this.getPatientInfo()
  1029. this.findTemplateList()
  1030. // this.diagnosisQuery()
  1031. layer.close(this.selectPatientIndex)
  1032. },
  1033. // 添加模板
  1034. addMuban: function(oId) {
  1035. var vm = this
  1036. var templateId = oId||''
  1037. vm.newPlan(templateId)
  1038. },
  1039. // 取消计划
  1040. canclePlan: function(obj) {
  1041. var vm = this
  1042. cancleIndex = layer.open({
  1043. type: 2,
  1044. area: ['400px', '180px'],
  1045. shade: 0.5,
  1046. title: '取消确认',
  1047. closeBtn: 1,
  1048. shift: 5,
  1049. shadeClose: false, //点击遮罩关闭层
  1050. content: "cancle_sure.html"
  1051. });
  1052. },
  1053. cancleSure: function() {
  1054. this.isPlan = false
  1055. this.allFee = 0
  1056. this.templateDetail = []
  1057. },
  1058. // (disease, templateId)
  1059. newPlan: function(templateId) {
  1060. // this.diseaseObj = disease
  1061. // var templateId = this.templateId
  1062. this.isPlan = true
  1063. if(templateId) {
  1064. this.findTemplateDetail(templateId)
  1065. } else {
  1066. this.templateDetail = []
  1067. this.getServiceItemList()
  1068. // this.findServiceItemsByHospital()
  1069. }
  1070. },
  1071. selectPro: function(pro, index) {
  1072. if(pro == 1) {
  1073. this.proIndex2 = null;
  1074. this.proIndex1 == index ? this.proIndex1 = null : this.proIndex1 = index
  1075. } else {
  1076. this.proIndex2 == index ? this.proIndex2 = null : this.proIndex2 = index
  1077. }
  1078. },
  1079. setLabelIndex: function(index, label) {
  1080. this.labelIndex = index
  1081. this.labelCode = label.code
  1082. },
  1083. changeSelectDate: function(index, num) {
  1084. if(this.templateDetail[index].executeTime.length) {
  1085. showWarningMessage("请先清除此选项的计划时间!");
  1086. return false;
  1087. }
  1088. this.isTest = !this.isTest
  1089. this.templateDetail[index].selectDate = num
  1090. },
  1091. openSelectTime: function(index) {
  1092. var vm = this
  1093. selectTimeIndex = layer.open({
  1094. type: 2,
  1095. area: ['600px', '500px'],
  1096. shade: 0.5,
  1097. title: '服务时间选择',
  1098. closeBtn: 1,
  1099. shift: 5,
  1100. shadeClose: false, //点击遮罩关闭层
  1101. content: "select_timer.html"
  1102. });
  1103. },
  1104. formatter: function(time){
  1105. return new Date(time).format('yyyy-MM-dd')
  1106. },
  1107. // 选择日期
  1108. getSelectDate: function(index) {
  1109. var vm = this,
  1110. projectId = vm.templateDetail[index].code;
  1111. if(!this.templateDetail[index].value15) {
  1112. return false;
  1113. }
  1114. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  1115. if(projectId == o.code) {
  1116. o.isTimeSame = false
  1117. }
  1118. return o
  1119. })
  1120. this.templateDetail[index].executeTime = []
  1121. var arr = this.templateDetail[index].value15
  1122. this.templateDetail[index].executeTime = arr
  1123. this.templateDetail[index].value14 = []
  1124. this.isTest = !this.isTest
  1125. this.judgeHavePlan()
  1126. },
  1127. // 选择周期
  1128. getRandgeDate: function(index, i) {
  1129. var vm = this
  1130. var templateDetail=this.templateDetail[index]
  1131. if(!templateDetail.value14[i]){
  1132. this.templateDetail[index].executeTime = []
  1133. this.havePlan = false
  1134. return false
  1135. }
  1136. if(templateDetail.value14[0]>templateDetail.value14[1]){
  1137. showWarningMessage("开始时间应小于结束时间!")
  1138. return false;
  1139. }
  1140. var projectId = vm.templateDetail[index].code;
  1141. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  1142. if(projectId == o.code) {
  1143. o.isTimeSame = false
  1144. }
  1145. return o
  1146. })
  1147. this.templateDetail[index].executeTime = []
  1148. var arr = this.templateDetail[index].value14,
  1149. startTime = new Date(arr[0]).getTime(),
  1150. endTime = new Date(arr[1]).getTime(),
  1151. absTime = endTime - startTime,
  1152. oneday = 60 * 60 *24 * 1000,
  1153. i = 0;
  1154. for(i; i * oneday <= absTime; i++) {
  1155. var num = i * oneday + startTime,
  1156. str = new Date(num).format("yyyy-MM-dd")
  1157. this.templateDetail[index].executeTime.push(str)
  1158. }
  1159. var obj = {
  1160. startTime: arr[0],
  1161. endTime: arr[1],
  1162. length: i
  1163. }
  1164. this.templateDetail[index].value15 = null
  1165. this.isTest = !this.isTest
  1166. this.judgeHavePlan()
  1167. },
  1168. // 计算总费用
  1169. checkAllMoney: function() {
  1170. var vm = this
  1171. this.allFee = 0
  1172. $.each(vm.templateDetail, function(index, o) {
  1173. var fee = vm.mul(vm.mul(o.expense, o.frequency.count), o.executeTime.length)
  1174. vm.allFee = vm.add(vm.allFee, fee)
  1175. });
  1176. },
  1177. judgeHavePlan: function() {
  1178. var arr = []
  1179. for(var k = 0; k < this.templateDetail.length; k++) {
  1180. if(this.templateDetail[k].code=='2'||this.templateDetail[k].code=='3'){
  1181. arr.push(true)
  1182. } else if(this.templateDetail[k].frequencyCode){
  1183. if(this.templateDetail[k].executeTime[0]) {
  1184. arr.push(true)
  1185. }else {
  1186. arr.push(false)
  1187. }
  1188. } else {
  1189. arr.push(true)
  1190. }
  1191. }
  1192. var flag = _.every(arr, Boolean)
  1193. if(flag){
  1194. this.havePlan = true
  1195. }else{
  1196. this.havePlan = false
  1197. }
  1198. },
  1199. // 编辑居民康复计划详情
  1200. updateRehabilitationPlan: function(){
  1201. var vm = this
  1202. var loadding = layer.load(0, {shade: false}),
  1203. data = {
  1204. planId: vm.planId,
  1205. hospitalServiceItemId: vm.service.type,
  1206. detail: [],
  1207. };
  1208. $.each(vm.templateDetail, function(index, o) {
  1209. var obj;
  1210. if(o.code=='2'||o.code=='3'||!o.frequencyCode){
  1211. obj = {
  1212. hospitalServiceItemId: o.code,
  1213. type: 2,
  1214. doctor: vm.jDlist[0].code,
  1215. doctorName: vm.jDlist[0].name,
  1216. executeTimes: '',
  1217. frequencyCode: '',
  1218. timeType: 0,
  1219. remark: o.remark || ''
  1220. }
  1221. }else{
  1222. if(o.executeTime.length) {
  1223. var executeTime = []
  1224. $.each(o.executeTime, function(ind, v) {
  1225. v += ' 00:00'
  1226. executeTime.push(v)
  1227. });
  1228. obj = {
  1229. hospitalServiceItemId: o.code, // 服务项code
  1230. type: 2,
  1231. doctor: o.executeDoctor,
  1232. doctorName: o.executeDoctorName,
  1233. executeTimes: executeTime.length>0?executeTime.join(","):'',
  1234. frequencyCode: o.frequencyCode,
  1235. timeType: o.timeType,
  1236. remark: o.remark || ''
  1237. }
  1238. }
  1239. }
  1240. data.detail.push(obj)
  1241. });
  1242. var params = {
  1243. json: JSON.stringify(data)
  1244. }
  1245. recoverAPI.updateRehabilitationPlan(params).then(function(res){
  1246. layer.close(loadding)
  1247. if(res.status ==200){
  1248. showSuccessMessage('保存成功!')
  1249. window.history.go(-1)
  1250. } else {
  1251. showErrorMessage(res.msg);
  1252. }
  1253. })
  1254. },
  1255. createRehabilitationPlan: function() {
  1256. var vm = this
  1257. if(!this.adviceContent){
  1258. vm.showAdviceContentTip = true
  1259. showWarningMessage("请输入康复建议!")
  1260. return false;
  1261. }
  1262. if(vm.medicalRecordsList.length==0){
  1263. showWarningMessage("请选择住院病历!")
  1264. return false;
  1265. }
  1266. if(!this.havePlan) {
  1267. showWarningMessage("请选择计划时间!")
  1268. return false;
  1269. }
  1270. var codeArr=[];
  1271. $.each(vm.medicalRecordsList,function(i, o){
  1272. codeArr.push(o.code)
  1273. })
  1274. var loadding = layer.load(0, {shade: false}),
  1275. data = {
  1276. patient: this.pati.patient,
  1277. name: this.pati.patientName,
  1278. title: this.pati.patientName + "的康复计划",
  1279. disease: this.diseaseCodeArr.join(','),
  1280. diseaseName: this.diseaseNameArr.join(','),
  1281. planType: this.labelCode || 1,
  1282. payment: 2,
  1283. totalExpense: this.allFee || 0,
  1284. adviceContent: this.adviceContent,
  1285. medicalRecordsCode: codeArr.join(','),
  1286. teamCode: vm.teamCode,
  1287. detail: [],
  1288. };
  1289. $.each(vm.templateDetail, function(index, o) {
  1290. var obj;
  1291. if(o.code=='2'||o.code=='3'||!o.frequencyCode){
  1292. obj = {
  1293. hospitalServiceItemId: o.code,
  1294. type: 2,
  1295. doctor: vm.jDlist[0].code,
  1296. doctorName: vm.jDlist[0].name,
  1297. executeTimes: '',
  1298. frequencyCode: '',
  1299. timeType: 0,
  1300. remark: o.remark || ''
  1301. }
  1302. }else{
  1303. if(o.executeTime.length) {
  1304. var executeTime = []
  1305. $.each(o.executeTime, function(ind, v) {
  1306. v += ' 00:00'
  1307. executeTime.push(v)
  1308. });
  1309. obj = {
  1310. hospitalServiceItemId: o.code,
  1311. type: 2,
  1312. doctor: o.executeDoctor,
  1313. doctorName: o.executeDoctorName,
  1314. executeTimes: executeTime.join(","),
  1315. frequencyCode: o.frequencyCode,
  1316. timeType: o.timeType,
  1317. remark: o.remark || ''
  1318. }
  1319. }
  1320. }
  1321. data.detail.push(obj)
  1322. });
  1323. var params = {
  1324. json: JSON.stringify(data)
  1325. }
  1326. // console.log('paramsparamsparamsparamsparams', data)
  1327. // return
  1328. recoverAPI.createRehabilitationPlan(params).then(function(res) {
  1329. layer.close(loadding)
  1330. if(res.status == 200) {
  1331. vm.isPlanId = res.data
  1332. setTimeout(function() {
  1333. window.location.href = "../../rehabilitation/html/health_control.html"
  1334. }, 1000)
  1335. showSuccessMessage("康复计划配置成功!")
  1336. } else {
  1337. showErrorMessage(res.msg || "同康复计划项目创建时间重复!");
  1338. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  1339. $.each(res.data, function(ind, v) {
  1340. if(v == o.id) {
  1341. o.isTimeSame = true
  1342. }
  1343. });
  1344. return o
  1345. })
  1346. }
  1347. })
  1348. },
  1349. // 字符串方法计算加减乘除(精确度百分位)
  1350. add: function(num1,num2){
  1351. var r1,r2,m,n;
  1352. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  1353. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  1354. m = Math.pow(10,Math.max(r1,r2));
  1355. n = (r1>=r2)?r1:r2;
  1356. return ((num1*m + num2*m)/m).toFixed(n);
  1357. },
  1358. sub: function(num1,num2){
  1359. var r1,r2,m,n;
  1360. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  1361. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  1362. n = (r1>=r2)?r1:r2;
  1363. m = Math.pow(10,Math.max(r1,r2));
  1364. return ((num1*m - num2*m)/m).toFixed(n);
  1365. },
  1366. mul: function(num1,num2){
  1367. var m = 0;
  1368. try{m+=num1.toString().split(".")[1].length}catch(e){}
  1369. try{m+=num2.toString().split(".")[1].length}catch(e){}
  1370. return (Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".","")))/Math.pow(10,m)
  1371. },
  1372. div: function(arg1,arg2){
  1373. var t1=0,t2=0,r1,r2;
  1374. try{t1=arg1.toString().split(".")[1].length}catch(e){}
  1375. try{t2=arg2.toString().split(".")[1].length}catch(e){}
  1376. r1=Number(arg1.toString().replace(".",""));
  1377. r2=Number(arg2.toString().replace(".",""));
  1378. return (r1/r2)*Math.pow(10,t2-t1);
  1379. }
  1380. }
  1381. })
  1382. </script>
  1383. </body>
  1384. </html>