new_recover.html 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  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. </head>
  14. <body class="m0">
  15. <div id="app" v-cloak>
  16. <div class="c-position-a" style="top: -999px; left: -999px;" v-show="isTest"></div>
  17. <div class="c-h100 clearfix">
  18. <div class="fl c-h100 w300 person_info c-border-r" style="overflow: hidden;">
  19. <div v-if="!patiInfo" class="c-h100" style="overflow: auto;">
  20. <div class="c-border-b c-t-center pt20">
  21. <div class="set-photo imgw80">
  22. <img src="../../../images/p-female.png" alt="居民头像" />
  23. </div>
  24. <p class="ptb10">患者名</p>
  25. </div>
  26. <div>
  27. <div class="no-result c-t-center pt20">
  28. <img src="../images/wushuju01_img.png" alt="无数据" />
  29. <p class="c-999">暂无相关信息</p>
  30. <div class="pt30">
  31. <span class="c-fff btn cur-pit plr10 ptb5 bgc-12b7f5 b-r-3" @click="selectPatient()">同步信息</span>
  32. </div>
  33. </div>
  34. </div>
  35. </div>
  36. <div v-else class="c-h100 plr10" style="overflow: auto;">
  37. <div class="c-t-center pt20 c-position-r">
  38. <div class="set-photo imgw80">
  39. <img :src="setPatImg(patiInfo.photo)" alt="居民头像" />
  40. </div>
  41. <h3 class="ptb10 m0 c-f16">{{patiInfo.name}}</h3>
  42. <span class="c-position-a set-qiehuan cur-pit" @click="selectPatient()"></span>
  43. </div>
  44. <h4 class="h30 m0 c-f14 c-border-b f-w500">基本信息</h4>
  45. <ul class="c-333 m0 p0 pb20">
  46. <li class="pt10"><span class="c-999">性&emsp;&emsp;别:</span>{{patiInfo.sex == 1 ? "男" : "女"}}</li>
  47. <li class="pt10"><span class="c-999">年&emsp;&emsp;龄:</span>{{patiInfo.age}}岁</li>
  48. <li class="pt10"><span class="c-999">身份证号:</span>{{patiInfo.idcard}}</li>
  49. <li class="pt10"><span class="c-999">地&emsp;&emsp;址:</span>{{patiInfo.address}}</li>
  50. </ul>
  51. <h4 class="h30 m0 c-f14 c-border-b f-w500">家庭医生</h4>
  52. <ul class="c-333 m0 p0 pb20">
  53. <li class="pt10"><span class="c-999">签约社区:</span>{{patiInfo.ssHospitalName || patiInfo.jtHospitalName}}</li>
  54. <li class="pt10"><span class="c-999">全科医生:</span>{{patiInfo.ssDoctorName || patiInfo.jtDoctorName}}</li>
  55. <li class="pt10"><span class="c-999">健&ensp;管&ensp;师:</span>{{patiInfo.ssDoctorHealthName || patiInfo.jtDoctorHealthName}}</li>
  56. </ul>
  57. <h4 class="h30 m0 c-f14 c-border-b">诊疗信息</h4>
  58. <ul class="c-333 m0 p0 pb20" >
  59. <div class="input-group" >
  60. <label style="transform: translateY(50%); color: #999999;font-weight: normal;">就诊事件:</label>
  61. <div class="input-group-btn" style="width: 80%; transform: translateY(50%);top: -5px;">
  62. <button style="width:223px;padding: 0; text-overflow: ellipsis; overflow: hidden;" v-bind:disabled="edit" type="button" class="btn btn-white dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  63. {{diagnosisInfo[indexOrder] && diagnosisInfo[indexOrder].orgName}}
  64. <span class="caret" style="position: absolute; top: 50%; right: 20px; margin-top: -2px;"></span>
  65. </button>
  66. <ul class="dropdown-menu" style="min-width: 206px;" >
  67. <li class="c-f14 c-border-b" style="text-align: center; padding: 2px;cursor:pointer;" v-for="(v, i) in diagnosisInfo" @click="orderHospital(i)" v-html="v.orgName"></li>
  68. </ul>
  69. </div>
  70. </div>
  71. <li class="pt10"style="display: flex;">
  72. <label class="c-999" style="font-weight: normal;">入院科室:</label>
  73. <input class="form-control" v-bind:disabled="edit" v-bind:placeholder="nodata == true? '请输入': subsidiaryInfo.data.department" style=" text-align: center; height: 22px; border-radius: 3px; width: 80%;">
  74. </li>
  75. <li class="pt10"style="display: flex;">
  76. <label class="c-999" style="font-weight: normal;">主治医师:</label>
  77. <input class="form-control" v-bind:disabled="edit" v-bind:placeholder="nodata == true? '请输入': subsidiaryInfo.data.attendingDoctor" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
  78. </li>
  79. <li class="pt10"style="display: flex;">
  80. <label class="c-999" style="font-weight: normal;">入院诊断:</label>
  81. <input class="form-control" v-bind:disabled="edit" v-bind:placeholder="nodata == true? '请输入': subsidiaryInfo.data.admissionDiagnosis" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
  82. </li>
  83. <li class="pt10"style="display: flex;">
  84. <label class="c-999" style="font-weight: normal;">出院诊断:</label>
  85. <input class="form-control" v-bind:disabled="edit" v-bind:placeholder="nodata == true? '请输入': subsidiaryInfo.data.dischargeDiagnosis" style="text-align: center; height: 22px; border-radius: 3px; width: 80%;">
  86. </li>
  87. </ul>
  88. <h4 class="h30 m0 c-f14 c-border-b c-999">医嘱小结</h4>
  89. <!--<p class="m0 pt10 c-333">依旧本次判断,对新消息进行出院诊断做出以下结论:忧郁啥啥事等等等问题</p>-->
  90. <textarea v-bind:disabled="edit" class="tipText m0 pt10 c-333 mt10" style="width: 100%; border:1px solid #e1e1e1; resize:none;text-indent:28px" v-html="subsidiaryInfo.data.dischargeOrder"></textarea>
  91. <button type="button" class="btn btn-default fr" style="width: 60px; background: #12B7F5; border-radius: 0px ;border: 0px ;" @click="editdiagnosis()" v-html="edit == true? '编辑':'保存'"></button>
  92. </div>
  93. </div>
  94. <div class="fl c-h100 w-100-300">
  95. <div class="c-h100 plr5" v-if="!isPlan">
  96. <h4 class="m0 pl15 lh40 c-border-b f-w500 c-position-r"><span class="c-position-a set-blue-span"></span>配置康复计划</h4>
  97. <div style="overflow: hidden; height: calc(100% - 41px);">
  98. <div style="overflow: auto; height: 100%;">
  99. <div class="un-select c-t-center pt45" v-if="!patiInfo">
  100. <img src="../images/wushuju_img.png" alt="" />
  101. <p class="c-999">您还没有选择居民</p>
  102. </div>
  103. <ul class="muban_con lh40 c-t-center pt30" v-else>
  104. <li class="mb20" v-for="(muban, index) in mubanList" :key="index" @click="addMuban(muban.id)">{{muban.title}}</li>
  105. <li class="addmuban-btn c-fff" @click="addMuban()">新增模板</li>
  106. </ul>
  107. </div>
  108. </div>
  109. </div>
  110. <div class="clearfix c-h100" v-else>
  111. <div class="fl w-100-300 c-h100">
  112. <div class="plr5 c-h100-79">
  113. <h4 class="m0 pl15 lh40 c-border-b set-label f-w500 c-position-r">
  114. <em class="c-position-a set-blue-span"></em>
  115. 配置康复计划
  116. <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>
  117. </h4>
  118. <div class="c-h100-41" style="overflow: hidden;">
  119. <ul class="c-h100 p0 m0" style="overflow: auto;">
  120. <li class="mt10 plr10 ptb5 c-border b-r-3 clearfix" v-for="(detail, index) in templateDetail" :key="index">
  121. <div class="fl w-100-78 c-333">
  122. <p :class='detail.isTimeSame ? "m0 p0 mb10 txt-ells cur-pit c-red" : "m0 p0 mb10 txt-ells cur-pit"' @click="lookProject(detail)">{{detail.specialistServiceItemDO.title}}</p>
  123. <div class="clearfix">
  124. <p class="w300 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.hospitalName}}</p>
  125. <p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>{{detail.expense}}{{detail.specialistServiceItemDO.unit}}</p>
  126. </div>
  127. <div class="m0 p0 clearfix">
  128. <div class="w300 m0 mb10 p0 fl clearfix">
  129. <span class="fl c-999">选择频次:</span>
  130. <div class="fl c-position-r w100">
  131. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectFre}" @click="changeSelectFre(index, detail.selectFre)">{{detail.frequencyCode}}</p>
  132. <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;">
  133. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.frequencyList" :key="indDoc" @click="selectFre(index, list)">{{list.code}}</li>
  134. </ul>
  135. </div>
  136. </div>
  137. <div class="m0 mb10 p0 fl clearfix">
  138. <span class="fl c-999">执行人员:</span>
  139. <div class="fl c-position-r w100">
  140. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectDoc}" @click="changeSelectDoc(index, detail.selectDoc)">{{detail.executeDoctorName}}</p>
  141. <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;">
  142. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.docList" :key="indDoc" @click="selectLi(index, list)">{{list.name}}</li>
  143. </ul>
  144. </div>
  145. </div>
  146. </div>
  147. <div class="pl65 mb10 set-label" v-if="detail.frequency.unit == 'H'">
  148. <span :class="detail.timeType == 1 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 1)">白天</span>
  149. <span :class="detail.timeType == 2 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 2)">晚上</span>
  150. <span :class="detail.timeType == 0 ? 'pl20 cur-pit active' : 'pl20 cur-pit'" @click="selectTimeType(index, 0)">全天</span>
  151. </div>
  152. <div>
  153. <div class="clearfix">
  154. <span class="fl c-999 lh24">起始时间:</span>
  155. <div class="fl maxw600 c-border mb10">
  156. <!--<p class="lh24 pl10 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.selectDateRange" :key="ind" v-if="detail.specialistServiceItemDO.selectDateRange.length">
  157. <span class="pb10 mr10">{{time.startTime}}</span>至<span class="pb10 ml10">{{time.endTime}}</span><span class="pb10 ml5 c-red cur-pit" @click="spliceTimeRange(index, ind)">删除</span>
  158. </p>-->
  159. <el-date-picker v-model="detail.value14" type="daterange" :picker-options="pickerOptions1" value-format="yyyy-MM-dd" @input="getRandgeDate(index)" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
  160. </div>
  161. <span class="fl lh24 mlr10 c-999">或</span>
  162. <div class="fl maxw600 c-border mb10">
  163. <!--<p class="fl pl10 lh24 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.executeTime" :key="ind" v-if="detail.specialistServiceItemDO.executeTime.length">
  164. <span class="fl pb10">{{time}}</span><span class="fl pb10 ml5 c-red cur-pit" @click="spliceTimeArr(index, ind)">删除</span>
  165. </p>-->
  166. <el-date-picker type="dates" :picker-options="pickerOptions1" v-model="detail.value15" value-format="yyyy-MM-dd" @input="getSelectDate(index)" placeholder="选择一个或者多个日期"></el-date-picker>
  167. </div>
  168. </div>
  169. </div>
  170. <div class="clearfix">
  171. <span class="fl c-999">备&emsp;&emsp;注:</span>
  172. <div class="fl maxw600 plr15 ptb10 c-border set-textarea">
  173. <textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
  174. </div>
  175. </div>
  176. </div>
  177. <div class='fr w60 c-t-right clearfix'>
  178. <p class="m0 p0 mb10">×{{mul(detail.specialistServiceItemDO.executeTime.length, detail.frequency.count)}}</p>
  179. <div class="clearfix mb10"><span class="fr sub-tap cur-pit" @click="subTemplate(index, detail)"></span></div>
  180. <div class="clearfix"><span class="fr fuzhi-tap cur-pit" @click="copyTemplate(index, detail)"></span></div>
  181. </div>
  182. </li>
  183. <li class="pt100 c-t-center" v-if="!templateDetail.length">
  184. <span class="set-right-arraw pr20">请在右侧“服务项”列表中选择</span>
  185. </li>
  186. </ul>
  187. </div>
  188. </div>
  189. <div>
  190. <p class="m0 p0 pl20 ptb10 c-border-b set-label">支付方式:<span class="ml10 pl20 active">按服务支付</span><em class="c-red ml20">(按选择支付方式完成收费)</em></p>
  191. <div class="pl20 lh40">总费用:
  192. <span class="c-red c-f16">¥{{allFee}}</span>
  193. <span class="fr lh30 cur-pit plr15 c-t-center bgc-green c-fff" @click="canclePlan()">取消</span>
  194. <span class="fr lh30 cur-pit plr15 c-t-center c-fff" :class="havePlan ? 'bgc-12b7f5' : 'bgc-d7dce6'" @click="createRehabilitationPlan()">生成计划</span>
  195. </div>
  196. </div>
  197. </div>
  198. <div class="fr w300 c-h100 c-border-l">
  199. <div class="plr5 c-h100">
  200. <h4 class="m0 pl15 lh40 c-border-b c-position-r f-w500">
  201. <em class="c-position-a set-blue-span"></em>添加其他项目
  202. </h4>
  203. <div class="clearfix mtb10 c-border">
  204. <input class="fl search-input plr10" type="text" v-model="searchKey" placeholder="输入项目名称" />
  205. <span class="fr search-btn" @click="searchProject()"></span>
  206. </div>
  207. <div class="c-h100-99" style="overflow: hidden;">
  208. <ul class="c-h100 p0 m0" style="overflow: auto;">
  209. <li v-for="(project1, index) in projectList" :key="index">
  210. <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>
  211. <ul class="c-h100 p0 m0 pl10" v-if="index == proIndex1">
  212. <li v-for="(project2, index2) in project1.item" :key="index2">
  213. <p class="set-arrow h30 c-f14 pl20 m0 c-333 cur-pit" :class="{'active': index2 == proIndex2}" @click="selectPro(2, index2)">{{project2.itemName}}</p>
  214. <ul class="p0 m0 pr10" v-if="index2 == proIndex2">
  215. <li v-for="(project3, index3) in project2.hospitalServiceItems" :key="index3" class="clearfix ptb5">
  216. <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)">
  217. <p class="fl w-100-78 txt-ells lh18" :class="project3.isSelect ? 'c-fff' : 'c-666'">{{project3.specialistServiceItemDO.title}}</p>
  218. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-4dcd70 plr5 c-fff" v-if="project3.flag == 1 || project3.flag == 3">社区</span>
  219. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-55cefc plr5 c-fff" v-if="project3.flag == 2 || project3.flag == 3">医院</span>
  220. </div>
  221. <span class="fr h30 btn cur-pit plr10 bgc-12b7f5 c-fff b-r-3" v-if="!project3.isSelect" @click="addProject(index, index2, index3, project3)">添加</span>
  222. <span class="fr h30 btn plr10 bgc-e1e1e1 c-fff b-r-3" v-else>添加</span>
  223. </li>
  224. </ul>
  225. </li>
  226. </ul>
  227. </li>
  228. </ul>
  229. </div>
  230. </div>
  231. </div>
  232. </div>
  233. </div>
  234. </div>
  235. </div>
  236. <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
  237. <script src="../../../js/jquery-2.2.4.js"></script>
  238. <script src="../../../plugins/layer/layer.min.js"></script>
  239. <script src="../../../plugins/toastr/toastr.min.js"></script>
  240. <script src="../../../js/bootstrap.min.js"></script>
  241. <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
  242. <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
  243. <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
  244. <script src="https://unpkg.com/element-ui/lib/index.js" type="text/javascript" charset="utf-8"></script>
  245. <script src="../../../api/http-request.js" type="text/javascript"></script>
  246. <script src="../../../api/recover_api.js" type="text/javascript"></script>
  247. <script type="text/javascript">
  248. var doctorType = (JSON.parse(window.localStorage.getItem('wlyyAgent'))||{}).doctorType,
  249. docInfo = JSON.parse(window.localStorage.getItem('wlyyAgent'))
  250. var httpData=GetRequest()
  251. function showSuccessMessage(msg) {
  252. layer.msg(msg, {
  253. icon: 1
  254. })
  255. }
  256. function showErrorMessage(msg) {
  257. layer.msg(msg, {
  258. icon: 5
  259. })
  260. }
  261. function showWarningMessage(msg) {
  262. layer.msg(msg, {
  263. icon: 2
  264. })
  265. }
  266. function showInfoMessage(msg) {
  267. layer.msg(msg, {
  268. icon: 6
  269. })
  270. }
  271. top.recoverVue = new Vue({
  272. el: "#app",
  273. data: {
  274. pickerOptions1: {
  275. disabledDate(time) {
  276. return time.getTime() < Date.now() - 8.64e7;
  277. }
  278. },
  279. surefont: '添加',
  280. isTest: false,
  281. pati: null,
  282. isPlan: false,
  283. proIndex1: null,
  284. proIndex2: null,
  285. patiInfo: null,
  286. diseaseObj: null,
  287. mubanList: [],
  288. templateDetail: [],
  289. templateResult: [],
  290. allFee: 0,
  291. projectList: null,
  292. labelIndex: 2,
  293. labelCode: 1,
  294. spanLabel: [{
  295. labelName: "(转)家庭病床",
  296. code: 3
  297. }, {
  298. labelName: "(转)社区医院",
  299. code: 2
  300. }, {
  301. labelName: "康复计划",
  302. code: 1
  303. }],
  304. jDlist: null,
  305. zDlist: null,
  306. selectProjectDetail: null,
  307. searchKey: null,
  308. havePlan: false,
  309. frequencyList: [],
  310. diagnosisInfo:[],
  311. indexOrder:0,
  312. profileRes:[],
  313. nodata:false,
  314. subsidiaryInfo:{},
  315. edit:true,
  316. selectDiseaseIndex:'',
  317. isPlanId :''
  318. },
  319. mounted: function() {
  320. this.selectFrequencys()
  321. if(httpData.patient) {
  322. this.isPlan = false
  323. this.allFee = 0
  324. this.templateDetail = []
  325. this.pati = {patient: httpData.patient}
  326. this.getPatientInfo()
  327. this.findTemplateList()
  328. this.diagnosisQuery()
  329. }
  330. },
  331. methods: {
  332. //获取诊疗信息
  333. diagnosisQuery:function(){
  334. var vm = this;
  335. loadding = layer.load(0, {shade: false});
  336. params = {
  337. patient: this.pati.patient,
  338. type: '2',
  339. page: 1,
  340. pageSize: 50,
  341. lastTime: ''
  342. }
  343. recoverAPI.diagnosisQuery(params).then(function(res){
  344. layer.close(loadding)
  345. if (res.status == 200) {
  346. if(res.data.length == 0){
  347. vm.diagnosisInfo = [{orgName:'无'}]
  348. console.log(vm.diagnosisInfo)
  349. debugger
  350. vm.nodata = true
  351. }else{
  352. vm.diagnosisInfo = res.data;
  353. }
  354. vm.orderHospital(0)
  355. }else{
  356. // vm.diagnosisInfo = [{orgName:'无'}]
  357. // vm.orderHospital(0)
  358. showErrorMessage(res.msg);
  359. }
  360. })
  361. },
  362. //按照医院查询诊疗信息
  363. orderHospital:function(index){
  364. var vm = this;
  365. vm.indexOrder = index
  366. loadding = layer.load(0, {shade: false});
  367. var sec_params = {
  368. patient: vm.pati.patient,
  369. event:vm.diagnosisInfo[index].id || "",
  370. // patient:"3b26a7905e034c36a5ba8e65bdc0dc7f",
  371. // event:"26eec2df-caa9-4b7e-9993-0ad7ae8d0a15",
  372. catalog:'0213',
  373. serial:"1"
  374. }
  375. recoverAPI.diagnosisSubsidiary(sec_params).then(function(res){
  376. layer.close(loadding)
  377. vm.subsidiaryInfo = vm.selectXmlDom(res,'0213')
  378. console.log(vm.subsidiaryInfo)
  379. })
  380. },
  381. //获取xml数据
  382. selectXmlDom: function (profileRes,tempalteCode) {
  383. var vm = this;
  384. if(profileRes.status == 200){
  385. var $dom = $(profileRes.data.replace(/<\?xml .*\?>/,'')),
  386. version = $dom.find(">version").length?$dom.find(">version").attr("code"):$dom.attr('version');
  387. $.trim(version) || (function () {
  388. version = $dom.find(">ClinicalDocument").length? '2.0.0.1' : '';
  389. })();
  390. if($.trim(version)) {
  391. var verNum = version.split('.')[0];
  392. var jsonData = {}
  393. // xml 转 json
  394. if((typeof profileRes.data=='string')&&profileRes.data.constructor==String) {
  395. // 去除携带的脚本内容
  396. profileRes.data = profileRes.data.replace(/<script[^>]*?>[\s\S]*?<\/script>/ig,'');
  397. // console.log(profileRes.data.replace(/<\?xml .*\?>/,''))
  398. jsonData = vm.handleData(profileRes.data.replace(/<\?xml .*\?>/,''));
  399. }
  400. }
  401. }else{
  402. showErrorMessage(profileRes.msg)
  403. jsonData = {data:{}}
  404. }
  405. return jsonData;
  406. },
  407. handleData :function (xmlStr) {
  408. var $xmlDom = $(xmlStr),
  409. $nodes = {
  410. } ;
  411. var resultData = [];
  412. return {
  413. data:{
  414. "department": $xmlDom.find('component section entry inDept').text(),//科室
  415. "dednumber": $xmlDom.find('component section entry bed').text(),//床号
  416. "HospitalizationNumber": "",//住院号
  417. "name": $xmlDom.find('recordTarget patient name').text(),//姓名
  418. "sex": $xmlDom.find('recordTarget patient sex').text(),//性别
  419. "nation": $xmlDom.find('recordTarget nation').text(),//民族
  420. "marriage": $xmlDom.find('recordTarget marriage').text(),//婚姻
  421. "admissionTime": $xmlDom.find('component section entry inTime').attr('value'),//入院时间
  422. "dischargeTime": $xmlDom.find('component section entry outTime').attr('value'),//出院时间
  423. "lengthStay": $xmlDom.find('component section entry inHospitalDay').text(),//住院天数
  424. "admissionStatus": $xmlDom.find('component section entry inCondition').text(),//入院情况
  425. "admissionDiagnosis": $xmlDom.find('component section entry inDiagnosis').text(),//入院诊断
  426. "dischargeDiagnosis": $xmlDom.find('component section entry outDiagnosis').text(),//出院诊断
  427. "DiagnosisProcess": $xmlDom.find('component section entry remedialCourse').text(),//诊疗经过
  428. "dischargeStatus": $xmlDom.find('component section entry outCondition').text(),//出院情况
  429. "dischargeOrder": $xmlDom.find('component section entry outOrder').text(),//出院医嘱
  430. "treatmentOutcome": $xmlDom.find('component section entry remedialResult').text(),//治疗结果
  431. "residentPhysician": $xmlDom.find('residentDoctor name').text(),//住院医师
  432. "attendingDoctor": $xmlDom.find('inChargeDoctor name').text(),//主治医师
  433. "time": $xmlDom.find('inChargeDoctor time').attr('value')//时间
  434. }
  435. }
  436. },
  437. //编辑诊疗
  438. editdiagnosis:function(){
  439. var vm = this;
  440. if(vm.isPlanId){
  441. vm.edit = !vm.edit;
  442. if(vm.edit == true){
  443. var thr_parems ={
  444. patient:vm.pati.patient,
  445. patientName:vm.pati.patientName,
  446. planId:vm.isPlanId,
  447. hospitalName:$('.input-group-btn button').text().trim(),
  448. department:vm.subsidiaryInfo.data.department|| "",
  449. attendingDoctorName:vm.subsidiaryInfo.data.attendingDoctor ||"",
  450. admittingDiagnosis:vm.subsidiaryInfo.data.admissionDiagnosis || "",
  451. dischargeDiagnosis:vm.subsidiaryInfo.data.dischargeDiagnosis|| "",
  452. advice:vm.subsidiaryInfo.data.dischargeOrder ||"",
  453. dischargeTime:vm.subsidiaryInfo.data.dischargeTime || ""
  454. }
  455. loadding = layer.load(0, {shade: false});
  456. recoverAPI.preservationInfo(thr_parems).then(function(res){
  457. layer.close(loadding)
  458. if (res.status == 200) {
  459. showSuccessMessage('保存成功')
  460. }else{
  461. showErrorMessage(res.msg);
  462. }
  463. })
  464. }
  465. }else{
  466. showWarningMessage("请先生成计划")
  467. }
  468. },
  469. // 获取频次列表
  470. selectFrequencys: function() {
  471. var vm = this,
  472. loadding = layer.load(0, {shade: false});
  473. recoverAPI.selectFrequencys().then(function(res) {
  474. layer.close(loadding)
  475. if(res.status == 200) {
  476. vm.frequencyList = res.data
  477. } else {
  478. showErrorMessage(res.msg);
  479. }
  480. })
  481. },
  482. // 获取居民信息
  483. getPatientInfo: function() {
  484. this.findPatientSignSpecialistInfo()
  485. var vm = this,
  486. loadding = layer.load(0, {shade: false}),
  487. params = {
  488. patient: this.pati.patient
  489. }
  490. recoverAPI.getPatientInfo(params).then(function(res) {
  491. layer.close(loadding)
  492. if(res.status == 200) {
  493. vm.patiInfo = res.data
  494. vm.pati.patientName = res.data.name
  495. vm.jDlist = [{
  496. name: vm.patiInfo.ssDoctorName || vm.patiInfo.jtDoctorName,
  497. code: vm.patiInfo.ssDoctor || vm.patiInfo.jtDoctor
  498. }, {
  499. name: vm.patiInfo.ssDoctorHealthName || vm.patiInfo.jtDoctorHealthName,
  500. code: vm.patiInfo.ssDoctorHealth || vm.patiInfo.jtDoctorHealth
  501. }]
  502. } else {
  503. showErrorMessage(res.msg);
  504. }
  505. })
  506. },
  507. // 签约专科信息
  508. findPatientSignSpecialistInfo: function() {
  509. var vm = this,
  510. params = {
  511. patient: this.pati.patient,
  512. doctor: docInfo.uid
  513. }
  514. recoverAPI.findPatientSignSpecialistInfo(params).then(function(res) {
  515. if(res.status == 200) {
  516. vm.pati.teamCode = res.data.teamCode
  517. vm.specialistTeam(res.data.teamCode)
  518. } else {
  519. showErrorMessage(res.msg);
  520. }
  521. })
  522. },
  523. // 获取专科团队
  524. specialistTeam: function(teamcode) {
  525. var vm = this,
  526. params = {
  527. teamId: teamcode
  528. }
  529. recoverAPI.specialistTeam(params).then(function(res) {
  530. if(res.status == 200) {
  531. vm.zDlist = res.data.members
  532. } else {
  533. showErrorMessage(res.msg);
  534. }
  535. })
  536. },
  537. // 模板列表
  538. findTemplateList: function() {
  539. var vm = this,
  540. loadding = layer.load(0, {shade: false}),
  541. params = {
  542. patient: this.pati.patient,
  543. doctor: docInfo.uid
  544. }
  545. recoverAPI.findTemplateList(params).then(function(res) {
  546. layer.close(loadding)
  547. if(res.status == 200) {
  548. vm.mubanList = res.data
  549. } else {
  550. showErrorMessage(res.msg);
  551. }
  552. })
  553. },
  554. // 模板详细
  555. findTemplateDetail: function(templateId) {
  556. var vm = this,
  557. loadding = layer.load(0, {shade: false}),
  558. params = {
  559. templateId: templateId
  560. }
  561. recoverAPI.findTemplateDetail(params).then(function(res) {
  562. layer.close(loadding)
  563. if(res.status == 200) {
  564. vm.templateDetail = []
  565. vm.templateResult = res.data
  566. vm.findServiceItemsByHospital()
  567. } else {
  568. showErrorMessage(res.msg);
  569. }
  570. })
  571. },
  572. // 服务项目列表
  573. findServiceItemsByHospital: function() {
  574. var vm = this,
  575. loadding = layer.load(0, {shade: false}),
  576. params = {
  577. doctor: docInfo.uid,
  578. patient: this.pati.patient,
  579. serviceItemName: this.searchKey
  580. }
  581. recoverAPI.findServiceItemsByHospital(params).then(function(res) {
  582. layer.close(loadding)
  583. if(res.status == 200) {
  584. vm.projectList = $.each(res.data[0], function(index, o) {
  585. $.each(vm.templateResult, function(index1, o1) {
  586. if(o1.specialistServiceItemDO.itemType == o.itemType) {
  587. $.each(o.item, function(index2, o2) {
  588. if(o1.specialistServiceItemDO.diseaseItem == o2.itemName) {
  589. $.each(o2.hospitalServiceItems, function(index3, o3) {
  590. if(o3.serviceItemId == o1.serviceItemId) {
  591. o3.isSelect = true
  592. o3.selectDoc = false
  593. o3.selectDate = 1
  594. o3.value14 = null
  595. o3.value15 = null
  596. o3.specialistServiceItemDO.executeTime = []
  597. o3.specialistServiceItemDO.selectDateRange = []
  598. // 默认频次
  599. o3.selectFre = false
  600. o3.frequencyCode = vm.frequencyList[0].code
  601. o3.frequency = vm.frequencyList[0]
  602. o3.frequencyList = vm.frequencyList
  603. o3.timeType = 0
  604. o3.remark = null
  605. if(o3.flag == 2) {
  606. o3.executeDoctor = vm.zDlist[0].code
  607. o3.executeDoctorName = vm.zDlist[0].name
  608. o3.docList = vm.zDlist
  609. } else {
  610. o3.executeDoctor = vm.jDlist[0].code
  611. o3.executeDoctorName = vm.jDlist[0].name
  612. o3.docList = vm.jDlist
  613. }
  614. vm.templateDetail.push(o3)
  615. }
  616. });
  617. }
  618. });
  619. }
  620. });
  621. return o;
  622. });
  623. } else {
  624. showErrorMessage(res.msg);
  625. }
  626. })
  627. },
  628. searchProject: function() {
  629. this.findServiceItemsByHospital()
  630. },
  631. setPatImg: function(src) {
  632. if(!src) {
  633. return "../../../images/p-female.png"
  634. } else {
  635. var str = httpRequest.getImgUrl(src);
  636. return str
  637. }
  638. },
  639. changeSelectFre: function(index, bool) {
  640. this.templateDetail[index].selectFre = !bool
  641. this.isTest = !this.isTest
  642. },
  643. changeSelectDoc: function(index, bool) {
  644. this.templateDetail[index].selectDoc = !bool
  645. this.isTest = !this.isTest
  646. },
  647. // 选择频次
  648. selectFre: function(index, list) {
  649. this.templateDetail[index].selectFre = false
  650. this.templateDetail[index].frequencyCode = list.code
  651. this.templateDetail[index].frequency = list
  652. this.templateDetail[index] = this.templateDetail[index]
  653. this.isTest = !this.isTest
  654. },
  655. // 选择时间段
  656. selectTimeType: function(index, timetype) {
  657. this.templateDetail[index].timeType = timetype
  658. this.isTest = !this.isTest
  659. },
  660. // 选择执行医生
  661. selectLi: function(index, list) {
  662. this.templateDetail[index].selectDoc = false
  663. this.templateDetail[index].executeDoctor = list.code
  664. this.templateDetail[index].executeDoctorName = list.name
  665. this.templateDetail[index] = this.templateDetail[index]
  666. this.isTest = !this.isTest
  667. },
  668. // 删除配置计划
  669. subTemplate: function(index, detail) {
  670. var vm = this
  671. this.isTest = !this.isTest
  672. this.templateDetail.splice(index, 1)
  673. var len = detail.specialistServiceItemDO.executeTime.length
  674. if(len) {
  675. this.checkAllMoney()
  676. }
  677. var deleteJudge = true
  678. $.each(vm.templateDetail, function(index, o) {
  679. if(o.hospitalServiceItemId == detail.hospitalServiceItemId) {
  680. deleteJudge = false
  681. }
  682. });
  683. if(deleteJudge) {
  684. $.each(vm.projectList, function(index, o) {
  685. if(detail.specialistServiceItemDO.itemType == o.itemType) {
  686. $.each(o.item, function(index2, o2) {
  687. if(detail.specialistServiceItemDO.diseaseItem == o2.itemName) {
  688. $.each(o2.hospitalServiceItems, function(index3, o3) {
  689. if(o3.serviceItemId == detail.serviceItemId) {
  690. o3.isSelect = false
  691. o3.specialistServiceItemDO.executeTime = []
  692. }
  693. });
  694. }
  695. });
  696. }
  697. });
  698. }
  699. vm.judgeHavePlan()
  700. },
  701. // 复制计划
  702. copyTemplate: function(index, detail) {
  703. var vm = this,
  704. obj = JSON.parse(JSON.stringify(detail))
  705. // this.templateDetail[index] = detail
  706. this.isTest = !this.isTest
  707. obj.specialistServiceItemDO.executeTime = []
  708. obj.value14 = null
  709. obj.value15 = null
  710. this.templateDetail.push(obj)
  711. this.checkAllMoney()
  712. },
  713. // 选择项目
  714. selectProject: function(index, index2, index3, o) {
  715. this.selectProjectDetail = o
  716. selectPatientIndex = layer.open({
  717. type: 2,
  718. area: ['400px', '500px'],
  719. shade: 0.5,
  720. title: '选择项目',
  721. closeBtn: 1,
  722. shift: 5,
  723. shadeClose: false, //点击遮罩关闭层
  724. content: "select-project.html?isLook=true&projectId=" + o.id + "&index=" + index + "&index3=" + index3 + "&index2=" + index2
  725. });
  726. },
  727. // 添加项目
  728. addProject: function(index, index2, index3, obj) {
  729. if(obj) {
  730. this.selectProjectDetail = obj
  731. }
  732. if(this.selectProjectDetail.isSelect) {
  733. showWarningMessage("已添加!")
  734. return false;
  735. }
  736. this.selectProjectDetail.isSelect = true
  737. this.selectProjectDetail.selectDoc = false
  738. this.selectProjectDetail.selectDate = 1
  739. this.selectProjectDetail.value14 = null
  740. this.selectProjectDetail.value15 = null
  741. this.selectProjectDetail.specialistServiceItemDO.executeTime = []
  742. this.selectProjectDetail.specialistServiceItemDO.selectDateRange = []
  743. // 频次选择
  744. this.selectProjectDetail.selectFre = false
  745. this.selectProjectDetail.frequencyCode = this.frequencyList[0].code
  746. this.selectProjectDetail.frequency = this.frequencyList[0]
  747. this.selectProjectDetail.frequencyList = this.frequencyList
  748. this.selectProjectDetail.timeType = 0
  749. this.selectProjectDetail.remark = null
  750. if(this.selectProjectDetail.flag == 2) {
  751. this.selectProjectDetail.executeDoctor = this.zDlist[0].code
  752. this.selectProjectDetail.executeDoctorName = this.zDlist[0].name
  753. this.selectProjectDetail.docList = this.zDlist
  754. } else {
  755. this.selectProjectDetail.executeDoctor = this.jDlist[0].code
  756. this.selectProjectDetail.executeDoctorName = this.jDlist[0].name
  757. this.selectProjectDetail.docList = this.jDlist
  758. }
  759. this.templateDetail.push(this.selectProjectDetail)
  760. this.projectList[index].item[index2].hospitalServiceItems[index3] = this.selectProjectDetail
  761. },
  762. // 查看项目
  763. lookProject: function(o) {
  764. selectPatientIndex = layer.open({
  765. type: 2,
  766. area: ['400px', '500px'],
  767. shade: 0.5,
  768. title: '查看项目',
  769. closeBtn: 1,
  770. shift: 5,
  771. shadeClose: false, //点击遮罩关闭层
  772. content: "select-project.html?projectId=" + o.id
  773. });
  774. },
  775. // 选择居民
  776. selectPatient: function() {
  777. selectPatientIndex = layer.open({
  778. type: 2,
  779. area: ['400px', '500px'],
  780. shade: 0.5,
  781. title: '同步出院小结',
  782. closeBtn: 1,
  783. shift: 5,
  784. shadeClose: false, //点击遮罩关闭层
  785. content: "select-patient.html"
  786. });
  787. },
  788. // 选择居民回调
  789. selectPatientOk: function(pati) {
  790. this.isPlan = false
  791. this.allFee = 0
  792. this.templateDetail = []
  793. this.pati = pati
  794. this.getPatientInfo()
  795. this.findTemplateList()
  796. // this.diagnosisQuery()
  797. },
  798. // 添加模板
  799. addMuban: function(oId) {
  800. var vm = this
  801. vm.selectDiseaseIndex = layer.open({
  802. type: 2,
  803. area: ['400px', '500px'],
  804. shade: 0.5,
  805. title: '选择疾病',
  806. closeBtn: 1,
  807. shift: 5,
  808. shadeClose: false, //点击遮罩关闭层
  809. content: "select-disease.html?teamCode=" + vm.pati.teamCode +"&templateId=" + oId || ''
  810. });
  811. },
  812. // 取消计划
  813. canclePlan: function(obj) {
  814. var vm = this
  815. cancleIndex = layer.open({
  816. type: 2,
  817. area: ['400px', '180px'],
  818. shade: 0.5,
  819. title: '取消确认',
  820. closeBtn: 1,
  821. shift: 5,
  822. shadeClose: false, //点击遮罩关闭层
  823. content: "cancle_sure.html"
  824. });
  825. },
  826. cancleSure: function() {
  827. this.isPlan = false
  828. this.allFee = 0
  829. this.templateDetail = []
  830. },
  831. newPlan: function(disease, templateId) {
  832. this.diseaseObj = disease
  833. this.isPlan = true
  834. if(templateId) {
  835. this.findTemplateDetail(templateId)
  836. } else {
  837. this.templateDetail = []
  838. this.findServiceItemsByHospital()
  839. }
  840. },
  841. selectPro: function(pro, index) {
  842. if(pro == 1) {
  843. this.proIndex2 = null;
  844. this.proIndex1 == index ? this.proIndex1 = null : this.proIndex1 = index
  845. } else {
  846. this.proIndex2 == index ? this.proIndex2 = null : this.proIndex2 = index
  847. }
  848. },
  849. setLabelIndex: function(index, label) {
  850. this.labelIndex = index
  851. this.labelCode = label.code
  852. },
  853. changeSelectDate: function(index, num) {
  854. if(this.templateDetail[index].specialistServiceItemDO.executeTime.length) {
  855. showWarningMessage("请先清除此选项的计划时间!");
  856. return false;
  857. }
  858. this.isTest = !this.isTest
  859. this.templateDetail[index].selectDate = num
  860. },
  861. openSelectTime: function(index) {
  862. var vm = this
  863. selectTimeIndex = layer.open({
  864. type: 2,
  865. area: ['600px', '500px'],
  866. shade: 0.5,
  867. title: '服务时间选择',
  868. closeBtn: 1,
  869. shift: 5,
  870. shadeClose: false, //点击遮罩关闭层
  871. content: "select_timer.html"
  872. });
  873. },
  874. // 选择日期
  875. getSelectDate: function(index) {
  876. var vm = this,
  877. projectId = vm.templateDetail[index].hospitalServiceItemId;
  878. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  879. if(projectId == o.hospitalServiceItemId) {
  880. o.isTimeSame = false
  881. }
  882. return o
  883. })
  884. this.templateDetail[index].specialistServiceItemDO.executeTime = []
  885. if(!this.templateDetail[index].value15) {
  886. this.checkAllMoney()
  887. return false;
  888. }
  889. var arr = this.templateDetail[index].value15
  890. this.templateDetail[index].specialistServiceItemDO.executeTime = arr
  891. this.templateDetail[index].value14 = null
  892. this.isTest = !this.isTest
  893. this.checkAllMoney()
  894. this.judgeHavePlan()
  895. },
  896. // 选择周期
  897. getRandgeDate: function(index) {
  898. var vm = this,
  899. projectId = vm.templateDetail[index].hospitalServiceItemId;
  900. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  901. if(projectId == o.hospitalServiceItemId) {
  902. o.isTimeSame = false
  903. }
  904. return o
  905. })
  906. this.templateDetail[index].specialistServiceItemDO.executeTime = []
  907. if(!this.templateDetail[index].value14) {
  908. this.checkAllMoney()
  909. return false;
  910. }
  911. var arr = this.templateDetail[index].value14,
  912. startTime = new Date(arr[0]).getTime(),
  913. endTime = new Date(arr[1]).getTime(),
  914. absTime = endTime - startTime,
  915. oneday = 60 * 60 *24 * 1000,
  916. i = 0;
  917. for(i; i * oneday <= absTime; i++) {
  918. var num = i * oneday + startTime,
  919. str = new Date(num).format("yyyy-MM-dd")
  920. this.templateDetail[index].specialistServiceItemDO.executeTime.push(str)
  921. }
  922. this.checkAllMoney()
  923. var obj = {
  924. startTime: arr[0],
  925. endTime: arr[1],
  926. length: i
  927. }
  928. this.templateDetail[index].specialistServiceItemDO.selectDateRange.push(obj)
  929. this.templateDetail[index].value15 = null
  930. this.isTest = !this.isTest
  931. this.judgeHavePlan()
  932. },
  933. // 计算总费用
  934. checkAllMoney: function() {
  935. var vm = this
  936. this.allFee = 0
  937. $.each(vm.templateDetail, function(index, o) {
  938. var fee = vm.mul(vm.mul(o.expense, o.frequency.count), o.specialistServiceItemDO.executeTime.length)
  939. vm.allFee = vm.add(vm.allFee, fee)
  940. });
  941. },
  942. // spliceTimeArr: function(index, ind) {
  943. // var vm = this
  944. // this.templateDetail[index].specialistServiceItemDO.executeTime.splice(ind, 1)
  945. // this.isTest = !this.isTest
  946. // vm.allFee = vm.sub(vm.allFee, vm.templateDetail[index].expense)
  947. // vm.judgeHavePlan()
  948. // },
  949. // spliceTimeRange: function(index, ind) {
  950. // var startPos = 0,
  951. // len = this.templateDetail[index].specialistServiceItemDO.selectDateRange[ind].length,
  952. // vm = this
  953. // for(var i = 0; i < ind; i++) {
  954. // startPos += this.templateDetail[index].specialistServiceItemDO.selectDateRange[i].length
  955. // }
  956. // this.templateDetail[index].specialistServiceItemDO.selectDateRange.splice(ind, 1)
  957. // this.templateDetail[index].specialistServiceItemDO.executeTime.splice(startPos, len)
  958. // this.isTest = !this.isTest
  959. // vm.allFee = vm.sub(vm.allFee, vm.mul(vm.templateDetail[index].expense, len))
  960. // vm.judgeHavePlan()
  961. // },
  962. judgeHavePlan: function() {
  963. for(var k = 0; k < this.templateDetail.length; k++) {
  964. for(var i = 0; i < this.templateDetail[k].specialistServiceItemDO.executeTime.length; i++) {
  965. if(this.templateDetail[k].specialistServiceItemDO.executeTime[i]) {
  966. this.havePlan = true;
  967. return false;
  968. }
  969. }
  970. }
  971. this.havePlan = false
  972. },
  973. createRehabilitationPlan: function() {
  974. if(!this.havePlan) {
  975. showWarningMessage("请选择计划时间!")
  976. return false;
  977. }
  978. // for(var k = 0; k < this.templateDetail.length; k++) {
  979. // for(var i = 0; i < this.templateDetail[k].specialistServiceItemDO.executeTime.length; i++) {
  980. // for(var j = i + 1; j < this.templateDetail[k].specialistServiceItemDO.executeTime.length; j++) {
  981. // if(this.templateDetail[k].specialistServiceItemDO.executeTime[i] == this.templateDetail[k].specialistServiceItemDO.executeTime[j]) {
  982. // showWarningMessage("请核对项目“" + this.templateDetail[k].specialistServiceItemDO.title + "”的计划时间选择!");
  983. // return false;
  984. // }
  985. // }
  986. // }
  987. // }
  988. var vm = this,
  989. loadding = layer.load(0, {shade: false}),
  990. data = {
  991. patient: this.pati.patient,
  992. name: this.pati.patientName,
  993. title: this.pati.patientName + this.diseaseObj.diseaseName + "康复计划",
  994. disease: this.diseaseObj.diseaseCode,
  995. diseaseName: this.diseaseObj.diseaseName,
  996. planType: this.labelCode,
  997. payment: 2,
  998. totalExpense: this.allFee,
  999. detail: []
  1000. },
  1001. params = {};
  1002. $.each(vm.templateDetail, function(index, o) {
  1003. if(o.specialistServiceItemDO.executeTime.length) {
  1004. var executeTime = []
  1005. $.each(o.specialistServiceItemDO.executeTime, function(ind, v) {
  1006. v += ' 00:00'
  1007. executeTime.push(v)
  1008. });
  1009. var obj = {
  1010. hospitalServiceItemId: o.id,
  1011. type: o.flag == 2 ? 2 : 1,
  1012. doctor: o.executeDoctor,
  1013. doctorName: o.executeDoctorName,
  1014. executeTimes: executeTime.join(","),
  1015. frequencyCode: o.frequencyCode,
  1016. timeType: o.timeType,
  1017. remark: o.remark || ''
  1018. }
  1019. data.detail.push(obj)
  1020. }
  1021. });
  1022. params = {
  1023. json: JSON.stringify(data)
  1024. }
  1025. recoverAPI.createRehabilitationPlan(params).then(function(res) {
  1026. layer.close(loadding)
  1027. if(res.status == 200) {
  1028. vm.isPlanId = res.data
  1029. showSuccessMessage("康复计划配置成功!")
  1030. // setTimeout(function() {
  1031. // window.location.href = "../../rehabilitation/html/health_control.html"
  1032. // }, 1000)
  1033. } else {
  1034. showErrorMessage(res.msg || "同康复计划项目创建时间重复!");
  1035. vm.templateDetail = $.map(vm.templateDetail, function(o, index) {
  1036. $.each(res.data, function(ind, v) {
  1037. if(v == o.id) {
  1038. o.isTimeSame = true
  1039. }
  1040. });
  1041. return o
  1042. })
  1043. }
  1044. })
  1045. },
  1046. // 字符串方法计算加减乘除(精确度百分位)
  1047. add: function(num1,num2){
  1048. var r1,r2,m,n;
  1049. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  1050. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  1051. m = Math.pow(10,Math.max(r1,r2));
  1052. n = (r1>=r2)?r1:r2;
  1053. return ((num1*m + num2*m)/m).toFixed(n);
  1054. },
  1055. sub: function(num1,num2){
  1056. var r1,r2,m,n;
  1057. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  1058. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  1059. n = (r1>=r2)?r1:r2;
  1060. m = Math.pow(10,Math.max(r1,r2));
  1061. return ((num1*m - num2*m)/m).toFixed(n);
  1062. },
  1063. mul: function(num1,num2){
  1064. var m = 0;
  1065. try{m+=num1.toString().split(".")[1].length}catch(e){}
  1066. try{m+=num2.toString().split(".")[1].length}catch(e){}
  1067. return (Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".","")))/Math.pow(10,m)
  1068. },
  1069. div: function(arg1,arg2){
  1070. var t1=0,t2=0,r1,r2;
  1071. try{t1=arg1.toString().split(".")[1].length}catch(e){}
  1072. try{t2=arg2.toString().split(".")[1].length}catch(e){}
  1073. r1=Number(arg1.toString().replace(".",""));
  1074. r2=Number(arg2.toString().replace(".",""));
  1075. return (r1/r2)*Math.pow(10,t2-t1);
  1076. }
  1077. }
  1078. })
  1079. </script>
  1080. </body>
  1081. </html>