new_recover.html 51 KB

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