Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

templateSummaryPrint.vue 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. <template>
  2. <div>
  3. <div style="float:right">
  4. <el-button type="primary" size="small" @click="printThisPage">打印</el-button>
  5. </div>
  6. <div id="dialysis-print-box">
  7. <div class="dialysis-print-order">
  8. <div class="order-yy-name"></div>
  9. <div class="order-title">{{ orgname }}&nbsp;&nbsp;&nbsp;血液透析患者诊疗阶段小结</div>
  10. <div style="padding-bottom:20px;border-bottom:1px solid #000;margin-top:40px;">
  11. <span>姓名:{{patientList.patient.name}}</span>
  12. <span style="margin-left:20px;">年龄:{{getNewAge(patientList.patient.id_card_no)}}</span>
  13. <span style="margin-left:20px;">性别:
  14. <span v-if="patientList.patient.gender == 1">男</span>
  15. <span v-if="patientList.patient.gender == 2">女</span>
  16. </span>
  17. <span style="margin-left:20px;">诊断:{{patientList.patient.diagnose}}</span>
  18. </div>
  19. <div style="padding:20px 0;border-bottom:1px solid #000;font-weight:bold;">
  20. <span>阶段评估时间:{{getTime(patientList.record_time)}}</span>
  21. </div>
  22. <!-- <div style="padding:20px 0;border-bottom:1px solid #000;">
  23. <span style="font-weight:bold;">阶段小结概要:</span>
  24. <div style="margin-top:20px;">
  25. <div style="display:flex;justify-content: space-between;">
  26. <span>干体重(kg):{{patientList.dry_weight}}</span>
  27. <span>共透析:{{patientList.dialysis_count}}次</span>
  28. <span>HD:{{patientList.hd_count}}次</span>
  29. <span>HDF:{{patientList.hdf_count}}次</span>
  30. <span>HP:{{patientList.hp_count}}次</span>
  31. <span>其他:{{patientList.other_count}}次</span>
  32. </div>
  33. <div style="display:flex;justify-content: space-between;margin-top:10px;">
  34. <span>透析器:{{patientList.dialzer_apparatus}}</span>
  35. <span>灌流器:{{patientList.perfusion_apparatus}}</span>
  36. <span>抗凝剂:{{getAnticoagulant(patientList.anticoagulant)}}</span>
  37. <span>透析液(钾:{{patientList.kalium}} 钙:{{patientList.autunite}} Na:{{patientList.natrium}} ):</span>
  38. <span>每次透析(小时):{{patientList.hour}}时{{patientList.minute}} <span v-if="patientList.minute!=''">分</span></span>
  39. </div>
  40. <div style="display:flex;justify-content: space-between;margin-top:10px;">
  41. <span>透前体重(kg):{{patientList.befor_weight}}</span>
  42. <span>透后体重(kg):{{patientList.after_weight}}</span>
  43. <span>透前血压(mmHg):{{patientList.befor_pressure}}</span>
  44. <span>透后血压(mmHg):{{patientList.after_pressure}}</span>
  45. </div>
  46. </div>
  47. </div> -->
  48. <div style="padding:20px 0;border-bottom:1px solid #000;min-height:200px;">
  49. <span style="font-weight:bold;">阶段小结总结:</span>
  50. <!-- {{patientList.template_summary_content}} -->
  51. <div style="line-height:24px;" v-html="patientList.template_summary_content"></div>
  52. </div>
  53. <div style="padding:20px 0;border-bottom:1px solid #000;min-height:250px;">
  54. <span style="font-weight:bold;">阶段小结化验结果:</span>
  55. <div class="borderBox">
  56. <div v-for="item in patientList.template_inspection_content">
  57. <p>{{ item.project_name }} 检查日期:{{getTime(item.arr[0].inspect_date)}}</p>
  58. <div style="display:flex;flex-wrap: wrap;">
  59. <div v-for="it in item.arr" style="width:33%;margin-bottom:10px;">
  60. {{ it.item_name }} <span v-if="it.unit!=''"> [{{it.unit}}] </span>:
  61. {{it.inspect_value}}
  62. <span v-if="parseInt(it.inspect_value) < parseInt(it.range_min)">
  63. </span>
  64. <span v-if="parseInt(it.inspect_value) > parseInt(it.range_max)">
  65. </span>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. </div>
  71. <div style="padding:20px 0;border-bottom:1px solid #000;min-height:200px;">
  72. <span style="font-weight:bold;">阶段小结个性化方案:</span>
  73. <!-- <div style="line-height:24px;">{{patientList.template_plan_content}}</div> -->
  74. <div v-html="patientList.template_plan_content"></div>
  75. </div>
  76. <div style="margin-top:10px;">
  77. <span>记录医生:{{getPatientList(patientList.admin_user_id)}}</span>
  78. <span style="margin-left:20px;">记录时间:{{getTime(patientList.record_time)}}</span>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </template>
  84. <script>
  85. import { getDataConfig } from '@/utils/data'
  86. import { jsGetAge, uParseTime } from '@/utils/tools'
  87. import LabelBox from '../dialysis/printItem/LabelBox'
  88. import CheckBox from '../dialysis/batch_print/option_check_box'
  89. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  90. import {getTemplateSummaryPrintDetail} from "@/api/patient"
  91. export default {
  92. name: 'dialysisPrintOrderOne',
  93. components: {
  94. LabelBox,
  95. BreadCrumb,
  96. CheckBox
  97. },
  98. data() {
  99. return {
  100. crumbs: [
  101. { path: false, name: '透析管理' },
  102. { path: false, name: '打印单' }
  103. ],
  104. operators: [],
  105. adminUser: [],
  106. check: {},
  107. dialysisOrder: {
  108. DeviceNumber: []
  109. },
  110. posture_arr: [],
  111. operatorMaps: {},
  112. complications: [
  113. '低血压',
  114. '高血压',
  115. '心律失常',
  116. '头晕',
  117. '头痛',
  118. '呕吐',
  119. '抽搐',
  120. '出血',
  121. '心衰',
  122. '腹痛',
  123. '无'
  124. ],
  125. consciousness_arr: [],
  126. jilurow: 0,
  127. advice_jilurow: 0,
  128. loading: false,
  129. orgname: '',
  130. patientInfo_gender_1: false,
  131. patientInfo_gender_2: false,
  132. patientInfo_source_2: false,
  133. patientInfo_source_1: false,
  134. modeOptions: {},
  135. replacementWays: [],
  136. perfusionApparatus: [],
  137. anticoagulantsConfit: {},
  138. bloodAccessParOpera: {},
  139. dialysateFormulationOptions: {},
  140. queryParams: {
  141. xtdate: '',
  142. xtno: ''
  143. },
  144. patientInfo: {
  145. birth: '',
  146. age: '',
  147. DialysisSchedule: {
  148. device_number: { number: '' },
  149. device_zone: { name: '' }
  150. },
  151. gender: 0
  152. },
  153. predialysis: {
  154. score: '',
  155. internal_fistula: '',
  156. internal_fistula_skin: '',
  157. catheter: '',
  158. blood_access_part_opera_name: ''
  159. },
  160. afterdialysis: {
  161. complications_index: ''
  162. },
  163. prescription: {
  164. dialysate_formulation_name: '',
  165. device: {}
  166. },
  167. advices: [],
  168. users: [],
  169. monitors: [],
  170. summary: {},
  171. receiverTreatmentAccess: {},
  172. org_template_info: {},
  173. doctor_advices: [],
  174. advice_groups: [],
  175. schedule: [],
  176. AlPanel: {
  177. id: 0,
  178. name: '',
  179. type: 1,
  180. shouji: 2,
  181. weichi: 2,
  182. zongliang: 2,
  183. gaimingcheng: -1,
  184. gaijiliang: -1,
  185. shouji_unit: 'mg',
  186. weichi_unit: 'mg/h',
  187. zongliang_unit: 'mg',
  188. gaimingcheng_unit: '',
  189. gaijiliang_unit: ''
  190. },
  191. list: 5,
  192. replacement_total: '',
  193. actual_treatment_hour: '',
  194. actual_treatment_minute: '',
  195. anticoagulant: '',
  196. anticoagulant_shouji: '',
  197. anticoagulant_zongliang: '',
  198. prescription_dewatering: '',
  199. blood_flow_volume: '',
  200. dialysate_flow: '',
  201. bed: '',
  202. dialyzer_perfusion_apparatus: '',
  203. dialysate_formulation: '',
  204. blood_access: '',
  205. doctor: '',
  206. nurse: '',
  207. doctorAdvice: [],
  208. total: '',
  209. weight_before: '',
  210. dry_weight: '',
  211. weight_after: '',
  212. weightloss_after: '',
  213. actual_ultrafiltration: '',
  214. temperature: '',
  215. systolic_blood_pressure: '',
  216. diastolic_blood_pressure: '',
  217. mission: '',
  218. dialysis_summary: '',
  219. orderForm: {
  220. start_nurse: '',
  221. url: ''
  222. },
  223. doctorForm: {
  224. doctor: '',
  225. url: ''
  226. },
  227. finshForm: {
  228. finish_nurse: '',
  229. url: ''
  230. },
  231. tableAdvice: [],
  232. monitor: [],
  233. displace_liqui: '',
  234. kalium: '',
  235. sodium: '',
  236. calcium: '',
  237. weight_gain: '',
  238. afterWeightLast: '',
  239. anticoagulant_weichi: '',
  240. target_ultrafiltration: '',
  241. blood_access_internal_fistula: '',
  242. venous_catheterization: '',
  243. blood_access_part_opera_id: '',
  244. dryWeight_add: '',
  245. weight: '',
  246. vascularId: 0,
  247. PunctureNurse: {
  248. user_name: '',
  249. url: ''
  250. },
  251. arr: [],
  252. arrtwo: [],
  253. bloodAccess: [],
  254. vascularAccess: [],
  255. nursing_record: '',
  256. special_record: '',
  257. newTableAdvice: [],
  258. patientList:{},
  259. doctorList:[],
  260. anticoagulantList:[],
  261. }
  262. },
  263. methods: {
  264. getDatge(value) {
  265. var times = Date.parse(value) / 1000
  266. var timestr = uParseTime(times, '{y}年{m}月{d}日')
  267. return timestr
  268. },
  269. getTime(value, temp) {
  270. if (value == 0) {
  271. return ''
  272. }
  273. if (value != undefined) {
  274. return uParseTime(value, temp)
  275. }
  276. return ''
  277. },
  278. getTimes(time) {
  279. if (time === '') {
  280. return ''
  281. }
  282. return uParseTime(time, '{y}-{m}-{d} {h}:{i}')
  283. },
  284. printThisPage() {
  285. var ptime = Math.round(new Date().getTime() / 1000)
  286. this.print_time = uParseTime(ptime, '{y}-{m}-{d} {h}:{i}')
  287. const style ='@media print {.dialysis-print-order{width:960px;margin:0 auto;letter-spacing:5px} .dialysis-print-order p{margin:0 auto}.dialysis-print-order .order-yy-name{margin:auto;text-align:center;font-size:20px;letter-spacing:5px}.dialysis-print-order .order-title{margin:auto;font-weight:600;text-align:center;font-size:22px;padding:10px 20px 20px 20px}.dialysis-print-order .table-box{width:100%;line-height:23px;font-size:14px}.dialysis-print-order .print-table{width:100%;text-align:center;border-collapse:collapse;line-height:25px;font-size:14px}.dialysis-print-order .print-table-no{width:100%;text-align:center;border-collapse:collapse;font-size:14px}.dialysis-print-order .under-line{border-bottom:1px solid #999;width:95%;text-align:center;margin-left:2px}.dialysis-print-order .title-box{text-align:center;font-size:16px;border:1px solid #666}.dialysis-print-order .radio-lebel-box{font-weight:400;cursor:pointer}.dialysis-print-order .radio-no{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.dialysis-print-order .radio-inner{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.dialysis-print-order .radio-fang{display:inline-block;position:relative;border:1px solid #000;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.dialysis-print-order .is-checked-radio::after{content:"√";font-size:15px}}.dialysis-print-order .print-table-no tr td { padding: 8px 5px; line-height: 25px; }.es-img{height: 20px; }.advice-name{text-align: left;}.advice-children{display:flex;} .dialysis-print-order .print-table tr td{padding: 0px 0px;} .print-template-two tr {line-height: 30px;} .title-box-pro{border: 0 #fff;line-height: 40px;height: 40px;text-align: left;padding-left: 10px !important;} .text-align-left{text-align: left !important;padding-left:10px !important;font-size: 14px !important;line-height: 25px;font-weight: bold;margin: 10px 0;}'
  288. printJS({
  289. printable: 'dialysis-print-box',
  290. type: 'html',
  291. style: style,
  292. scanStyles: false
  293. })
  294. },
  295. getAge: function(val) {
  296. if (val.birthday != 0) {
  297. return jsGetAge(val.birth, '-')
  298. } else {
  299. return ''
  300. }
  301. },
  302. getTemplateSummaryPrintDetail(id){
  303. var params ={
  304. id:id,
  305. }
  306. getTemplateSummaryPrintDetail(params).then(response=>{
  307. if(response.data.state == 1){
  308. var list = response.data.data.list
  309. console.log("listw23222323",list)
  310. // let arr = JSON.parse(list.template_inspection_content)
  311. // list.template_inspection_content = arr
  312. var inspectlist = response.data.data.inspectlist
  313. let arr = this.unique(inspectlist,'project_name')
  314. list.template_inspection_content = arr
  315. this.patientList = list
  316. var doctorList = response.data.data.doctorList
  317. console.log("doctorlsit",doctorList)
  318. this.doctorList = doctorList
  319. }
  320. })
  321. },
  322. getNewAge(UUserCard) {
  323. if (UUserCard != null && UUserCard != '') {
  324. // 获取年龄
  325. var myDate = new Date()
  326. var month = myDate.getMonth() + 1
  327. var day = myDate.getDate()
  328. var age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1
  329. if (UUserCard.substring(10, 12) < month || UUserCard.substring(10, 12) == month && UUserCard.substring(12, 14) <= day) {
  330. age++
  331. }
  332. return age
  333. }
  334. },
  335. getTime(val) {
  336. if(val < 0){
  337. return ""
  338. }
  339. if(val == ""){
  340. return ""
  341. }else {
  342. return uParseTime(val, '{y}-{m}-{d}')
  343. }
  344. },
  345. getPatientList(id){
  346. var name = ""
  347. for(let i=0;i<this.doctorList.length;i++){
  348. if(id == this.doctorList[i].admin_user_id){
  349. name = this.doctorList[i].user_name
  350. }
  351. }
  352. return name
  353. },
  354. unique(data, key) {
  355. let lastData = [];
  356. data.forEach(item => {
  357. let status = lastData.some(project_name => project_name[key] == item[key]);
  358. console.log('status',status)
  359. if (!status) {
  360. // item.value0 = item.value;
  361. let obj = {
  362. project_name:'',
  363. arr:[]
  364. }
  365. obj.project_name = item.project_name
  366. obj.arr.push(item);
  367. lastData.push(obj);
  368. console.log('item',item)
  369. } else {
  370. lastData.forEach((project_name, index) => {
  371. if (project_name[key] === item[key]) {
  372. console.log('item222',item)
  373. project_name.arr.push(item);
  374. }
  375. });
  376. }
  377. });
  378. return lastData;
  379. },
  380. getAnticoagulant(id){
  381. var name = ""
  382. for(let i=0;i<this.anticoagulantList.length;i++){
  383. if(id == this.anticoagulantList[i].id){
  384. name = this.anticoagulantList[i].name
  385. }
  386. }
  387. return name
  388. }
  389. },
  390. created() {
  391. var anticoagulantsConfitOne = this.$store.getters.anticoagulants_confit
  392. const arrFour = []
  393. Object.keys(anticoagulantsConfitOne).map((item, index) => {
  394. if (index != 2) {
  395. arrFour.push(anticoagulantsConfitOne[item])
  396. }
  397. })
  398. this.anticoagulantList = arrFour
  399. console.log("抗凝剂",this.anticoagulantList)
  400. var xtuser = this.$store.getters.xt_user
  401. this.orgname = xtuser.org.org_name
  402. var id = this.$route.query.id
  403. this.getTemplateSummaryPrintDetail(id)
  404. }
  405. }
  406. </script>
  407. <style>
  408. .borderBox p{
  409. font-weight: bold;
  410. margin: 10px 0;
  411. }
  412. .dialysis-print-order {
  413. width: 960px;
  414. margin: 0 auto;
  415. }
  416. .dialysis-print-order .order-yy-name {
  417. margin: auto;
  418. text-align: center;
  419. font-size: 20px;
  420. letter-spacing: 5px;
  421. }
  422. .dialysis-print-order .order-title {
  423. margin: auto;
  424. font-weight: 600;
  425. text-align: center;
  426. font-size: 22px;
  427. padding: 10px 20px 20px 20px;
  428. }
  429. .dialysis-print-order .table-box {
  430. width: 100%;
  431. line-height: 23px;
  432. font-size: 14px;
  433. }
  434. .dialysis-print-order .print-table {
  435. width: 100%;
  436. text-align: center;
  437. border-collapse: collapse;
  438. line-height: 40px;
  439. font-size: 14px;
  440. }
  441. .dialysis-print-order .print-table-no {
  442. width: 100%;
  443. text-align: center;
  444. border-collapse: collapse;
  445. font-size: 14px;
  446. }
  447. .dialysis-print-order .under-line {
  448. border-bottom: 1px solid #999;
  449. width: 95%;
  450. text-align: center;
  451. margin-left: 2px;
  452. }
  453. .dialysis-print-order .title-box {
  454. text-align: center;
  455. font-size: 16px;
  456. }
  457. .dialysis-print-order .radio-lebel-box {
  458. font-weight: 400;
  459. cursor: pointer;
  460. }
  461. .dialysis-print-order .radio-no {
  462. opacity: 0;
  463. outline: none;
  464. position: absolute;
  465. margin: 0;
  466. width: 0;
  467. height: 0;
  468. z-index: -1;
  469. }
  470. .dialysis-print-order .radio-inner {
  471. white-space: nowrap;
  472. cursor: pointer;
  473. outline: none;
  474. display: inline-block;
  475. line-height: 1;
  476. position: relative;
  477. vertical-align: middle;
  478. }
  479. .dialysis-print-order .radio-fang {
  480. display: inline-block;
  481. position: relative;
  482. border: 1px solid #000;
  483. box-sizing: border-box;
  484. width: 14px;
  485. height: 14px;
  486. background-color: #fff;
  487. z-index: 1;
  488. transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),
  489. background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);
  490. }
  491. .dialysis-print-order .is-checked-radio::after {
  492. content: "√";
  493. font-size: 15px;
  494. }
  495. .dialysis-print-order .print-table-no tr td {
  496. padding: 8px 5px;
  497. line-height: 25px;
  498. }
  499. .dialysis-print-order .print-table tr td {
  500. padding: 1px 1px;
  501. /*line-height: 25px;*/
  502. }
  503. .es-img {
  504. height: 25px;
  505. }
  506. .advice-name {
  507. text-align: left;
  508. }
  509. .advice-children {
  510. display: flex;
  511. }
  512. .title-box-pro {
  513. border: 0 #fff;
  514. line-height: 25px;
  515. height: 25px;
  516. text-align: left;
  517. padding-left: 10px !important;
  518. }
  519. .title-box-pro-tr {
  520. border: 0 #fff;
  521. }
  522. .text-align-left {
  523. text-align: left !important;
  524. padding-left: 10px !important;
  525. font-size: 14px !important;
  526. line-height: 25px;
  527. }
  528. .print-table-tr-new td {
  529. line-height: 20px !important;
  530. }
  531. .border-top-solid {
  532. border: solid 1px #000;
  533. }
  534. .print-template-two tr {
  535. line-height: 30px;
  536. }
  537. .parent {
  538. text-align: left;
  539. padding-left: 20px !important;
  540. }
  541. </style>