see999 3 lat temu
rodzic
commit
e1fcfb1a5d
1 zmienionych plików z 622 dodań i 0 usunięć
  1. 622 0
      src/xt_pages/workforce/scheduleTablePrint.vue

+ 622 - 0
src/xt_pages/workforce/scheduleTablePrint.vue Wyświetl plik

@@ -0,0 +1,622 @@
1
+<template>
2
+    <div>
3
+        <el-button type="primary" @click="printAction">打印</el-button>
4
+        <table id="scheduleTable" class="scheduleTable" border="1" cellspacing="0">
5
+            <tr>
6
+                <td rowspan="2">分区</td>
7
+                <td rowspan="2">机号</td>
8
+                <td colspan="3">周一({{ weekTitle[0] }})</td>
9
+                <td colspan="3">周二({{ weekTitle[1] }})</td>
10
+                <td colspan="3">周三({{ weekTitle[2] }})</td>
11
+                <td colspan="3">周四({{ weekTitle[3] }})</td>
12
+                <td colspan="3">周五({{ weekTitle[4] }})</td>
13
+                <td colspan="3">周六({{ weekTitle[5] }})</td>
14
+                <td colspan="3">周日({{ weekTitle[6] }})</td>
15
+            </tr>
16
+            <tr>
17
+                <td>上午</td>
18
+                <td>下午</td>
19
+                <td>晚上</td>
20
+                <td>上午</td>
21
+                <td>下午</td>
22
+                <td>晚上</td>
23
+                <td>上午</td>
24
+                <td>下午</td>
25
+                <td>晚上</td>
26
+                <td>上午</td>
27
+                <td>下午</td>
28
+                <td>晚上</td>
29
+                <td>上午</td>
30
+                <td>下午</td>
31
+                <td>晚上</td>
32
+                <td>上午</td>
33
+                <td>下午</td>
34
+                <td>晚上</td>
35
+                <td>上午</td>
36
+                <td>下午</td>
37
+                <td>晚上</td>
38
+            </tr>
39
+            <tr v-for="(item,index) in scheduleZone" :key="index">
40
+                <td style="min-width:50px;">{{ item.area }}</td>
41
+                <td style="min-width:50px;">{{ item.cut }}</td>
42
+                <td style="min-width:50px;">
43
+                    <span v-if="item.Mon_M.patient_id">
44
+                        <div>{{ item.Mon_M.patient }}</div>
45
+                        <div v-if="item.Mon_M.mode_name != 'HD'">{{ item.Mon_M.mode_name }}</div>
46
+                    </span>
47
+                </td>
48
+                <td style="min-width:50px;">
49
+                    <span v-if="item.Mon_A.patient_id">
50
+                        <div>{{ item.Mon_A.patient }}</div>
51
+                        <div v-if="item.Mon_A.mode_name != 'HD'">{{ item.Mon_A.mode_name }}</div>
52
+                    </span>
53
+                </td>
54
+                <td style="min-width:50px;">
55
+                    <span v-if="item.Mon_N.patient_id">
56
+                        <div>{{ item.Mon_N.patient }}</div>
57
+                        <div v-if="item.Mon_N.mode_name != 'HD'">{{ item.Mon_N.mode_name }}</div>
58
+                    </span>
59
+                </td>
60
+                <td style="min-width:50px;">
61
+                    <span v-if="item.Tue_M.patient_id">
62
+                        <div>{{ item.Tue_M.patient }}</div>
63
+                        <div v-if="item.Tue_M.mode_name != 'HD'">{{ item.Tue_M.mode_name }}</div>
64
+                    </span>
65
+                </td>
66
+                <td style="min-width:50px;">
67
+                    <span v-if="item.Tue_A.patient_id">
68
+                        <div>{{ item.Tue_A.patient }}</div>
69
+                        <div v-if="item.Tue_A.mode_name != 'HD'">{{ item.Tue_A.mode_name }}</div>
70
+                    </span>
71
+                </td>
72
+                <td style="min-width:50px;">
73
+                    <span v-if="item.Tue_N.patient_id">
74
+                        <div>{{ item.Tue_N.patient }}</div>
75
+                        <div v-if="item.Tue_N.mode_name != 'HD'">{{ item.Tue_N.mode_name }}</div>
76
+                    </span>
77
+                </td>
78
+                <td style="min-width:50px;">
79
+                    <span v-if="item.Wed_M.patient_id">
80
+                        <div>{{ item.Wed_M.patient }}</div>
81
+                        <div v-if="item.Wed_M.mode_name != 'HD'">{{ item.Wed_M.mode_name }}</div>
82
+                    </span>
83
+                </td>
84
+                <td style="min-width:50px;">
85
+                    <span v-if="item.Wed_A.patient_id">
86
+                        <div>{{ item.Wed_A.patient }}</div>
87
+                        <div v-if="item.Wed_A.mode_name != 'HD'">{{ item.Wed_A.mode_name }}</div>
88
+                    </span>
89
+                </td>
90
+                <td style="min-width:50px;"> 
91
+                    <span v-if="item.Wed_N.patient_id">
92
+                        <div>{{ item.Wed_N.patient }}</div>
93
+                        <div v-if="item.Wed_N.mode_name != 'HD'">{{ item.Wed_N.mode_name }}</div>
94
+                    </span>
95
+                </td>
96
+                <td style="min-width:50px;">
97
+                    <span v-if="item.Thurs_M.patient_id">
98
+                        <div>{{ item.Thurs_M.patient }}</div>
99
+                        <div v-if="item.Thurs_M.mode_name != 'HD'">{{ item.Thurs_M.mode_name }}</div>
100
+                    </span>
101
+                </td>
102
+                <td style="min-width:50px;">
103
+                    <span v-if="item.Thurs_A.patient_id">
104
+                        <div>{{ item.Thurs_A.patient }}</div>
105
+                        <div v-if="item.Thurs_A.mode_name != 'HD'">{{ item.Thurs_A.mode_name }}</div>
106
+                    </span>
107
+                </td>
108
+                <td style="min-width:50px;">
109
+                    <span v-if="item.Thurs_N.patient_id">
110
+                        <div>{{ item.Thurs_N.patient }}</div>
111
+                        <div v-if="item.Thurs_N.mode_name != 'HD'">{{ item.Thurs_N.mode_name }}</div>
112
+                    </span>
113
+                </td>
114
+                <td style="min-width:50px;">
115
+                    <span v-if="item.Fri_M.patient_id">
116
+                        <div>{{ item.Fri_M.patient }}</div>
117
+                        <div v-if="item.Fri_M.mode_name != 'HD'">{{ item.Fri_M.mode_name }}</div>
118
+                    </span>
119
+                </td>
120
+                <td style="min-width:50px;">
121
+                    <span v-if="item.Fri_A.patient_id">
122
+                        <div>{{ item.Fri_A.patient }}</div>
123
+                        <div v-if="item.Fri_A.mode_name != 'HD'">{{ item.Fri_A.mode_name }}</div>
124
+                    </span>
125
+                </td>
126
+                <td style="min-width:50px;">
127
+                    <span v-if="item.Fri_N.patient_id">
128
+                        <div>{{ item.Fri_N.patient }}</div>
129
+                        <div v-if="item.Sat_M.mode_name != 'HD'">{{ item.Sat_M.mode_name }}</div>
130
+                    </span>
131
+                </td>
132
+                <td style="min-width:50px;">
133
+                    <span v-if="item.Sat_M.patient_id">
134
+                        <div>{{ item.Sat_M.patient }}</div>
135
+                        <div v-if="item.Sat_M.mode_name != 'HD'">{{ item.Sat_M.mode_name }}</div>
136
+                    </span>
137
+                </td>
138
+                <td style="min-width:50px;">
139
+                    <span v-if="item.Sat_A.patient_id">
140
+                        <div>{{ item.Sat_A.patient }}</div>
141
+                        <div v-if="item.Sat_A.mode_name != 'HD'">{{ item.Sat_A.mode_name }}</div>
142
+                    </span>
143
+                </td>
144
+                <td style="min-width:50px;">
145
+                    <span v-if="item.Sat_N.patient_id">
146
+                        <div>{{ item.Sat_N.patient }}</div>
147
+                        <div v-if="item.Sat_N.mode_name != 'HD'">{{ item.Sat_N.mode_name }}</div>
148
+                    </span>
149
+                </td>
150
+                <td style="min-width:50px;">
151
+                    <span v-if="item.Sun_M.patient_id">
152
+                        <div>{{ item.Sun_M.patient }}</div>
153
+                        <div v-if="item.Sun_M.mode_name != 'HD'">{{ item.Sun_M.mode_name }}</div>
154
+                    </span>
155
+                </td>
156
+                <td style="min-width:50px;">
157
+                    <span v-if="item.Sun_A.patient_id">
158
+                        <div>{{ item.Sun_A.patient }}</div>
159
+                        <div v-if="item.Sun_A.mode_name != 'HD'">{{ item.Sun_A.mode_name }}</div>
160
+                    </span>
161
+                </td>
162
+                <td style="min-width:50px;">
163
+                    <span v-if="item.Sun_N.patient_id">
164
+                        <div>{{ item.Sun_N.patient }}</div>
165
+                        <div v-if="item.Sun_N.mode_name != 'HD'">{{ item.Sun_N.mode_name }}</div>
166
+                    </span>
167
+                </td>
168
+            </tr>
169
+        </table>
170
+    </div>
171
+</template>
172
+
173
+
174
+
175
+<script>
176
+import {getSchedules,getWeekPanels} from "@/api/schedule";
177
+import print from 'print-js'
178
+export default {
179
+    props:{
180
+        scheduleZoneProp: {
181
+            type: Array,
182
+            dafault: []
183
+        },
184
+    },
185
+    data(){
186
+        return{
187
+            schedule_type:'',
188
+            partition_id:'',
189
+            theType:2,
190
+            scheduleZone:[],
191
+            weekTitle:[],
192
+            scheduleZoneRow: [],
193
+            partitions: {},
194
+        }
195
+    },
196
+    created(){
197
+        this.modeOptions = this.$store.getters.treatment_mode;
198
+        this.getWeekPanels()
199
+        
200
+    },
201
+    methods:{
202
+        getWeekPanels() {
203
+            // this.scheduleZoneRow = []
204
+            // this.scheduleZone = []
205
+            getWeekPanels(1,this.partition_id).then(response => {
206
+                if (response.data.state == 0) {
207
+                    return false
208
+                }
209
+                var partitions = response.data.data.partitions
210
+                console.log("分区",partitions)
211
+                // this.theWeek.thisWeek = response.data.data.theWeek
212
+                // this.theWeek.lastWeek = this.theWeek.thisWeek - 1
213
+                // this.theWeek.nextWeek = this.theWeek.thisWeek + 1
214
+                // this.theWeek.nextTwoWeek = this.theWeek.thisWeek + 2
215
+                // 在控制变量改变的时候进行 强制渲染更新
216
+                // let childrenRefs = this.$refs.elTabs.$children
217
+                // this.$nextTick(() => {
218
+                //     childrenRefs.forEach(child => child.$forceUpdate())
219
+                // })
220
+
221
+                var that = this
222
+                if (partitions.length > 0) {
223
+                    partitions.forEach(function(partition) {
224
+                        if (partition.jihaos.length == 0) {
225
+                            return false
226
+                        }
227
+                        that.scheduleZoneRow.push(partition.jihaos.length)
228
+                        that.partitions[partition.id] = partition
229
+                        partition.jihaos.forEach(function(jihao) {
230
+                            var thisPa = {
231
+                            area: partition.name,
232
+                            zone_id: partition.id,
233
+                            zone_type: partition.type,
234
+                            cut: jihao.number,
235
+                            jihao_id: jihao.id,
236
+                            Mon_M: {
237
+                                schedule_id: 0,
238
+                                mode_id: 0,
239
+                                mode_name: '',
240
+                                patient_id: 0,
241
+                                patient: ''
242
+                            },
243
+                            Mon_A: {
244
+                                schedule_id: 0,
245
+                                mode_id: 0,
246
+                                mode_name: '',
247
+                                patient_id: 0,
248
+                                patient: ''
249
+                            },
250
+                            Mon_N: {
251
+                                schedule_id: 0,
252
+                                mode_id: 0,
253
+                                mode_name: '',
254
+                                patient_id: 0,
255
+                                patient: ''
256
+                            },
257
+                            Tue_M: {
258
+                                schedule_id: 0,
259
+                                mode_id: 0,
260
+                                mode_name: '',
261
+                                patient_id: 0,
262
+                                patient: ''
263
+                            },
264
+                            Tue_A: {
265
+                                schedule_id: 0,
266
+                                mode_id: 0,
267
+                                mode_name: '',
268
+                                patient_id: 0,
269
+                                patient: ''
270
+                            },
271
+                            Tue_N: {
272
+                                schedule_id: 0,
273
+                                mode_id: 0,
274
+                                mode_name: '',
275
+                                patient_id: 0,
276
+                                patient: ''
277
+                            },
278
+                            Wed_M: {
279
+                                schedule_id: 0,
280
+                                mode_id: 0,
281
+                                mode_name: '',
282
+                                patient_id: 0,
283
+                                patient: ''
284
+                            },
285
+                            Wed_A: {
286
+                                schedule_id: 0,
287
+                                mode_id: 0,
288
+                                mode_name: '',
289
+                                patient_id: 0,
290
+                                patient: ''
291
+                            },
292
+                            Wed_N: {
293
+                                schedule_id: 0,
294
+                                mode_id: 0,
295
+                                mode_name: '',
296
+                                patient_id: 0,
297
+                                patient: ''
298
+                            },
299
+                            Thurs_M: {
300
+                                schedule_id: 0,
301
+                                mode_id: 0,
302
+                                mode_name: '',
303
+                                patient_id: 0,
304
+                                patient: ''
305
+                            },
306
+                            Thurs_A: {
307
+                                schedule_id: 0,
308
+                                mode_id: 0,
309
+                                mode_name: '',
310
+                                patient_id: 0,
311
+                                patient: ''
312
+                            },
313
+                            Thurs_N: {
314
+                                schedule_id: 0,
315
+                                mode_id: 0,
316
+                                mode_name: '',
317
+                                patient_id: 0,
318
+                                patient: ''
319
+                            },
320
+                            Fri_M: {
321
+                                schedule_id: 0,
322
+                                mode_id: 0,
323
+                                mode_name: '',
324
+                                patient_id: 0,
325
+                                patient: ''
326
+                            },
327
+                            Fri_A: {
328
+                                schedule_id: 0,
329
+                                mode_id: 0,
330
+                                mode_name: '',
331
+                                patient_id: 0,
332
+                                patient: ''
333
+                            },
334
+                            Fri_N: {
335
+                                schedule_id: 0,
336
+                                mode_id: 0,
337
+                                mode_name: '',
338
+                                patient_id: 0,
339
+                                patient: ''
340
+                            },
341
+                            Sat_M: {
342
+                                schedule_id: 0,
343
+                                mode_id: 0,
344
+                                mode_name: '',
345
+                                patient_id: 0,
346
+                                patient: ''
347
+                            },
348
+                            Sat_A: {
349
+                                schedule_id: 0,
350
+                                mode_id: 0,
351
+                                mode_name: '',
352
+                                patient_id: 0,
353
+                                patient: ''
354
+                            },
355
+                            Sat_N: {
356
+                                schedule_id: 0,
357
+                                mode_id: 0,
358
+                                mode_name: '',
359
+                                patient_id: 0,
360
+                                patient: ''
361
+                            },
362
+                            Sun_A: {
363
+                                schedule_id: 0,
364
+                                mode_id: 0,
365
+                                mode_name: '',
366
+                                patient_id: 0,
367
+                                patient: ''
368
+                            },
369
+                            Sun_N: {
370
+                                schedule_id: 0,
371
+                                mode_id: 0,
372
+                                mode_name: '',
373
+                                patient_id: 0,
374
+                                patient: ''
375
+                            },
376
+                            Sun_M: {
377
+                                schedule_id: 0,
378
+                                mode_id: 0,
379
+                                mode_name: '',
380
+                                patient_id: 0,
381
+                                patient: ''
382
+                            },
383
+                            total: 0
384
+                            }
385
+                            that.scheduleZone.push(thisPa)
386
+
387
+                        })
388
+                    })
389
+                }
390
+                this.getSchedules()
391
+            })
392
+        },
393
+        getSchedules() {
394
+            const params = {
395
+                weekTime:this.theType,
396
+                partition_id:this.partition_id,
397
+                schedule_type:this.schedule_type,
398
+            }
399
+            getSchedules(params).then(response => {
400
+                if (response.data.state == 1) {
401
+                    this.weekTitle = response.data.data.weekTitle;
402
+                    this.weekDays = response.data.data.days;
403
+                    this.toDay = response.data.data.today;
404
+                    var theSchedules = response.data.data.schdules;
405
+                    
406
+                    
407
+                    
408
+                    var that = this;
409
+                    that.scheduleZone.forEach(function(zone, index) {
410
+                        
411
+                        that.scheduleZone[index].Mon_M = {
412
+                            mode_id: 0,
413
+                            mode_name: "",
414
+                            patient_id: 0,
415
+                            patient: ""
416
+                        };
417
+                        that.scheduleZone[index].Mon_A = {
418
+                            mode_id: 0,
419
+                            mode_name: "",
420
+                            patient_id: 0,
421
+                            patient: ""
422
+                        };
423
+                        that.scheduleZone[index].Mon_N = {
424
+                            mode_id: 0,
425
+                            mode_name: "",
426
+                            patient_id: 0,
427
+                            patient: ""
428
+                        };
429
+                        that.scheduleZone[index].Tue_M = {
430
+                            mode_id: 0,
431
+                            mode_name: "",
432
+                            patient_id: 0,
433
+                            patient: ""
434
+                        };
435
+                        that.scheduleZone[index].Tue_A = {
436
+                            mode_id: 0,
437
+                            mode_name: "",
438
+                            patient_id: 0,
439
+                            patient: ""
440
+                        };
441
+                        that.scheduleZone[index].Tue_N = {
442
+                            mode_id: 0,
443
+                            mode_name: "",
444
+                            patient_id: 0,
445
+                            patient: ""
446
+                        };
447
+                        that.scheduleZone[index].Wed_M = {
448
+                            mode_id: 0,
449
+                            mode_name: "",
450
+                            patient_id: 0,
451
+                            patient: ""
452
+                        };
453
+                        that.scheduleZone[index].Wed_A = {
454
+                            mode_id: 0,
455
+                            mode_name: "",
456
+                            patient_id: 0,
457
+                            patient: ""
458
+                        };
459
+                        that.scheduleZone[index].Wed_N = {
460
+                            mode_id: 0,
461
+                            mode_name: "",
462
+                            patient_id: 0,
463
+                            patient: ""
464
+                        };
465
+                        that.scheduleZone[index].Thurs_M = {
466
+                            mode_id: 0,
467
+                            mode_name: "",
468
+                            patient_id: 0,
469
+                            patient: ""
470
+                        };
471
+                        that.scheduleZone[index].Thurs_A = {
472
+                            mode_id: 0,
473
+                            mode_name: "",
474
+                            patient_id: 0,
475
+                            patient: ""
476
+                        };
477
+                        that.scheduleZone[index].Thurs_N = {
478
+                            mode_id: 0,
479
+                            mode_name: "",
480
+                            patient_id: 0,
481
+                            patient: ""
482
+                        };
483
+                        that.scheduleZone[index].Fri_M = {
484
+                            mode_id: 0,
485
+                            mode_name: "",
486
+                            patient_id: 0,
487
+                            patient: ""
488
+                        };
489
+                        that.scheduleZone[index].Fri_A = {
490
+                            mode_id: 0,
491
+                            mode_name: "",
492
+                            patient_id: 0,
493
+                            patient: ""
494
+                        };
495
+                        that.scheduleZone[index].Fri_N = {
496
+                            mode_id: 0,
497
+                            mode_name: "",
498
+                            patient_id: 0,
499
+                            patient: ""
500
+                        };
501
+                        that.scheduleZone[index].Sat_M = {
502
+                            mode_id: 0,
503
+                            mode_name: "",
504
+                            patient_id: 0,
505
+                            patient: ""
506
+                        };
507
+                        that.scheduleZone[index].Sat_A = {
508
+                            mode_id: 0,
509
+                            mode_name: "",
510
+                            patient_id: 0,
511
+                            patient: ""
512
+                        };
513
+                        that.scheduleZone[index].Sat_N = {
514
+                            mode_id: 0,
515
+                            mode_name: "",
516
+                            patient_id: 0,
517
+                            patient: ""
518
+                        };
519
+                        that.scheduleZone[index].Sun_A = {
520
+                            mode_id: 0,
521
+                            mode_name: "",
522
+                            patient_id: 0,
523
+                            patient: ""
524
+                        };
525
+                        that.scheduleZone[index].Sun_N = {
526
+                            mode_id: 0,
527
+                            mode_name: "",
528
+                            patient_id: 0,
529
+                            patient: ""
530
+                        };
531
+                        that.scheduleZone[index].Sun_M = {
532
+                            mode_id: 0,
533
+                            mode_name: "",
534
+                            patient_id: 0,
535
+                            patient: ""
536
+                        };
537
+                        that.scheduleZone[index].total = 0;
538
+                        
539
+                        if (response.data.data.schdules.length > 0) {
540
+                            theSchedules.forEach(function(schedule, sindex) {
541
+
542
+                                if (zone.jihao_id == schedule.bed_id) {
543
+                                    // if(zone.zone_id == schedule.partition_id && zone.jihao_id == schedule.bed_id) {
544
+                                    var weekPath = that.weekPath(
545
+                                        schedule.schedule_week,
546
+                                        schedule.schedule_type
547
+                                    );
548
+
549
+                                    if (weekPath.length == 2) {
550
+                                        // console.log(schedule);
551
+
552
+                                        var weekPathKey = weekPath[0] + "_" + weekPath[1];
553
+                                        that.scheduleZone[index][weekPathKey] = {
554
+                                        schedule_id: schedule.id,
555
+                                        mode_id: schedule.mode_id,
556
+                                        patient_id: schedule.patient_id,
557
+                                        patient: schedule.patient,
558
+                                        patient_contagions: schedule.patient_contagions,
559
+                                        mode_name:
560
+                                            typeof that.modeOptions[schedule.mode_id] ===
561
+                                            "undefined"
562
+                                            ? ""
563
+                                            : that.modeOptions[schedule.mode_id].name
564
+                                        };
565
+                                        that.scheduleZone[index].total += 1;
566
+                                        
567
+                                    }
568
+                                    
569
+                                }
570
+                                
571
+                            });
572
+                        }
573
+                        console.log('that.scheduleZone',that.scheduleZone)
574
+                    });
575
+                    
576
+                } else {
577
+                    this.$message.error("网络错误");
578
+                    return false;
579
+                }
580
+            });
581
+        },
582
+        weekPath(week, schedule_type) {
583
+            var weekArr = {
584
+                1: "Mon",
585
+                2: "Tue",
586
+                3: "Wed",
587
+                4: "Thurs",
588
+                5: "Fri",
589
+                6: "Sat",
590
+                7: "Sun"
591
+            };
592
+            var typeArr = { 1: "M", 2: "A", 3: "N" };
593
+            if (
594
+                typeof weekArr[week] === "undefined" ||
595
+                typeof typeArr[schedule_type] === "undefined"
596
+            ) {
597
+                return [];
598
+            }
599
+            return [weekArr[week], typeArr[schedule_type]];
600
+        },
601
+        printAction: function() {
602
+            const style = '@media print {#scheduleTable{font-size:14px;} .scheduleTable tr td{text-align: center;padding: 5px;}}'
603
+
604
+            printJS({
605
+            printable: 'scheduleTable',
606
+            type: 'html',
607
+            documentTitle: '  ',
608
+            style: style,
609
+            scanStyles: false
610
+            })
611
+        },
612
+    }
613
+}
614
+</script>
615
+
616
+
617
+<style lang="scss">
618
+td{
619
+    text-align: center;
620
+    padding: 5px;
621
+}
622
+</style>