血透系统pad前端

TodayTab.vue 39KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147
  1. <template>
  2. <div v-loading="loading">
  3. <div class="grid">
  4. <div class="list">
  5. <ul>
  6. <li @click="menuClick(1)">
  7. <img src="@/assets/record/2.png" />
  8. <p>透析处方</p>
  9. </li>
  10. <li @click="menuClick(2)">
  11. <img src="@/assets/record/3.png" />
  12. <p>接诊评估</p>
  13. </li>
  14. <li @click="menuClick(3)">
  15. <img src="@/assets/record/4.png" />
  16. <p>透前评估</p>
  17. </li>
  18. <li @click="menuClick(4)">
  19. <img src="@/assets/record/5.png" />
  20. <p>临时医嘱</p>
  21. </li>
  22. <li @click="menuClick(5)">
  23. <img src="@/assets/record/6.png" />
  24. <p>双人核对</p>
  25. </li>
  26. </ul>
  27. </div>
  28. <div class="list">
  29. <ul>
  30. <li @click="menuClick(0)">
  31. <img src="@/assets/record/1.png" />
  32. <p>透析上机</p>
  33. </li>
  34. <li @click="menuClick(6)">
  35. <img src="@/assets/record/7.png" />
  36. <p>透析监测</p>
  37. </li>
  38. <li @click="menuClick(7)">
  39. <img src="@/assets/record/8.png" />
  40. <p>透析下机</p>
  41. </li>
  42. <li @click="menuClick(8)">
  43. <img src="@/assets/record/9.png" />
  44. <p>透后评估</p>
  45. </li>
  46. <li @click="menuClick(9)">
  47. <img src="@/assets/record/10.png" />
  48. <p>治疗小结</p>
  49. </li>
  50. </ul>
  51. </div>
  52. </div>
  53. <div class="blueBorder"></div>
  54. <details-info
  55. title="基本信息"
  56. :patient="patient"
  57. :device_number="schedual.device_number == null || schedual.device_number == undefined ? '' : schedual.device_number.number"
  58. :step_data="stepData"
  59. ></details-info>
  60. <div class="blueBorder"></div>
  61. <dialysis-prescription
  62. id="prescription"
  63. :prescription="prescription"
  64. :solution="solution"
  65. title="透析处方"
  66. :device_number_map="device_map"
  67. ></dialysis-prescription>
  68. <!-- <div class="blueBorder"></div>
  69. <past-data class="往期数据"></past-data>-->
  70. <div class="blueBorder"></div>
  71. <accepts-assessment id="accepts_assessment" :record="receiver_treatment_access" title="接诊评估"></accepts-assessment>
  72. <div class="blueBorder"></div>
  73. <assessment-before
  74. id="assessment_before"
  75. :record="predialysis_evaluation"
  76. ref="assessment_before"
  77. title="透前评估"
  78. ></assessment-before>
  79. <div class="blueBorder"></div>
  80. <stat-order
  81. id="stat_order"
  82. ref="stat_order"
  83. title="临时医嘱"
  84. :doctor_map="admin_user_map"
  85. :advice_groups="advice_groups"
  86. ></stat-order>
  87. <div class="blueBorder"></div>
  88. <dialysis-computer
  89. id="dialysis_computer"
  90. ref="dialysis_computer"
  91. title="透析上机 "
  92. :record="dialysis_order"
  93. :admin_map="admin_user_map"
  94. :device_number_map="device_number_map"
  95. ></dialysis-computer>
  96. <div class="blueBorder"></div>
  97. <double-check id="double_check" ref="double_check" title="双人核对 " :record="double_check"></double-check>
  98. <div class="blueBorder"></div>
  99. <dialysis-monitoring id="monitoring" ref="monitoring" title="透析监测"></dialysis-monitoring>
  100. <div class="blueBorder"></div>
  101. <dialysis-off
  102. id="dialysis_off"
  103. ref="dialysis_off"
  104. title="透析下机 "
  105. :record="dialysis_order"
  106. :admin_map="admin_user_map"
  107. ></dialysis-off>
  108. <div class="blueBorder"></div>
  109. <assessment-after
  110. id="assessment_after"
  111. ref="assessment_after"
  112. title="透后评估"
  113. :record="assessment_after_dislysis"
  114. ></assessment-after>
  115. <div class="blueBorder"></div>
  116. <treatment-of id="treatment_of" ref="treatment_of" title="治疗小结" :record="treatment_summary"></treatment-of>
  117. <!-- <div class="blueBorder"></div>
  118. <operation-staff title="操作人员 "></operation-staff>-->
  119. <!-- 弹框 -->
  120. <!-- <van-popup v-show="false" title="长期处方" :overlay="true" @click-overlay="popupDidHide(0)" :close-on-click-overlay="false">
  121. <long-dialog @longSolution="closeDialog(0)" @closeLongDialog="closeDialog(0)" :patient_prop="patient" :solution_prop="solution" :machines_prop="devices" ref="long_dialog" ></long-dialog>
  122. </van-popup>-->
  123. <van-popup
  124. title="透析处方"
  125. v-model="menuList[1].showPopup"
  126. :overlay="true"
  127. :close-on-click-overlay="false"
  128. >
  129. <prescription-dialog
  130. :patient_prop="patient"
  131. :solution_prop="solution"
  132. :machines_prop="devices"
  133. :prescription_prop="prescription"
  134. @finish="closePrescriptionDialog"
  135. :operators="operators"
  136. @close="closePrescriptionDialog"
  137. ref="prescription_dialog"
  138. ></prescription-dialog>
  139. </van-popup>
  140. <van-popup
  141. title="接诊评估"
  142. v-model="menuList[2].showPopup"
  143. :overlay="true"
  144. :close-on-click-overlay="false"
  145. >
  146. <accepts-dialog
  147. :accepts="receiver_treatment_access"
  148. :patient_prop="patient"
  149. @finish="closeAcceptsAssessment"
  150. @close="closeAcceptsAssessment"
  151. ></accepts-dialog>
  152. </van-popup>
  153. <van-popup
  154. title="透前评估"
  155. v-model="menuList[3].showPopup"
  156. :overlay="true"
  157. :close-on-click-overlay="false"
  158. >
  159. <assessment-dialog
  160. :predialysis="predialysis_evaluation"
  161. :last_predialysis="last_predialysis_evaluation"
  162. :patient_prop="patient"
  163. @evaluation="update_evaluation"
  164. @close="closeAssessmentBefore"
  165. ref="assessment_dialog"
  166. ></assessment-dialog>
  167. </van-popup>
  168. <van-popup
  169. title="临时医嘱"
  170. v-model="menuList[4].showPopup"
  171. :overlay="true"
  172. :close-on-click-overlay="false"
  173. >
  174. <orders-dialog
  175. :patient_prop="patient"
  176. :advice_groups="advice_groups"
  177. :advice_list_prop="doctor_advices"
  178. :admin_users_prop="admin_users"
  179. @orderDialog="closeStatOrder"
  180. ref="orders_dialog"
  181. ></orders-dialog>
  182. </van-popup>
  183. <van-popup
  184. title="双人查对"
  185. v-model="menuList[5].showPopup"
  186. :overlay="true"
  187. :close-on-click-overlay="false"
  188. >
  189. <double-dialog
  190. :patient_prop="patient"
  191. :record="double_check"
  192. :admin_users_prop="admin_users"
  193. @did_update="closeDoubleCheck"
  194. @close="closeDoubleCheck"
  195. ></double-dialog>
  196. </van-popup>
  197. <van-popup
  198. title="透析上机"
  199. v-model="menuList[0].showPopup"
  200. :overlay="true"
  201. :close-on-click-overlay="false"
  202. >
  203. <computer-dialog
  204. :schedule="schedual"
  205. :patient_prop="patient"
  206. :record="dialysis_order"
  207. :admins="admin_users"
  208. :device_numbers="device_numbers"
  209. :admin_map="admin_user_map"
  210. :device_number_map="device_number_map"
  211. @did_start="closeDialysisComputer"
  212. @close="closeDialysisComputer"
  213. ref="computer_dialog"
  214. ></computer-dialog>
  215. </van-popup>
  216. <van-popup
  217. title="透析监测"
  218. v-model="menuList[6].showPopup"
  219. :overlay="true"
  220. :close-on-click-overlay="false"
  221. >
  222. <monit-dialog
  223. :monitor_records="monitor_records"
  224. :last_monitor_record="last_monitor_record"
  225. :patient="patient"
  226. :order="dialysis_order"
  227. @did_add_monitor="didAddMonitor"
  228. @did_edit_monitor="didEditMonitor"
  229. @did_delete_monitor="didDelMonitor"
  230. @close="closeMonitoring"
  231. ref="monit_dialog"
  232. ></monit-dialog>
  233. </van-popup>
  234. <van-popup
  235. title="透析下机"
  236. v-model="menuList[7].showPopup"
  237. :overlay="true"
  238. :close-on-click-overlay="false"
  239. >
  240. <plane-dialog
  241. :patient_prop="patient"
  242. :record="dialysis_order"
  243. :admins="admin_users"
  244. :admin_map="admin_user_map"
  245. @did_off="closeDialysisOff"
  246. @close="closeDialysisOff"
  247. ref="plane_dialog"
  248. ></plane-dialog>
  249. </van-popup>
  250. <van-popup
  251. title="透后评估"
  252. v-model="menuList[8].showPopup"
  253. :overlay="true"
  254. :close-on-click-overlay="false"
  255. >
  256. <thoroug-dialog
  257. :patient_prop="patient"
  258. :record="assessment_after_dislysis"
  259. :last_record="last_assessment_after_dislysis"
  260. @did_update="closeAssessmentAfter"
  261. @close="closeAssessmentAfter"
  262. ref="thoroug_dialog"
  263. ></thoroug-dialog>
  264. </van-popup>
  265. <van-popup
  266. title="治疗小结"
  267. v-model="menuList[9].showPopup"
  268. :overlay="true"
  269. :close-on-click-overlay="false"
  270. >
  271. <treatment-dialog
  272. :patient_prop="patient"
  273. :record="treatment_summary"
  274. @did_update="closeTreatmentOf"
  275. @close="closeTreatmentOf"
  276. ref="treatment_dialog"
  277. ></treatment-dialog>
  278. </van-popup>
  279. <div class="fixedNav" ref="fixed_nav" v-show="show_fixed_nav">
  280. <ul>
  281. <li @click="menuClick(1)">透析处方</li>
  282. <li @click="menuClick(2)">接诊评估</li>
  283. <li @click="menuClick(3)">透前评估</li>
  284. <li @click="menuClick(4)">临时医嘱</li>
  285. <li @click="menuClick(0)">透析上机</li>
  286. <li @click="menuClick(5)">双人核对</li>
  287. <li @click="menuClick(6)">透析监测</li>
  288. <li @click="menuClick(7)">透析下机</li>
  289. <li @click="menuClick(8)">透后评估</li>
  290. <li @click="menuClick(9)">治疗小结</li>
  291. </ul>
  292. </div>
  293. </div>
  294. </template>
  295. <script>
  296. import DetailsInfo from "./detailsInfo";
  297. import DialysisPrescription from "./dialysisPrescription";
  298. import PastData from "./pastData";
  299. import AcceptsAssessment from "./acceptsAssessment";
  300. import AssessmentBefore from "./assessmentBefore";
  301. import StatOrder from "./statOrder";
  302. import DialysisComputer from "./dialysisComputer";
  303. import DoubleCheck from "./doubleCheck";
  304. import DialysisMonitoring from "./dialysisMonitoring";
  305. import DialysisOff from "./dialysisOff";
  306. import AssessmentAfter from "./assessmentAfter";
  307. import TreatmentOf from "./treatmentOf";
  308. import OperationStaff from "./operationStaff";
  309. import LongDialog from "../dialog/LongDialog";
  310. import PrescriptionDialog from "../dialog/PrescriptionDialog";
  311. import AssessmentDialog from "../dialog/AssessmentDialog";
  312. import ThorougDialog from "../dialog/ThorougDialog";
  313. import AcceptsDialog from "../dialog/AcceptsDialog";
  314. import PlaneDialog from "../dialog/PlaneDialog";
  315. import TreatmentDialog from "../dialog/TreatmentDialog";
  316. import DoubleDialog from "../dialog/DoubleDialog";
  317. import OrdersDialog from "../dialog/OrdersDialog";
  318. import MonitDialog from "../dialog/MonitDialog";
  319. import ComputerDialog from "../dialog/ComputerDialog";
  320. import { dialysisGlobalConfig, getDialysisRecord } from "@/api/dialysis";
  321. import { parseTime } from "@/utils";
  322. import Vue from "vue";
  323. export default {
  324. name: "TodayTab",
  325. components: {
  326. DetailsInfo,
  327. DialysisPrescription,
  328. PastData,
  329. AcceptsAssessment,
  330. AssessmentBefore,
  331. StatOrder,
  332. DialysisComputer,
  333. DoubleCheck,
  334. DialysisMonitoring,
  335. DialysisOff,
  336. AssessmentAfter,
  337. TreatmentOf,
  338. OperationStaff,
  339. LongDialog,
  340. PrescriptionDialog,
  341. AssessmentDialog,
  342. ThorougDialog,
  343. AcceptsDialog,
  344. PlaneDialog,
  345. TreatmentDialog,
  346. DoubleDialog,
  347. OrdersDialog,
  348. MonitDialog,
  349. ComputerDialog
  350. },
  351. data() {
  352. return {
  353. loading: true,
  354. show_fixed_nav: false,
  355. patient_id: 0,
  356. date: 0,
  357. menuList: [
  358. { value: "2", label: " 透析处方", showPopup: false },
  359. { value: "3", label: " 接诊评估", showPopup: false },
  360. { value: "4", label: " 透前评估", showPopup: false },
  361. { value: "5", label: " 临时医嘱", showPopup: false },
  362. { value: "6", label: " 透析上机", showPopup: false },
  363. { value: "1", label: " 双人核对", showPopup: false },
  364. { value: "7", label: " 透析监测", showPopup: false },
  365. { value: "8", label: " 透析下机", showPopup: false },
  366. { value: "9", label: " 透后评估", showPopup: false },
  367. { value: "10", label: " 治疗小结", showPopup: false }
  368. ],
  369. operators: [], //操作人
  370. patient: {}, // 患者信息
  371. schedual: {}, // 患者排班信息
  372. prescription: {}, // 透析处方
  373. solution: {}, // 透析方案
  374. receiver_treatment_access: {}, // 接诊评估
  375. predialysis_evaluation: {}, // 透前评估
  376. last_predialysis_evaluation: {}, // 上次透前评估
  377. doctor_advices: [], // 临时医嘱
  378. advice_groups: [], // 对 doctor_advices 进行分组后的组列表,元素为 { group_no, start_time, advices:[advice object] }
  379. double_check: {}, // 双人核对
  380. assessment_after_dislysis: {}, // 透后评估
  381. last_assessment_after_dislysis: {}, // 上次透后评估
  382. treatment_summary: {}, // 治疗小结
  383. monitor_records: [], // 透析监测
  384. last_monitor_record: {
  385. id: 0,
  386. operate_time: new Date().getTime(),
  387. sodium_concentration: "",
  388. dialysate_temperature: ""
  389. }, // 上一次透析的监测记录
  390. dialysis_order: {}, // 透析记录
  391. admin_users: [], //系统用户列表
  392. devices: [], //设备
  393. device_numbers: [], // 床位号
  394. admin_user_map: {}, // {user_id: admin_user object}
  395. device_map: {}, // {device_id: device}
  396. device_number_map: {} // {device_number_id: device_number}
  397. };
  398. },
  399. computed: {
  400. stepData: function() {
  401. var steps = [
  402. { title: "透析处方", name: "prescription", value: 0 },
  403. { title: "接诊评估", name: "accepts_assessment", value: 0 },
  404. { title: "透前评估", name: "assessment_before", value: 0 },
  405. { title: "临时医嘱", name: "stat_order", value: 0 },
  406. { title: "透析上机", name: "dialysis_computer", value: 0 },
  407. { title: "双人核对", name: "double_check", value: 0 },
  408. { title: "透析监测", name: "dialysis_monitoring", value: 0 },
  409. { title: "透析下机", name: "dialysis_off", value: 0 },
  410. { title: "透后评估", name: "assessment_after", value: 0 },
  411. { title: "治疗小结", name: "treatment_of", value: 0 }
  412. ];
  413. if (!isNaN(this.prescription.id) && this.prescription.id > 0) {
  414. steps[0].value = 1;
  415. }
  416. if (
  417. !isNaN(this.receiver_treatment_access.id) &&
  418. this.receiver_treatment_access.id > 0
  419. ) {
  420. steps[1].value = 1;
  421. }
  422. if (
  423. typeof this.predialysis_evaluation.id != "undefined" &&
  424. !isNaN(this.predialysis_evaluation.id) &&
  425. this.predialysis_evaluation.id > 0
  426. ) {
  427. steps[2].value = 1;
  428. }
  429. if (this.doctor_advices.length > 0) {
  430. steps[3].value = 1;
  431. }
  432. if (!isNaN(this.dialysis_order.id) && this.dialysis_order.id > 0) {
  433. steps[4].value = 1;
  434. if (this.dialysis_order.stage == 2) {
  435. steps[7].value = 1;
  436. }
  437. }
  438. if (
  439. !isNaN(this.double_check.creater) &&
  440. this.double_check.creater > 0 &&
  441. !isNaN(this.double_check.modifier) &&
  442. this.double_check.modifier > 0
  443. ) {
  444. steps[5].value = 1;
  445. }
  446. if (this.monitor_records.length > 0) {
  447. steps[6].value = 1;
  448. }
  449. if (
  450. !isNaN(this.assessment_after_dislysis.id) &&
  451. this.assessment_after_dislysis.id > 0
  452. ) {
  453. steps[8].value = 1;
  454. }
  455. if (!isNaN(this.treatment_summary.id) && this.treatment_summary.id > 0) {
  456. steps[9].value = 1;
  457. }
  458. return steps;
  459. }
  460. },
  461. created() {
  462. var patient_id = this.$route.query.patient_id;
  463. var date = this.$route.query.date;
  464. this.patient_id = patient_id;
  465. this.date = date;
  466. this.requestDialysisRecord();
  467. },
  468. mounted() {
  469. window.addEventListener("scroll", this.handleScroll);
  470. },
  471. watch: {
  472. doctor_advices: function() {
  473. this.$refs.stat_order.setAdvices(this.doctor_advices);
  474. },
  475. monitor_records: function() {
  476. this.$refs.monitoring.setRecords(this.monitor_records);
  477. },
  478. $route: "requestDialysisRecord"
  479. },
  480. methods: {
  481. handleScroll: function() {
  482. var scrollTop =
  483. window.pageYOffset ||
  484. document.documentElement.scrollTop ||
  485. document.body.scrollTop;
  486. this.show_fixed_nav = scrollTop > 160;
  487. },
  488. didAddMonitor(monitor) {
  489. this.monitor_records.push(monitor);
  490. this.monitor_records.sort((a, b) => b.operate_time - a.operate_time);
  491. // for (let index = 0; index < this.monitor_records.length; index++) {
  492. // const record = this.monitor_records[index];
  493. // if (record.operate_time <= monitor.operate_time) {
  494. // this.monitor_records.splice(index, 0, monitor)
  495. // break
  496. // }
  497. // }
  498. this.last_monitor_record = monitor;
  499. },
  500. didEditMonitor(monitor) {
  501. var mrl = this.monitor_records.length;
  502. var monitor_index = -1;
  503. for (let index = 0; index < mrl; index++) {
  504. if (this.monitor_records[index].id == monitor.id) {
  505. monitor_index = index;
  506. break;
  507. }
  508. }
  509. console.log(monitor);
  510. console.log(this.monitor_records[monitor_index]);
  511. this.monitor_records[monitor_index].arterial_pressure =
  512. monitor.arterial_pressure;
  513. this.monitor_records[monitor_index].blood_flow_volume =
  514. monitor.blood_flow_volume;
  515. this.monitor_records[monitor_index].breathing_rate =
  516. monitor.breathing_rate;
  517. this.monitor_records[monitor_index].dialysate_temperature =
  518. monitor.dialysate_temperature;
  519. this.monitor_records[monitor_index].diastolic_bp = monitor.diastolic_bp;
  520. this.monitor_records[monitor_index].displacement_quantity =
  521. monitor.displacement_quantity;
  522. this.monitor_records[monitor_index].dispose = monitor.dispose;
  523. this.monitor_records[monitor_index].ktv = monitor.ktv;
  524. this.monitor_records[monitor_index].monitor_date = monitor.monitor_date;
  525. this.monitor_records[monitor_index].monitoring_nurse =
  526. monitor.monitoring_nurse;
  527. this.monitor_records[monitor_index].operate_time = monitor.operate_time;
  528. this.monitor_records[monitor_index].pulse_frequency =
  529. monitor.pulse_frequency;
  530. this.monitor_records[monitor_index].replacement_rate =
  531. monitor.replacement_rate;
  532. this.monitor_records[monitor_index].result = monitor.result;
  533. this.monitor_records[monitor_index].sodium_concentration =
  534. monitor.sodium_concentration;
  535. this.monitor_records[monitor_index].symptom = monitor.symptom;
  536. this.monitor_records[monitor_index].systolic_bp = monitor.systolic_bp;
  537. this.monitor_records[monitor_index].transmembrane_pressure =
  538. monitor.transmembrane_pressure;
  539. this.monitor_records[monitor_index].ultrafiltration_rate =
  540. monitor.ultrafiltration_rate;
  541. this.monitor_records[monitor_index].ultrafiltration_volume =
  542. monitor.ultrafiltration_volume;
  543. this.monitor_records[monitor_index].venous_pressure =
  544. monitor.venous_pressure;
  545. this.monitor_records[monitor_index].diastolic_blood_pressure =
  546. monitor.diastolic_blood_pressure;
  547. this.monitor_records[monitor_index].systolic_blood_pressure =
  548. monitor.systolic_blood_pressure;
  549. this.monitor_records.sort((a, b) => b.operate_time - a.operate_time);
  550. // if (monitor_index >= 0) {
  551. // var record = this.monitor_records[monitor_index]
  552. //
  553. // this.monitor_records.splice(monitor_index, 1)
  554. // if(this.monitor_records.length == 0){
  555. // this.monitor_records.splice(0, 0, monitor)
  556. // }else {
  557. //
  558. // for (let index = 0; index < this.monitor_records.length; index++) {
  559. // const temp = this.monitor_records[index];
  560. // if (temp.operate_time <= monitor.operate_time) {
  561. // this.monitor_records.splice(index, 0, monitor)
  562. // break
  563. // }
  564. // }
  565. // }
  566. // }
  567. },
  568. didDelMonitor(record_id) {
  569. var mrl = this.monitor_records.length;
  570. for (let index = 0; index < mrl; index++) {
  571. if (this.monitor_records[index].id == record_id) {
  572. this.monitor_records.splice(index, 1);
  573. break;
  574. }
  575. }
  576. },
  577. menuClick: function(popupIndex) {
  578. this.index = popupIndex;
  579. if (popupIndex >= 0) {
  580. this.menuList[popupIndex].showPopup = true;
  581. }
  582. if (
  583. popupIndex == 1 &&
  584. typeof this.$refs.prescription_dialog != "undefined"
  585. ) {
  586. this.$refs.prescription_dialog.open();
  587. } else if (
  588. popupIndex == 3 &&
  589. typeof this.$refs.assessment_dialog != "undefined"
  590. ) {
  591. this.$refs.assessment_dialog.open();
  592. } else if (
  593. popupIndex == 4 &&
  594. typeof this.$refs.orders_dialog != "undefined"
  595. ) {
  596. // this.$refs.orders_dialog.open();
  597. } else if (
  598. popupIndex == 0 &&
  599. typeof this.$refs.computer_dialog != "undefined"
  600. ) {
  601. this.$refs.computer_dialog.open();
  602. } else if (
  603. popupIndex == 6 &&
  604. typeof this.$refs.monit_dialog != "undefined"
  605. ) {
  606. this.$refs.monit_dialog.open();
  607. } else if (
  608. popupIndex == 7 &&
  609. typeof this.$refs.plane_dialog != "undefined"
  610. ) {
  611. this.$refs.plane_dialog.open();
  612. } else if (
  613. popupIndex == 8 &&
  614. typeof this.$refs.thoroug_dialog != "undefined"
  615. ) {
  616. this.$refs.thoroug_dialog.open();
  617. } else if (
  618. popupIndex == 9 &&
  619. typeof this.$refs.treatment_dialog != "undefined"
  620. ) {
  621. this.$refs.treatment_dialog.open();
  622. }
  623. },
  624. popupDidHide: function(popupIndex) {
  625. this.index = -1;
  626. },
  627. closeDialog(index) {
  628. this.index = -1;
  629. this.menuList[index].showPopup = false;
  630. },
  631. refresh() {
  632. var dateStr = parseTime(this.$route.query.date, "{y}-{m}-{d}");
  633. var params = {
  634. patient_id: this.$route.query.patient_id,
  635. date: dateStr
  636. };
  637. getDialysisRecord(params).then(rs => {
  638. var resp = rs.data;
  639. console.log(resp);
  640. if (resp.state == 1) {
  641. var patient = resp.data.patient; // 患者信息
  642. var schedual = resp.data.schedual; // 患者排班信息
  643. var prescription = resp.data.prescription; // 透析处方
  644. var solution = resp.data.solution; // 透析方案
  645. var receiver_treatment_access = resp.data.receiver_treatment_access; // 接诊评估
  646. var predialysis_evaluation = resp.data.predialysis_evaluation; // 透前评估
  647. var doctor_advices = resp.data.doctor_advices; // 临时医嘱
  648. var double_check = resp.data.double_check; // 双人核对
  649. var assessment_after_dislysis = resp.data.assessment_after_dislysis; // 透后评估
  650. var treatment_summary = resp.data.treatment_summary; // 治疗小结
  651. var monitor_records = resp.data.monitor_records; // 透析监测
  652. var dialysis_order = resp.data.dialysis_order; // 透析记录
  653. var operators = resp.data.operators; // 操作人
  654. var last_predialysis_evaluation =
  655. resp.data.last_predialysis_evaluation; // 上一次透前评估
  656. var last_assessment_after_dislysis =
  657. resp.data.last_assessment_after_dislysis; // 上一次透前评估
  658. var last_monitor_record = resp.data.last_monitor_record;
  659. this.patient = patient;
  660. this.schedual = schedual == null ? {} : schedual;
  661. this.prescription = prescription == null ? { id: "" } : prescription;
  662. this.solution = solution == null ? { id: "" } : solution;
  663. this.receiver_treatment_access =
  664. receiver_treatment_access == null
  665. ? { id: "" }
  666. : receiver_treatment_access;
  667. this.predialysis_evaluation =
  668. predialysis_evaluation == null ? {} : predialysis_evaluation;
  669. this.last_predialysis_evaluation =
  670. last_predialysis_evaluation == null
  671. ? {}
  672. : last_predialysis_evaluation;
  673. this.doctor_advices = doctor_advices == null ? [] : doctor_advices;
  674. if (this.doctor_advices.length > 0) {
  675. var group = this.newAdviceGroupObject();
  676. var initGroupBlock = function(group, advice) {
  677. group.group_no = advice.groupno;
  678. // group.start_time = advice.start_time
  679. // group.advice_doctor = advice.advice_doctor
  680. // group.exec_staff = advice.execution_staff
  681. // group.exec_time = advice.execution_time
  682. // group.checker = advice.checker
  683. };
  684. for (let index = 0; index < this.doctor_advices.length; index++) {
  685. const advice = this.doctor_advices[index];
  686. if (advice.groupno == 0) {
  687. // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  688. if (advice.parent_id > 0) {
  689. if (this.advice_groups.length > 0) {
  690. var parent_group = this.advice_groups[
  691. this.advice_groups.length - 1
  692. ];
  693. if (parent_group.advices.length > 0) {
  694. if (parent_group.advices[0].id == advice.parent_id) {
  695. parent_group.advices.push(advice);
  696. }
  697. }
  698. }
  699. continue;
  700. } else {
  701. if (group.group_no > 0) {
  702. this.advice_groups.push(group);
  703. group = this.newAdviceGroupObject();
  704. }
  705. initGroupBlock(group, advice);
  706. group.advices.push(advice);
  707. this.advice_groups.push(group);
  708. group = this.newAdviceGroupObject();
  709. continue;
  710. }
  711. }
  712. if (group.group_no > 0 && group.group_no != advice.groupno) {
  713. this.advice_groups.push(group);
  714. group = this.newAdviceGroupObject();
  715. }
  716. if (group.group_no == 0) {
  717. initGroupBlock(group, advice);
  718. }
  719. if (group.group_no == advice.groupno) {
  720. group.advices.push(advice);
  721. }
  722. }
  723. if (group.group_no > 0) {
  724. // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  725. this.advice_groups.push(group);
  726. }
  727. // console.log(this.advice_groups)
  728. }
  729. this.double_check = double_check == null ? { id: "" } : double_check;
  730. this.assessment_after_dislysis =
  731. assessment_after_dislysis == null
  732. ? { id: "" }
  733. : assessment_after_dislysis;
  734. this.last_assessment_after_dislysis =
  735. last_assessment_after_dislysis == null
  736. ? { id: "" }
  737. : last_assessment_after_dislysis;
  738. this.treatment_summary =
  739. treatment_summary == null ? { id: "" } : treatment_summary;
  740. this.monitor_records = monitor_records == null ? [] : monitor_records;
  741. this.last_monitor_record =
  742. last_monitor_record == null
  743. ? this.last_monitor_record
  744. : last_monitor_record;
  745. this.dialysis_order =
  746. dialysis_order == null ? { id: "" } : dialysis_order;
  747. this.operators = operators;
  748. this.$refs.stat_order.setAdvices(this.doctor_advices);
  749. this.$refs.monitoring.setRecords(this.monitor_records);
  750. this.title = patient.name;
  751. dialysisGlobalConfig().then(rs => {
  752. var res = rs.data;
  753. if (res.state == 1) {
  754. // console.log(res)
  755. // this.$refs.detail_menu.setGlobalConfig(res.data)
  756. this.admin_users = res.data.admin_users;
  757. this.devices = res.data.devices;
  758. this.device_numbers = res.data.device_numbers;
  759. var device_map = {};
  760. for (let index = 0; index < this.devices.length; index++) {
  761. const device = this.devices[index];
  762. device_map[device.id] = device;
  763. }
  764. this.device_map = device_map;
  765. var admin_map = {};
  766. for (let index = 0; index < this.admin_users.length; index++) {
  767. const admin = this.admin_users[index];
  768. admin_map[admin.id] = admin;
  769. }
  770. this.admin_user_map = admin_map;
  771. var device_number_map = {};
  772. for (let index = 0; index < this.device_numbers.length; index++) {
  773. const device_number = this.device_numbers[index];
  774. device_number_map[device_number.id] = device_number;
  775. }
  776. this.device_number_map = device_number_map;
  777. }
  778. this.loading = false;
  779. });
  780. } else {
  781. this.$toast({
  782. message: resp.msg
  783. });
  784. this.loading = false;
  785. }
  786. });
  787. },
  788. requestDialysisRecord() {
  789. var dateStr = parseTime(this.date, "{y}-{m}-{d}");
  790. var params = {
  791. patient_id: this.patient_id,
  792. date: dateStr
  793. };
  794. getDialysisRecord(params).then(rs => {
  795. var resp = rs.data;
  796. console.log(resp);
  797. if (resp.state == 1) {
  798. var patient = resp.data.patient; // 患者信息
  799. var schedual = resp.data.schedual; // 患者排班信息
  800. var prescription = resp.data.prescription; // 透析处方
  801. var solution = resp.data.solution; // 透析方案
  802. var receiver_treatment_access = resp.data.receiver_treatment_access; // 接诊评估
  803. var predialysis_evaluation = resp.data.predialysis_evaluation; // 透前评估
  804. var doctor_advices = resp.data.doctor_advices; // 临时医嘱
  805. var double_check = resp.data.double_check; // 双人核对
  806. var assessment_after_dislysis = resp.data.assessment_after_dislysis; // 透后评估
  807. var treatment_summary = resp.data.treatment_summary; // 治疗小结
  808. var monitor_records = resp.data.monitor_records; // 透析监测
  809. var dialysis_order = resp.data.dialysis_order; // 透析记录
  810. var operators = resp.data.operators; // 操作人
  811. var last_predialysis_evaluation =
  812. resp.data.last_predialysis_evaluation; // 上一次透前评估
  813. var last_assessment_after_dislysis =
  814. resp.data.last_assessment_after_dislysis; // 上一次透前评估
  815. var last_monitor_record = resp.data.last_monitor_record;
  816. this.patient = patient;
  817. this.schedual = schedual == null ? {} : schedual;
  818. this.prescription = prescription == null ? { id: "" } : prescription;
  819. this.solution = solution == null ? { id: "" } : solution;
  820. this.receiver_treatment_access =
  821. receiver_treatment_access == null
  822. ? { id: "" }
  823. : receiver_treatment_access;
  824. this.predialysis_evaluation =
  825. predialysis_evaluation == null ? {} : predialysis_evaluation;
  826. this.last_predialysis_evaluation =
  827. last_predialysis_evaluation == null
  828. ? {}
  829. : last_predialysis_evaluation;
  830. this.doctor_advices = doctor_advices == null ? [] : doctor_advices;
  831. if (this.doctor_advices.length > 0) {
  832. var group = this.newAdviceGroupObject();
  833. var initGroupBlock = function(group, advice) {
  834. group.group_no = advice.groupno;
  835. // group.start_time = advice.start_time
  836. // group.advice_doctor = advice.advice_doctor
  837. // group.exec_staff = advice.execution_staff
  838. // group.exec_time = advice.execution_time
  839. // group.checker = advice.checker
  840. };
  841. for (let index = 0; index < this.doctor_advices.length; index++) {
  842. const advice = this.doctor_advices[index];
  843. if (advice.groupno == 0) {
  844. // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  845. if (advice.parent_id > 0) {
  846. if (this.advice_groups.length > 0) {
  847. var parent_group = this.advice_groups[
  848. this.advice_groups.length - 1
  849. ];
  850. if (parent_group.advices.length > 0) {
  851. if (parent_group.advices[0].id == advice.parent_id) {
  852. parent_group.advices.push(advice);
  853. }
  854. }
  855. }
  856. continue;
  857. } else {
  858. if (group.group_no > 0) {
  859. this.advice_groups.push(group);
  860. group = this.newAdviceGroupObject();
  861. }
  862. initGroupBlock(group, advice);
  863. group.advices.push(advice);
  864. this.advice_groups.push(group);
  865. group = this.newAdviceGroupObject();
  866. continue;
  867. }
  868. }
  869. if (group.group_no > 0 && group.group_no != advice.groupno) {
  870. this.advice_groups.push(group);
  871. group = this.newAdviceGroupObject();
  872. }
  873. if (group.group_no == 0) {
  874. initGroupBlock(group, advice);
  875. }
  876. if (group.group_no == advice.groupno) {
  877. group.advices.push(advice);
  878. }
  879. }
  880. if (group.group_no > 0) {
  881. // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  882. this.advice_groups.push(group);
  883. }
  884. // console.log(this.advice_groups)
  885. }
  886. this.double_check = double_check == null ? { id: "" } : double_check;
  887. this.assessment_after_dislysis =
  888. assessment_after_dislysis == null
  889. ? { id: "" }
  890. : assessment_after_dislysis;
  891. this.last_assessment_after_dislysis =
  892. last_assessment_after_dislysis == null
  893. ? { id: "" }
  894. : last_assessment_after_dislysis;
  895. this.treatment_summary =
  896. treatment_summary == null ? { id: "" } : treatment_summary;
  897. this.monitor_records = monitor_records == null ? [] : monitor_records;
  898. this.last_monitor_record =
  899. last_monitor_record == null
  900. ? this.last_monitor_record
  901. : last_monitor_record;
  902. this.dialysis_order =
  903. dialysis_order == null ? { id: "" } : dialysis_order;
  904. this.operators = operators;
  905. this.$refs.stat_order.setAdvices(this.doctor_advices);
  906. this.$refs.monitoring.setRecords(this.monitor_records);
  907. this.title = patient.name;
  908. dialysisGlobalConfig().then(rs => {
  909. var res = rs.data;
  910. if (res.state == 1) {
  911. // console.log(res)
  912. // this.$refs.detail_menu.setGlobalConfig(res.data)
  913. this.admin_users = res.data.admin_users;
  914. this.devices = res.data.devices;
  915. this.device_numbers = res.data.device_numbers;
  916. var device_map = {};
  917. for (let index = 0; index < this.devices.length; index++) {
  918. const device = this.devices[index];
  919. device_map[device.id] = device;
  920. }
  921. this.device_map = device_map;
  922. var admin_map = {};
  923. for (let index = 0; index < this.admin_users.length; index++) {
  924. const admin = this.admin_users[index];
  925. admin_map[admin.id] = admin;
  926. }
  927. this.admin_user_map = admin_map;
  928. var device_number_map = {};
  929. for (let index = 0; index < this.device_numbers.length; index++) {
  930. const device_number = this.device_numbers[index];
  931. device_number_map[device_number.id] = device_number;
  932. }
  933. this.device_number_map = device_number_map;
  934. }
  935. this.loading = false;
  936. });
  937. } else {
  938. this.$toast({
  939. message: resp.msg
  940. });
  941. this.loading = false;
  942. }
  943. });
  944. },
  945. newAdviceGroupObject: function() {
  946. return Object.assign(
  947. {},
  948. {
  949. group_no: 0,
  950. // advice_doctor: 0,
  951. // start_time: 0,
  952. advices: []
  953. // exec_staff: 0,
  954. // exec_time: 0,
  955. // checker: 0,
  956. }
  957. );
  958. },
  959. closePrescriptionDialog: function() {
  960. this.closeDialog(1);
  961. this.scrollToView("prescription");
  962. },
  963. closeAcceptsAssessment: function() {
  964. this.closeDialog(2);
  965. this.scrollToView("accepts_assessment");
  966. },
  967. closeAssessmentBefore: function() {
  968. this.closeDialog(3);
  969. this.scrollToView("assessment_before");
  970. },
  971. update_evaluation: function(evaluation) {
  972. this.predialysis_evaluation = evaluation;
  973. this.closeAssessmentBefore();
  974. },
  975. closeStatOrder: function() {
  976. this.closeDialog(4);
  977. this.scrollToView("stat_order");
  978. },
  979. closeDialysisComputer: function() {
  980. this.closeDialog(0);
  981. this.scrollToView("dialysis_computer");
  982. },
  983. closeDoubleCheck: function() {
  984. this.closeDialog(5);
  985. this.scrollToView("double_check");
  986. },
  987. closeMonitoring: function() {
  988. this.closeDialog(6);
  989. this.scrollToView("monitoring");
  990. },
  991. closeDialysisOff: function() {
  992. this.closeDialog(7);
  993. this.scrollToView("dialysis_off");
  994. },
  995. closeAssessmentAfter: function() {
  996. this.closeDialog(8);
  997. this.scrollToView("assessment_after");
  998. },
  999. closeTreatmentOf: function() {
  1000. this.closeDialog(9);
  1001. this.scrollToView("treatment_of");
  1002. },
  1003. scrollToView: function(id) {
  1004. document.body.scrollTop =
  1005. document.querySelector("#" + id).offsetTop - 100;
  1006. document.documentElement.scrollTop =
  1007. document.querySelector("#" + id).offsetTop - 100;
  1008. }
  1009. }
  1010. };
  1011. </script>
  1012. <style style="stylesheet/scss" lang="scss" scoped>
  1013. .mainContent {
  1014. position: relative;
  1015. .grid {
  1016. padding: 0.1rem 0 0.25rem 0;
  1017. .list {
  1018. ul {
  1019. @include display-flex;
  1020. @include align-items-center;
  1021. @include text-align;
  1022. @include justify-content-around;
  1023. li {
  1024. font-size: 0.24rem;
  1025. color: #5d6b7a;
  1026. margin-top: 0.35rem;
  1027. p {
  1028. line-height: 0.6rem;
  1029. color: #34495e;
  1030. font-size: 0.3rem;
  1031. }
  1032. img {
  1033. width: 1rem;
  1034. height: 1rem;
  1035. }
  1036. }
  1037. }
  1038. }
  1039. }
  1040. .fixedNav {
  1041. position: fixed;
  1042. right: 0;
  1043. top: 0;
  1044. left: 1.58rem;
  1045. background: #f18f68;
  1046. color: #fff;
  1047. font-size: 0.24rem;
  1048. z-index: 99;
  1049. padding: 0 0.1rem;
  1050. margin-top: 1.17rem;
  1051. @media only screen and (max-width: 812px) {
  1052. margin-top: 1.7rem;
  1053. }
  1054. ul {
  1055. @include display-flex;
  1056. @include align-items-center;
  1057. @include text-align;
  1058. @include box-sizing;
  1059. @include justify-content-between;
  1060. margin: 0.3rem 0;
  1061. li {
  1062. height: 0.6rem;
  1063. line-height: 0.6rem;
  1064. padding: 0 0.2rem;
  1065. border-radius: 30px;
  1066. font-size: 0.32rem;
  1067. cursor: pointer;
  1068. background: #f4aa8c;
  1069. &.active {
  1070. background: #f4aa8c;
  1071. }
  1072. }
  1073. }
  1074. }
  1075. }
  1076. </style>