Parcourir la source

Merge remote-tracking branch 'origin/20230223_pc_vue_new_branch' into 20230223_pc_vue_new_branch

yq1 il y a 4 mois
Parent
révision
42d9c1074d

+ 578 - 0
src/xt_pages/dialysis/nurseInspectionPrint.vue Voir le fichier

@@ -0,0 +1,578 @@
1
+package dialysis
2
+<template>
3
+    <div class="main-contain">
4
+        <div class="position">
5
+        <bread-crumb :crumbs="crumbs"></bread-crumb>
6
+        <el-row style="float:right;">
7
+            <el-col :span="24">
8
+            <el-button size="small" icon="el-icon-printer" type="primary" @click="printAction">打印</el-button>
9
+            </el-col>
10
+        </el-row>
11
+        </div>
12
+        <div class="app-container" style="background-color: white;">
13
+            <div id="dialysisTable">
14
+                <div class="order_title_panl">
15
+                    <span class="main_title">化验项目</span>
16
+                </div>
17
+                <p style="width: 960px;text-align: right;margin: 0 auto 10px;">日期:{{ time }}</p>
18
+                <table class="table dialysisTable" border="1" cellspacing="0" cellpadding="0">
19
+                    <tr>
20
+                    <th width="40px">姓名</th>
21
+                   
22
+                    <th width="40px">床位号</th>
23
+                 
24
+                    <th width="50px">开始时间</th>
25
+                    <th width="200px">医嘱内容</th>
26
+                    <th width="50px">执行时间</th>
27
+                    <th width="50px">执行护士</th>
28
+                    <th width="50px">校对护士</th>
29
+                    <th width="50px">校对时间</th>
30
+                    <th width="50px">开嘱医生</th>
31
+                    <th width="50px">开嘱时间</th>
32
+                    </tr>
33
+                    <template v-for="(schedules, zone_name, index) in scheduleMap">
34
+                    <tr >
35
+                        <td>{{ zone_name }}</td>
36
+                        <td></td>
37
+                        <td></td>
38
+                        <td></td>
39
+                        <td></td>
40
+                        <td></td>
41
+                        <td></td>
42
+                        <td></td>
43
+                        <td></td>
44
+                        <td></td>
45
+                    </tr>
46
+                    <template v-for="schedule in schedules">
47
+                        <template v-for="(group, group_index) in schedule.new_advice">
48
+                        <tr v-for="(advice, advice_index) in group.advices" :key="advice_index">
49
+                            <td
50
+                            v-if="advice_index == 0"
51
+                            :rowspan="group.advices.length"
52
+                            >{{ advice.parent_id == 0 ? schedule.patient.name : "" }}
53
+                            <br>
54
+                            ({{ advice.parent_id == 0 ? schedule.dialysis_no : ""}})
55
+                            <br>
56
+                            <span v-if="schedule.mode_id == 1">(HD)</span>
57
+                            <span v-if="schedule.mode_id == 2">(HDF)</span>
58
+                            <span v-if="schedule.mode_id == 3">(HD+HP)</span>
59
+                            <span v-if="schedule.mode_id == 4">(HP)</span>
60
+                            <span v-if="schedule.mode_id == 5">(HF)</span>
61
+                            <span v-if="schedule.mode_id == 6">(SCUF)</span>
62
+                            <span v-if="schedule.mode_id == 7">(IUF)</span>
63
+                            <span v-if="schedule.mode_id == 8">(HFHD)</span>
64
+                            <span v-if="schedule.mode_id == 9">(HFHD+HP)</span>
65
+                            <span v-if="schedule.mode_id == 10">(PHF)</span>
66
+                            <span v-if="schedule.mode_id == 11">(HFR)</span>
67
+                            <span v-if="schedule.mode_id == 12">(HDF+HP)</span>
68
+                            <span v-if="schedule.mode_id == 13">(CRRT)</span>
69
+                            <span v-if="schedule.mode_id == 14">(腹水回输)</span>
70
+                            <span v-if="schedule.mode_id == 24">I-HDF</span>
71
+                            </td>
72
+                           
73
+                        
74
+                            <td>
75
+                                {{ schedule.device_number.number }}
76
+                            </td>
77
+                           
78
+                            <td v-if="advice_index == 0" :rowspan="group.advices.length">
79
+                            {{
80
+                            advice.parent_id == 0
81
+                            ? parseTime(advice.start_time, "{m}-{d} {h}:{i}")
82
+                            : ""
83
+                            }}
84
+                            </td>
85
+                            <td
86
+                            :class="
87
+                                advice.parent_id == 0
88
+                                ? 'advice_content'
89
+                                : 'subadvice_content'
90
+                            "
91
+                            >
92
+                            <span>{{ advice.advice_name }}</span>
93
+                            <span>{{ advice.advice_desc }}{{ advice.drug_spec_unit }}</span>
94
+                            <span v-if="advice.prescribing_number">
95
+                                {{ advice.prescribing_number
96
+                                }}{{ advice.prescribing_number_unit }}
97
+                            </span>
98
+                            <span v-if="advice.single_dose">
99
+                                单次用量 {{ advice.single_dose
100
+                                }}{{ advice.single_dose_unit }}
101
+                            </span>
102
+                            <span>{{ advice.delivery_way }}</span>
103
+                            <span>{{ advice.execution_frequency }}</span>
104
+                            <span
105
+                                v-if="advice.parent_id == 0 && advice.remark.length > 0"
106
+                            >({{ advice.remark }})</span>
107
+                            </td>
108
+                            <td>{{ parseTime(advice.execution_time, "{m}-{d} {h}:{i}") }}</td>
109
+                            <td>{{ getName(advice.execution_staff) }}</td>
110
+                            <td>{{ getName(advice.checker) }}</td>
111
+                            <td>{{ parseTime(advice.check_time, "{m}-{d} {h}:{i}") }}</td>
112
+                            <td>{{ getName(advice.advice_doctor) }}</td>
113
+                            <td>{{ parseTime(advice.start_time, "{m}-{d} {h}:{i}") }}</td>
114
+                        </tr>
115
+                        </template>
116
+                     </template>
117
+                    </template>
118
+                </table>
119
+            </div>
120
+        </div>
121
+
122
+        
123
+    </div>
124
+</template>
125
+
126
+<script>
127
+import BreadCrumb from '@/xt_pages/components/bread-crumb'
128
+import { getSchedualDoctors } from '@/api/advice'
129
+import { parseTime } from '@/utils'
130
+import print from 'print-js'
131
+const moment = require('moment')
132
+export default {
133
+    components:{
134
+        BreadCrumb
135
+    },
136
+    data(){
137
+        return{
138
+            crumbs: [
139
+                { path: false, name: '耗材药品' },
140
+                { path: false, name: '打印' }
141
+            ],
142
+            tableData:[],
143
+            start_time:"",
144
+            end_time:"",
145
+            print_time:moment(new Date()).add('year', 0).format('YYYY-MM-DD'),
146
+
147
+            zone_selected: 0,
148
+            scheduleMap:[],
149
+            time:'',
150
+            show:true,
151
+            showOne:false,
152
+            delivery_way:"",
153
+            org_id:0,
154
+        }
155
+    },
156
+    methods:{
157
+        printAction: function() {
158
+            const style = '@media print { .dialysisTable{width:960px;margin: 0 auto;text-align: center;border-collapse: collapse;}.order_title_panl {text-align: center;.main_title {font-size: 18px;line-height: 40px;font-weight: 500;}}.dialysisTable tr{padding: 5px 0;}.dialysisTable th {color: #000;padding: 0;margin: 0;height: 30px;}.dialysisTable tr td {padding: 0px 0;}.subadvice_content {text-align: left;padding-left: 25px !important;padding-right: 5px !important;}.advice_content {text-align: left;padding-left: 5px !important;padding-right: 5px !important;padding: 5px 5px !important;} }'
159
+
160
+            printJS({
161
+            printable: 'dialysisTable',
162
+            type: 'html',
163
+            documentTitle: '  ',
164
+            style: style,
165
+            scanStyles: false
166
+            })
167
+        },
168
+        requestSchedualDoctors (time) {
169
+            let newTime =  moment(time).format('YYYY-MM-DD')
170
+            getSchedualDoctors({
171
+            date: newTime,
172
+            patient_type: 0,
173
+            advice_type: 2,
174
+            delivery_way:this.delivery_way,
175
+            excution_way:this.$route.query.excution_way,
176
+            }).then(rs => {
177
+                var resp = rs.data
178
+                if (resp.state == 1) {
179
+                this.admin_user = resp.data.adminUser
180
+                var config = resp.data.config
181
+                let project_config = resp.data.project_config
182
+                
183
+                if(project_config.is_open == 1){
184
+                    this.project = resp.data.project
185
+                    console.log("this.project--------------",this.project)
186
+                    resp.data.hisAdvices.map((item,index) => {
187
+                     item.doctor_advice = []
188
+                    item.new_advice = item.new_advice ? item.new_advice : []
189
+                     
190
+                    if(this.project[index].project.length > 0){
191
+                        this.project[index].project.map(it => {
192
+                        let obj = {
193
+                            advice_doctor: it.doctor,
194
+                            start_time:it.start_time,
195
+                            advice_name: it.type == 2 ? it.project.project_name : it.good_info.good_name,
196
+                            cost_classify:it.type == 2? it.project.cost_classify:"100",
197
+                            execution_time:it.execution_time,
198
+                            execution_state:it.execution_state,
199
+                            execution_staff:it.execution_staff,
200
+                            check_time:it.check_time,
201
+                            check_state:it.check_state,
202
+                            checker:it.checker,
203
+                            created_time:it.ctime,
204
+                            remark:'',
205
+                            id:it.id,
206
+                            parent_id:0,
207
+                            groupno:0,
208
+                            advice_type:6,
209
+
210
+                        }
211
+                        console.log("cost_classify-------",obj)
212
+                        if(obj.cost_classify == 3){
213
+                         item.doctor_advice.push(obj)
214
+                        }
215
+  
216
+                        
217
+                        })
218
+                    }
219
+                    
220
+                   })
221
+                }
222
+
223
+                if(config.is_open == 1){
224
+                   var schedulesArr = resp.data.hisAdvices
225
+                   let schedules = []
226
+                   var ids = this.$store.getters.temp_params.advice_ids
227
+                   console.log('ids',ids)
228
+                   schedulesArr.map(item => {
229
+                    if(ids.indexOf(item.patient_id) > -1){
230
+                        schedules.push(item)
231
+                    }
232
+
233
+                })
234
+
235
+                for (let i = 0; i < schedules.length; i++) {
236
+                    schedules[i].dialysis_no = schedules[i].patient.dialysis_no
237
+                }
238
+
239
+
240
+                var arr = []
241
+                for (let j = 0; j < schedules.length; j++) {
242
+                    arr.push(schedules[j].dialysis_no)
243
+                }
244
+                arr.sort(function (a, b) {
245
+                    return a - b
246
+                })
247
+
248
+
249
+                var arrTwo = []
250
+                for (let i = 0; i < arr.length; i++) {
251
+                    for (let j = 0; j < schedules.length; j++) {
252
+                    if (arr[i] == schedules[j].dialysis_no) {
253
+                        arrTwo.push(schedules[j])
254
+                    }
255
+                    }
256
+                }
257
+
258
+                arrTwo.map((item, index) => {
259
+
260
+                    item.doctor_advice.sort(this.compare('start_time'))
261
+                })
262
+
263
+
264
+                const res = new Map()
265
+                let a = arrTwo.filter(
266
+                    a => !res.has(a.dialysis_no) && res.set(a.dialysis_no, 1)
267
+                )
268
+
269
+
270
+
271
+                schedules = a
272
+                var zoneMap = {}
273
+                var scheduleMap = {}
274
+                for (let index = 0; index < schedules.length; index++) {
275
+                    const schedule = schedules[index]
276
+                    if (schedule.doctor_advice.length == 0) {
277
+                    continue
278
+                    }
279
+                    if (scheduleMap[schedule.device_number.zone.name] == null) {
280
+                    scheduleMap[schedule.device_number.zone.name] = []
281
+                    }
282
+                    scheduleMap[schedule.device_number.zone.name].push(schedule)
283
+                    if (zoneMap[schedule.device_number.zone.name] == null) {
284
+                    zoneMap[schedule.device_number.zone.name] =
285
+                        schedule.device_number.zone
286
+                    }
287
+                }
288
+
289
+                var zones = []
290
+                zones.push({ value: 0, text: '全部分区' })
291
+                for (var zoneName in zoneMap) {
292
+                    zones.push({ value: zoneMap[zoneName].id, text: zoneName })
293
+                }
294
+
295
+                zones = zones.sort(function (a, b) {
296
+                    return a.value > b.value
297
+                })
298
+                this.zones = zones
299
+                for (var key in scheduleMap) {
300
+                    let mapArr = scheduleMap[key]
301
+                    for (let i = 0; i < mapArr.length; i++) {
302
+                    mapArr[i]['new_advice'] = []
303
+                    }
304
+                }
305
+
306
+                for (var key in scheduleMap) {
307
+                    let mapArr = scheduleMap[key]
308
+                    for (let i = 0; i < mapArr.length; i++) {
309
+                    var maps = mapArr[i]
310
+                    var resp_advices = maps.doctor_advice
311
+                    if (resp_advices.length > 0) {
312
+                        var newGroupObject = function () {
313
+                        return Object.assign(
314
+                            {},
315
+                            {
316
+                            group_no: 0,
317
+                            advices: []
318
+                            }
319
+                        )
320
+                        }
321
+                        var initGroupBlock = function (group, advice) {
322
+                        group.group_no = advice.groupno
323
+                        }
324
+
325
+                        var advice_groups = []
326
+                        var group = newGroupObject()
327
+                        for (let index = 0; index < resp_advices.length; index++) {
328
+                        const advice = resp_advices[index]
329
+                        if (advice.groupno == 0) {
330
+                            // 老版本的医嘱
331
+                            if (advice.parent_id > 0) {
332
+                            if (advice_groups.length > 0) {
333
+                                var parent_group = advice_groups[advice_groups.length - 1]
334
+                                if (parent_group.advices.length > 0) {
335
+                                if (parent_group.advices[0].id == advice.parent_id) {
336
+                                    parent_group.advices.push(advice)
337
+                                }
338
+                                }
339
+                            }
340
+                            continue
341
+                            } else {
342
+                            if (group.group_no > 0) {
343
+                                advice_groups.push(group)
344
+                                group = newGroupObject()
345
+                            }
346
+
347
+                            initGroupBlock(group, advice)
348
+                            group.advices.push(advice)
349
+                            advice_groups.push(group)
350
+                            group = newGroupObject()
351
+                            continue
352
+                            }
353
+                        } else {
354
+                            if (group.group_no > 0 && group.group_no != advice.groupno) {
355
+                            advice_groups.push(group)
356
+                            group = newGroupObject()
357
+                            }
358
+                            if (group.group_no == 0) {
359
+                            initGroupBlock(group, advice)
360
+                            }
361
+                            if (group.group_no == advice.groupno) {
362
+                            group.advices.push(advice)
363
+                            }
364
+                        }
365
+                        }
366
+                        if (group.group_no > 0) {
367
+                        // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加
368
+                        advice_groups.push(group)
369
+                        }
370
+                        advice_groups = advice_groups
371
+                    } else {
372
+                        advice_groups = []
373
+                    }
374
+                    
375
+                    maps.new_advice = advice_groups
376
+                    }
377
+                 }
378
+
379
+                    this.scheduleMap = scheduleMap
380
+
381
+                   
382
+                 
383
+                 }
384
+                
385
+              
386
+
387
+                
388
+ 
389
+
390
+                }
391
+            })
392
+        },
393
+        compare (property) {
394
+            return function (a, b) {
395
+                var value1 = a[property]
396
+                var value2 = b[property]
397
+                return value1 - value2
398
+            }
399
+        },
400
+        parseTime: function (time, layout) {
401
+            if (time == 0) {
402
+                return ''
403
+            }
404
+            return parseTime(time, layout)
405
+        },
406
+        getName (val) {
407
+            for (let i = 0; i < this.admin_user.length; i++) {
408
+                if (this.admin_user[i].id == val) {
409
+                    return this.admin_user[i].name
410
+                }
411
+            }
412
+        },
413
+    },
414
+    computed: {
415
+      filtedScheduals: function () {
416
+        var scheduleMap = new Object()
417
+        if (this.zone_selected == 0) {
418
+            for (const key in this.scheduleMap) {
419
+            scheduleMap[key] = this.scheduleMap[key]
420
+            }
421
+        } else {
422
+            var zone_name = this.zones[this.zone_selected].text
423
+            scheduleMap[zone_name] = this.scheduleMap[zone_name]
424
+        }
425
+
426
+        if (this.schedule_type_selected != 0) {
427
+            var _scheduleMap = {}
428
+            for (const key in scheduleMap) {
429
+            var origin_schedules = scheduleMap[key]
430
+            var schedules = []
431
+            for (let index = 0; index < origin_schedules.length; index++) {
432
+                const schedule = origin_schedules[index]
433
+                if (schedule.schedule_type == this.schedule_type_selected) {
434
+                schedules.push(schedule)
435
+                }
436
+            }
437
+            if (schedules.length > 0) {
438
+                _scheduleMap[key] = schedules
439
+            }
440
+            }
441
+
442
+            scheduleMap = _scheduleMap
443
+        }
444
+        for (var key in scheduleMap) {
445
+            let mapArr = scheduleMap[key]
446
+            for (let i = 0; i < mapArr.length; i++) {
447
+            mapArr[i]['new_advice'] = []
448
+            }
449
+        }
450
+
451
+        for (var key in scheduleMap) {
452
+            let mapArr = scheduleMap[key]
453
+            for (let i = 0; i < mapArr.length; i++) {
454
+            var maps = mapArr[i]
455
+            var resp_advices = maps.doctor_advice
456
+            if (resp_advices.length > 0) {
457
+                var newGroupObject = function () {
458
+                return Object.assign(
459
+                    {},
460
+                    {
461
+                    group_no: 0,
462
+                    advices: []
463
+                    }
464
+                )
465
+                }
466
+                var initGroupBlock = function (group, advice) {
467
+                group.group_no = advice.groupno
468
+                }
469
+
470
+                var advice_groups = []
471
+                var group = newGroupObject()
472
+                for (let index = 0; index < resp_advices.length; index++) {
473
+                const advice = resp_advices[index]
474
+                if (advice.groupno == 0) {
475
+                    // 老版本的医嘱
476
+                    if (advice.parent_id > 0) {
477
+                    if (advice_groups.length > 0) {
478
+                        var parent_group = advice_groups[advice_groups.length - 1]
479
+                        if (parent_group.advices.length > 0) {
480
+                        if (parent_group.advices[0].id == advice.parent_id) {
481
+                            parent_group.advices.push(advice)
482
+                        }
483
+                        }
484
+                    }
485
+                    continue
486
+                    } else {
487
+                    if (group.group_no > 0) {
488
+                        advice_groups.push(group)
489
+                        group = newGroupObject()
490
+                    }
491
+
492
+                    initGroupBlock(group, advice)
493
+                    group.advices.push(advice)
494
+                    advice_groups.push(group)
495
+                    group = newGroupObject()
496
+                    continue
497
+                    }
498
+                } else {
499
+                    if (group.group_no > 0 && group.group_no != advice.groupno) {
500
+                    advice_groups.push(group)
501
+                    group = newGroupObject()
502
+                    }
503
+                    if (group.group_no == 0) {
504
+                    initGroupBlock(group, advice)
505
+                    }
506
+                    if (group.group_no == advice.groupno) {
507
+                    group.advices.push(advice)
508
+                    }
509
+                }
510
+                }
511
+                if (group.group_no > 0) {
512
+                // 上述的算法会导致最后一组没有加到advice_groups,这里要手动加
513
+                advice_groups.push(group)
514
+                }
515
+                advice_groups = advice_groups
516
+            } else {
517
+                advice_groups = []
518
+            }
519
+            maps.new_advice = advice_groups
520
+            }
521
+        }
522
+        console.log("222222",scheduleMap)
523
+        return scheduleMap
524
+        }
525
+    },
526
+    created(){
527
+      var time = this.$route.query.time
528
+      var delivery_way = this.$route.query.delivery_way
529
+      this.delivery_way = delivery_way
530
+      this.time = moment(time).format('YYYY-MM-DD')
531
+      console.log(11,this.$route.query)
532
+      this.requestSchedualDoctors(time)
533
+      this.org_id = this.$store.getters.xt_user.template_info.org_id;
534
+    }
535
+}
536
+</script>
537
+
538
+
539
+<style rel="stylesheet/scss" lang="scss" scoped>
540
+.dialysisTable{
541
+    width:960px;
542
+    margin: 0 auto;
543
+    text-align: center;
544
+    border-collapse: collapse;
545
+}
546
+.order_title_panl {
547
+    text-align: center;
548
+
549
+    .main_title {
550
+      font-size: 18px;
551
+      line-height: 40px;
552
+      font-weight: 500;
553
+    }
554
+}
555
+.dialysisTable tr{
556
+    padding: 10px 0;
557
+}
558
+.dialysisTable th {
559
+    color: #000;
560
+    padding: 0;
561
+    margin: 0;
562
+    height: 30px;
563
+}
564
+.dialysisTable tr td {
565
+    padding: 12px 0;
566
+}
567
+.subadvice_content {
568
+    text-align: left;
569
+    padding-left: 25px !important;
570
+    padding-right: 5px !important;
571
+}
572
+.advice_content {
573
+    text-align: left;
574
+    padding-left: 5px !important;
575
+    padding-right: 5px !important;
576
+    padding: 15px 5px !important;
577
+}
578
+</style>

+ 4 - 4
src/xt_pages/user/components/PatientSidebar.vue Voir le fichier

@@ -179,10 +179,10 @@ export default {
179 179
             //   name: '3-3',
180 180
             //   label: '体格检查新'
181 181
             // },
182
-            {
183
-              name: '3-5',
184
-              label: '病程记录新'
185
-            },
182
+            // {
183
+            //   name: '3-5',
184
+            //   label: '病程记录新'
185
+            // },
186 186
             {
187 187
               name: '1-11',
188 188
               label: '首次病程记录'

+ 13 - 13
src/xt_permission.js Voir le fichier

@@ -12,19 +12,19 @@ const permissionWhiteList = loginWhiteList.concat(['/']) // 权限验证白名
12 12
 
13 13
 router.beforeEach((to, from, next) => {
14 14
   // 线上注释
15
-  if (!store.getters.configlist || store.getters.configlist === undefined || store.getters.configlist.length <= 0) {
16
-    store.dispatch('VerifyConfigList', []).then(() => {
17
-      next()
18
-    })
19
-  }
20
-  if (store.getters.permission_routers === undefined) {
21
-    store.dispatch('xt_GenerateRoutes', []).then(() => {
22
-      next()
23
-    })
24
-  } else {
25
-    next()
26
-  }
27
-  return
15
+  // if (!store.getters.configlist || store.getters.configlist === undefined || store.getters.configlist.length <= 0) {
16
+  //   store.dispatch('VerifyConfigList', []).then(() => {
17
+  //     next()
18
+  //   })
19
+  // }
20
+  // if (store.getters.permission_routers === undefined) {
21
+  //   store.dispatch('xt_GenerateRoutes', []).then(() => {
22
+  //     next()
23
+  //   })
24
+  // } else {
25
+  //   next()
26
+  // }
27
+  // return
28 28
  // 线上注释
29 29
   NProgress.start()
30 30
   // console.log(store.getters.current_role_urls.indexOf(to.path))