血透系统pad前端

TodayTab.vue 62KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717
  1. <template>
  2. <div id="today_panel">
  3. <div v-loading="loading"
  4. element-loading-text="拼命加载中"
  5. element-loading-spinner="el-icon-loading"
  6. element-loading-background="rgba(0, 0, 0, 0.8)">
  7. <div class="grid">
  8. <div class="list">
  9. <ul>
  10. <li @click="menuClick(1)">
  11. <img src="@/assets/record/2.png"/>
  12. <p>透析处方</p>
  13. </li>
  14. <li @click="menuClick(2)">
  15. <img src="@/assets/record/3.png"/>
  16. <p>接诊评估</p>
  17. </li>
  18. <li @click="menuClick(3)">
  19. <img src="@/assets/record/4.png"/>
  20. <p>透前评估</p>
  21. </li>
  22. <li style="position: relative;" @click="menuClick(4)">
  23. <img src="@/assets/record/5.png"/>
  24. <span class="redpoint" v-if="getUnReadNum()">{{getUnReadNum()}}</span>
  25. <p>临时医嘱</p>
  26. </li>
  27. <li @click="menuClick(5)">
  28. <img src="@/assets/record/6.png"/>
  29. <p>双人核对</p>
  30. </li>
  31. </ul>
  32. </div>
  33. <div class="list">
  34. <ul>
  35. <li @click="menuClick(0)">
  36. <img src="@/assets/record/1.png"/>
  37. <p>透析上机</p>
  38. </li>
  39. <li @click="menuClick(6)">
  40. <img src="@/assets/record/7.png"/>
  41. <p>透析监测</p>
  42. </li>
  43. <li @click="menuClick(7)">
  44. <img src="@/assets/record/8.png"/>
  45. <p>透析下机</p>
  46. </li>
  47. <li @click="menuClick(8)">
  48. <img src="@/assets/record/9.png"/>
  49. <p>透后评估</p>
  50. </li>
  51. <li @click="menuClick(9)">
  52. <img src="@/assets/record/10.png"/>
  53. <p>治疗小结</p>
  54. </li>
  55. </ul>
  56. </div>
  57. </div>
  58. <div class="blueBorder"></div>
  59. <details-info title="基本信息" :patient="patient"
  60. :device_number="getDeviceNumber()"
  61. :step_data="stepData"></details-info>
  62. <div class="blueBorder"></div>
  63. <dialysis-prescription id="prescription" :prescription="prescription" :solution="solution" title="透析处方"
  64. :device_number_map="device_map"></dialysis-prescription>
  65. <div class="blueBorder"></div>
  66. <accepts-assessment id="accepts_assessment" :record="receiver_treatment_access" title="接诊评估"></accepts-assessment>
  67. <div class="blueBorder"></div>
  68. <assessment-before id="assessment_before" :record="predialysis_evaluation" ref="assessment_before"
  69. title="透前评估" :dry_weights="dryWeight"
  70. :last_predialysis="last_predialysis_evaluation"></assessment-before>
  71. <div class="blueBorder"></div>
  72. <stat-order id="stat_order" ref="stat_order" title="临时医嘱" :doctor_map="admin_user_map"
  73. :advice_groups="advice_groups"></stat-order>
  74. <div class="blueBorder"></div>
  75. <dialysis-computer id="dialysis_computer" ref="dialysis_computer" title="透析上机 " :record="dialysis_order"
  76. :admin_map="admin_user_map" :device_number_map="device_number_map"></dialysis-computer>
  77. <div class="blueBorder"></div>
  78. <double-check id="double_check" ref="double_check" title="双人核对 " :record="double_check"></double-check>
  79. <div class="blueBorder"></div>
  80. <dialysis-monitoring id="monitoring" ref="monitoring" title="透析监测"></dialysis-monitoring>
  81. <div class="blueBorder"></div>
  82. <dialysis-off id="dialysis_off" ref="dialysis_off" title="透析下机 " :record="dialysis_order"
  83. :admin_map="admin_user_map"></dialysis-off>
  84. <div class="blueBorder"></div>
  85. <assessment-after
  86. id="assessment_after"
  87. ref="assessment_after"
  88. title="透后评估"
  89. :record="assessment_after_dislysis"
  90. :predialysis="predialysis_evaluation"
  91. ></assessment-after>
  92. <div class="blueBorder"></div>
  93. <treatment-of id="treatment_of" ref="treatment_of" title="治疗小结" :record="treatment_summary"></treatment-of>
  94. </div>
  95. <van-popup title="透析处方" v-model="menuList[1].showPopup" :overlay="true" :close-on-click-overlay="false">
  96. <prescription-dialog v-if="prescription_dialog_reset == true" :patient_prop="patient" :solution_prop="solution" :machines_prop="devices" :config="config"
  97. :prescription_prop="prescription" @finish="closePrescriptionDialog" :operators="operators"
  98. :types="goodTypes" :info="goodInfos" :status="status" :targetAdvices="longAdvices"
  99. :waitUploadAdvices="waitUploadAdvices" :is_open="is_open"
  100. @close="closePrescriptionDialog" @prescription="prescriptionFunc"
  101. :admin_users_prop="admin_users"
  102. :predialysis="predialysis_evaluation"
  103. :last_predialysis="last_predialysis_evaluation"
  104. :record="assessment_after_dislysis"
  105. :last_record="last_assessment_after_dislysis"
  106. :last_prescription="last_prescription"
  107. :dry_weight="dryWeight"
  108. :system_prescription ="system_prescription"
  109. :schedual="schedual"
  110. @longSolution="longSolutionFunc" ref="prescription_dialog"></prescription-dialog>
  111. </van-popup>
  112. <van-popup
  113. title="接诊评估"
  114. v-model="menuList[2].showPopup"
  115. :overlay="true"
  116. :close-on-click-overlay="false"
  117. >
  118. <accepts-dialog
  119. :accepts="receiver_treatment_access"
  120. :patient_prop="patient"
  121. @finish="closeAcceptsAssessment"
  122. @close="closeAcceptsAssessment"
  123. ></accepts-dialog>
  124. </van-popup>
  125. <van-popup title="透前评估" v-model="menuList[3].showPopup" :overlay="true" :close-on-click-overlay="false">
  126. <assessment-dialog :predialysis="predialysis_evaluation" :last_predialysis="last_predialysis_evaluation"
  127. :dry_weight="dryWeight"
  128. :patient_prop="patient" @evaluation="update_evaluation" @close="closeAssessmentBefore"
  129. :admin_users_prop="admin_users"
  130. ref="assessment_dialog" @weight_update="weightFunc"></assessment-dialog>
  131. </van-popup>
  132. <van-popup
  133. title="临时医嘱"
  134. v-model="menuList[4].showPopup"
  135. :overlay="true"
  136. :close-on-click-overlay="false"
  137. >
  138. <orders-dialog
  139. :patient_prop="patient"
  140. :advice_groups="advice_groups"
  141. :advice_list_prop="doctor_advices"
  142. :admin_users_prop="admin_users"
  143. :special_premission="special_premission"
  144. @orderDialog="closeStatOrder"
  145. ref="orders_dialog"
  146. ></orders-dialog>
  147. </van-popup>
  148. <van-popup
  149. title="双人核对"
  150. v-model="menuList[5].showPopup"
  151. :overlay="true"
  152. :close-on-click-overlay="false"
  153. >
  154. <double-dialog
  155. :patient_prop="patient"
  156. :record="double_check"
  157. :admin_users_prop="admin_users"
  158. @did_update="closeDoubleCheck"
  159. @close="closeDoubleCheck"
  160. ></double-dialog>
  161. </van-popup>
  162. <van-popup
  163. title="透析上机"
  164. v-model="menuList[0].showPopup"
  165. :overlay="true"
  166. :close-on-click-overlay="false"
  167. >
  168. <computer-dialog
  169. :schedule="schedual"
  170. :patient_prop="patient"
  171. :record="dialysis_order"
  172. :admins="admin_users"
  173. :device_numbers="device_numbers"
  174. :admin_map="admin_user_map"
  175. :special_premission="special_premission"
  176. :device_number_map="device_number_map"
  177. @did_start="closeDialysisComputer"
  178. @did_add_monitor="didAddMonitor"
  179. @close="closeDialysisComputerclose"
  180. ref="computer_dialog"
  181. ></computer-dialog>
  182. </van-popup>
  183. <van-popup
  184. title="透析监测"
  185. v-model="menuList[6].showPopup"
  186. :overlay="true"
  187. :close-on-click-overlay="false"
  188. >
  189. <monit-dialog v-if="monit_dialog_reset"
  190. :monitor_records="monitor_records"
  191. :last_monitor_record="last_monitor_record"
  192. :patient="patient"
  193. :order="dialysis_order"
  194. @did_add_monitor="didAddMonitor"
  195. @did_edit_monitor="didEditMonitor"
  196. @did_delete_monitor="didDelMonitor"
  197. @close="closeMonitoring"
  198. ref="monit_dialog"
  199. ></monit-dialog>
  200. </van-popup>
  201. <van-popup title="透析下机" v-model="menuList[7].showPopup" :overlay="true" :close-on-click-overlay="false">
  202. <plane-dialog :patient_prop="patient" :record="dialysis_order" :last_monitor_record="last_monitor_record"
  203. :admins="admin_users" :admin_map="admin_user_map"
  204. :special_premission="special_premission" :prescription_prop="prescription"
  205. @did_off="closeDialysisOff" @close="closeDialysisOffclose" ref="plane_dialog"></plane-dialog>
  206. </van-popup>
  207. <van-popup
  208. title="透后评估"
  209. v-model="menuList[8].showPopup"
  210. :overlay="true"
  211. :close-on-click-overlay="false"
  212. >
  213. <thoroug-dialog
  214. v-if="thoroug_dialog_reset == true"
  215. :patient_prop="patient"
  216. :record="assessment_after_dislysis"
  217. :last_record="last_assessment_after_dislysis"
  218. :predialysis="predialysis_evaluation"
  219. @did_update="closeAssessmentAfter"
  220. @close="closeAssessmentAfter"
  221. ref="thoroug_dialog"
  222. ></thoroug-dialog>
  223. </van-popup>
  224. <van-popup title="治疗小结" v-model="menuList[9].showPopup" :overlay="true" :close-on-click-overlay="false">
  225. <treatment-dialog :patient_prop="patient" :record="treatment_summary" @did_update="updateTreatmentOf"
  226. @close="closeTreatmentOf" ref="treatment_dialog"></treatment-dialog>
  227. </van-popup>
  228. <el-button
  229. class="goTop"
  230. v-show="goTopShow"
  231. @click="goTop"
  232. type="primary"
  233. icon="el-icon-arrow-up"
  234. circle
  235. style="position:fixed;right:50px;bottom:50px;"
  236. ></el-button>
  237. </div>
  238. </template>
  239. <script>
  240. import DetailsInfo from './detailsInfo'
  241. import DialysisPrescription from './dialysisPrescription'
  242. import PastData from './pastData'
  243. import AcceptsAssessment from './acceptsAssessment'
  244. import AssessmentBefore from './assessmentBefore'
  245. import StatOrder from './statOrder'
  246. import DialysisComputer from './dialysisComputer'
  247. import DoubleCheck from './doubleCheck'
  248. import DialysisMonitoring from './dialysisMonitoring'
  249. import DialysisOff from './dialysisOff'
  250. import AssessmentAfter from './assessmentAfter'
  251. import TreatmentOf from './treatmentOf'
  252. import OperationStaff from './operationStaff'
  253. import LongDialog from '../dialog/LongDialog'
  254. import PrescriptionDialog from '../dialog/PrescriptionDialog'
  255. import AssessmentDialog from '../dialog/AssessmentDialog'
  256. import ThorougDialog from '../dialog/ThorougDialog'
  257. import AcceptsDialog from '../dialog/AcceptsDialog'
  258. import PlaneDialog from '../dialog/PlaneDialog'
  259. import TreatmentDialog from '../dialog/TreatmentDialog'
  260. import DoubleDialog from '../dialog/DoubleDialog'
  261. import OrdersDialog from '../dialog/OrdersDialog'
  262. import MonitDialog from '../dialog/MonitDialog'
  263. import ComputerDialog from '../dialog/ComputerDialog'
  264. import {CreateGroupAdvice, dialysisGlobalConfig, getDialysisRecord} from '@/api/dialysis'
  265. import {GetRemindLongAdvice} from '@/api/advice'
  266. import {parseTime} from '@/utils'
  267. export default {
  268. name: 'TodayTab',
  269. components: {
  270. DetailsInfo,
  271. DialysisPrescription,
  272. PastData,
  273. AcceptsAssessment,
  274. AssessmentBefore,
  275. StatOrder,
  276. DialysisComputer,
  277. DoubleCheck,
  278. DialysisMonitoring,
  279. DialysisOff,
  280. AssessmentAfter,
  281. TreatmentOf,
  282. OperationStaff,
  283. LongDialog,
  284. PrescriptionDialog,
  285. AssessmentDialog,
  286. ThorougDialog,
  287. AcceptsDialog,
  288. PlaneDialog,
  289. TreatmentDialog,
  290. DoubleDialog,
  291. OrdersDialog,
  292. MonitDialog,
  293. ComputerDialog
  294. },
  295. data () {
  296. return {
  297. loading: true,
  298. // show_fixed_nav: false,
  299. patient_id: 0,
  300. date: 0,
  301. menuList: [
  302. {value: '2', label: ' 透析处方', showPopup: false},
  303. {value: '3', label: ' 接诊评估', showPopup: false},
  304. {value: '4', label: ' 透前评估', showPopup: false},
  305. {value: '5', label: ' 临时医嘱', showPopup: false},
  306. {value: '6', label: ' 透析上机', showPopup: false},
  307. {value: '1', label: ' 双人核对', showPopup: false},
  308. {value: '7', label: ' 透析监测', showPopup: false},
  309. {value: '8', label: ' 透析下机', showPopup: false},
  310. {value: '9', label: ' 透后评估', showPopup: false},
  311. {value: '10', label: ' 治疗小结', showPopup: false}
  312. ],
  313. isPullData: 1,
  314. config: {}, // 库存自动扣减
  315. operators: [], // 操作人
  316. patient: {}, // 患者信息
  317. schedual: {}, // 患者排班信息
  318. prescription: {}, // 透析处方
  319. solution: {}, // 透析方案
  320. last_prescription:{},
  321. system_prescription:{},//系统透析模版
  322. thoroug_dialog_reset: true,
  323. prescription_dialog_reset: true,
  324. monit_dialog_reset: true,
  325. receiver_treatment_access: {}, // 接诊评估
  326. predialysis_evaluation: {}, // 透前评估
  327. last_predialysis_evaluation: {}, // 上次透前评估
  328. doctor_advices: [], // 临时医嘱
  329. advice_groups: [], // 对 doctor_advices 进行分组后的组列表,元素为 { group_no, start_time, advices:[advice object] }
  330. double_check: {}, // 双人核对
  331. assessment_after_dislysis: {}, // 透后评估
  332. last_assessment_after_dislysis: {}, // 上次透后评估
  333. treatment_summary: {}, // 治疗小结
  334. monitor_records: [], // 透析监测
  335. special_premission: [],
  336. last_monitor_record: {
  337. id: 0,
  338. operate_time: new Date().getTime(),
  339. sodium_concentration: '',
  340. dialysate_temperature: ''
  341. }, // 上一次透析的监测记录
  342. dialysis_order: {}, // 透析记录
  343. admin_users: [], // 系统用户列表
  344. devices: [], // 设备
  345. device_numbers: [], // 床位号
  346. admin_user_map: {}, // {user_id: admin_user object}
  347. device_map: {}, // {device_id: device}
  348. device_number_map: {}, // {device_number_id: device_number}
  349. scrollTop: '',
  350. goTopShow: false,
  351. goodTypes: [],
  352. goodInfos: [],
  353. dryWeight: {},
  354. longAdvices: [],
  355. waitUploadAdvices: [],
  356. is_open: 0,
  357. targetAdvices: [],
  358. status: '',
  359. }
  360. },
  361. computed: {
  362. stepData: function () {
  363. var steps = [
  364. {title: '透析处方', name: 'prescription', value: 0},
  365. {title: '接诊评估', name: 'accepts_assessment', value: 0},
  366. {title: '透前评估', name: 'assessment_before', value: 0},
  367. {title: '临时医嘱', name: 'stat_order', value: 0},
  368. {title: '双人核对', name: 'double_check', value: 0},
  369. {title: '透析上机', name: 'dialysis_computer', value: 0},
  370. {title: '透析监测', name: 'dialysis_monitoring', value: 0},
  371. {title: '透析下机', name: 'dialysis_off', value: 0},
  372. {title: '透后评估', name: 'assessment_after', value: 0},
  373. {title: '治疗小结', name: 'treatment_of', value: 0}
  374. ]
  375. if (!isNaN(this.prescription.id) && this.prescription.id > 0 && this.prescription.creater > 0) {
  376. steps[0].value = 1
  377. }
  378. if (
  379. !isNaN(this.receiver_treatment_access.id) &&
  380. this.receiver_treatment_access.id > 0
  381. ) {
  382. steps[1].value = 1
  383. }
  384. if (typeof this.predialysis_evaluation.id != 'undefined' && !isNaN(this.predialysis_evaluation.id) && this.predialysis_evaluation.id > 0 && this.predialysis_evaluation.creater > 0) {
  385. steps[2].value = 1
  386. }
  387. if (this.advice_groups.length > 0) {
  388. steps[3].value = 1
  389. }
  390. if (!isNaN(this.dialysis_order.id) && this.dialysis_order.id > 0) {
  391. steps[5].value = 1
  392. if (this.dialysis_order.stage == 2) {
  393. steps[7].value = 1
  394. }
  395. }
  396. if (
  397. !isNaN(this.double_check.creater) &&
  398. this.double_check.creater > 0 &&
  399. !isNaN(this.double_check.modifier) &&
  400. this.double_check.modifier > 0
  401. ) {
  402. steps[4].value = 1
  403. }
  404. if (this.monitor_records.length > 0) {
  405. steps[6].value = 1
  406. }
  407. if (
  408. !isNaN(this.assessment_after_dislysis.id) && this.assessment_after_dislysis.id > 0 && this.assessment_after_dislysis.creater > 0) {
  409. steps[8].value = 1
  410. }
  411. if (!isNaN(this.treatment_summary.id) && this.treatment_summary.id > 0) {
  412. steps[9].value = 1
  413. }
  414. return steps
  415. }
  416. },
  417. created () {
  418. var patient_id = this.$route.query.patient_id
  419. var date = this.$route.query.date
  420. this.patient_id = patient_id
  421. this.date = date
  422. this.requestDialysisRecord()
  423. this.requestLongAdvice()
  424. this.goTop()
  425. },
  426. mounted () {
  427. window.addEventListener('scroll', this.handleScroll)
  428. },
  429. watch: {
  430. doctor_advices: function () {
  431. this.$refs.stat_order.setAdvices(this.doctor_advices)
  432. },
  433. monitor_records: function () {
  434. this.$refs.monitoring.setRecords(this.monitor_records)
  435. },
  436. // $route: 'requestDialysisRecord'
  437. },
  438. methods: {
  439. // handleScroll: function() {
  440. // var scrollTop =
  441. // window.pageYOffset ||
  442. // document.documentElement.scrollTop ||
  443. // document.body.scrollTop;
  444. // this.show_fixed_nav = scrollTop > 160;
  445. // },
  446. didAddMonitor (monitor) {
  447. this.monitor_records.push(monitor)
  448. this.monitor_records.sort((a, b) => b.operate_time - a.operate_time)
  449. this.monitor_records.reverse()
  450. this.$refs.monit_dialog.setRecords(this.monitor_records)
  451. this.last_monitor_record = monitor
  452. },
  453. didEditMonitor (monitor) {
  454. var mrl = this.monitor_records.length
  455. var monitor_index = -1
  456. for (let index = 0; index < mrl; index++) {
  457. if (this.monitor_records[index].id == monitor.id) {
  458. monitor_index = index
  459. break
  460. }
  461. }
  462. console.log(monitor)
  463. console.log(this.monitor_records[monitor_index])
  464. this.monitor_records[monitor_index].arterial_pressure =
  465. monitor.arterial_pressure
  466. this.monitor_records[monitor_index].blood_flow_volume =
  467. monitor.blood_flow_volume
  468. this.monitor_records[monitor_index].breathing_rate =
  469. monitor.breathing_rate
  470. this.monitor_records[monitor_index].dialysate_temperature =
  471. monitor.dialysate_temperature
  472. this.monitor_records[monitor_index].temperature =
  473. monitor.temperature
  474. this.monitor_records[monitor_index].diastolic_bp = monitor.diastolic_bp
  475. this.monitor_records[monitor_index].displacement_quantity =
  476. monitor.displacement_quantity
  477. this.monitor_records[monitor_index].dispose = monitor.dispose
  478. this.monitor_records[monitor_index].ktv = monitor.ktv
  479. this.monitor_records[monitor_index].monitor_date = monitor.monitor_date
  480. this.monitor_records[monitor_index].monitoring_nurse =
  481. monitor.monitoring_nurse
  482. this.monitor_records[monitor_index].operate_time = monitor.operate_time
  483. this.monitor_records[monitor_index].pulse_frequency =
  484. monitor.pulse_frequency
  485. this.monitor_records[monitor_index].replacement_rate =
  486. monitor.replacement_rate
  487. this.monitor_records[monitor_index].result = monitor.result
  488. this.monitor_records[monitor_index].sodium_concentration =
  489. monitor.sodium_concentration
  490. this.monitor_records[monitor_index].symptom = monitor.symptom
  491. this.monitor_records[monitor_index].systolic_bp = monitor.systolic_bp
  492. this.monitor_records[monitor_index].transmembrane_pressure =
  493. monitor.transmembrane_pressure
  494. this.monitor_records[monitor_index].ultrafiltration_rate =
  495. monitor.ultrafiltration_rate
  496. this.monitor_records[monitor_index].ultrafiltration_volume =
  497. monitor.ultrafiltration_volume
  498. this.monitor_records[monitor_index].venous_pressure =
  499. monitor.venous_pressure
  500. this.monitor_records[monitor_index].diastolic_blood_pressure =
  501. monitor.diastolic_blood_pressure
  502. this.monitor_records[monitor_index].systolic_blood_pressure =
  503. monitor.systolic_blood_pressure
  504. this.monitor_records[monitor_index].conductivity =
  505. monitor.conductivity
  506. this.monitor_records[monitor_index].displacement_flow_quantity =
  507. monitor.displacement_flow_quantity
  508. this.monitor_records.sort((a, b) => a.operate_time - b.operate_time)
  509. // if (monitor_index >= 0) {
  510. // var record = this.monitor_records[monitor_index]
  511. //
  512. // this.monitor_records.splice(monitor_index, 1)
  513. // if(this.monitor_records.length == 0){
  514. // this.monitor_records.splice(0, 0, monitor)
  515. // }else {
  516. //
  517. // for (let index = 0; index < this.monitor_records.length; index++) {
  518. // const temp = this.monitor_records[index];
  519. // if (temp.operate_time <= monitor.operate_time) {
  520. // this.monitor_records.splice(index, 0, monitor)
  521. // break
  522. // }
  523. // }
  524. // }
  525. // }
  526. },
  527. didDelMonitor (record_id) {
  528. var mrl = this.monitor_records.length
  529. for (let index = 0; index < mrl; index++) {
  530. if (this.monitor_records[index].id == record_id) {
  531. this.monitor_records.splice(index, 1)
  532. break
  533. }
  534. }
  535. },
  536. menuClick: function (popupIndex) {
  537. this.index = popupIndex
  538. if (popupIndex >= 0) {
  539. this.menuList[popupIndex].showPopup = true
  540. }
  541. if (
  542. popupIndex == 1 &&
  543. typeof this.$refs.prescription_dialog !== 'undefined'
  544. ) {
  545. this.$refs.prescription_dialog.open()
  546. } else if (
  547. popupIndex == 3 &&
  548. typeof this.$refs.assessment_dialog !== 'undefined'
  549. ) {
  550. this.$refs.assessment_dialog.open()
  551. } else if (
  552. popupIndex == 4 &&
  553. typeof this.$refs.orders_dialog !== 'undefined'
  554. ) {
  555. // this.$refs.orders_dialog.open();
  556. } else if (
  557. popupIndex == 0 &&
  558. typeof this.$refs.computer_dialog !== 'undefined'
  559. ) {
  560. this.$refs.computer_dialog.open()
  561. } else if (
  562. popupIndex == 6 &&
  563. typeof this.$refs.monit_dialog !== 'undefined'
  564. ) {
  565. this.$refs.monit_dialog.open()
  566. } else if (
  567. popupIndex == 7 &&
  568. typeof this.$refs.plane_dialog !== 'undefined'
  569. ) {
  570. this.$refs.plane_dialog.open()
  571. } else if (
  572. popupIndex == 8 &&
  573. typeof this.$refs.thoroug_dialog !== 'undefined'
  574. ) {
  575. this.$refs.thoroug_dialog.open()
  576. } else if (
  577. popupIndex == 9 &&
  578. typeof this.$refs.treatment_dialog !== 'undefined'
  579. ) {
  580. this.$refs.treatment_dialog.open()
  581. }
  582. },
  583. popupDidHide: function (popupIndex) {
  584. this.index = -1
  585. },
  586. closeDialog (index) {
  587. this.index = -1
  588. this.menuList[index].showPopup = false
  589. },
  590. refresh () {
  591. var dateStr = parseTime(this.$route.query.date, '{y}-{m}-{d}')
  592. var params = {
  593. patient_id: this.$route.query.patient_id,
  594. date: dateStr
  595. }
  596. getDialysisRecord(params).then(rs => {
  597. var resp = rs.data
  598. console.log(resp)
  599. if (resp.state == 1) {
  600. var patient = resp.data.patient // 患者信息
  601. var schedual = resp.data.schedual // 患者排班信息
  602. var prescription = resp.data.prescription // 透析处方
  603. var solution = resp.data.solution // 透析方案
  604. var receiver_treatment_access = resp.data.receiver_treatment_access // 接诊评估
  605. var predialysis_evaluation = resp.data.predialysis_evaluation // 透前评估
  606. var doctor_advices = resp.data.doctor_advices // 临时医嘱
  607. this.dryWeight = resp.data.dry_weight
  608. for (let i = 0; i < doctor_advices.length; i++) {
  609. doctor_advices[i]['is_selected'] = 0
  610. }
  611. console.log(doctor_advices)
  612. var double_check = resp.data.double_check // 双人核对
  613. var assessment_after_dislysis = resp.data.assessment_after_dislysis // 透后评估
  614. var treatment_summary = resp.data.treatment_summary // 治疗小结
  615. var monitor_records = resp.data.monitor_records // 透析监测
  616. var dialysis_order = resp.data.dialysis_order // 透析记录
  617. var operators = resp.data.operators // 操作人
  618. var last_predialysis_evaluation =
  619. resp.data.last_predialysis_evaluation // 上一次透前评估
  620. var last_assessment_after_dislysis =
  621. resp.data.last_assessment_after_dislysis // 上一次透前评估
  622. var last_monitor_record = resp.data.last_monitor_record
  623. this.patient = patient
  624. this.schedual = schedual == null ? {} : schedual
  625. this.prescription = prescription == null ? {id: ''} : prescription
  626. this.solution = solution == null ? {id: ''} : solution
  627. this.receiver_treatment_access =
  628. receiver_treatment_access == null
  629. ? {id: ''}
  630. : receiver_treatment_access
  631. this.predialysis_evaluation =
  632. predialysis_evaluation == null ? {} : predialysis_evaluation
  633. this.last_predialysis_evaluation =
  634. last_predialysis_evaluation == null
  635. ? {}
  636. : last_predialysis_evaluation
  637. this.doctor_advices = doctor_advices == null ? [] : doctor_advices
  638. if (this.doctor_advices.length > 0) {
  639. var group = this.newAdviceGroupObject()
  640. var initGroupBlock = function (group, advice) {
  641. group.group_no = advice.groupno
  642. // group.start_time = advice.start_time
  643. // group.advice_doctor = advice.advice_doctor
  644. // group.exec_staff = advice.execution_staff
  645. // group.exec_time = advice.execution_time
  646. // group.checker = advice.checker
  647. }
  648. for (let index = 0; index < this.doctor_advices.length; index++) {
  649. const advice = this.doctor_advices[index]
  650. if (advice.groupno == 0) {
  651. // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  652. if (advice.parent_id > 0) {
  653. if (this.advice_groups.length > 0) {
  654. var parent_group = this.advice_groups[
  655. this.advice_groups.length - 1
  656. ]
  657. if (parent_group.advices.length > 0) {
  658. if (parent_group.advices[0].id == advice.parent_id) {
  659. parent_group.advices.push(advice)
  660. }
  661. }
  662. }
  663. continue
  664. } else {
  665. if (group.group_no > 0) {
  666. this.advice_groups.push(group)
  667. group = this.newAdviceGroupObject()
  668. }
  669. initGroupBlock(group, advice)
  670. group.advices.push(advice)
  671. this.advice_groups.push(group)
  672. group = this.newAdviceGroupObject()
  673. continue
  674. }
  675. }
  676. if (group.group_no > 0 && group.group_no != advice.groupno) {
  677. this.advice_groups.push(group)
  678. group = this.newAdviceGroupObject()
  679. }
  680. if (group.group_no == 0) {
  681. initGroupBlock(group, advice)
  682. }
  683. if (group.group_no == advice.groupno) {
  684. group.advices.push(advice)
  685. }
  686. }
  687. if (group.group_no > 0) {
  688. // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  689. this.advice_groups.push(group)
  690. }
  691. // console.log(this.advice_groups)
  692. }
  693. this.double_check = double_check == null ? {id: ''} : double_check
  694. this.assessment_after_dislysis = assessment_after_dislysis == null ? {id: ''} : assessment_after_dislysis
  695. this.last_assessment_after_dislysis =
  696. last_assessment_after_dislysis == null
  697. ? {id: ''}
  698. : last_assessment_after_dislysis
  699. this.treatment_summary =
  700. treatment_summary == null ? {id: ''} : treatment_summary
  701. this.monitor_records = monitor_records == null ? [] : monitor_records
  702. this.last_monitor_record =
  703. last_monitor_record == null
  704. ? this.last_monitor_record
  705. : last_monitor_record
  706. this.dialysis_order =
  707. dialysis_order == null ? {id: ''} : dialysis_order
  708. this.operators = operators
  709. this.$refs.stat_order.setAdvices(this.doctor_advices)
  710. this.$refs.monitoring.setRecords(this.monitor_records)
  711. this.title = patient.name
  712. dialysisGlobalConfig().then(rs => {
  713. var res = rs.data
  714. if (res.state == 1) {
  715. // console.log(res)
  716. // this.$refs.detail_menu.setGlobalConfig(res.data)
  717. this.admin_users = res.data.admin_users
  718. this.devices = res.data.devices
  719. this.device_numbers = res.data.device_numbers
  720. var device_map = {}
  721. for (let index = 0; index < this.devices.length; index++) {
  722. const device = this.devices[index]
  723. device_map[device.id] = device
  724. }
  725. this.device_map = device_map
  726. var admin_map = {}
  727. for (let index = 0; index < this.admin_users.length; index++) {
  728. const admin = this.admin_users[index]
  729. admin_map[admin.id] = admin
  730. }
  731. this.admin_user_map = admin_map
  732. var device_number_map = {}
  733. for (let index = 0; index < this.device_numbers.length; index++) {
  734. const device_number = this.device_numbers[index]
  735. device_number_map[device_number.id] = device_number
  736. }
  737. this.device_number_map = device_number_map
  738. }
  739. this.loading = false
  740. })
  741. } else {
  742. this.$toast({
  743. message: resp.msg
  744. })
  745. this.loading = false
  746. }
  747. })
  748. },
  749. weightFunc (val) {
  750. this.dryWeight = val
  751. },
  752. requestDialysisRecord () {
  753. var dateStr = parseTime(this.date, '{y}-{m}-{d}')
  754. var params = {
  755. patient_id: this.patient_id,
  756. date: dateStr
  757. }
  758. this.advice_groups = []
  759. this.doctor_advices = []
  760. getDialysisRecord(params).then(rs => {
  761. var resp = rs.data
  762. console.log(resp)
  763. if (resp.state == 1) {
  764. var waitstoredata = this.$store.getters.waitscheduals
  765. var waitscheduals = waitstoredata.waitscheduals
  766. var storedata = this.$store.getters.scheduals
  767. var scheduals = storedata.scheduals
  768. var patient = resp.data.patient // 患者信息
  769. var schedual = resp.data.schedual // 患者排班信息
  770. var prescription = resp.data.prescription // 透析处方
  771. var solution = resp.data.solution // 透析方案
  772. var receiver_treatment_access = resp.data.receiver_treatment_access // 接诊评估
  773. var predialysis_evaluation = resp.data.predialysis_evaluation // 透前评估
  774. var doctor_advices = resp.data.doctor_advices // 临时医嘱
  775. var last_prescription = resp.data.last_prescription
  776. var system_prescription = resp.data.system_prescription
  777. this.dryWeight = resp.data.dry_weight
  778. if (prescription == null || prescription.creater == 0) {
  779. this.isPullData = 1
  780. } else {
  781. this.isPullData = 2
  782. }
  783. this.goodInfos = resp.data.goodInfos
  784. for (let i = 0; i < doctor_advices.length; i++) {
  785. doctor_advices[i]['is_selected'] = 0
  786. }
  787. console.log(doctor_advices)
  788. var double_check = resp.data.double_check // 双人核对
  789. var assessment_after_dislysis = resp.data.assessment_after_dislysis // 透后评估
  790. var treatment_summary = resp.data.treatment_summary // 治疗小结
  791. var monitor_records = resp.data.monitor_records // 透析监测
  792. var dialysis_order = resp.data.dialysis_order // 透析记录
  793. var operators = resp.data.operators // 操作人
  794. var special_premission = resp.data.special_premission // 特殊权限
  795. var config = resp.data.config // 库存自动扣减配置
  796. var types = resp.data.types // 所有系统库存商品类型
  797. var last_predialysis_evaluation = resp.data.last_predialysis_evaluation // 上一次透前评估
  798. var last_assessment_after_dislysis = resp.data.last_assessment_after_dislysis // 上一次透前评估
  799. var last_monitor_record = resp.data.last_monitor_record
  800. if (Object.keys(waitstoredata).length > 0) {
  801. for (let index = 0; index < waitscheduals.length; index++) {
  802. if (waitscheduals[index].patient_id == patient.id) {
  803. waitscheduals[index].patient = patient
  804. waitscheduals[index].assessment_before_dislysis = predialysis_evaluation
  805. waitscheduals[index].prescription = prescription
  806. waitscheduals[index].doctor_advice = doctor_advices
  807. waitscheduals[index].dialysis_order = dialysis_order
  808. }
  809. }
  810. this.$store.dispatch('SetWaitScheduals', {waitscheduals: waitscheduals})
  811. }
  812. if (Object.keys(storedata).length > 0) {
  813. for (let index = 0; index < scheduals.length; index++) {
  814. if (scheduals[index].patient_id == patient.id) {
  815. scheduals[index].patient = patient
  816. scheduals[index].assessment_before_dislysis = predialysis_evaluation
  817. scheduals[index].prescription = prescription
  818. scheduals[index].doctor_advice = doctor_advices
  819. scheduals[index].dialysis_order = dialysis_order
  820. }
  821. }
  822. this.$store.dispatch('SetScheduals', {scheduals: scheduals})
  823. }
  824. this.system_prescription = system_prescription == null ? {id: ''} : system_prescription
  825. this.patient = patient
  826. this.schedual = schedual == null ? {} : schedual
  827. this.prescription = prescription == null ? {id: ''} : prescription
  828. this.solution = solution == null ? {id: ''} : solution
  829. this.last_prescription = last_prescription == null ? {id: ''} : last_prescription
  830. this.receiver_treatment_access = receiver_treatment_access == null ? {id: ''} : receiver_treatment_access
  831. this.predialysis_evaluation = predialysis_evaluation == null ? {} : predialysis_evaluation
  832. this.last_predialysis_evaluation = last_predialysis_evaluation == null ? {} : last_predialysis_evaluation
  833. this.doctor_advices = doctor_advices == null ? [] : doctor_advices
  834. this.special_premission = special_premission
  835. this.config = config
  836. this.goodTypes = types
  837. if (this.doctor_advices.length > 0) {
  838. var group = this.newAdviceGroupObject()
  839. var initGroupBlock = function (group, advice) {
  840. group.group_no = advice.groupno
  841. // group.start_time = advice.start_time
  842. // group.advice_doctor = advice.advice_doctor
  843. // group.exec_staff = advice.execution_staff
  844. // group.exec_time = advice.execution_time
  845. // group.checker = advice.checker
  846. }
  847. for (let index = 0; index < this.doctor_advices.length; index++) {
  848. const advice = this.doctor_advices[index]
  849. if (advice.groupno == 0) {
  850. // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  851. if (advice.parent_id > 0) {
  852. if (this.advice_groups.length > 0) {
  853. var parent_group = this.advice_groups[
  854. this.advice_groups.length - 1
  855. ]
  856. if (parent_group.advices.length > 0) {
  857. if (parent_group.advices[0].id == advice.parent_id) {
  858. parent_group.advices.push(advice)
  859. }
  860. }
  861. }
  862. continue
  863. } else {
  864. if (group.group_no > 0) {
  865. this.advice_groups.push(group)
  866. group = this.newAdviceGroupObject()
  867. }
  868. initGroupBlock(group, advice)
  869. group.advices.push(advice)
  870. this.advice_groups.push(group)
  871. group = this.newAdviceGroupObject()
  872. continue
  873. }
  874. }
  875. if (group.group_no > 0 && group.group_no != advice.groupno) {
  876. this.advice_groups.push(group)
  877. group = this.newAdviceGroupObject()
  878. }
  879. if (group.group_no == 0) {
  880. initGroupBlock(group, advice)
  881. }
  882. if (group.group_no == advice.groupno) {
  883. group.advices.push(advice)
  884. }
  885. }
  886. if (group.group_no > 0) {
  887. // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  888. this.advice_groups.push(group)
  889. }
  890. // console.log(this.advice_groups)
  891. }
  892. this.double_check = double_check == null ? {id: ''} : double_check
  893. this.assessment_after_dislysis = assessment_after_dislysis == null ? {id: ''} : assessment_after_dislysis
  894. this.last_assessment_after_dislysis = last_assessment_after_dislysis == null ? {id: ''} : last_assessment_after_dislysis
  895. this.treatment_summary = treatment_summary == null ? {id: ''} : treatment_summary
  896. this.monitor_records = monitor_records == null ? [] : monitor_records
  897. this.last_monitor_record = last_monitor_record == null ? this.last_monitor_record : last_monitor_record
  898. this.dialysis_order = dialysis_order == null ? {id: ''} : dialysis_order
  899. this.operators = operators
  900. this.$refs.stat_order.setAdvices(this.doctor_advices)
  901. this.$refs.monitoring.setRecords(this.monitor_records)
  902. // 强制刷新子组件
  903. this.thoroug_dialog_reset = false
  904. this.$nextTick(() => { this.thoroug_dialog_reset = true })
  905. this.prescription_dialog_reset = false
  906. this.$nextTick(() => { this.prescription_dialog_reset = true })
  907. this.monit_dialog_reset = false;
  908. this.$nextTick(() => { this.monit_dialog_reset = true })
  909. this.title = patient.name
  910. dialysisGlobalConfig().then(rs => {
  911. var res = rs.data
  912. if (res.state == 1) {
  913. // console.log(res)
  914. // this.$refs.detail_menu.setGlobalConfig(res.data)
  915. this.admin_users = res.data.admin_users
  916. this.devices = res.data.devices
  917. this.device_numbers = res.data.device_numbers
  918. var device_map = {}
  919. for (let index = 0; index < this.devices.length; index++) {
  920. const device = this.devices[index]
  921. device_map[device.id] = device
  922. }
  923. this.device_map = device_map
  924. var admin_map = {}
  925. for (let index = 0; index < this.admin_users.length; index++) {
  926. const admin = this.admin_users[index]
  927. admin_map[admin.id] = admin
  928. }
  929. this.admin_user_map = admin_map
  930. var device_number_map = {}
  931. for (let index = 0; index < this.device_numbers.length; index++) {
  932. const device_number = this.device_numbers[index]
  933. device_number_map[device_number.id] = device_number
  934. }
  935. this.device_number_map = device_number_map
  936. }
  937. this.loading = false
  938. })
  939. } else {
  940. this.$toast({
  941. message: resp.msg
  942. })
  943. this.loading = false
  944. }
  945. })
  946. },
  947. requestLongAdvice () {
  948. var dateStr = parseTime(this.date, '{y}-{m}-{d}')
  949. var params = {
  950. id: this.patient_id
  951. }
  952. GetRemindLongAdvice(params).then(rs => {
  953. var resp = rs.data
  954. if (resp.state == 1) {
  955. var status = parseInt(resp.data.status)
  956. this.status = status
  957. switch (status) {
  958. case 2:
  959. var totalAdvice = resp.data.advices
  960. var longAdvicesTwo = resp.data.advices_two
  961. var waitUploadAdvices = []
  962. for (let i = 0; i < totalAdvice.length; i++) {
  963. totalAdvice[i]['isCheck'] = 1
  964. }
  965. for (let i = 0; i < totalAdvice.length; i++) {
  966. for (let a = 0; a < longAdvicesTwo.length; a++) {
  967. if (totalAdvice[i].template_id == longAdvicesTwo[a].template_id && totalAdvice[i].frequency_type == longAdvicesTwo[a].frequency_type) {
  968. totalAdvice[i]['isCheck'] = 0
  969. }
  970. }
  971. }
  972. for (let i = 0; i < totalAdvice.length; i++) {
  973. if (totalAdvice[i].isCheck == 1) {
  974. waitUploadAdvices.push(totalAdvice[i])
  975. }
  976. }
  977. this.is_open = resp.data.is_open_remind
  978. this.longAdvices = totalAdvice
  979. this.waitUploadAdvices = waitUploadAdvices
  980. break
  981. }
  982. } else {
  983. }
  984. })
  985. },
  986. getNowFormatDate () {
  987. var date = new Date()
  988. var seperator1 = '-'
  989. var year = date.getFullYear()
  990. var month = date.getMonth() + 1
  991. var strDate = date.getDate()
  992. if (month >= 1 && month <= 9) {
  993. month = '0' + month
  994. }
  995. if (strDate >= 0 && strDate <= 9) {
  996. strDate = '0' + strDate
  997. }
  998. var currentdate = year + seperator1 + month + seperator1 + strDate
  999. return currentdate
  1000. },
  1001. newAdviceGroupObject: function () {
  1002. return Object.assign(
  1003. {},
  1004. {
  1005. group_no: 0,
  1006. // advice_doctor: 0,
  1007. // start_time: 0,
  1008. advices: []
  1009. // exec_staff: 0,
  1010. // exec_time: 0,
  1011. // checker: 0,
  1012. }
  1013. )
  1014. },
  1015. adviceFunc: function () {
  1016. },
  1017. prescriptionFunc: function (val, advices) {
  1018. this.prescription = val
  1019. this.newRequestDialysisRecord()
  1020. // if (advices.length > 0){
  1021. //
  1022. // // if (advices.length > 0) {
  1023. // // var group = this.newAdviceGroupObject()
  1024. // // var initGroupBlock = function (group, advice) {
  1025. // // group.group_no = advice.groupno
  1026. // // // group.start_time = advice.start_time
  1027. // // // group.advice_doctor = advice.advice_doctor
  1028. // // // group.exec_staff = advice.execution_staff
  1029. // // // group.exec_time = advice.execution_time
  1030. // // // group.checker = advice.checker
  1031. // // }
  1032. // // for (let index = 0; index < advices.length; index++) {
  1033. // // const advice = advices[index]
  1034. // // if (advice.groupno == 0) {
  1035. // // // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  1036. // // if (advice.parent_id > 0) {
  1037. // // if (this.advice_groups.length > 0) {
  1038. // // var parent_group = this.advice_groups[
  1039. // // this.advice_groups.length - 1
  1040. // // ]
  1041. // // if (parent_group.advices.length > 0) {
  1042. // // if (parent_group.advices[0].id == advice.parent_id) {
  1043. // // parent_group.advices.push(advice)
  1044. // // }
  1045. // // }
  1046. // // }
  1047. // // continue
  1048. // // } else {
  1049. // // if (group.group_no > 0) {
  1050. // // this.advice_groups.push(group)
  1051. // // group = this.newAdviceGroupObject()
  1052. // // }
  1053. // //
  1054. // // initGroupBlock(group, advice)
  1055. // // group.advices.push(advice)
  1056. // // this.advice_groups.push(group)
  1057. // // group = this.newAdviceGroupObject()
  1058. // // continue
  1059. // // }
  1060. // // }
  1061. // //
  1062. // // if (group.group_no > 0 && group.group_no != advice.groupno) {
  1063. // // this.advice_groups.push(group)
  1064. // // group = this.newAdviceGroupObject()
  1065. // // }
  1066. // // if (group.group_no == 0) {
  1067. // // initGroupBlock(group, advice)
  1068. // // }
  1069. // // if (group.group_no == advice.groupno) {
  1070. // // group.advices.push(advice)
  1071. // // }
  1072. // // }
  1073. // // if (group.group_no > 0) {
  1074. // // // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  1075. // // this.advice_groups.push(group)
  1076. // // }
  1077. // //
  1078. // // }
  1079. //
  1080. //
  1081. // }
  1082. },
  1083. longSolutionFunc: function (val) {
  1084. this.solution = val
  1085. // this.requestDialysisRecord()
  1086. // if (advices.length > 0){
  1087. //
  1088. // if (advices.length > 0) {
  1089. // var group = this.newAdviceGroupObject()
  1090. // var initGroupBlock = function (group, advice) {
  1091. // group.group_no = advice.groupno
  1092. // // group.start_time = advice.start_time
  1093. // // group.advice_doctor = advice.advice_doctor
  1094. // // group.exec_staff = advice.execution_staff
  1095. // // group.exec_time = advice.execution_time
  1096. // // group.checker = advice.checker
  1097. // }
  1098. // for (let index = 0; index < advices.length; index++) {
  1099. // const advice = advices[index]
  1100. // if (advice.groupno == 0) {
  1101. // // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  1102. // if (advice.parent_id > 0) {
  1103. // if (this.advice_groups.length > 0) {
  1104. // var parent_group = this.advice_groups[
  1105. // this.advice_groups.length - 1
  1106. // ]
  1107. // if (parent_group.advices.length > 0) {
  1108. // if (parent_group.advices[0].id == advice.parent_id) {
  1109. // parent_group.advices.push(advice)
  1110. // }
  1111. // }
  1112. // }
  1113. // continue
  1114. // } else {
  1115. // if (group.group_no > 0) {
  1116. // this.advice_groups.push(group)
  1117. // group = this.newAdviceGroupObject()
  1118. // }
  1119. //
  1120. // initGroupBlock(group, advice)
  1121. // group.advices.push(advice)
  1122. // this.advice_groups.push(group)
  1123. // group = this.newAdviceGroupObject()
  1124. // continue
  1125. // }
  1126. // }
  1127. //
  1128. // if (group.group_no > 0 && group.group_no != advice.groupno) {
  1129. // this.advice_groups.push(group)
  1130. // group = this.newAdviceGroupObject()
  1131. // }
  1132. // if (group.group_no == 0) {
  1133. // initGroupBlock(group, advice)
  1134. // }
  1135. // if (group.group_no == advice.groupno) {
  1136. // group.advices.push(advice)
  1137. // }
  1138. // }
  1139. // if (group.group_no > 0) {
  1140. // // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  1141. // this.advice_groups.push(group)
  1142. // }
  1143. //
  1144. // }
  1145. //
  1146. //
  1147. // }
  1148. },
  1149. closePrescriptionDialog: function () {
  1150. this.closeDialog(1)
  1151. // this.scrollToView('prescription')
  1152. },
  1153. closeAcceptsAssessment: function () {
  1154. this.closeDialog(2)
  1155. // this.scrollToView('accepts_assessment')
  1156. },
  1157. closeAssessmentBefore: function () {
  1158. this.closeDialog(3)
  1159. // this.scrollToView('assessment_before')
  1160. },
  1161. update_evaluation: function (evaluation) {
  1162. this.predialysis_evaluation = evaluation
  1163. this.closeAssessmentBefore()
  1164. this.newRequestDialysisRecord()
  1165. },
  1166. closeStatOrder: function () {
  1167. this.closeDialog(4)
  1168. // this.scrollToView('stat_order')
  1169. },
  1170. closeDialysisComputer: function (dialysis_order) {
  1171. this.closeDialog(0)
  1172. this.dialysis_order = dialysis_order
  1173. this.newRequestDialysisRecord()
  1174. // this.scrollToView('dialysis_computer')
  1175. },
  1176. closeDialysisComputerclose: function (dialysis_order) {
  1177. this.closeDialog(0)
  1178. // this.dialysis_order = dialysis_order
  1179. // this.scrollToView('dialysis_computer')
  1180. },
  1181. closeDoubleCheck: function () {
  1182. this.closeDialog(5)
  1183. // this.scrollToView('double_check')
  1184. },
  1185. closeMonitoring: function () {
  1186. this.closeDialog(6)
  1187. // this.scrollToView('monitoring')
  1188. },
  1189. closeDialysisOff: function (assessment_after_dislysis) {
  1190. this.closeDialog(7)
  1191. if (assessment_after_dislysis != undefined) {
  1192. this.assessment_after_dislysis = assessment_after_dislysis
  1193. }
  1194. this.requestDialysisRecord()
  1195. },
  1196. closeDialysisOffclose: function () {
  1197. this.closeDialog(7)
  1198. // this.scrollToView('dialysis_off')
  1199. },
  1200. closeAssessmentAfter: function (assessment_after_dislysis) {
  1201. this.closeDialog(8)
  1202. // this.scrollToView('assessment_after')
  1203. if (assessment_after_dislysis != undefined) {
  1204. this.assessment_after_dislysis = assessment_after_dislysis
  1205. }
  1206. this.requestDialysisRecord()
  1207. },updateTreatmentOf:function(val){
  1208. this.closeDialog(9)
  1209. this.treatment_summary = val
  1210. },
  1211. closeTreatmentOf: function () {
  1212. this.closeDialog(9)
  1213. // this.scrollToView('treatment_of')
  1214. },
  1215. scrollToView: function (id) {
  1216. document.body.scrollTop =
  1217. document.querySelector('#' + id).offsetTop - 100
  1218. document.documentElement.scrollTop =
  1219. document.querySelector('#' + id).offsetTop - 100
  1220. },
  1221. handleScroll () {
  1222. this.scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
  1223. if (this.scrollTop > 50) {
  1224. this.goTopShow = true
  1225. } else {
  1226. this.goTopShow = false
  1227. }
  1228. },
  1229. goTop () {
  1230. let timer = null,
  1231. _that = this
  1232. cancelAnimationFrame(timer)
  1233. timer = requestAnimationFrame(function fn () {
  1234. if (_that.scrollTop > 0) {
  1235. _that.scrollTop -= 50
  1236. document.body.scrollTop = document.documentElement.scrollTop =
  1237. _that.scrollTop
  1238. timer = requestAnimationFrame(fn)
  1239. } else {
  1240. cancelAnimationFrame(timer)
  1241. _that.goTopShow = false
  1242. }
  1243. })
  1244. },
  1245. destroyed () {
  1246. window.removeEventListener('scroll', this.handleScroll)
  1247. },
  1248. getUnReadNum () {
  1249. let doctorAdvice = []
  1250. for (let y = 0; y < this.doctor_advices.length; y++) {
  1251. if (this.doctor_advices[y].execution_state == 2) {
  1252. doctorAdvice.push(this.doctor_advices[y])
  1253. }
  1254. }
  1255. const sorted = this.groupBy(doctorAdvice, function (item) {
  1256. return [item.groupno]
  1257. })
  1258. return sorted.length
  1259. },
  1260. groupBy (array, f) {
  1261. const groups = {}
  1262. array.forEach(function (o) {
  1263. const group = JSON.stringify(f(o))
  1264. groups[group] = groups[group] || []
  1265. groups[group].push(o)
  1266. })
  1267. return Object.keys(groups).map(function (group) {
  1268. return groups[group]
  1269. })
  1270. },
  1271. getDeviceNumber () {
  1272. if (this.dialysis_order.id && this.dialysis_order.DeviceNumber && this.dialysis_order.DeviceNumber.number.length > 0) {
  1273. return this.dialysis_order.DeviceNumber.number
  1274. } else {
  1275. if (this.schedual.device_number == null) {
  1276. return ''
  1277. } else {
  1278. return this.schedual.device_number.number
  1279. }
  1280. }
  1281. },
  1282. dateDiff (firstDate, secondDate) {
  1283. var firstDate = new Date(firstDate)
  1284. var secondDate = new Date(secondDate)
  1285. var diff = Math.abs(firstDate.getTime() - secondDate.getTime())
  1286. var result = parseInt(diff / (1000 * 60 * 60 * 24))
  1287. return result
  1288. }, newRequestDialysisRecord () {
  1289. var dateStr = parseTime(this.date, '{y}-{m}-{d}')
  1290. var params = {
  1291. patient_id: this.patient_id,
  1292. date: dateStr
  1293. }
  1294. this.advice_groups = []
  1295. this.doctor_advices = []
  1296. getDialysisRecord(params).then(rs => {
  1297. var resp = rs.data
  1298. console.log(resp)
  1299. if (resp.state == 1) {
  1300. var waitstoredata = this.$store.getters.waitscheduals
  1301. var waitscheduals = waitstoredata.waitscheduals
  1302. var storedata = this.$store.getters.scheduals
  1303. var scheduals = storedata.scheduals
  1304. var patient = resp.data.patient // 患者信息
  1305. var schedual = resp.data.schedual // 患者排班信息
  1306. var prescription = resp.data.prescription // 透析处方
  1307. var solution = resp.data.solution // 透析方案
  1308. var receiver_treatment_access = resp.data.receiver_treatment_access // 接诊评估
  1309. var predialysis_evaluation = resp.data.predialysis_evaluation // 透前评估
  1310. var doctor_advices = resp.data.doctor_advices // 临时医嘱
  1311. var last_prescription = resp.data.last_prescription
  1312. var system_prescription = resp.data.system_prescription
  1313. this.dryWeight = resp.data.dry_weight
  1314. if (prescription == null || prescription.creater == 0) {
  1315. this.isPullData = 1
  1316. } else {
  1317. this.isPullData = 2
  1318. }
  1319. this.goodInfos = resp.data.goodInfos
  1320. for (let i = 0; i < doctor_advices.length; i++) {
  1321. doctor_advices[i]['is_selected'] = 0
  1322. }
  1323. console.log(doctor_advices)
  1324. var double_check = resp.data.double_check // 双人核对
  1325. var assessment_after_dislysis = resp.data.assessment_after_dislysis // 透后评估
  1326. var treatment_summary = resp.data.treatment_summary // 治疗小结
  1327. var monitor_records = resp.data.monitor_records // 透析监测
  1328. var dialysis_order = resp.data.dialysis_order // 透析记录
  1329. var operators = resp.data.operators // 操作人
  1330. var special_premission = resp.data.special_premission // 特殊权限
  1331. var config = resp.data.config // 库存自动扣减配置
  1332. var types = resp.data.types // 所有系统库存商品类型
  1333. var last_predialysis_evaluation = resp.data.last_predialysis_evaluation // 上一次透前评估
  1334. var last_assessment_after_dislysis = resp.data.last_assessment_after_dislysis // 上一次透前评估
  1335. var last_monitor_record = resp.data.last_monitor_record
  1336. if (Object.keys(waitstoredata).length > 0) {
  1337. for (let index = 0; index < waitscheduals.length; index++) {
  1338. if (waitscheduals[index].patient_id == patient.id) {
  1339. waitscheduals[index].patient = patient
  1340. waitscheduals[index].assessment_before_dislysis = predialysis_evaluation
  1341. waitscheduals[index].prescription = prescription
  1342. waitscheduals[index].doctor_advice = doctor_advices
  1343. waitscheduals[index].dialysis_order = dialysis_order
  1344. }
  1345. }
  1346. this.$store.dispatch('SetWaitScheduals', {waitscheduals: waitscheduals})
  1347. }
  1348. if (Object.keys(storedata).length > 0) {
  1349. for (let index = 0; index < scheduals.length; index++) {
  1350. if (scheduals[index].patient_id == patient.id) {
  1351. scheduals[index].patient = patient
  1352. scheduals[index].assessment_before_dislysis = predialysis_evaluation
  1353. scheduals[index].prescription = prescription
  1354. scheduals[index].doctor_advice = doctor_advices
  1355. scheduals[index].dialysis_order = dialysis_order
  1356. }
  1357. }
  1358. this.$store.dispatch('SetScheduals', {scheduals: scheduals})
  1359. }
  1360. this.patient = patient
  1361. this.schedual = schedual == null ? {} : schedual
  1362. this.prescription = prescription == null ? {id: ''} : prescription
  1363. this.solution = solution == null ? {id: ''} : solution
  1364. this.last_prescription = last_prescription == null ? {id: ''} : last_prescription
  1365. this.system_prescription = system_prescription == null ? {id: ''} : system_prescription
  1366. this.receiver_treatment_access = receiver_treatment_access == null ? {id: ''} : receiver_treatment_access
  1367. this.predialysis_evaluation = predialysis_evaluation == null ? {} : predialysis_evaluation
  1368. this.last_predialysis_evaluation = last_predialysis_evaluation == null ? {} : last_predialysis_evaluation
  1369. this.doctor_advices = doctor_advices == null ? [] : doctor_advices
  1370. this.special_premission = special_premission
  1371. this.config = config
  1372. this.goodTypes = types
  1373. if (this.doctor_advices.length > 0) {
  1374. var group = this.newAdviceGroupObject()
  1375. var initGroupBlock = function (group, advice) {
  1376. group.group_no = advice.groupno
  1377. // group.start_time = advice.start_time
  1378. // group.advice_doctor = advice.advice_doctor
  1379. // group.exec_staff = advice.execution_staff
  1380. // group.exec_time = advice.execution_time
  1381. // group.checker = advice.checker
  1382. }
  1383. for (let index = 0; index < this.doctor_advices.length; index++) {
  1384. const advice = this.doctor_advices[index]
  1385. if (advice.groupno == 0) {
  1386. // 老版本的医嘱没有分组的概念,所以这一个 if 是解决这个问题的,将每个无分组的医嘱各自归为一组
  1387. if (advice.parent_id > 0) {
  1388. if (this.advice_groups.length > 0) {
  1389. var parent_group = this.advice_groups[
  1390. this.advice_groups.length - 1
  1391. ]
  1392. if (parent_group.advices.length > 0) {
  1393. if (parent_group.advices[0].id == advice.parent_id) {
  1394. parent_group.advices.push(advice)
  1395. }
  1396. }
  1397. }
  1398. continue
  1399. } else {
  1400. if (group.group_no > 0) {
  1401. this.advice_groups.push(group)
  1402. group = this.newAdviceGroupObject()
  1403. }
  1404. initGroupBlock(group, advice)
  1405. group.advices.push(advice)
  1406. this.advice_groups.push(group)
  1407. group = this.newAdviceGroupObject()
  1408. continue
  1409. }
  1410. }
  1411. if (group.group_no > 0 && group.group_no != advice.groupno) {
  1412. this.advice_groups.push(group)
  1413. group = this.newAdviceGroupObject()
  1414. }
  1415. if (group.group_no == 0) {
  1416. initGroupBlock(group, advice)
  1417. }
  1418. if (group.group_no == advice.groupno) {
  1419. group.advices.push(advice)
  1420. }
  1421. }
  1422. if (group.group_no > 0) {
  1423. // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加上
  1424. this.advice_groups.push(group)
  1425. }
  1426. // console.log(this.advice_groups)
  1427. }
  1428. this.double_check = double_check == null ? {id: ''} : double_check
  1429. this.assessment_after_dislysis = assessment_after_dislysis == null ? {id: ''} : assessment_after_dislysis
  1430. this.last_assessment_after_dislysis = last_assessment_after_dislysis == null ? {id: ''} : last_assessment_after_dislysis
  1431. this.treatment_summary = treatment_summary == null ? {id: ''} : treatment_summary
  1432. this.monitor_records = monitor_records == null ? [] : monitor_records
  1433. this.last_monitor_record = last_monitor_record == null ? this.last_monitor_record : last_monitor_record
  1434. this.dialysis_order = dialysis_order == null ? {id: ''} : dialysis_order
  1435. this.operators = operators
  1436. this.$refs.stat_order.setAdvices(this.doctor_advices)
  1437. this.$refs.monitoring.setRecords(this.monitor_records)
  1438. this.title = patient.name
  1439. // 强制刷新子组件
  1440. this.thoroug_dialog_reset = false
  1441. this.$nextTick(() => { this.thoroug_dialog_reset = true })
  1442. this.prescription_dialog_reset = false
  1443. this.$nextTick(() => { this.prescription_dialog_reset = true })
  1444. this.monit_dialog_reset = false;
  1445. this.$nextTick(() => { this.monit_dialog_reset = true })
  1446. } else {
  1447. this.$toast({
  1448. message: resp.msg
  1449. })
  1450. this.loading = false
  1451. }
  1452. }).catch(error => {
  1453. this.loading = false
  1454. this.$toast({
  1455. message: "请求超时"
  1456. })
  1457. });
  1458. },
  1459. }
  1460. }
  1461. </script>
  1462. <style style="stylesheet/scss" lang="scss" scoped>
  1463. #today_panel{
  1464. overflow-x: hidden;
  1465. }
  1466. .today_panel {
  1467. height: calc(100% - 63px);
  1468. }
  1469. .mainContent {
  1470. position: relative;
  1471. .grid {
  1472. padding: 0.1rem 0 0.25rem 0;
  1473. margin: 0.2rem 0 0 0;
  1474. background: #fff;
  1475. @media only screen and (min-width: 768px) {
  1476. margin: 0.5rem 0 0 0;
  1477. padding: 0.1rem 0 0.45rem 0;
  1478. }
  1479. .list {
  1480. ul {
  1481. @include display-flex;
  1482. @include align-items-center;
  1483. @include text-align;
  1484. @include justify-content-around;
  1485. li {
  1486. font-size: 0.24rem;
  1487. color: #5d6b7a;
  1488. margin-top: 0.35rem;
  1489. p {
  1490. line-height: 0.6rem;
  1491. color: #34495e;
  1492. font-size: 0.4rem;
  1493. }
  1494. img {
  1495. width: 1.2rem;
  1496. height: 1.2rem;
  1497. }
  1498. }
  1499. }
  1500. }
  1501. }
  1502. }
  1503. .el-button.is-circle {
  1504. padding: 18px !important;
  1505. .el-icon-arrow-up {
  1506. font-size: 20px !important;
  1507. }
  1508. }
  1509. .redpoint {
  1510. display: inline-block;
  1511. height: 20px;
  1512. width: 20px;
  1513. line-height: 18px;
  1514. text-align: center;
  1515. font-size: 0.45rem;
  1516. border-radius: 20px;
  1517. color: #fff;
  1518. background: #f56c6c;
  1519. position: absolute;
  1520. border: 1px solid #fff;
  1521. top: -8px;
  1522. right: -8px;
  1523. @media only screen and (min-width: 768px) {
  1524. height: 30px;
  1525. width: 30px;
  1526. line-height: 28px;
  1527. }
  1528. }
  1529. .goTop {
  1530. z-index: 999;
  1531. }
  1532. </style>
  1533. <style lang="scss">
  1534. .el-table::before {
  1535. z-index: 0;
  1536. }
  1537. .el-loading-spinner{
  1538. top:10%;
  1539. }
  1540. </style>