new_recover.html 34 KB

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