血透系统pad前端

TodayTab.vue 62KB

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