new_recover.html 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>新建计划</title>
  6. <link rel="stylesheet" type="text/css" href="../../../css/cross.css" />
  7. <link rel="stylesheet" type="text/css" href="../../../css/cross.ui.css" />
  8. <link rel="stylesheet" type="text/css" href="../../../css/style.min.css" />
  9. <link href="../../../plugins/toastr/toastr.min.css" rel="stylesheet">
  10. <link rel="stylesheet" type="text/css" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css" />
  11. <link rel="stylesheet" type="text/css" href="../css/new_recover.css" />
  12. </head>
  13. <body class="m0">
  14. <div id="app" v-cloak>
  15. <div class="c-position-a" style="top: -999px; left: -999px;" v-show="isTest"></div>
  16. <div class="c-h100 clearfix">
  17. <div class="fl c-h100 w300 person_info c-border-r" style="overflow: hidden;">
  18. <div v-if="!patiInfo" class="c-h100" style="overflow: auto;">
  19. <div class="c-border-b c-t-center pt20">
  20. <div class="set-photo imgw80">
  21. <img src="../../../images/p-female.png" alt="居民头像" />
  22. </div>
  23. <p class="ptb10">患者名</p>
  24. </div>
  25. <div>
  26. <div class="no-result c-t-center pt20">
  27. <img src="../images/wushuju01_img.png" alt="无数据" />
  28. <p class="c-999">暂无相关信息</p>
  29. <div class="pt30">
  30. <span class="c-fff btn cur-pit plr10 ptb5 bgc-12b7f5 b-r-3" @click="selectPatient()">同步信息</span>
  31. </div>
  32. </div>
  33. </div>
  34. </div>
  35. <div v-else class="c-h100 plr10" style="overflow: auto;">
  36. <div class="c-t-center pt20 c-position-r">
  37. <div class="set-photo imgw80">
  38. <img :src="setPatImg(patiInfo.photo)" alt="居民头像" />
  39. </div>
  40. <h3 class="ptb10 m0 c-f16">{{patiInfo.name}}</h3>
  41. <span class="c-position-a set-qiehuan cur-pit" @click="selectPatient()"></span>
  42. </div>
  43. <h4 class="h30 m0 c-f14 c-border-b f-w500">基本信息</h4>
  44. <ul class="c-333 m0 p0 pb20">
  45. <li class="pt10"><span class="c-999">性&emsp;&emsp;别:</span>{{patiInfo.sex == 1 ? "男" : "女"}}</li>
  46. <li class="pt10"><span class="c-999">年&emsp;&emsp;龄:</span>{{patiInfo.age}}岁</li>
  47. <li class="pt10"><span class="c-999">身份证号:</span>{{patiInfo.idcard}}</li>
  48. <li class="pt10"><span class="c-999">地&emsp;&emsp;址:</span>{{patiInfo.address}}</li>
  49. </ul>
  50. <h4 class="h30 m0 c-f14 c-border-b f-w500">家庭医生</h4>
  51. <ul class="c-333 m0 p0 pb20">
  52. <li class="pt10"><span class="c-999">签约社区:</span>{{patiInfo.ssHospitalName || patiInfo.jtHospitalName}}</li>
  53. <li class="pt10"><span class="c-999">全科医生:</span>{{patiInfo.ssDoctorName || patiInfo.jtDoctorName}}</li>
  54. <li class="pt10"><span class="c-999">健&ensp;管&ensp;师:</span>{{patiInfo.ssDoctorHealthName || patiInfo.jtDoctorHealthName}}</li>
  55. </ul>
  56. <!--<h4 class="h30 m0 c-f14 c-border-b">诊疗信息</h4>
  57. <ul class="c-333 m0 p0 pb20">
  58. <li class="pt10"><span class="c-999">诊疗医院:</span>男</li>
  59. <li class="pt10"><span class="c-999">入院科室:</span>男</li>
  60. <li class="pt10"><span class="c-999">主治医师:</span>男</li>
  61. <li class="pt10"><span class="c-999">入院诊断:</span>男</li>
  62. <li class="pt10"><span class="c-999">出院诊断:</span>男</li>
  63. </ul>
  64. <h4 class="h30 m0 c-f14 c-border-b">出院小结</h4>
  65. <p class="m0 pt10 c-333">依旧本次判断,对新消息进行出院诊断做出以下结论:忧郁啥啥事等等等问题</p>-->
  66. </div>
  67. </div>
  68. <div class="fl c-h100 w-100-300">
  69. <div class="c-h100 plr5" v-if="!isPlan">
  70. <h4 class="m0 pl15 lh40 c-border-b f-w500 c-position-r"><span class="c-position-a set-blue-span"></span>配置康复计划</h4>
  71. <div style="overflow: hidden; height: calc(100% - 41px);">
  72. <div style="overflow: auto; height: 100%;">
  73. <div class="un-select c-t-center pt45" v-if="!patiInfo">
  74. <img src="../images/wushuju_img.png" alt="" />
  75. <p class="c-999">您还没有选择居民</p>
  76. </div>
  77. <ul class="muban_con lh40 c-t-center pt30" v-else>
  78. <li class="mb20" v-for="(muban, index) in mubanList" :key="index" @click="addMuban(muban.id)">{{muban.title}}</li>
  79. <li class="addmuban-btn c-fff" @click="addMuban()">新增模板</li>
  80. </ul>
  81. </div>
  82. </div>
  83. </div>
  84. <div class="clearfix c-h100" v-else>
  85. <div class="fl w-100-300 c-h100">
  86. <div class="plr5 c-h100-79">
  87. <h4 class="m0 pl15 lh40 c-border-b set-label f-w500 c-position-r">
  88. <em class="c-position-a set-blue-span"></em>
  89. 配置康复计划
  90. <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>
  91. </h4>
  92. <div class="c-h100-41" style="overflow: hidden;">
  93. <ul class="c-h100 p0 m0" style="overflow: auto;">
  94. <li class="mt10 plr10 ptb5 c-border b-r-3 clearfix" v-for="(detail, index) in templateDetail" :key="index">
  95. <div class="fl w-100-78 c-333">
  96. <p class="m0 p0 mb10 txt-ells cur-pit" @click="lookProject(detail)">{{detail.specialistServiceItemDO.title}}</p>
  97. <div class="clearfix">
  98. <p class="w300 m0 mb10 p0 fl"><span class="c-999">医&emsp;&emsp;院:</span>{{detail.hospitalName}}</p>
  99. <p class="m0 p0 mb10 fl"><span class="c-999">费&emsp;&emsp;用:</span>{{detail.expense}}{{detail.specialistServiceItemDO.unit}}</p>
  100. </div>
  101. <div class="m0 p0 clearfix">
  102. <div class="w300 m0 mb10 p0 fl clearfix">
  103. <span class="fl c-999">选择频次:</span>
  104. <div class="fl c-position-r w100">
  105. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectFre}" @click="changeSelectFre(index, detail.selectFre)">{{detail.frequencyCode}}</p>
  106. <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;">
  107. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.frequencyList" :key="indDoc" @click="selectFre(index, list)">{{list.code}}</li>
  108. </ul>
  109. </div>
  110. </div>
  111. <div class="m0 mb10 p0 fl clearfix">
  112. <span class="fl c-999">执行人员:</span>
  113. <div class="fl c-position-r w100">
  114. <p class="m0 p0 plr10 c-border cur-pit set-xia" :class="{'set-shang':detail.selectDoc}" @click="changeSelectDoc(index, detail.selectDoc)">{{detail.executeDoctorName}}</p>
  115. <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;">
  116. <li class="plr10 c-border-t cur-pit" v-for="(list, indDoc) in detail.docList" :key="indDoc" @click="selectLi(index, list)">{{list.name}}</li>
  117. </ul>
  118. </div>
  119. </div>
  120. </div>
  121. <div class="pl65 mb10 set-label" v-if="detail.frequency.unit == 'H'">
  122. <span :class="detail.timeType == 1 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 1)">白天</span>
  123. <span :class="detail.timeType == 2 ? 'pl20 mr5 cur-pit active' : 'pl20 mr5 cur-pit'" @click="selectTimeType(index, 2)">晚上</span>
  124. <span :class="detail.timeType == 0 ? 'pl20 cur-pit active' : 'pl20 cur-pit'" @click="selectTimeType(index, 0)">全天</span>
  125. </div>
  126. <div>
  127. <div class="clearfix">
  128. <span class="fl c-999 lh24">起始时间:</span>
  129. <div class="fl maxw600 c-border mb10">
  130. <!--<p class="lh24 pl10 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.selectDateRange" :key="ind" v-if="detail.specialistServiceItemDO.selectDateRange.length">
  131. <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>
  132. </p>-->
  133. <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>
  134. </div>
  135. <span class="fl lh24 mlr10 c-999">或</span>
  136. <div class="fl maxw600 c-border mb10">
  137. <!--<p class="fl pl10 lh24 mb5 mr20 clearfix" v-for="(time, ind) in detail.specialistServiceItemDO.executeTime" :key="ind" v-if="detail.specialistServiceItemDO.executeTime.length">
  138. <span class="fl pb10">{{time}}</span><span class="fl pb10 ml5 c-red cur-pit" @click="spliceTimeArr(index, ind)">删除</span>
  139. </p>-->
  140. <el-date-picker type="dates" :picker-options="pickerOptions1" v-model="detail.value15" value-format="yyyy-MM-dd" @input="getSelectDate(index)" placeholder="选择一个或者多个日期"></el-date-picker>
  141. </div>
  142. </div>
  143. </div>
  144. <div class="clearfix">
  145. <span class="fl c-999">备&emsp;&emsp;注:</span>
  146. <div class="fl maxw600 plr15 ptb10 c-border set-textarea">
  147. <textarea placeholder="不补充说明特殊用法、方式" v-model="detail.remark" name="" rows="" cols=""></textarea>
  148. </div>
  149. </div>
  150. </div>
  151. <div class='fr w60 c-t-right clearfix'>
  152. <p class="m0 p0 mb10">×{{mul(detail.specialistServiceItemDO.executeTime.length, detail.frequency.count)}}</p>
  153. <div class="clearfix mb10"><span class="fr sub-tap cur-pit" @click="subTemplate(index, detail)"></span></div>
  154. <div class="clearfix"><span class="fr fuzhi-tap cur-pit" @click="copyTemplate(index, detail)"></span></div>
  155. </div>
  156. </li>
  157. <li class="pt100 c-t-center" v-if="!templateDetail.length">
  158. <span class="set-right-arraw pr20">请在右侧“服务项”列表中选择</span>
  159. </li>
  160. </ul>
  161. </div>
  162. </div>
  163. <div>
  164. <p class="m0 p0 pl20 ptb10 c-border-b set-label">支付方式:<span class="ml10 pl20 active">按服务支付</span><em class="c-red ml20">(按选择支付方式完成收费)</em></p>
  165. <div class="pl20 lh40">总费用:
  166. <span class="c-red c-f16">¥{{allFee}}</span>
  167. <span class="fr lh30 cur-pit plr15 c-t-center bgc-green c-fff" @click="canclePlan()">取消</span>
  168. <span class="fr lh30 cur-pit plr15 c-t-center c-fff" :class="havePlan ? 'bgc-12b7f5' : 'bgc-d7dce6'" @click="createRehabilitationPlan()">生成计划</span>
  169. </div>
  170. </div>
  171. </div>
  172. <div class="fr w300 c-h100 c-border-l">
  173. <div class="plr5 c-h100">
  174. <h4 class="m0 pl15 lh40 c-border-b c-position-r f-w500">
  175. <em class="c-position-a set-blue-span"></em>添加其他项目
  176. </h4>
  177. <div class="clearfix mtb10 c-border">
  178. <input class="fl search-input plr10" type="text" v-model="searchKey" placeholder="输入项目名称" />
  179. <span class="fr search-btn" @click="searchProject()"></span>
  180. </div>
  181. <div class="c-h100-99" style="overflow: hidden;">
  182. <ul class="c-h100 p0 m0" style="overflow: auto;">
  183. <li v-for="(project1, index) in projectList" :key="index">
  184. <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>
  185. <ul class="c-h100 p0 m0 pl10" v-if="index == proIndex1">
  186. <li v-for="(project2, index2) in project1.item" :key="index2">
  187. <p class="set-arrow h30 c-f14 pl20 m0 c-333 cur-pit" :class="{'active': index2 == proIndex2}" @click="selectPro(2, index2)">{{project2.itemName}}</p>
  188. <ul class="p0 m0 pr10" v-if="index2 == proIndex2">
  189. <li v-for="(project3, index3) in project2.hospitalServiceItems" :key="index3" class="clearfix ptb5">
  190. <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)">
  191. <p class="fl w-100-78 txt-ells lh18" :class="project3.isSelect ? 'c-fff' : 'c-666'">{{project3.specialistServiceItemDO.title}}</p>
  192. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-4dcd70 plr5 c-fff" v-if="project3.flag == 1 || project3.flag == 3">社区</span>
  193. <span class="fr lh18 b-r-3 c-f12 ml5 bgc-55cefc plr5 c-fff" v-if="project3.flag == 2 || project3.flag == 3">医院</span>
  194. </div>
  195. <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>
  196. <span class="fr h30 btn plr10 bgc-e1e1e1 c-fff b-r-3" v-else>添加</span>
  197. </li>
  198. </ul>
  199. </li>
  200. </ul>
  201. </li>
  202. </ul>
  203. </div>
  204. </div>
  205. </div>
  206. </div>
  207. </div>
  208. </div>
  209. </div>
  210. <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
  211. <script src="../../../js/jquery-2.2.4.js"></script>
  212. <script src="../../../plugins/layer/layer.min.js"></script>
  213. <script src="../../../plugins/toastr/toastr.min.js"></script>
  214. <script src="../../../js/bootstrap.min.js"></script>
  215. <script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
  216. <script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
  217. <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
  218. <script src="https://unpkg.com/element-ui/lib/index.js" type="text/javascript" charset="utf-8"></script>
  219. <script src="../../../api/http-request.js" type="text/javascript"></script>
  220. <script src="../../../api/recover_api.js" type="text/javascript"></script>
  221. <script type="text/javascript">
  222. var doctorType = (JSON.parse(window.localStorage.getItem('wlyyAgent'))||{}).doctorType,
  223. docInfo = JSON.parse(window.localStorage.getItem('wlyyAgent'))
  224. var httpData=GetRequest()
  225. function showSuccessMessage(msg) {
  226. layer.msg(msg, {
  227. icon: 1
  228. })
  229. }
  230. function showErrorMessage(msg) {
  231. layer.msg(msg, {
  232. icon: 5
  233. })
  234. }
  235. function showWarningMessage(msg) {
  236. layer.msg(msg, {
  237. icon: 2
  238. })
  239. }
  240. function showInfoMessage(msg) {
  241. layer.msg(msg, {
  242. icon: 6
  243. })
  244. }
  245. recoverVue = new Vue({
  246. el: "#app",
  247. data: {
  248. pickerOptions1: {
  249. disabledDate(time) {
  250. return time.getTime() < Date.now() - 8.64e7;
  251. }
  252. },
  253. surefont: '添加',
  254. isTest: false,
  255. pati: null,
  256. isPlan: false,
  257. proIndex1: null,
  258. proIndex2: null,
  259. patiInfo: null,
  260. diseaseObj: null,
  261. mubanList: [],
  262. templateDetail: [],
  263. templateResult: [],
  264. allFee: 0,
  265. projectList: null,
  266. labelIndex: 2,
  267. labelCode: 1,
  268. spanLabel: [{
  269. labelName: "(转)家庭病床",
  270. code: 3
  271. }, {
  272. labelName: "(转)社区医院",
  273. code: 2
  274. }, {
  275. labelName: "康复计划",
  276. code: 1
  277. }],
  278. jDlist: null,
  279. zDlist: null,
  280. selectProjectDetail: null,
  281. searchKey: null,
  282. havePlan: false,
  283. frequencyList: []
  284. },
  285. mounted: function() {
  286. this.selectFrequencys()
  287. if(httpData.patient) {
  288. this.isPlan = false
  289. this.allFee = 0
  290. this.templateDetail = []
  291. this.pati = {patient: httpData.patient}
  292. this.getPatientInfo()
  293. this.findTemplateList()
  294. }
  295. },
  296. methods: {
  297. // 获取频次列表
  298. selectFrequencys: function() {
  299. var vm = this,
  300. loadding = layer.load(0, {shade: false});
  301. recoverAPI.selectFrequencys().then(function(res) {
  302. layer.close(loadding)
  303. if(res.status == 200) {
  304. vm.frequencyList = res.data
  305. } else {
  306. showErrorMessage(res.msg);
  307. }
  308. })
  309. },
  310. // 获取居民信息
  311. getPatientInfo: function() {
  312. this.findPatientSignSpecialistInfo()
  313. var vm = this,
  314. loadding = layer.load(0, {shade: false}),
  315. params = {
  316. patient: this.pati.patient
  317. }
  318. recoverAPI.getPatientInfo(params).then(function(res) {
  319. layer.close(loadding)
  320. if(res.status == 200) {
  321. vm.patiInfo = res.data
  322. vm.pati.patientName = res.data.name
  323. vm.jDlist = [{
  324. name: vm.patiInfo.ssDoctorName || vm.patiInfo.jtDoctorName,
  325. code: vm.patiInfo.ssDoctor || vm.patiInfo.jtDoctor
  326. }, {
  327. name: vm.patiInfo.ssDoctorHealthName || vm.patiInfo.jtDoctorHealthName,
  328. code: vm.patiInfo.ssDoctorHealth || vm.patiInfo.jtDoctorHealth
  329. }]
  330. } else {
  331. showErrorMessage(res.msg);
  332. }
  333. })
  334. },
  335. // 签约专科信息
  336. findPatientSignSpecialistInfo: function() {
  337. var vm = this,
  338. params = {
  339. patient: this.pati.patient,
  340. doctor: docInfo.uid
  341. }
  342. recoverAPI.findPatientSignSpecialistInfo(params).then(function(res) {
  343. if(res.status == 200) {
  344. vm.pati.teamCode = res.data.teamCode
  345. vm.specialistTeam(res.data.teamCode)
  346. } else {
  347. showErrorMessage(res.msg);
  348. }
  349. })
  350. },
  351. // 获取专科团队
  352. specialistTeam: function(teamcode) {
  353. var vm = this,
  354. params = {
  355. teamId: teamcode
  356. }
  357. recoverAPI.specialistTeam(params).then(function(res) {
  358. if(res.status == 200) {
  359. vm.zDlist = res.data.members
  360. } else {
  361. showErrorMessage(res.msg);
  362. }
  363. })
  364. },
  365. // 模板列表
  366. findTemplateList: function() {
  367. var vm = this,
  368. loadding = layer.load(0, {shade: false}),
  369. params = {
  370. patient: this.pati.patient,
  371. doctor: docInfo.uid
  372. }
  373. recoverAPI.findTemplateList(params).then(function(res) {
  374. layer.close(loadding)
  375. if(res.status == 200) {
  376. vm.mubanList = res.data
  377. } else {
  378. showErrorMessage(res.msg);
  379. }
  380. })
  381. },
  382. // 模板详细
  383. findTemplateDetail: function(templateId) {
  384. var vm = this,
  385. loadding = layer.load(0, {shade: false}),
  386. params = {
  387. templateId: templateId
  388. }
  389. recoverAPI.findTemplateDetail(params).then(function(res) {
  390. layer.close(loadding)
  391. if(res.status == 200) {
  392. vm.templateDetail = []
  393. vm.templateResult = res.data
  394. vm.findServiceItemsByHospital()
  395. } else {
  396. showErrorMessage(res.msg);
  397. }
  398. })
  399. },
  400. // 服务项目列表
  401. findServiceItemsByHospital: function() {
  402. var vm = this,
  403. loadding = layer.load(0, {shade: false}),
  404. params = {
  405. doctor: docInfo.uid,
  406. patient: this.pati.patient,
  407. serviceItemName: this.searchKey
  408. }
  409. recoverAPI.findServiceItemsByHospital(params).then(function(res) {
  410. layer.close(loadding)
  411. if(res.status == 200) {
  412. vm.projectList = $.each(res.data[0], function(index, o) {
  413. $.each(vm.templateResult, function(index1, o1) {
  414. if(o1.specialistServiceItemDO.itemType == o.itemType) {
  415. $.each(o.item, function(index2, o2) {
  416. if(o1.specialistServiceItemDO.diseaseItem == o2.itemName) {
  417. $.each(o2.hospitalServiceItems, function(index3, o3) {
  418. if(o3.serviceItemId == o1.serviceItemId) {
  419. o3.isSelect = true
  420. o3.selectDoc = false
  421. o3.selectDate = 1
  422. o3.value14 = null
  423. o3.value15 = null
  424. o3.specialistServiceItemDO.executeTime = []
  425. o3.specialistServiceItemDO.selectDateRange = []
  426. // 默认频次
  427. o3.selectFre = false
  428. o3.frequencyCode = vm.frequencyList[0].code
  429. o3.frequency = vm.frequencyList[0]
  430. o3.frequencyList = vm.frequencyList
  431. o3.timeType = 0
  432. o3.remark = null
  433. if(o3.flag == 2) {
  434. o3.executeDoctor = vm.zDlist[0].code
  435. o3.executeDoctorName = vm.zDlist[0].name
  436. o3.docList = vm.zDlist
  437. } else {
  438. o3.executeDoctor = vm.jDlist[0].code
  439. o3.executeDoctorName = vm.jDlist[0].name
  440. o3.docList = vm.jDlist
  441. }
  442. vm.templateDetail.push(o3)
  443. }
  444. });
  445. }
  446. });
  447. }
  448. });
  449. return o;
  450. });
  451. } else {
  452. showErrorMessage(res.msg);
  453. }
  454. })
  455. },
  456. searchProject: function() {
  457. this.findServiceItemsByHospital()
  458. },
  459. setPatImg: function(src) {
  460. if(!src) {
  461. return "../../../images/p-female.png"
  462. } else {
  463. var str = httpRequest.getImgUrl(src);
  464. return str
  465. }
  466. },
  467. changeSelectFre: function(index, bool) {
  468. this.templateDetail[index].selectFre = !bool
  469. this.isTest = !this.isTest
  470. },
  471. changeSelectDoc: function(index, bool) {
  472. this.templateDetail[index].selectDoc = !bool
  473. this.isTest = !this.isTest
  474. },
  475. // 选择频次
  476. selectFre: function(index, list) {
  477. this.templateDetail[index].selectFre = false
  478. this.templateDetail[index].frequencyCode = list.code
  479. this.templateDetail[index].frequency = list
  480. this.templateDetail[index] = this.templateDetail[index]
  481. this.isTest = !this.isTest
  482. },
  483. // 选择时间段
  484. selectTimeType: function(index, timetype) {
  485. this.templateDetail[index].timeType = timetype
  486. this.isTest = !this.isTest
  487. },
  488. // 选择执行医生
  489. selectLi: function(index, list) {
  490. this.templateDetail[index].selectDoc = false
  491. this.templateDetail[index].executeDoctor = list.code
  492. this.templateDetail[index].executeDoctorName = list.name
  493. this.templateDetail[index] = this.templateDetail[index]
  494. this.isTest = !this.isTest
  495. },
  496. // 删除配置计划
  497. subTemplate: function(index, detail) {
  498. var vm = this
  499. this.isTest = !this.isTest
  500. this.templateDetail.splice(index, 1)
  501. var len = detail.specialistServiceItemDO.executeTime.length
  502. if(len) {
  503. this.checkAllMoney()
  504. }
  505. $.each(vm.projectList, function(index, o) {
  506. if(detail.specialistServiceItemDO.itemType == o.itemType) {
  507. $.each(o.item, function(index2, o2) {
  508. if(detail.specialistServiceItemDO.diseaseItem == o2.itemName) {
  509. $.each(o2.hospitalServiceItems, function(index3, o3) {
  510. if(o3.serviceItemId == detail.serviceItemId) {
  511. o3.isSelect = false
  512. o3.specialistServiceItemDO.executeTime = []
  513. }
  514. });
  515. }
  516. });
  517. }
  518. });
  519. vm.judgeHavePlan()
  520. },
  521. // 复制计划
  522. copyTemplate: function(index, detail) {
  523. var vm = this,
  524. obj = JSON.parse(JSON.stringify(detail))
  525. // this.templateDetail[index] = detail
  526. this.isTest = !this.isTest
  527. console.log(obj)
  528. // obj.specialistServiceItemDO.executeTime = []
  529. // obj.value14 = null
  530. // obj.value15 = null
  531. this.templateDetail.push(obj)
  532. console.log(this.templateDetail)
  533. this.checkAllMoney()
  534. },
  535. // 选择项目
  536. selectProject: function(index, index2, index3, o) {
  537. this.selectProjectDetail = o
  538. selectPatientIndex = layer.open({
  539. type: 2,
  540. area: ['400px', '500px'],
  541. shade: 0.5,
  542. title: '选择项目',
  543. closeBtn: 1,
  544. shift: 5,
  545. shadeClose: false, //点击遮罩关闭层
  546. content: "select-project.html?isLook=true&projectId=" + o.id + "&index=" + index + "&index3=" + index3 + "&index2=" + index2
  547. });
  548. },
  549. // 添加项目
  550. addProject: function(index, index2, index3, obj) {
  551. if(obj) {
  552. this.selectProjectDetail = obj
  553. }
  554. if(this.selectProjectDetail.isSelect) {
  555. showWarningMessage("已添加!")
  556. return false;
  557. }
  558. this.selectProjectDetail.isSelect = true
  559. this.selectProjectDetail.selectDoc = false
  560. this.selectProjectDetail.selectDate = 1
  561. this.selectProjectDetail.value14 = null
  562. this.selectProjectDetail.value15 = null
  563. this.selectProjectDetail.specialistServiceItemDO.executeTime = []
  564. this.selectProjectDetail.specialistServiceItemDO.selectDateRange = []
  565. // 频次选择
  566. this.selectProjectDetail.selectFre = false
  567. this.selectProjectDetail.frequencyCode = this.frequencyList[0].code
  568. this.selectProjectDetail.frequency = this.frequencyList[0]
  569. this.selectProjectDetail.frequencyList = this.frequencyList
  570. this.selectProjectDetail.timeType = 0
  571. this.selectProjectDetail.remark = null
  572. if(this.selectProjectDetail.flag == 2) {
  573. this.selectProjectDetail.executeDoctor = this.zDlist[0].code
  574. this.selectProjectDetail.executeDoctorName = this.zDlist[0].name
  575. this.selectProjectDetail.docList = this.zDlist
  576. } else {
  577. this.selectProjectDetail.executeDoctor = this.jDlist[0].code
  578. this.selectProjectDetail.executeDoctorName = this.jDlist[0].name
  579. this.selectProjectDetail.docList = this.jDlist
  580. }
  581. this.templateDetail.push(this.selectProjectDetail)
  582. this.projectList[index].item[index2].hospitalServiceItems[index3] = this.selectProjectDetail
  583. },
  584. // 查看项目
  585. lookProject: function(o) {
  586. selectPatientIndex = layer.open({
  587. type: 2,
  588. area: ['400px', '500px'],
  589. shade: 0.5,
  590. title: '查看项目',
  591. closeBtn: 1,
  592. shift: 5,
  593. shadeClose: false, //点击遮罩关闭层
  594. content: "select-project.html?projectId=" + o.id
  595. });
  596. },
  597. // 选择居民
  598. selectPatient: function() {
  599. selectPatientIndex = layer.open({
  600. type: 2,
  601. area: ['400px', '500px'],
  602. shade: 0.5,
  603. title: '同步出院小结',
  604. closeBtn: 1,
  605. shift: 5,
  606. shadeClose: false, //点击遮罩关闭层
  607. content: "select-patient.html"
  608. });
  609. },
  610. // 选择居民回调
  611. selectPatientOk: function(pati) {
  612. this.isPlan = false
  613. this.allFee = 0
  614. this.templateDetail = []
  615. this.pati = pati
  616. this.getPatientInfo()
  617. this.findTemplateList()
  618. },
  619. // 添加模板
  620. addMuban: function(oId) {
  621. var vm = this
  622. selectDiseaseIndex = layer.open({
  623. type: 2,
  624. area: ['400px', '500px'],
  625. shade: 0.5,
  626. title: '选择疾病',
  627. closeBtn: 1,
  628. shift: 5,
  629. shadeClose: false, //点击遮罩关闭层
  630. content: "select-disease.html?teamCode=" + vm.pati.teamCode +"&templateId=" + oId || ''
  631. });
  632. },
  633. // 取消计划
  634. canclePlan: function(obj) {
  635. var vm = this
  636. cancleIndex = layer.open({
  637. type: 2,
  638. area: ['400px', '180px'],
  639. shade: 0.5,
  640. title: '取消确认',
  641. closeBtn: 1,
  642. shift: 5,
  643. shadeClose: false, //点击遮罩关闭层
  644. content: "cancle_sure.html"
  645. });
  646. },
  647. cancleSure: function() {
  648. this.isPlan = false
  649. this.allFee = 0
  650. this.templateDetail = []
  651. },
  652. newPlan: function(disease, templateId) {
  653. this.diseaseObj = disease
  654. this.isPlan = true
  655. if(templateId) {
  656. this.findTemplateDetail(templateId)
  657. } else {
  658. this.templateDetail = []
  659. this.findServiceItemsByHospital()
  660. }
  661. },
  662. selectPro: function(pro, index) {
  663. if(pro == 1) {
  664. this.proIndex2 = null;
  665. this.proIndex1 == index ? this.proIndex1 = null : this.proIndex1 = index
  666. } else {
  667. this.proIndex2 == index ? this.proIndex2 = null : this.proIndex2 = index
  668. }
  669. },
  670. setLabelIndex: function(index, label) {
  671. this.labelIndex = index
  672. this.labelCode = label.code
  673. },
  674. changeSelectDate: function(index, num) {
  675. if(this.templateDetail[index].specialistServiceItemDO.executeTime.length) {
  676. showWarningMessage("请先清除此选项的计划时间!");
  677. return false;
  678. }
  679. this.isTest = !this.isTest
  680. this.templateDetail[index].selectDate = num
  681. },
  682. openSelectTime: function(index) {
  683. var vm = this
  684. selectTimeIndex = layer.open({
  685. type: 2,
  686. area: ['600px', '500px'],
  687. shade: 0.5,
  688. title: '服务时间选择',
  689. closeBtn: 1,
  690. shift: 5,
  691. shadeClose: false, //点击遮罩关闭层
  692. content: "select_timer.html"
  693. });
  694. },
  695. // 选择日期
  696. getSelectDate: function(index) {
  697. this.templateDetail[index].specialistServiceItemDO.executeTime = []
  698. var arr = this.templateDetail[index].value15
  699. this.templateDetail[index].specialistServiceItemDO.executeTime = arr
  700. this.templateDetail[index].value14 = null
  701. this.isTest = !this.isTest
  702. this.checkAllMoney()
  703. this.judgeHavePlan()
  704. },
  705. // 选择周期
  706. getRandgeDate: function(index) {
  707. this.templateDetail[index].specialistServiceItemDO.executeTime = []
  708. var arr = this.templateDetail[index].value14,
  709. startTime = new Date(arr[0]).getTime(),
  710. endTime = new Date(arr[1]).getTime(),
  711. absTime = endTime - startTime,
  712. oneday = 60 * 60 *24 * 1000,
  713. i = 0;
  714. for(i; i * oneday <= absTime; i++) {
  715. var num = i * oneday + startTime,
  716. str = new Date(num).format("yyyy-MM-dd")
  717. this.templateDetail[index].specialistServiceItemDO.executeTime.push(str)
  718. }
  719. this.checkAllMoney()
  720. var obj = {
  721. startTime: arr[0],
  722. endTime: arr[1],
  723. length: i
  724. }
  725. this.templateDetail[index].specialistServiceItemDO.selectDateRange.push(obj)
  726. this.templateDetail[index].value15 = null
  727. this.isTest = !this.isTest
  728. this.judgeHavePlan()
  729. },
  730. // 计算总费用
  731. checkAllMoney: function() {
  732. var vm = this
  733. this.allFee = 0
  734. $.each(vm.templateDetail, function(index, o) {
  735. var fee = vm.mul(vm.mul(o.expense, o.frequency.count), o.specialistServiceItemDO.executeTime.length)
  736. vm.allFee = vm.add(vm.allFee, fee)
  737. });
  738. },
  739. // spliceTimeArr: function(index, ind) {
  740. // var vm = this
  741. // this.templateDetail[index].specialistServiceItemDO.executeTime.splice(ind, 1)
  742. // this.isTest = !this.isTest
  743. // vm.allFee = vm.sub(vm.allFee, vm.templateDetail[index].expense)
  744. // vm.judgeHavePlan()
  745. // },
  746. // spliceTimeRange: function(index, ind) {
  747. // var startPos = 0,
  748. // len = this.templateDetail[index].specialistServiceItemDO.selectDateRange[ind].length,
  749. // vm = this
  750. // for(var i = 0; i < ind; i++) {
  751. // startPos += this.templateDetail[index].specialistServiceItemDO.selectDateRange[i].length
  752. // }
  753. // this.templateDetail[index].specialistServiceItemDO.selectDateRange.splice(ind, 1)
  754. // this.templateDetail[index].specialistServiceItemDO.executeTime.splice(startPos, len)
  755. // this.isTest = !this.isTest
  756. // vm.allFee = vm.sub(vm.allFee, vm.mul(vm.templateDetail[index].expense, len))
  757. // vm.judgeHavePlan()
  758. // },
  759. judgeHavePlan: function() {
  760. for(var k = 0; k < this.templateDetail.length; k++) {
  761. for(var i = 0; i < this.templateDetail[k].specialistServiceItemDO.executeTime.length; i++) {
  762. if(this.templateDetail[k].specialistServiceItemDO.executeTime[i]) {
  763. this.havePlan = true;
  764. return false;
  765. }
  766. }
  767. }
  768. this.havePlan = false
  769. },
  770. createRehabilitationPlan: function() {
  771. if(!this.havePlan) {
  772. showWarningMessage("请选择计划时间!")
  773. return false;
  774. }
  775. for(var k = 0; k < this.templateDetail.length; k++) {
  776. for(var i = 0; i < this.templateDetail[k].specialistServiceItemDO.executeTime.length; i++) {
  777. for(var j = i + 1; j < this.templateDetail[k].specialistServiceItemDO.executeTime.length; j++) {
  778. if(this.templateDetail[k].specialistServiceItemDO.executeTime[i] == this.templateDetail[k].specialistServiceItemDO.executeTime[j]) {
  779. showWarningMessage("请核对项目“" + this.templateDetail[k].specialistServiceItemDO.title + "”的计划时间选择!");
  780. return false;
  781. }
  782. }
  783. }
  784. }
  785. var vm = this,
  786. loadding = layer.load(0, {shade: false}),
  787. data = {
  788. patient: this.pati.patient,
  789. name: this.pati.patientName,
  790. title: this.pati.patientName + this.diseaseObj.diseaseName + "康复计划",
  791. disease: this.diseaseObj.diseaseCode,
  792. diseaseName: this.diseaseObj.diseaseName,
  793. planType: this.labelCode,
  794. payment: 2,
  795. totalExpense: this.allFee,
  796. detail: []
  797. },
  798. params = {};
  799. $.each(vm.templateDetail, function(index, o) {
  800. if(o.specialistServiceItemDO.executeTime.length) {
  801. var executeTime = []
  802. $.each(o.specialistServiceItemDO.executeTime, function(ind, v) {
  803. v += ' 00:00'
  804. executeTime.push(v)
  805. });
  806. var obj = {
  807. hospitalServiceItemId: o.id,
  808. type: o.flag == 2 ? 2 : 1,
  809. doctor: o.executeDoctor,
  810. doctorName: o.executeDoctorName,
  811. executeTimes: executeTime.join(","),
  812. frequencyCode: o.frequencyCode,
  813. timeType: o.timeType,
  814. remark: o.remark || ''
  815. }
  816. data.detail.push(obj)
  817. }
  818. });
  819. params = {
  820. json: JSON.stringify(data)
  821. }
  822. recoverAPI.createRehabilitationPlan(params).then(function(res) {
  823. layer.close(loadding)
  824. if(res.status == 200) {
  825. showSuccessMessage("康复计划配置成功!")
  826. setTimeout(function() {
  827. window.location.href = "../../rehabilitation/html/health_control.html"
  828. }, 1000)
  829. } else {
  830. showErrorMessage(res.msg);
  831. }
  832. })
  833. },
  834. // 字符串方法计算加减乘除(精确度百分位)
  835. add: function(num1,num2){
  836. var r1,r2,m,n;
  837. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  838. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  839. m = Math.pow(10,Math.max(r1,r2));
  840. n = (r1>=r2)?r1:r2;
  841. return ((num1*m + num2*m)/m).toFixed(n);
  842. },
  843. sub: function(num1,num2){
  844. var r1,r2,m,n;
  845. try{r1=num1.toString().split(".")[1].length}catch(e){r1=0}
  846. try{r2=num2.toString().split(".")[1].length}catch(e){r2=0}
  847. n = (r1>=r2)?r1:r2;
  848. m = Math.pow(10,Math.max(r1,r2));
  849. return ((num1*m - num2*m)/m).toFixed(n);
  850. },
  851. mul: function(num1,num2){
  852. var m = 0;
  853. try{m+=num1.toString().split(".")[1].length}catch(e){}
  854. try{m+=num2.toString().split(".")[1].length}catch(e){}
  855. return (Number(num1.toString().replace(".",""))*Number(num2.toString().replace(".","")))/Math.pow(10,m)
  856. },
  857. div: function(arg1,arg2){
  858. var t1=0,t2=0,r1,r2;
  859. try{t1=arg1.toString().split(".")[1].length}catch(e){}
  860. try{t2=arg2.toString().split(".")[1].length}catch(e){}
  861. r1=Number(arg1.toString().replace(".",""));
  862. r2=Number(arg2.toString().replace(".",""));
  863. return (r1/r2)*Math.pow(10,t2-t1);
  864. }
  865. }
  866. })
  867. </script>
  868. </body>
  869. </html>