@liuqiongqiong/vue-pages 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1594 +1,1593 @@
1
- <template>
2
- <div class="app-container">
3
- <div class="filter-container">
4
- <el-form
5
- ref="listQuery"
6
- :inline="true"
7
- :model="listQuery"
8
- class="demo-form-inline"
9
- >
10
- <el-form-item label="客户姓名" prop="name">
11
- <el-select
12
- v-model="listQuery.name"
13
- style="width: 100%"
14
- clearable
15
- filterable
16
- size="small"
17
- class="filter-item"
18
- placeholder="请选择客户"
19
- >
20
- <el-option
21
- v-for="(item, index) in customerData"
22
- :key="index"
23
- :label="item.label"
24
- :value="item.label"
25
- />
26
- </el-select>
27
- </el-form-item>
28
- <el-form-item label="手机号码" prop="phoneNumber">
29
- <el-input
30
- v-model="listQuery.phoneNumber"
31
- size="small"
32
- clearable
33
- placeholder="请输入手机号码"
34
- />
35
- </el-form-item>
36
- <el-form-item>
37
- <el-button
38
- size="small"
39
- type="primary"
40
- @click="onSubmit"
41
- >查询</el-button>
42
- </el-form-item>
43
- <el-form-item>
44
- <el-button
45
- size="small"
46
- type="warning"
47
- @click="resetting('listQuery')"
48
- >重置</el-button>
49
- </el-form-item>
50
- <el-form-item>
51
- <el-button size="small" type="success" @click="add">新增</el-button>
52
- </el-form-item>
53
- <el-form-item>
54
- <el-button
55
- size="small"
56
- type="primary"
57
- @click="dialogVisibleExp = true"
58
- >导出</el-button>
59
- </el-form-item>
60
- </el-form>
61
- </div>
62
- <el-table border height="65vh" :data="list" style="width: 100%">
63
- <el-table-column :label="'护理机构'" align="center">
64
- <template slot-scope="{ row }">
65
- <span>{{ row.unitName }}</span>
66
- </template>
67
- </el-table-column>
68
- <el-table-column :label="'客户姓名'" align="center">
69
- <template slot-scope="{ row }">
70
- <span>{{ row.name }}</span>
71
- </template>
72
- </el-table-column>
73
- <el-table-column :label="'客户手机号码'" align="center">
74
- <template slot-scope="{ row }">
75
- <span>{{ row.phoneNumber }}</span>
76
- </template>
77
- </el-table-column>
78
- <el-table-column :label="'身份证号'" align="center">
79
- <template slot-scope="{ row }">
80
- <span>{{ row.idCode ? row.idCode : "-" }}</span>
81
- </template>
82
- </el-table-column>
83
- <el-table-column :label="'行政区划'" align="center">
84
- <template slot-scope="{ row }">
85
- <span>{{ row.city }}</span>
86
- </template>
87
- </el-table-column>
88
- <el-table-column :label="'辖区'" align="center">
89
- <template slot-scope="{ row }">
90
- <span>{{ row.county }}</span>
91
- </template>
92
- </el-table-column>
93
- <el-table-column :label="'现居住地址'" align="center" width="300">
94
- <template slot-scope="{ row }">
95
- <span>{{ row.address }}</span>
96
- </template>
97
- </el-table-column>
98
- <el-table-column :label="'评估等级'" align="center" width="150">
99
- <template slot-scope="{ row }">
100
- <el-tag v-if="row.lv == '06'" type="success">重度失能ⅠⅠⅠ级</el-tag>
101
- <el-tag v-if="row.lv == '05'" type="success">重度失能ⅠⅠ级</el-tag>
102
- <el-tag v-if="row.lv == '04'" type="success">重度失能Ⅰ级</el-tag>
103
- <el-tag v-if="row.lv == '03'" type="success">中度失能</el-tag>
104
- <el-tag v-if="row.lv == '02'" type="success">轻度失能</el-tag>
105
- <el-tag v-if="row.lv == '01'" type="success">基本正常</el-tag>
106
- </template>
107
- </el-table-column>
108
- <!-- <el-table-column :label="'服务合同开始时间'" align="center">
109
- <template slot-scope="{ row }">
110
- <span>{{ row.startTime }}</span>
111
- </template>
112
- </el-table-column>
113
- <el-table-column :label="'服务合同结束时间'" align="center">
114
- <template slot-scope="{ row }">
115
- <span>{{ row.endTime }}</span>
116
- </template>
117
- </el-table-column> -->
118
- <el-table-column :label="'状态'" align="center">
119
- <template slot-scope="{ row }">
120
- <el-tag v-if="row.isDelete == '0'" type="success">正常</el-tag>
121
- <el-tag v-if="row.isDelete == '1'" type="success">已注销</el-tag>
122
- <el-tag v-if="row.isDelete == '2'" type="warning">住院</el-tag>
123
- </template>
124
- </el-table-column>
125
- <el-table-column :label="'是否有定制'" align="center">
126
- <template slot-scope="{ row }">
127
- <el-tag v-if="row.formulateType == '0'" type="success">没有</el-tag>
128
- <el-tag v-if="row.formulateType == '1'" type="success">有</el-tag>
129
- </template>
130
- </el-table-column>
131
- <el-table-column :label="'创建时间'" align="center">
132
- <template slot-scope="{ row }">
133
- <span>{{ row.createTime }}</span>
134
- </template>
135
- </el-table-column>
136
- <el-table-column
137
- :label="'操作'"
138
- align="center"
139
- width="300"
140
- class-name="small-padding fixed-width"
141
- >
142
- <template slot-scope="{ row, $index }">
143
- <el-button size="mini" type="primary" @click="edit(row, $index)">
144
- 详情
145
- </el-button>
146
- <el-button
147
- size="mini"
148
- type="danger"
149
- @click="handleDelete(row, $index)"
150
- >
151
- 终止
152
- </el-button>
153
- <!-- <el-button
154
- size="mini"
155
- type="success"
156
- @click="handleStatus(row, $index)"
157
- >
158
- 修改状态
159
- </el-button> -->
160
- <el-button
161
- size="mini"
162
- type="success"
163
- @click="modifyClock(row, $index)"
164
- >
165
- 打卡项制定
166
- </el-button>
167
- </template>
168
- </el-table-column>
169
- </el-table>
170
-
171
- <pagination
172
- v-show="total > 0"
173
- :total="total"
174
- :page.sync="listQuery.pageNo"
175
- :limit.sync="listQuery.size"
176
- @pagination="getList"
177
- />
178
-
179
- <el-dialog
180
- :close-on-click-modal="false"
181
- :close-on-press-escape="false"
182
- :title="textMap[dialogStatus]"
183
- :visible.sync="dialogFormVisible"
184
- width="45%"
185
- >
186
- <el-form
187
- ref="temp"
188
- :rules="rules"
189
- :model="temp"
190
- label-position="right"
191
- label-width="140px"
192
- >
193
- <el-row :gutter="20">
194
- <el-col :span="12">
195
- <el-form-item label="身份证">
196
- <el-input
197
- v-model="temp.certno"
198
- clearable
199
- placeholder="请输入身份证"
200
- size="small"
201
- />
202
- </el-form-item>
203
- </el-col>
204
- <el-col :span="12">
205
- <el-button size="mini" type="success" @click="huoqu">
206
- 同步第三方用户校验信息
207
- </el-button>
208
- </el-col>
209
- </el-row>
210
- <el-divider />
211
- <el-row :gutter="20">
212
- <el-col :span="12">
213
- <el-form-item label="最早可登记时间">
214
- <el-input
215
- v-model="temp.floorBegntime"
216
- disabled
217
- clearable
218
- placeholder="最早可登记时间"
219
- size="small"
220
- />
221
- </el-form-item>
222
- </el-col>
223
- <el-col :span="12">
224
- <el-form-item label="登记时间">
225
- <el-date-picker
226
- v-model="temp.thirdBegntime"
227
- size="small"
228
- value-format="yyyy-MM-dd HH:mm:ss"
229
- style="width: 100%"
230
- type="datetime"
231
- placeholder="登记时间不选将使用当前系统时间"
232
- />
233
- </el-form-item>
234
- </el-col>
235
- <el-col :span="12">
236
- <el-form-item label="联系人">
237
- <el-input
238
- v-model="temp.wxUserId"
239
- clearable
240
- placeholder="请输入联系人"
241
- size="small"
242
- />
243
- <!-- <el-select style="width: 100%" clearable filterable size="small" v-model="temp.wxUserId"
244
- class="filter-item" placeholder="请选择联系人">
245
- <el-option v-for="(item, index) in contacts" :key="index" :label="item.label" :value="item.value">
246
- <span style="float: left">{{ item.label }}</span>
247
- <span style="float: right; color: #8492a6; font-size: 13px">{{
248
- item.phoneNumber
249
- }}</span>
250
- </el-option>
251
- </el-select> -->
252
- </el-form-item>
253
- </el-col>
254
-
255
- <el-col :span="12">
256
- <el-form-item label="家人关系" prop="relation">
257
- <el-select
258
- v-model="temp.relation"
259
- style="width: 100%"
260
- clearable
261
- filterable
262
- size="small"
263
- class="filter-item"
264
- placeholder="请选择家人关系"
265
- >
266
- <el-option
267
- v-for="(item, index) in [
268
- { label: '父亲', value: '父亲' },
269
- { label: '母亲', value: '母亲' },
270
- { label: '爷爷', value: '爷爷' },
271
- { label: '奶奶', value: '奶奶' },
272
- { label: '妻子', value: '妻子' },
273
- { label: '丈夫', value: '丈夫' },
274
- ]"
275
- :key="index"
276
- :label="item.label"
277
- :value="item.value"
278
- />
279
- </el-select>
280
- </el-form-item>
281
- </el-col>
282
- <el-col :span="12">
283
- <el-form-item label="客户姓名">
284
- <el-input
285
- v-model="temp.name"
286
- clearable
287
- placeholder="请输入客户姓名"
288
- size="small"
289
- />
290
- </el-form-item>
291
- </el-col>
292
- <el-col :span="12">
293
- <el-form-item label="客户手机号码">
294
- <el-input
295
- v-model="temp.phoneNumber"
296
- clearable
297
- placeholder="请输入客户手机号码"
298
- size="small"
299
- />
300
- </el-form-item>
301
- </el-col>
302
- <el-col :span="12">
303
- <el-form-item label="护理方式" prop="nurscareWay">
304
- <el-select
305
- v-model="temp.nurscareWay"
306
- disabled
307
- style="width: 100%"
308
- clearable
309
- filterable
310
- size="small"
311
- class="filter-item"
312
- placeholder="请选择护理方式"
313
- >
314
- <el-option
315
- v-for="(item, index) in [
316
- { label: '入住机构护理', value: '01' },
317
- { label: '居家上门护理', value: '07' },
318
- { label: '居家自主护理', value: '03' },
319
- ]"
320
- :key="index"
321
- :label="item.label"
322
- :value="item.value"
323
- />
324
- </el-select>
325
- </el-form-item>
326
- </el-col>
327
- <el-col :span="12">
328
- <el-form-item label="身份证" prop="idCode">
329
- <el-input
330
- v-model="temp.idCode"
331
- clearable
332
- placeholder="请输入身份证号"
333
- size="small"
334
- />
335
- </el-form-item>
336
- </el-col>
337
- <el-col :span="12">
338
- <el-form-item label="行政区划" prop="city">
339
- <el-input
340
- v-model="temp.city"
341
- disabled
342
- clearable
343
- placeholder="请输入行政区划"
344
- size="small"
345
- />
346
- </el-form-item>
347
- </el-col>
348
- <el-col :span="12">
349
- <el-form-item label="辖区" prop="county">
350
- <el-input
351
- v-model="temp.county"
352
- clearable
353
- disabled
354
- placeholder="请输入辖区"
355
- size="small"
356
- />
357
- </el-form-item>
358
- </el-col>
359
- <!-- <el-col :span="24">
360
- <el-form-item label="搜索" prop="address">
361
- <el-select
362
- v-model="keywords"
363
- filterable
364
- remote
365
- reserve-keyword
366
- placeholder="搜索位置"
367
- :remote-method="remoteMethod"
368
- :loading="loading"
369
- :clearable="true"
370
- size="mini"
371
- @change="currentSelect"
372
- style="width: 100%"
373
- value-key="id"
374
- >
375
- <el-option
376
- v-for="item in options"
377
- :key="item.id"
378
- :label="item.name"
379
- :value="item"
380
- class="one-text"
381
- >
382
- <span style="float: left">{{ item.name }}</span>
383
- <span style="float: right; color: #8492a6; font-size: 13px">{{
384
- item.district
385
- }}</span>
386
- </el-option>
387
- </el-select>
388
- </el-form-item>
389
- <div id="amapcontainer" style="width: 100%; height: 400px"></div>
390
- </el-col> -->
391
- <el-col :span="12">
392
- <el-form-item label="现居住地址">
393
- <el-input
394
- v-model="temp.address"
395
- clearable
396
- disabled
397
- placeholder="请输入现居住地址"
398
- size="small"
399
- />
400
- </el-form-item>
401
- </el-col>
402
- <el-col :span="12">
403
- <el-form-item label="经度" prop="lat">
404
- <el-input
405
- v-model="temp.lat"
406
- clearable
407
- disabled
408
- placeholder="请输入经度"
409
- size="small"
410
- />
411
- </el-form-item>
412
- </el-col>
413
- <el-col :span="12">
414
- <el-form-item label="纬度" prop="lng">
415
- <el-input
416
- v-model="temp.lng"
417
- clearable
418
- disabled
419
- placeholder="请输入纬度"
420
- size="small"
421
- />
422
- </el-form-item>
423
- </el-col>
424
- <el-col :span="12">
425
- <el-form-item label="出生日期">
426
- <el-date-picker
427
- v-model="temp.birthday"
428
- size="small"
429
- format="yyyy 年 MM 月 dd 日"
430
- value-format="yyyy-MM-dd"
431
- style="width: 100%"
432
- type="date"
433
- placeholder="请选择出生日期"
434
- />
435
- </el-form-item>
436
- </el-col>
437
- <el-col :span="12">
438
- <el-form-item label="医保类型" prop="medicalType">
439
- <el-select
440
- v-model="temp.medicalType"
441
- style="width: 100%"
442
- clearable
443
- filterable
444
- disabled
445
- size="small"
446
- class="filter-item"
447
- placeholder="请选择"
448
- >
449
- <el-option
450
- v-for="(item, index) in [
451
- { label: '城镇职工基本医疗保险', value: '1' },
452
- { label: '长期护理保险', value: '410' },
453
- ]"
454
- :key="index"
455
- :label="item.label"
456
- :value="item.value"
457
- />
458
- </el-select>
459
- </el-form-item>
460
- </el-col>
461
- <el-col :span="12">
462
- <el-form-item label="参保行政区划" prop="medicalCity">
463
- <el-input
464
- v-model="temp.medicalCity"
465
- clearable
466
- disabled
467
- placeholder="请输入参保行政区划"
468
- size="small"
469
- />
470
- </el-form-item>
471
- </el-col>
472
- <el-col :span="12">
473
- <el-form-item label="参保所属辖区" prop="medicalCounty">
474
- <el-input
475
- v-model="temp.medicalCounty"
476
- clearable
477
- disabled
478
- placeholder="请输入参保所属辖区"
479
- size="small"
480
- />
481
- </el-form-item>
482
- </el-col>
483
- <el-col :span="12">
484
- <el-form-item label="社保卡号">
485
- <el-input
486
- v-model="temp.medicalNo"
487
- clearable
488
- placeholder="请输入社保卡号"
489
- size="small"
490
- />
491
- </el-form-item>
492
- </el-col>
493
- <el-col :span="12">
494
- <el-form-item label="社保状态" prop="medicalStatus">
495
- <el-select
496
- v-model="temp.medicalStatus"
497
- style="width: 100%"
498
- clearable
499
- filterable
500
- size="small"
501
- class="filter-item"
502
- placeholder="请选择社保状态"
503
- >
504
- <el-option
505
- v-for="(item, index) in [
506
- { label: '正常', value: '1' },
507
- { label: '中断', value: '2' },
508
- ]"
509
- :key="index"
510
- :label="item.label"
511
- :value="item.value"
512
- />
513
- </el-select>
514
- </el-form-item>
515
- </el-col>
516
-
517
- <el-col :span="12">
518
- <el-form-item label="待遇状态" prop="status">
519
- <el-select
520
- v-model="temp.status"
521
- style="width: 100%"
522
- clearable
523
- filterable
524
- size="small"
525
- class="filter-item"
526
- placeholder="请选择待遇状态"
527
- >
528
- <el-option
529
- v-for="(item, index) in [
530
- { label: '正常', value: '1' },
531
- { label: '终止', value: '2' },
532
- { label: '未有待遇', value: '0' },
533
- ]"
534
- :key="index"
535
- :label="item.label"
536
- :value="item.value"
537
- />
538
- </el-select>
539
- </el-form-item>
540
- </el-col>
541
- <el-col :span="12">
542
- <el-form-item label="是否残疾人" prop="isHandicapped">
543
- <el-select
544
- v-model="temp.isHandicapped"
545
- style="width: 100%"
546
- clearable
547
- filterable
548
- size="small"
549
- class="filter-item"
550
- placeholder="请选择是否残疾人"
551
- >
552
- <el-option
553
- v-for="(item, index) in [
554
- { label: '是', value: '1' },
555
- { label: '否', value: '0' },
556
- ]"
557
- :key="index"
558
- :label="item.label"
559
- :value="item.value"
560
- />
561
- </el-select>
562
- </el-form-item>
563
- </el-col>
564
- <el-col :span="12">
565
- <el-form-item label="评估等级" prop="lv">
566
- <el-select
567
- v-model="temp.lv"
568
- style="width: 100%"
569
- clearable
570
- filterable
571
- size="small"
572
- class="filter-item"
573
- placeholder="请选择评估等级"
574
- >
575
- <el-option
576
- v-for="(item, index) in [
577
- { label: '重度失能ⅠⅠⅠ级', value: '06' },
578
- { label: '重度失能ⅠⅠ级', value: '05' },
579
- { label: '重度失能Ⅰ级', value: '04' },
580
- { label: '中度失能', value: '03' },
581
- { label: '轻度失能', value: '02' },
582
- { label: '基本正常', value: '01' },
583
- ]"
584
- :key="index"
585
- :label="item.label"
586
- :value="item.value"
587
- />
588
- </el-select>
589
- </el-form-item>
590
- </el-col>
591
- <el-col :span="12">
592
- <el-form-item label="合同服务开始时间">
593
- <el-date-picker
594
- v-model="temp.startTime"
595
- size="small"
596
- format="yyyy 年 MM 月 dd 日"
597
- value-format="yyyy-MM-dd"
598
- style="width: 100%"
599
- type="date"
600
- placeholder="请选择合同服务开始时间"
601
- />
602
- </el-form-item>
603
- </el-col>
604
- <el-col :span="12">
605
- <el-form-item label="合同服务结束时间">
606
- <el-date-picker
607
- v-model="temp.endTime"
608
- size="small"
609
- format="yyyy 年 MM 月 dd 日"
610
- value-format="yyyy-MM-dd"
611
- style="width: 100%"
612
- type="date"
613
- placeholder="请选择合同服务结束时间"
614
- />
615
- </el-form-item>
616
- </el-col>
617
- </el-row>
618
- </el-form>
619
- <div slot="footer" class="dialog-footer">
620
- <el-button size="mini" @click="dialogFormVisible = false">
621
- 取 消
622
- </el-button>
623
- <el-button
624
- size="mini"
625
- type="primary"
626
- @click="dialogStatus === 'create' ? createData() : updateData()"
627
- >
628
- 确 认
629
- </el-button>
630
- </div>
631
- </el-dialog>
632
-
633
- <el-dialog
634
- :close-on-click-modal="false"
635
- :close-on-press-escape="false"
636
- title="导出"
637
- :visible.sync="dialogVisibleExp"
638
- width="600px"
639
- :before-close="handleClose"
640
- >
641
- <el-form :inline="true" class="demo-form-inline">
642
- <el-form-item label="提示:">
643
- <el-link
644
- :underline="false"
645
- type="primary"
646
- >选择的开始日期和结束日期请将数据的入录时间包含起来,结束日期选后一天</el-link>
647
- </el-form-item>
648
- <el-form-item label="时间">
649
- <el-date-picker
650
- v-model="startDate"
651
- type="daterange"
652
- value-format="yyyy-MM-dd"
653
- range-separator="至"
654
- start-placeholder="开始日期"
655
- end-placeholder="结束日期"
656
- />
657
- </el-form-item>
658
- </el-form>
659
- <span slot="footer" class="dialog-footer">
660
- <el-button
661
- size="small"
662
- :loading="loadExp"
663
- @click="handleClose"
664
- >取 消</el-button>
665
- <el-button
666
- size="small"
667
- type="primary"
668
- :loading="loadExp"
669
- @click="expExcel"
670
- >
671
- 导 出
672
- </el-button>
673
- </span>
674
- </el-dialog>
675
-
676
- <el-dialog
677
- :close-on-click-modal="false"
678
- :close-on-press-escape="false"
679
- title="终止原因"
680
- :visible.sync="dialogVisible"
681
- width="30%"
682
- :before-close="handleClose"
683
- >
684
- <el-form
685
- ref="allState"
686
- :rules="rules"
687
- :model="allState"
688
- label-position="right"
689
- label-width="80px"
690
- >
691
- <el-row :gutter="20">
692
- <el-col :span="24">
693
- <el-form-item label="终止原因" prop="trtExitRea">
694
- <el-select
695
- v-model="trtExitObj"
696
- value-key="trtExitRea"
697
- style="width: 100%"
698
- clearable
699
- filterable
700
- size="small"
701
- class="filter-item"
702
- placeholder="请选择终止原因"
703
- @change="searchSelect"
704
- >
705
- <el-option
706
- v-for="(item, index) in [
707
- { trtExitRea: '01', trtExitDscr: '就医' },
708
- { trtExitRea: '02', trtExitDscr: '搬至其他机构' },
709
- { trtExitRea: '03', trtExitDscr: '更换护理方式' },
710
- { trtExitRea: '04', trtExitDscr: '离世' },
711
- { trtExitRea: '05', trtExitDscr: '其他' },
712
- ]"
713
- :key="index"
714
- :label="item.trtExitDscr"
715
- :value="item"
716
- />
717
- </el-select>
718
- <!-- <el-input clearable placeholder="请输入终止原因" size="small" v-model="allState.trtExitRea" /> -->
719
- </el-form-item>
720
- </el-col>
721
- </el-row>
722
- </el-form>
723
- <span slot="footer" class="dialog-footer">
724
- <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
725
- <el-button
726
- size="mini"
727
- type="primary"
728
- @click="termination"
729
- >确 定</el-button>
730
- </span>
731
- </el-dialog>
732
-
733
- <el-dialog
734
- title="打卡项制定"
735
- :close-on-click-modal="false"
736
- :close-on-press-escape="false"
737
- :visible.sync="ModifyClockVisible"
738
- width="87%"
739
- >
740
- <div class="table">
741
- <el-table
742
- :data="tableData"
743
- style="width: 100%"
744
- >
745
- <el-table-column
746
- align="center"
747
- prop="title"
748
- label="服务项目"
749
- width="200"
750
- />
751
- <el-table-column align="center" label="护理时间及次数">
752
- <el-table-column
753
- v-for="(item, index) in 31"
754
- :key="index"
755
- align="center"
756
- :label="`${index + 1}日`"
757
- width="50"
758
- >
759
- <template slot-scope="scope">
760
- <el-input
761
- v-if="
762
- scope.row.isEdit &&
763
- lastItem[index].label == `${`day${index + 1}`}`
764
- "
765
- v-model="scope.row[`day${index + 1}`]"
766
- @blur="
767
- onBlur(
768
- scope.row,
769
- `${scope.row[`day${index + 1}`]}`,
770
- `${`day${index + 1}`}`
771
- )
772
- "
773
- />
774
- <span
775
- v-else
776
- class="active"
777
- @click=" cellEdit(
778
- scope.row,
779
- `${scope.row[`day${index + 1}`]}`,
780
- `${`day${index + 1}`}`
781
- )
782
-
783
- "
784
- >{{ `${scope.row[`day${index + 1}`]}` }}</span>
785
- </template>
786
- </el-table-column>
787
- </el-table-column>
788
- <el-table-column align="center" prop="num" label="合计次数">
789
- <template slot-scope="scope">
790
- {{ totalNumber(scope.row) }}
791
- </template>
792
- </el-table-column>
793
- <el-table-column align="center" prop="needNum" label="需要次数" />
794
-
795
- </el-table>
796
- </div>
797
-
798
- <span slot="footer" class="dialog-footer">
799
- <el-button
800
- size="small"
801
- @click="ModifyClockVisible = false"
802
- >取 消</el-button>
803
- <el-button
804
- size="small"
805
- type="primary"
806
- @click="ModifyClockConfig()"
807
- >确 定</el-button>
808
- </span>
809
- </el-dialog>
810
- </div>
811
- </template>
812
-
813
- <script>
814
- import {
815
- WxUserFamilyPage,
816
- WxUserFamilySave,
817
- WxUserFamilyDel,
818
- WxUserCustomAll,
819
- customAll,
820
- ExportExcelInfoWX,
821
- WxUserFamilySysUser,
822
- updateIsDel,
823
- WxUserFamilyAll,
824
- getFormulate,
825
- WxClockItemFormulateSave
826
- } from '@/api/institution'
827
- import { getUserInfoRole } from '@/utils/auth'
828
- import Pagination from '@/components/Pagination'
829
- import AMapLoader from '@amap/amap-jsapi-loader'
830
- import QQMap from 'qqmap'
831
- export default {
832
- name: 'Personnel',
833
- components: { Pagination },
834
- filters: {},
835
- data() {
836
- return {
837
- lastItem: [],
838
- tableData: [],
839
- customerData: [],
840
- trtExitObj: {},
841
- allState: {},
842
- ModifyClockVisible: false,
843
- dialogVisibleExp: false,
844
- dialogVisible: false,
845
- loadExp: false,
846
- startDate: [],
847
- dialogStatus: '',
848
- textMap: { update: '编辑', create: '创建' },
849
- tableKey: 0,
850
- list: null,
851
- total: 0,
852
- listLoading: true,
853
- listQuery: {
854
- pageNo: 1,
855
- size: 20
856
- },
857
- // 搜索节流阀
858
- loading: false,
859
- // 搜索提示信息
860
- options: [],
861
- // 搜索提示
862
- AutoComplete: null,
863
- // 标记点
864
- marker: '',
865
- // 标记点
866
- marker: '',
867
- // 地址逆解析
868
- geoCoder: null,
869
- // 搜索关键字
870
- keywords: '',
871
- customData: [],
872
- contacts: [],
873
- dialogFormVisible: false,
874
- dialogPvVisible: false,
875
- rules: {
876
- wxUserId: [
877
- { required: true, message: '请选择联系人姓名', trigger: 'change' }
878
- ],
879
-
880
- medicalNo: [
881
- { required: true, message: '请输入社保卡号', trigger: 'blur' }
882
- ],
883
- trtExitRea: [
884
- { required: true, message: '请输入终止原因', trigger: 'blur' }
885
- ],
886
- name: [{ required: true, message: '请输入客户姓名', trigger: 'blur' }],
887
- phoneNumber: [
888
- { required: true, message: '请输入手机号码', trigger: 'blur' }
889
- ],
890
- address: [
891
- { required: true, message: '请输入现居住地址', trigger: 'blur' }
892
- ],
893
- birthday: [
894
- { required: true, message: '请选择出生日期', trigger: 'blur' }
895
- ],
896
- startTime: [
897
- {
898
- required: true,
899
- message: '请选择合同服务开始时间',
900
- trigger: 'blur'
901
- }
902
- ],
903
- endTime: [
904
- {
905
- required: true,
906
- message: '请选择合同服务结束时间',
907
- trigger: 'blur'
908
- }
909
- ]
910
- },
911
- temp: {},
912
- userInfo: {},
913
- downloadLoading: false,
914
- map: null
915
- }
916
- },
917
- computed: {
918
- totalNumber() {
919
- return function(item) {
920
- console.log(item)
921
- let data = 0
922
- if (item.title != '签到信息') {
923
- for (var i in item) {
924
- if (
925
- i != 'projectId' &&
926
- i != 'needNum' &&
927
- i != 'price' &&
928
- i != 'title' &&
929
- i != 'hejizongjia' &&
930
- i != 'titleNew' &&
931
- i != 'num'
932
- ) {
933
- data += Number(item[i])
934
- }
935
- }
936
- } else {
937
- return ''
938
- }
939
- return data
940
- }
941
- }
942
- },
943
- created() {
944
- this.userInfo = JSON.parse(getUserInfoRole())
945
- this.getList()
946
- this.getCustom()
947
- },
948
- mounted() {},
949
- methods: {
950
- ModifyClockConfig() {
951
- this.$confirm('此操作将为客户创建打卡预制项 是否继续?', '提示', {
952
- confirmButtonText: '确定',
953
- cancelButtonText: '取消',
954
- type: 'warning'
955
- })
956
- .then(() => {
957
- WxClockItemFormulateSave({ list: this.tableData, familyId: this.temp.id }).then(
958
- (res) => {
959
- if (res.status == 1) {
960
- this.$notify({
961
- title: '提示',
962
- message: res.info,
963
- type: 'success',
964
- duration: 4000
965
- })
966
- this.ModifyClockVisible = false
967
- this.getList()
968
- return
969
- }
970
- this.$notify({
971
- title: '提示',
972
- message: res.info,
973
- type: 'error',
974
- duration: 4000
975
- })
976
- }
977
- )
978
- })
979
- .catch(() => {
980
- this.$message({
981
- type: 'info',
982
- message: '已取消'
983
- })
984
- })
985
- },
986
- // 单元格双击事件--重点
987
- cellEdit(row, value, name) {
988
- if (row.title != '签到信息') {
989
- row[name] = value
990
- row.isEdit = true
991
- }
992
- },
993
- onBlur(row, value, name) {
994
- if (row[name] == '') {
995
- row[name] = '0'
996
- }
997
- row.isEdit = false
998
- },
999
- // 修改打卡项
1000
- modifyClock(row) {
1001
- this.ModifyClockVisible = true
1002
- this.temp = row
1003
- this.lastItem = []
1004
- this.tableData = []
1005
- getFormulate({ familyId: row.id }).then((res) => {
1006
- this.tableData = res.result.map((item) => {
1007
- item.isEdit = false
1008
- return item
1009
- })
1010
- const lastItem = res.result[res.result.length - 1]
1011
- for (var i in this.objectOrder(lastItem)) {
1012
- if (
1013
- i != 'title' &&
1014
- i != 'num' &&
1015
- i != 'price' &&
1016
- i != 'needNum' &&
1017
- i != 'projectId'
1018
- ) {
1019
- this.lastItem.push({
1020
- label: lastItem[i] ? i : '',
1021
- value: lastItem[i]
1022
- })
1023
- }
1024
- }
1025
- console.log(this.lastItem)
1026
- })
1027
- },
1028
- // 排序的函数
1029
- objectOrder(obj) {
1030
- var newkey = Object.keys(obj).sort()
1031
- const dayNames = newkey.filter((item) => item.startsWith('day'))
1032
- const sortedDayNames = dayNames.sort((a, b) => {
1033
- const dayNumberA = parseInt(a.slice(3))
1034
- const dayNumberB = parseInt(b.slice(3))
1035
- return dayNumberA - dayNumberB
1036
- })
1037
- sortedDayNames.push('needNum', 'num', 'projectId', 'title')
1038
- var newObj = {}
1039
- for (var i = 0; i < sortedDayNames.length; i++) {
1040
- newObj[sortedDayNames[i]] = obj[sortedDayNames[i]]
1041
- }
1042
- return newObj // 返回排好序的新对象
1043
- },
1044
- searchSelect(val) {
1045
- console.log(val)
1046
- },
1047
- huoqu() {
1048
- WxUserFamilySysUser({ certno: this.temp.certno }).then((res) => {
1049
- console.log('三方信息')
1050
- console.log(res.result)
1051
- if (res.status == 1) {
1052
- this.$notify({
1053
- title: '同步成功',
1054
- message: res.info,
1055
- type: 'success',
1056
- duration: 2000
1057
- })
1058
- if (this.temp.certno.length === 18) {
1059
- const birthday = this.temp.certno.substr(6, 8)
1060
- res.result.birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-')
1061
- }
1062
- this.temp = res.result
1063
- if (
1064
- (this.userInfo.unitType == '01' && this.temp.nurscareWay != '07') ||
1065
- (this.userInfo.unitType == '02' && this.temp.nurscareWay != '01')
1066
- ) {
1067
- this.$message({
1068
- message: '客户护理方式与机构类型不匹配',
1069
- type: 'warning'
1070
- })
1071
- }
1072
-
1073
- // 01 上门机构 02养老
1074
- // 判断 用户登录如果是上门机构 并且 机构的辖区code 和三方同步信息返回的辖区code不对应的话 弹出提示
1075
- if (
1076
- this.userInfo.unitType == '01' &&
1077
- this.userInfo.unitCountyCode != this.temp.medicalCounty
1078
- ) {
1079
- this.$message({
1080
- message: '客户与机构的辖区不一致',
1081
- type: 'warning'
1082
- })
1083
- }
1084
- return
1085
- }
1086
- this.$notify({
1087
- title: '同步失败',
1088
- message: res.info,
1089
- type: 'error',
1090
- duration: 2000
1091
- })
1092
- })
1093
- },
1094
- handleClose() {
1095
- this.dialogVisibleExp = false
1096
- this.dialogVisible = false
1097
- this.startDate = []
1098
- },
1099
- expExcel() {
1100
- try {
1101
- this.loadExp = true
1102
- const form = {
1103
- startDate: this.startDate[0],
1104
- endDate: this.startDate[1]
1105
- }
1106
- ExportExcelInfoWX(form)
1107
- .then((res) => {
1108
- const blob = new Blob([res])
1109
- const fileName = '客户信息'
1110
- if (blob.size > 0) {
1111
- const elink = document.createElement('a')
1112
- elink.style.display = 'none'
1113
- elink.href = URL.createObjectURL(blob)
1114
- // 类似a标签下载
1115
- // 自定义文件名称和导出类型。最好和后台保持一致
1116
- elink.download = `${fileName}/${this.$moment().format(
1117
- 'YYYY-MM-DD'
1118
- )}.xlsx`
1119
- document.body.appendChild(elink)
1120
- elink.click()
1121
- // 释放URL 对象
1122
- URL.revokeObjectURL(elink.href)
1123
- // 删除创建的 a 标签
1124
- document.body.removeChild(elink)
1125
- }
1126
- this.handleClose()
1127
- this.loadExp = false
1128
- })
1129
- .catch(() => {
1130
- this.loadExp = false
1131
- })
1132
- } catch (e) {
1133
- this.loadExp = false
1134
- console.log(e)
1135
- }
1136
- },
1137
- initAMap() {
1138
- AMapLoader.load({
1139
- key: '3bd68974947ab074c863ad28dfe2fc5c', // 申请好的Web端开发者Key,首次调用 load 时必填
1140
- version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
1141
- plugins: [
1142
- 'AMap.Scale',
1143
- 'AMap.ToolBar',
1144
- 'AMap.ControlBar',
1145
- 'AMap.Geocoder',
1146
- 'AMap.Marker',
1147
- 'AMap.CitySearch',
1148
- 'AMap.Geocoder',
1149
- 'AMap.Geolocation',
1150
- 'AMap.AutoComplete',
1151
- 'AMap.InfoWindow'
1152
- ]
1153
- })
1154
- .then((AMap) => {
1155
- // 获取到作为地图容器的DOM元素,创建地图实例
1156
- this.map = new AMap.Map('amapcontainer', {
1157
- // 设置地图容器id
1158
- resizeEnable: true,
1159
- zoom: this.zoom, // 地图显示的缩放级别
1160
- zoomEnable: true, // 地图是否可缩放,默认值为true
1161
- dragEnable: true, // 地图是否可通过鼠标拖拽平移,默认为true
1162
- doubleClickZoom: true, // 地图是否可通过双击鼠标放大地图,默认为true
1163
- zoom: 13, // 初始化地图级别
1164
- center: [120.699366, 27.994267] // 初始化中心点坐标 广州
1165
- })
1166
-
1167
- // 添加控件
1168
- AMap.plugin(['AMap.ToolBar'], () => {
1169
- this.map.addControl(new AMap.ToolBar())
1170
- })
1171
- // 地址逆解析插件
1172
- this.geoCoder = new AMap.Geocoder({
1173
- radius: 1000, // 范围,默认:500
1174
- extensions: 'all'
1175
- })
1176
- // 搜索提示插件
1177
- this.AutoComplete = new AMap.AutoComplete({ city: '全国' })
1178
- // 点击获取经纬度;
1179
- this.map.on('click', (e) => {
1180
- this.keywords = ''
1181
- // this.temp.city = e.
1182
- // this.temp.county = val.address
1183
- // 获取经纬度
1184
- this.temp.lng = e.lnglat.lng
1185
- this.temp.lat = e.lnglat.lat
1186
- // 清除点
1187
- this.removeMarker()
1188
- // 标记点
1189
- this.setMapMarker()
1190
- // 解析地址
1191
- this.toGeoCoder()
1192
- })
1193
- })
1194
- .catch((e) => {
1195
- console.log(e)
1196
- })
1197
- },
1198
- // 搜索
1199
- remoteMethod(query) {
1200
- if (query !== '') {
1201
- this.loading = true
1202
- this.options = []
1203
- console.log(this.options)
1204
- setTimeout(() => {
1205
- this.loading = false
1206
- this.AutoComplete.search(query, (status, result) => {
1207
- this.options = result.tips
1208
- })
1209
- }, 200)
1210
- } else {
1211
- this.options = []
1212
- }
1213
- },
1214
- // 选中提示
1215
- currentSelect(val) {
1216
- console.log(val)
1217
- // 清空时不执行后面代码
1218
- if (!val) {
1219
- return
1220
- }
1221
- if (val.location) {
1222
- this.temp.lng = val.location.lng
1223
- this.temp.lat = val.location.lat
1224
- }
1225
- // 解析地址
1226
- this.toGeoCoder()
1227
- // this.temp.address = val.district + val.address
1228
- // this.temp.adcode = val.adcode
1229
- // this.temp.city = val.district;
1230
- // this.temp.county = val.address;
1231
- // 清除点
1232
- this.removeMarker()
1233
- // 标记点
1234
- this.setMapMarker()
1235
- },
1236
-
1237
- // 解析地址
1238
- toGeoCoder() {
1239
- const lnglat = [this.temp.lng, this.temp.lat]
1240
- this.geoCoder.getAddress(lnglat, (status, result) => {
1241
- if (status === 'complete' && result.regeocode) {
1242
- console.log(result.regeocode)
1243
- this.$set(this.temp, 'city', result.regeocode.addressComponent.city)
1244
- this.$set(
1245
- this.temp,
1246
- 'county',
1247
- result.regeocode.addressComponent.district
1248
- )
1249
- this.$set(this.temp, 'address', result.regeocode.formattedAddress)
1250
- }
1251
- })
1252
- },
1253
- // 标记点
1254
- setMapMarker() {
1255
- // 自动适应显示想显示的范围区域
1256
- this.map.setFitView()
1257
- this.marker = new AMap.Marker({
1258
- map: this.map,
1259
- position: [this.temp.lng, this.temp.lat]
1260
- })
1261
- this.map.setFitView()
1262
- this.map.add(this.marker)
1263
- },
1264
- // 清除点
1265
- removeMarker() {
1266
- if (this.marker) {
1267
- this.map.remove(this.marker)
1268
- }
1269
- },
1270
- // 获取客户信息
1271
- getCustom() {
1272
- WxUserCustomAll().then((res) => {
1273
- this.customData = res.result.map((item) => {
1274
- return {
1275
- label: item.nickName,
1276
- value: item.id,
1277
- phoneNumber: item.phoneNumber
1278
- }
1279
- })
1280
- })
1281
- customAll().then((res) => {
1282
- this.contacts = res.result.map((item) => {
1283
- return {
1284
- label: item.nickName,
1285
- value: item.id,
1286
- phoneNumber: item.phoneNumber
1287
- }
1288
- })
1289
- })
1290
- },
1291
- changeUser(val) {
1292
- for (var i = 0; i < this.customData.length; i++) {
1293
- if (this.customData[i].value == val) {
1294
- this.temp.wxUserPhoneNumber = this.customData[i].phoneNumber
1295
- }
1296
- }
1297
- },
1298
- getList() {
1299
- this.listLoading = true
1300
- WxUserFamilyPage(this.listQuery).then((response) => {
1301
- this.list = response.result.data
1302
- this.total = response.result.count
1303
- setTimeout(() => {
1304
- this.listLoading = false
1305
- }, 1.5 * 1000)
1306
- })
1307
- WxUserFamilyAll().then((res) => {
1308
- this.customerData = res.result.map((item) => {
1309
- return { label: item.name, value: item.name }
1310
- })
1311
- })
1312
- },
1313
- handleModifyStatus(row, status) {
1314
- this.$message({
1315
- message: '操作成功',
1316
- type: 'success'
1317
- })
1318
- row.status = status
1319
- },
1320
- resetting(formName) {
1321
- this.$nextTick(() => {
1322
- this.$refs[formName].resetFields()
1323
- this.getList()
1324
- })
1325
- },
1326
- add() {
1327
- this.dialogStatus = 'create'
1328
- this.dialogFormVisible = true
1329
- this.temp = {}
1330
- this.initAMap()
1331
- },
1332
- onSubmit() {
1333
- this.getList()
1334
- },
1335
- createData() {
1336
- this.$refs['temp'].validate((valid) => {
1337
- if (valid) {
1338
- WxUserFamilySave(this.temp).then((res) => {
1339
- // this.list.unshift(this.temp)
1340
- if (res.status == 1) {
1341
- this.dialogFormVisible = false
1342
- this.getList()
1343
- this.$notify({
1344
- title: res.info,
1345
- message: '新增成功',
1346
- type: 'success',
1347
- duration: 2000
1348
- })
1349
- return
1350
- }
1351
- this.$notify({
1352
- title: res.info,
1353
- message: '新增失败',
1354
- type: 'error',
1355
- duration: 2000
1356
- })
1357
- })
1358
- }
1359
- })
1360
- },
1361
- updateData() {
1362
- this.$refs['temp'].validate((valid) => {
1363
- if (valid) {
1364
- WxUserFamilySave(this.temp).then((res) => {
1365
- if (res.status == 1) {
1366
- this.dialogFormVisible = false
1367
- this.getList()
1368
- this.$notify({
1369
- title: res.info,
1370
- message: '更新成功',
1371
- type: 'success',
1372
- duration: 2000
1373
- })
1374
- return
1375
- }
1376
- this.$notify({
1377
- title: res.info,
1378
- message: '更新失败',
1379
- type: 'error',
1380
- duration: 2000
1381
- })
1382
- })
1383
- }
1384
- })
1385
- },
1386
- edit(row) {
1387
- this.temp = row
1388
- this.temp.wxUser = row.wxUserId
1389
- this.dialogStatus = 'update'
1390
- this.dialogFormVisible = true
1391
- // for(var i = 0; i < this.customData.length; i ++) {
1392
- // if(this.customData[i].value == this.temp.wxUserId) {
1393
- // this.temp.wxUserPhoneNumber = this.customData[i].phoneNumber
1394
- // }
1395
- // }
1396
- this.initAMap()
1397
- },
1398
- handleDelete(row, index) {
1399
- this.dialogVisible = true
1400
- this.allState.id = row.id
1401
- },
1402
- handleStatus(row) {
1403
- this.$confirm('此操作将更改状态, 是否继续?', '提示', {
1404
- confirmButtonText: '确定',
1405
- cancelButtonText: '取消',
1406
- type: 'warning'
1407
- })
1408
- .then(() => {
1409
- updateIsDel(row).then((res) => {
1410
- if (res.status == 1) {
1411
- this.getList()
1412
- this.$notify({
1413
- title: '修改成功',
1414
- message: res.info,
1415
- type: 'success',
1416
- duration: 2000
1417
- })
1418
- return
1419
- }
1420
- this.$notify({
1421
- title: '修改失败',
1422
- message: res.info,
1423
- type: 'error',
1424
- duration: 2000
1425
- })
1426
- })
1427
- })
1428
- .catch(() => {
1429
- this.$message({
1430
- type: 'info',
1431
- message: '已取消'
1432
- })
1433
- })
1434
- },
1435
- termination() {
1436
- this.trtExitObj.id = this.allState.id
1437
- WxUserFamilyDel(this.trtExitObj).then((res) => {
1438
- if (res.status == 1) {
1439
- this.getList()
1440
- this.$notify({
1441
- title: '删除成功',
1442
- message: res.info,
1443
- type: 'success',
1444
- duration: 2000
1445
- })
1446
- this.dialogVisible = false
1447
- return
1448
- }
1449
- this.$notify({
1450
- title: '删除失败',
1451
- message: res.info,
1452
- type: 'error',
1453
- duration: 2000
1454
- })
1455
- })
1456
- }
1457
- }
1458
- }
1459
- </script>
1460
- <style lang="scss" scoped>
1461
- .el-col-12 {
1462
- padding: 0 20px 0 0;
1463
- }
1464
-
1465
- .el-divider--horizontal {
1466
- margin: 0 0 20px 0;
1467
- }
1468
- ::v-deep .el-calendar__button-group {
1469
- display: none;
1470
- }
1471
-
1472
- .table ::v-deep .el-table .cell {
1473
- padding: 0;
1474
- }
1475
-
1476
- .table ::v-deep .el-table td {
1477
- padding: 5px 0;
1478
- }
1479
-
1480
- .active {
1481
- color: #409eff;
1482
- cursor: pointer;
1483
- display: inline-block;
1484
- width: 42px;
1485
- }
1486
-
1487
- .inactive {
1488
- color: #999;
1489
- }
1490
- .exptable {
1491
- font-size: 9px;
1492
- text-align: center;
1493
- width: 100%;
1494
- // line-height: 26px;
1495
- .leftXuhao {
1496
- display: flex;
1497
- border-bottom: 1px solid #333;
1498
- div {
1499
- display: flex;
1500
- align-items: center;
1501
- justify-content: center;
1502
- border-right: 1px solid #333;
1503
- }
1504
- }
1505
- .thead {
1506
- // border: 1px solid #333;
1507
- border-bottom: 0;
1508
- color: #000;
1509
- padding: 8px 0;
1510
- }
1511
- .tbody {
1512
- border: 1px solid #333;
1513
- font-size: 8px;
1514
- }
1515
- .tr {
1516
- display: flex;
1517
- border-bottom: 1px solid #333;
1518
- color: #111;
1519
- div {
1520
- // flex: 1;
1521
- display: flex;
1522
- align-items: center;
1523
- justify-content: center;
1524
- border-right: 1px solid #333;
1525
- // padding: 5px 2px;
1526
- }
1527
- .bodyday {
1528
- flex: 1;
1529
- }
1530
- div:last-child {
1531
- border-right: 0;
1532
- }
1533
- }
1534
- .eight div {
1535
- flex: 1;
1536
- // width: calc((100% - 120px * 8) / 8);
1537
- padding: 5px 0;
1538
- }
1539
- .eight .title {
1540
- width: 110px;
1541
- flex: none;
1542
- }
1543
-
1544
- .tr:last-child {
1545
- border-bottom: 0;
1546
- }
1547
- .loop {
1548
- .num {
1549
- width: 22px !important;
1550
- }
1551
- .total {
1552
- width: 23px;
1553
- padding: 5px 0;
1554
- }
1555
- // .day {
1556
- // width: calc(27px * 27);
1557
- // }
1558
- .name {
1559
- // flex: 1;
1560
- padding: 5px 0;
1561
- // width: 300px !important;
1562
- flex: 0.1;
1563
- }
1564
- .headday {
1565
- flex-flow: column;
1566
- flex: 1;
1567
- .forday {
1568
- border-top: 1px solid #333;
1569
- }
1570
- }
1571
- .day span {
1572
- padding: 5px 0;
1573
- }
1574
- .forday {
1575
- display: table;
1576
- width: 100%;
1577
- height: 100%;
1578
- span {
1579
- display: table-cell;
1580
- vertical-align: middle;
1581
- border-right: 1px solid #333;
1582
- width: 23px;
1583
- height: 100%;
1584
- overflow: hidden;
1585
- word-wrap: break-word;
1586
- word-break: break-all;
1587
- }
1588
- span:last-child {
1589
- border-right: 0;
1590
- }
1591
- }
1592
- }
1593
- }
1594
- </style>
1
+ <template>
2
+ <div class="app-container">
3
+ <div class="filter-container">
4
+ <el-form
5
+ ref="listQuery"
6
+ :inline="true"
7
+ :model="listQuery"
8
+ class="demo-form-inline"
9
+ >
10
+ <el-form-item label="客户姓名" prop="name">
11
+ <el-select
12
+ v-model="listQuery.name"
13
+ style="width: 100%"
14
+ clearable
15
+ filterable
16
+ size="small"
17
+ class="filter-item"
18
+ placeholder="请选择客户"
19
+ >
20
+ <el-option
21
+ v-for="(item, index) in customerData"
22
+ :key="index"
23
+ :label="item.label"
24
+ :value="item.label"
25
+ />
26
+ </el-select>
27
+ </el-form-item>
28
+ <el-form-item label="手机号码" prop="phoneNumber">
29
+ <el-input
30
+ v-model="listQuery.phoneNumber"
31
+ size="small"
32
+ clearable
33
+ placeholder="请输入手机号码"
34
+ />
35
+ </el-form-item>
36
+ <el-form-item>
37
+ <el-button
38
+ size="small"
39
+ type="primary"
40
+ @click="onSubmit"
41
+ >查询</el-button>
42
+ </el-form-item>
43
+ <el-form-item>
44
+ <el-button
45
+ size="small"
46
+ type="warning"
47
+ @click="resetting('listQuery')"
48
+ >重置</el-button>
49
+ </el-form-item>
50
+ <el-form-item>
51
+ <el-button size="small" type="success" @click="add">新增</el-button>
52
+ </el-form-item>
53
+ <el-form-item>
54
+ <el-button
55
+ size="small"
56
+ type="primary"
57
+ @click="dialogVisibleExp = true"
58
+ >导出</el-button>
59
+ </el-form-item>
60
+ </el-form>
61
+ </div>
62
+ <el-table border height="65vh" :data="list" style="width: 100%">
63
+ <el-table-column :label="'护理机构'" align="center">
64
+ <template slot-scope="{ row }">
65
+ <span>{{ row.unitName }}</span>
66
+ </template>
67
+ </el-table-column>
68
+ <el-table-column :label="'客户姓名'" align="center">
69
+ <template slot-scope="{ row }">
70
+ <span>{{ row.name }}</span>
71
+ </template>
72
+ </el-table-column>
73
+ <el-table-column :label="'客户手机号码'" align="center">
74
+ <template slot-scope="{ row }">
75
+ <span>{{ row.phoneNumber }}</span>
76
+ </template>
77
+ </el-table-column>
78
+ <el-table-column :label="'身份证号'" align="center">
79
+ <template slot-scope="{ row }">
80
+ <span>{{ row.idCode ? row.idCode : "-" }}</span>
81
+ </template>
82
+ </el-table-column>
83
+ <el-table-column :label="'行政区划'" align="center">
84
+ <template slot-scope="{ row }">
85
+ <span>{{ row.city }}</span>
86
+ </template>
87
+ </el-table-column>
88
+ <el-table-column :label="'辖区'" align="center">
89
+ <template slot-scope="{ row }">
90
+ <span>{{ row.county }}</span>
91
+ </template>
92
+ </el-table-column>
93
+ <el-table-column :label="'现居住地址'" align="center" width="300">
94
+ <template slot-scope="{ row }">
95
+ <span>{{ row.address }}</span>
96
+ </template>
97
+ </el-table-column>
98
+ <el-table-column :label="'评估等级'" align="center" width="150">
99
+ <template slot-scope="{ row }">
100
+ <el-tag v-if="row.lv == '06'" type="success">重度失能ⅠⅠⅠ级</el-tag>
101
+ <el-tag v-if="row.lv == '05'" type="success">重度失能ⅠⅠ级</el-tag>
102
+ <el-tag v-if="row.lv == '04'" type="success">重度失能Ⅰ级</el-tag>
103
+ <el-tag v-if="row.lv == '03'" type="success">中度失能</el-tag>
104
+ <el-tag v-if="row.lv == '02'" type="success">轻度失能</el-tag>
105
+ <el-tag v-if="row.lv == '01'" type="success">基本正常</el-tag>
106
+ </template>
107
+ </el-table-column>
108
+ <!-- <el-table-column :label="'服务合同开始时间'" align="center">
109
+ <template slot-scope="{ row }">
110
+ <span>{{ row.startTime }}</span>
111
+ </template>
112
+ </el-table-column>
113
+ <el-table-column :label="'服务合同结束时间'" align="center">
114
+ <template slot-scope="{ row }">
115
+ <span>{{ row.endTime }}</span>
116
+ </template>
117
+ </el-table-column> -->
118
+ <el-table-column :label="'状态'" align="center">
119
+ <template slot-scope="{ row }">
120
+ <el-tag v-if="row.isDelete == '0'" type="success">正常</el-tag>
121
+ <el-tag v-if="row.isDelete == '1'" type="success">已注销</el-tag>
122
+ <el-tag v-if="row.isDelete == '2'" type="warning">住院</el-tag>
123
+ </template>
124
+ </el-table-column>
125
+ <el-table-column :label="'是否有定制'" align="center">
126
+ <template slot-scope="{ row }">
127
+ <el-tag v-if="row.formulateType == '0'" type="success">没有</el-tag>
128
+ <el-tag v-if="row.formulateType == '1'" type="success">有</el-tag>
129
+ </template>
130
+ </el-table-column>
131
+ <el-table-column :label="'创建时间'" align="center">
132
+ <template slot-scope="{ row }">
133
+ <span>{{ row.createTime }}</span>
134
+ </template>
135
+ </el-table-column>
136
+ <el-table-column
137
+ :label="'操作'"
138
+ align="center"
139
+ width="300"
140
+ class-name="small-padding fixed-width"
141
+ >
142
+ <template slot-scope="{ row, $index }">
143
+ <el-button size="mini" type="primary" @click="edit(row, $index)">
144
+ 详情
145
+ </el-button>
146
+ <el-button
147
+ size="mini"
148
+ type="danger"
149
+ @click="handleDelete(row, $index)"
150
+ >
151
+ 终止
152
+ </el-button>
153
+ <!-- <el-button
154
+ size="mini"
155
+ type="success"
156
+ @click="handleStatus(row, $index)"
157
+ >
158
+ 修改状态
159
+ </el-button> -->
160
+ <el-button
161
+ size="mini"
162
+ type="success"
163
+ @click="modifyClock(row, $index)"
164
+ >
165
+ 打卡项制定
166
+ </el-button>
167
+ </template>
168
+ </el-table-column>
169
+ </el-table>
170
+
171
+ <pagination
172
+ v-show="total > 0"
173
+ :total="total"
174
+ :page.sync="listQuery.pageNo"
175
+ :limit.sync="listQuery.size"
176
+ @pagination="getList"
177
+ />
178
+
179
+ <el-dialog
180
+ :close-on-click-modal="false"
181
+ :close-on-press-escape="false"
182
+ :title="textMap[dialogStatus]"
183
+ :visible.sync="dialogFormVisible"
184
+ width="45%"
185
+ >
186
+ <el-form
187
+ ref="temp"
188
+ :rules="rules"
189
+ :model="temp"
190
+ label-position="right"
191
+ label-width="140px"
192
+ >
193
+ <el-row :gutter="20">
194
+ <el-col :span="12">
195
+ <el-form-item label="身份证">
196
+ <el-input
197
+ v-model="temp.certno"
198
+ clearable
199
+ placeholder="请输入身份证"
200
+ size="small"
201
+ />
202
+ </el-form-item>
203
+ </el-col>
204
+ <el-col :span="12">
205
+ <el-button size="mini" type="success" @click="huoqu">
206
+ 同步第三方用户校验信息
207
+ </el-button>
208
+ </el-col>
209
+ </el-row>
210
+ <el-divider />
211
+ <el-row :gutter="20">
212
+ <el-col :span="12">
213
+ <el-form-item label="最早可登记时间">
214
+ <el-input
215
+ v-model="temp.floorBegntime"
216
+ disabled
217
+ clearable
218
+ placeholder="最早可登记时间"
219
+ size="small"
220
+ />
221
+ </el-form-item>
222
+ </el-col>
223
+ <el-col :span="12">
224
+ <el-form-item label="登记时间">
225
+ <el-date-picker
226
+ v-model="temp.thirdBegntime"
227
+ size="small"
228
+ value-format="yyyy-MM-dd HH:mm:ss"
229
+ style="width: 100%"
230
+ type="datetime"
231
+ placeholder="登记时间不选将使用当前系统时间"
232
+ />
233
+ </el-form-item>
234
+ </el-col>
235
+ <el-col :span="12">
236
+ <el-form-item label="联系人">
237
+ <el-input
238
+ v-model="temp.wxUserId"
239
+ clearable
240
+ placeholder="请输入联系人"
241
+ size="small"
242
+ />
243
+ <!-- <el-select style="width: 100%" clearable filterable size="small" v-model="temp.wxUserId"
244
+ class="filter-item" placeholder="请选择联系人">
245
+ <el-option v-for="(item, index) in contacts" :key="index" :label="item.label" :value="item.value">
246
+ <span style="float: left">{{ item.label }}</span>
247
+ <span style="float: right; color: #8492a6; font-size: 13px">{{
248
+ item.phoneNumber
249
+ }}</span>
250
+ </el-option>
251
+ </el-select> -->
252
+ </el-form-item>
253
+ </el-col>
254
+
255
+ <el-col :span="12">
256
+ <el-form-item label="家人关系" prop="relation">
257
+ <el-select
258
+ v-model="temp.relation"
259
+ style="width: 100%"
260
+ clearable
261
+ filterable
262
+ size="small"
263
+ class="filter-item"
264
+ placeholder="请选择家人关系"
265
+ >
266
+ <el-option
267
+ v-for="(item, index) in [
268
+ { label: '父亲', value: '父亲' },
269
+ { label: '母亲', value: '母亲' },
270
+ { label: '爷爷', value: '爷爷' },
271
+ { label: '奶奶', value: '奶奶' },
272
+ { label: '妻子', value: '妻子' },
273
+ { label: '丈夫', value: '丈夫' },
274
+ ]"
275
+ :key="index"
276
+ :label="item.label"
277
+ :value="item.value"
278
+ />
279
+ </el-select>
280
+ </el-form-item>
281
+ </el-col>
282
+ <el-col :span="12">
283
+ <el-form-item label="客户姓名">
284
+ <el-input
285
+ v-model="temp.name"
286
+ clearable
287
+ placeholder="请输入客户姓名"
288
+ size="small"
289
+ />
290
+ </el-form-item>
291
+ </el-col>
292
+ <el-col :span="12">
293
+ <el-form-item label="客户手机号码">
294
+ <el-input
295
+ v-model="temp.phoneNumber"
296
+ clearable
297
+ placeholder="请输入客户手机号码"
298
+ size="small"
299
+ />
300
+ </el-form-item>
301
+ </el-col>
302
+ <el-col :span="12">
303
+ <el-form-item label="护理方式" prop="nurscareWay">
304
+ <el-select
305
+ v-model="temp.nurscareWay"
306
+ disabled
307
+ style="width: 100%"
308
+ clearable
309
+ filterable
310
+ size="small"
311
+ class="filter-item"
312
+ placeholder="请选择护理方式"
313
+ >
314
+ <el-option
315
+ v-for="(item, index) in [
316
+ { label: '入住机构护理', value: '01' },
317
+ { label: '居家上门护理', value: '07' },
318
+ { label: '居家自主护理', value: '03' },
319
+ ]"
320
+ :key="index"
321
+ :label="item.label"
322
+ :value="item.value"
323
+ />
324
+ </el-select>
325
+ </el-form-item>
326
+ </el-col>
327
+ <el-col :span="12">
328
+ <el-form-item label="身份证" prop="idCode">
329
+ <el-input
330
+ v-model="temp.idCode"
331
+ clearable
332
+ placeholder="请输入身份证号"
333
+ size="small"
334
+ />
335
+ </el-form-item>
336
+ </el-col>
337
+ <el-col :span="12">
338
+ <el-form-item label="行政区划" prop="city">
339
+ <el-input
340
+ v-model="temp.city"
341
+ disabled
342
+ clearable
343
+ placeholder="请输入行政区划"
344
+ size="small"
345
+ />
346
+ </el-form-item>
347
+ </el-col>
348
+ <el-col :span="12">
349
+ <el-form-item label="辖区" prop="county">
350
+ <el-input
351
+ v-model="temp.county"
352
+ clearable
353
+ disabled
354
+ placeholder="请输入辖区"
355
+ size="small"
356
+ />
357
+ </el-form-item>
358
+ </el-col>
359
+ <!-- <el-col :span="24">
360
+ <el-form-item label="搜索" prop="address">
361
+ <el-select
362
+ v-model="keywords"
363
+ filterable
364
+ remote
365
+ reserve-keyword
366
+ placeholder="搜索位置"
367
+ :remote-method="remoteMethod"
368
+ :loading="loading"
369
+ :clearable="true"
370
+ size="mini"
371
+ @change="currentSelect"
372
+ style="width: 100%"
373
+ value-key="id"
374
+ >
375
+ <el-option
376
+ v-for="item in options"
377
+ :key="item.id"
378
+ :label="item.name"
379
+ :value="item"
380
+ class="one-text"
381
+ >
382
+ <span style="float: left">{{ item.name }}</span>
383
+ <span style="float: right; color: #8492a6; font-size: 13px">{{
384
+ item.district
385
+ }}</span>
386
+ </el-option>
387
+ </el-select>
388
+ </el-form-item>
389
+ <div id="amapcontainer" style="width: 100%; height: 400px"></div>
390
+ </el-col> -->
391
+ <el-col :span="12">
392
+ <el-form-item label="现居住地址">
393
+ <el-input
394
+ v-model="temp.address"
395
+ clearable
396
+ disabled
397
+ placeholder="请输入现居住地址"
398
+ size="small"
399
+ />
400
+ </el-form-item>
401
+ </el-col>
402
+ <el-col :span="12">
403
+ <el-form-item label="经度" prop="lat">
404
+ <el-input
405
+ v-model="temp.lat"
406
+ clearable
407
+ disabled
408
+ placeholder="请输入经度"
409
+ size="small"
410
+ />
411
+ </el-form-item>
412
+ </el-col>
413
+ <el-col :span="12">
414
+ <el-form-item label="纬度" prop="lng">
415
+ <el-input
416
+ v-model="temp.lng"
417
+ clearable
418
+ disabled
419
+ placeholder="请输入纬度"
420
+ size="small"
421
+ />
422
+ </el-form-item>
423
+ </el-col>
424
+ <el-col :span="12">
425
+ <el-form-item label="出生日期">
426
+ <el-date-picker
427
+ v-model="temp.birthday"
428
+ size="small"
429
+ format="yyyy 年 MM 月 dd 日"
430
+ value-format="yyyy-MM-dd"
431
+ style="width: 100%"
432
+ type="date"
433
+ placeholder="请选择出生日期"
434
+ />
435
+ </el-form-item>
436
+ </el-col>
437
+ <el-col :span="12">
438
+ <el-form-item label="医保类型" prop="medicalType">
439
+ <el-select
440
+ v-model="temp.medicalType"
441
+ style="width: 100%"
442
+ clearable
443
+ filterable
444
+ disabled
445
+ size="small"
446
+ class="filter-item"
447
+ placeholder="请选择"
448
+ >
449
+ <el-option
450
+ v-for="(item, index) in [
451
+ { label: '城镇职工基本医疗保险', value: '1' },
452
+ { label: '长期护理保险', value: '410' },
453
+ ]"
454
+ :key="index"
455
+ :label="item.label"
456
+ :value="item.value"
457
+ />
458
+ </el-select>
459
+ </el-form-item>
460
+ </el-col>
461
+ <el-col :span="12">
462
+ <el-form-item label="参保行政区划" prop="medicalCity">
463
+ <el-input
464
+ v-model="temp.medicalCity"
465
+ clearable
466
+ disabled
467
+ placeholder="请输入参保行政区划"
468
+ size="small"
469
+ />
470
+ </el-form-item>
471
+ </el-col>
472
+ <el-col :span="12">
473
+ <el-form-item label="参保所属辖区" prop="medicalCounty">
474
+ <el-input
475
+ v-model="temp.medicalCounty"
476
+ clearable
477
+ disabled
478
+ placeholder="请输入参保所属辖区"
479
+ size="small"
480
+ />
481
+ </el-form-item>
482
+ </el-col>
483
+ <el-col :span="12">
484
+ <el-form-item label="社保卡号">
485
+ <el-input
486
+ v-model="temp.medicalNo"
487
+ clearable
488
+ placeholder="请输入社保卡号"
489
+ size="small"
490
+ />
491
+ </el-form-item>
492
+ </el-col>
493
+ <el-col :span="12">
494
+ <el-form-item label="社保状态" prop="medicalStatus">
495
+ <el-select
496
+ v-model="temp.medicalStatus"
497
+ style="width: 100%"
498
+ clearable
499
+ filterable
500
+ size="small"
501
+ class="filter-item"
502
+ placeholder="请选择社保状态"
503
+ >
504
+ <el-option
505
+ v-for="(item, index) in [
506
+ { label: '正常', value: '1' },
507
+ { label: '中断', value: '2' },
508
+ ]"
509
+ :key="index"
510
+ :label="item.label"
511
+ :value="item.value"
512
+ />
513
+ </el-select>
514
+ </el-form-item>
515
+ </el-col>
516
+
517
+ <el-col :span="12">
518
+ <el-form-item label="待遇状态" prop="status">
519
+ <el-select
520
+ v-model="temp.status"
521
+ style="width: 100%"
522
+ clearable
523
+ filterable
524
+ size="small"
525
+ class="filter-item"
526
+ placeholder="请选择待遇状态"
527
+ >
528
+ <el-option
529
+ v-for="(item, index) in [
530
+ { label: '正常', value: '1' },
531
+ { label: '终止', value: '2' },
532
+ { label: '未有待遇', value: '0' },
533
+ ]"
534
+ :key="index"
535
+ :label="item.label"
536
+ :value="item.value"
537
+ />
538
+ </el-select>
539
+ </el-form-item>
540
+ </el-col>
541
+ <el-col :span="12">
542
+ <el-form-item label="是否残疾人" prop="isHandicapped">
543
+ <el-select
544
+ v-model="temp.isHandicapped"
545
+ style="width: 100%"
546
+ clearable
547
+ filterable
548
+ size="small"
549
+ class="filter-item"
550
+ placeholder="请选择是否残疾人"
551
+ >
552
+ <el-option
553
+ v-for="(item, index) in [
554
+ { label: '是', value: '1' },
555
+ { label: '否', value: '0' },
556
+ ]"
557
+ :key="index"
558
+ :label="item.label"
559
+ :value="item.value"
560
+ />
561
+ </el-select>
562
+ </el-form-item>
563
+ </el-col>
564
+ <el-col :span="12">
565
+ <el-form-item label="评估等级" prop="lv">
566
+ <el-select
567
+ v-model="temp.lv"
568
+ style="width: 100%"
569
+ clearable
570
+ filterable
571
+ size="small"
572
+ class="filter-item"
573
+ placeholder="请选择评估等级"
574
+ >
575
+ <el-option
576
+ v-for="(item, index) in [
577
+ { label: '重度失能ⅠⅠⅠ级', value: '06' },
578
+ { label: '重度失能ⅠⅠ级', value: '05' },
579
+ { label: '重度失能Ⅰ级', value: '04' },
580
+ { label: '中度失能', value: '03' },
581
+ { label: '轻度失能', value: '02' },
582
+ { label: '基本正常', value: '01' },
583
+ ]"
584
+ :key="index"
585
+ :label="item.label"
586
+ :value="item.value"
587
+ />
588
+ </el-select>
589
+ </el-form-item>
590
+ </el-col>
591
+ <el-col :span="12">
592
+ <el-form-item label="合同服务开始时间">
593
+ <el-date-picker
594
+ v-model="temp.startTime"
595
+ size="small"
596
+ format="yyyy 年 MM 月 dd 日"
597
+ value-format="yyyy-MM-dd"
598
+ style="width: 100%"
599
+ type="date"
600
+ placeholder="请选择合同服务开始时间"
601
+ />
602
+ </el-form-item>
603
+ </el-col>
604
+ <el-col :span="12">
605
+ <el-form-item label="合同服务结束时间">
606
+ <el-date-picker
607
+ v-model="temp.endTime"
608
+ size="small"
609
+ format="yyyy 年 MM 月 dd 日"
610
+ value-format="yyyy-MM-dd"
611
+ style="width: 100%"
612
+ type="date"
613
+ placeholder="请选择合同服务结束时间"
614
+ />
615
+ </el-form-item>
616
+ </el-col>
617
+ </el-row>
618
+ </el-form>
619
+ <div slot="footer" class="dialog-footer">
620
+ <el-button size="mini" @click="dialogFormVisible = false">
621
+ 取 消
622
+ </el-button>
623
+ <el-button
624
+ size="mini"
625
+ type="primary"
626
+ @click="dialogStatus === 'create' ? createData() : updateData()"
627
+ >
628
+ 确 认
629
+ </el-button>
630
+ </div>
631
+ </el-dialog>
632
+
633
+ <el-dialog
634
+ :close-on-click-modal="false"
635
+ :close-on-press-escape="false"
636
+ title="导出"
637
+ :visible.sync="dialogVisibleExp"
638
+ width="600px"
639
+ :before-close="handleClose"
640
+ >
641
+ <el-form :inline="true" class="demo-form-inline">
642
+ <el-form-item label="提示:">
643
+ <el-link
644
+ :underline="false"
645
+ type="primary"
646
+ >选择的开始日期和结束日期请将数据的入录时间包含起来,结束日期选后一天</el-link>
647
+ </el-form-item>
648
+ <el-form-item label="时间">
649
+ <el-date-picker
650
+ v-model="startDate"
651
+ type="daterange"
652
+ value-format="yyyy-MM-dd"
653
+ range-separator="至"
654
+ start-placeholder="开始日期"
655
+ end-placeholder="结束日期"
656
+ />
657
+ </el-form-item>
658
+ </el-form>
659
+ <span slot="footer" class="dialog-footer">
660
+ <el-button
661
+ size="small"
662
+ :loading="loadExp"
663
+ @click="handleClose"
664
+ >取 消</el-button>
665
+ <el-button
666
+ size="small"
667
+ type="primary"
668
+ :loading="loadExp"
669
+ @click="expExcel"
670
+ >
671
+ 导 出
672
+ </el-button>
673
+ </span>
674
+ </el-dialog>
675
+
676
+ <el-dialog
677
+ :close-on-click-modal="false"
678
+ :close-on-press-escape="false"
679
+ title="终止原因"
680
+ :visible.sync="dialogVisible"
681
+ width="30%"
682
+ :before-close="handleClose"
683
+ >
684
+ <el-form
685
+ ref="allState"
686
+ :rules="rules"
687
+ :model="allState"
688
+ label-position="right"
689
+ label-width="80px"
690
+ >
691
+ <el-row :gutter="20">
692
+ <el-col :span="24">
693
+ <el-form-item label="终止原因" prop="trtExitRea">
694
+ <el-select
695
+ v-model="trtExitObj"
696
+ value-key="trtExitRea"
697
+ style="width: 100%"
698
+ clearable
699
+ filterable
700
+ size="small"
701
+ class="filter-item"
702
+ placeholder="请选择终止原因"
703
+ @change="searchSelect"
704
+ >
705
+ <el-option
706
+ v-for="(item, index) in [
707
+ { trtExitRea: '01', trtExitDscr: '就医' },
708
+ { trtExitRea: '02', trtExitDscr: '搬至其他机构' },
709
+ { trtExitRea: '03', trtExitDscr: '更换护理方式' },
710
+ { trtExitRea: '04', trtExitDscr: '离世' },
711
+ { trtExitRea: '05', trtExitDscr: '其他' },
712
+ ]"
713
+ :key="index"
714
+ :label="item.trtExitDscr"
715
+ :value="item"
716
+ />
717
+ </el-select>
718
+ <!-- <el-input clearable placeholder="请输入终止原因" size="small" v-model="allState.trtExitRea" /> -->
719
+ </el-form-item>
720
+ </el-col>
721
+ </el-row>
722
+ </el-form>
723
+ <span slot="footer" class="dialog-footer">
724
+ <el-button size="mini" @click="dialogVisible = false">取 消</el-button>
725
+ <el-button
726
+ size="mini"
727
+ type="primary"
728
+ @click="termination"
729
+ >确 定</el-button>
730
+ </span>
731
+ </el-dialog>
732
+
733
+ <el-dialog
734
+ title="打卡项制定"
735
+ :close-on-click-modal="false"
736
+ :close-on-press-escape="false"
737
+ :visible.sync="ModifyClockVisible"
738
+ width="87%"
739
+ >
740
+ <div class="table">
741
+ <el-table
742
+ :data="tableData"
743
+ style="width: 100%"
744
+ >
745
+ <el-table-column
746
+ align="center"
747
+ prop="title"
748
+ label="服务项目"
749
+ width="200"
750
+ />
751
+ <el-table-column align="center" label="护理时间及次数">
752
+ <el-table-column
753
+ v-for="(item, index) in 31"
754
+ :key="index"
755
+ align="center"
756
+ :label="`${index + 1}日`"
757
+ width="50"
758
+ >
759
+ <template slot-scope="scope">
760
+ <el-input
761
+ v-if="
762
+ scope.row.isEdit &&
763
+ lastItem[index].label == `${`day${index + 1}`}`
764
+ "
765
+ v-model="scope.row[`day${index + 1}`]"
766
+ @blur="
767
+ onBlur(
768
+ scope.row,
769
+ `${scope.row[`day${index + 1}`]}`,
770
+ `${`day${index + 1}`}`
771
+ )
772
+ "
773
+ />
774
+ <span
775
+ v-else
776
+ class="active"
777
+ @click=" cellEdit(
778
+ scope.row,
779
+ `${scope.row[`day${index + 1}`]}`,
780
+ `${`day${index + 1}`}`
781
+ )
782
+
783
+ "
784
+ >{{ `${scope.row[`day${index + 1}`]}` }}</span>
785
+ </template>
786
+ </el-table-column>
787
+ </el-table-column>
788
+ <el-table-column align="center" prop="num" label="合计次数">
789
+ <template slot-scope="scope">
790
+ {{ totalNumber(scope.row) }}
791
+ </template>
792
+ </el-table-column>
793
+ <el-table-column align="center" prop="needNum" label="需要次数" />
794
+ </el-table>
795
+ </div>
796
+
797
+ <span slot="footer" class="dialog-footer">
798
+ <el-button
799
+ size="small"
800
+ @click="ModifyClockVisible = false"
801
+ >取 消</el-button>
802
+ <el-button
803
+ size="small"
804
+ type="primary"
805
+ @click="ModifyClockConfig()"
806
+ >确 定</el-button>
807
+ </span>
808
+ </el-dialog>
809
+ </div>
810
+ </template>
811
+
812
+ <script>
813
+ import {
814
+ WxUserFamilyPage,
815
+ WxUserFamilySave,
816
+ WxUserFamilyDel,
817
+ WxUserCustomAll,
818
+ customAll,
819
+ ExportExcelInfoWX,
820
+ WxUserFamilySysUser,
821
+ updateIsDel,
822
+ WxUserFamilyAll,
823
+ getFormulate,
824
+ WxClockItemFormulateSave
825
+ } from '@/api/institution'
826
+ import { getUserInfoRole } from '@/utils/auth'
827
+ import Pagination from '@/components/Pagination'
828
+ import AMapLoader from '@amap/amap-jsapi-loader'
829
+ import QQMap from 'qqmap'
830
+ export default {
831
+ name: 'Personnel',
832
+ components: { Pagination },
833
+ filters: {},
834
+ data() {
835
+ return {
836
+ lastItem: [],
837
+ tableData: [],
838
+ customerData: [],
839
+ trtExitObj: {},
840
+ allState: {},
841
+ ModifyClockVisible: false,
842
+ dialogVisibleExp: false,
843
+ dialogVisible: false,
844
+ loadExp: false,
845
+ startDate: [],
846
+ dialogStatus: '',
847
+ textMap: { update: '编辑', create: '创建' },
848
+ tableKey: 0,
849
+ list: null,
850
+ total: 0,
851
+ listLoading: true,
852
+ listQuery: {
853
+ pageNo: 1,
854
+ size: 20
855
+ },
856
+ // 搜索节流阀
857
+ loading: false,
858
+ // 搜索提示信息
859
+ options: [],
860
+ // 搜索提示
861
+ AutoComplete: null,
862
+ // 标记点
863
+ marker: '',
864
+ // 标记点
865
+ marker: '',
866
+ // 地址逆解析
867
+ geoCoder: null,
868
+ // 搜索关键字
869
+ keywords: '',
870
+ customData: [],
871
+ contacts: [],
872
+ dialogFormVisible: false,
873
+ dialogPvVisible: false,
874
+ rules: {
875
+ wxUserId: [
876
+ { required: true, message: '请选择联系人姓名', trigger: 'change' }
877
+ ],
878
+
879
+ medicalNo: [
880
+ { required: true, message: '请输入社保卡号', trigger: 'blur' }
881
+ ],
882
+ trtExitRea: [
883
+ { required: true, message: '请输入终止原因', trigger: 'blur' }
884
+ ],
885
+ name: [{ required: true, message: '请输入客户姓名', trigger: 'blur' }],
886
+ phoneNumber: [
887
+ { required: true, message: '请输入手机号码', trigger: 'blur' }
888
+ ],
889
+ address: [
890
+ { required: true, message: '请输入现居住地址', trigger: 'blur' }
891
+ ],
892
+ birthday: [
893
+ { required: true, message: '请选择出生日期', trigger: 'blur' }
894
+ ],
895
+ startTime: [
896
+ {
897
+ required: true,
898
+ message: '请选择合同服务开始时间',
899
+ trigger: 'blur'
900
+ }
901
+ ],
902
+ endTime: [
903
+ {
904
+ required: true,
905
+ message: '请选择合同服务结束时间',
906
+ trigger: 'blur'
907
+ }
908
+ ]
909
+ },
910
+ temp: {},
911
+ userInfo: {},
912
+ downloadLoading: false,
913
+ map: null
914
+ }
915
+ },
916
+ computed: {
917
+ totalNumber() {
918
+ return function(item) {
919
+ console.log(item)
920
+ let data = 0
921
+ if (item.title != '签到信息') {
922
+ for (var i in item) {
923
+ if (
924
+ i != 'projectId' &&
925
+ i != 'needNum' &&
926
+ i != 'price' &&
927
+ i != 'title' &&
928
+ i != 'hejizongjia' &&
929
+ i != 'titleNew' &&
930
+ i != 'num'
931
+ ) {
932
+ data += Number(item[i])
933
+ }
934
+ }
935
+ } else {
936
+ return ''
937
+ }
938
+ return data
939
+ }
940
+ }
941
+ },
942
+ created() {
943
+ this.userInfo = JSON.parse(getUserInfoRole())
944
+ this.getList()
945
+ this.getCustom()
946
+ },
947
+ mounted() {},
948
+ methods: {
949
+ ModifyClockConfig() {
950
+ this.$confirm('此操作将为客户创建打卡预制项 是否继续?', '提示', {
951
+ confirmButtonText: '确定',
952
+ cancelButtonText: '取消',
953
+ type: 'warning'
954
+ })
955
+ .then(() => {
956
+ WxClockItemFormulateSave({ list: this.tableData, familyId: this.temp.id }).then(
957
+ (res) => {
958
+ if (res.status == 1) {
959
+ this.$notify({
960
+ title: '提示',
961
+ message: res.info,
962
+ type: 'success',
963
+ duration: 4000
964
+ })
965
+ this.ModifyClockVisible = false
966
+ this.getList()
967
+ return
968
+ }
969
+ this.$notify({
970
+ title: '提示',
971
+ message: res.info,
972
+ type: 'error',
973
+ duration: 4000
974
+ })
975
+ }
976
+ )
977
+ })
978
+ .catch(() => {
979
+ this.$message({
980
+ type: 'info',
981
+ message: '已取消'
982
+ })
983
+ })
984
+ },
985
+ // 单元格双击事件--重点
986
+ cellEdit(row, value, name) {
987
+ if (row.title != '签到信息') {
988
+ row[name] = value
989
+ row.isEdit = true
990
+ }
991
+ },
992
+ onBlur(row, value, name) {
993
+ if (row[name] == '') {
994
+ row[name] = '0'
995
+ }
996
+ row.isEdit = false
997
+ },
998
+ // 修改打卡项
999
+ modifyClock(row) {
1000
+ this.ModifyClockVisible = true
1001
+ this.temp = row
1002
+ this.lastItem = []
1003
+ this.tableData = []
1004
+ getFormulate({ familyId: row.id }).then((res) => {
1005
+ this.tableData = res.result.map((item) => {
1006
+ item.isEdit = false
1007
+ return item
1008
+ })
1009
+ const lastItem = res.result[res.result.length - 1]
1010
+ for (var i in this.objectOrder(lastItem)) {
1011
+ if (
1012
+ i != 'title' &&
1013
+ i != 'num' &&
1014
+ i != 'price' &&
1015
+ i != 'needNum' &&
1016
+ i != 'projectId'
1017
+ ) {
1018
+ this.lastItem.push({
1019
+ label: lastItem[i] ? i : '',
1020
+ value: lastItem[i]
1021
+ })
1022
+ }
1023
+ }
1024
+ console.log(this.lastItem)
1025
+ })
1026
+ },
1027
+ // 排序的函数
1028
+ objectOrder(obj) {
1029
+ var newkey = Object.keys(obj).sort()
1030
+ const dayNames = newkey.filter((item) => item.startsWith('day'))
1031
+ const sortedDayNames = dayNames.sort((a, b) => {
1032
+ const dayNumberA = parseInt(a.slice(3))
1033
+ const dayNumberB = parseInt(b.slice(3))
1034
+ return dayNumberA - dayNumberB
1035
+ })
1036
+ sortedDayNames.push('needNum', 'num', 'projectId', 'title')
1037
+ var newObj = {}
1038
+ for (var i = 0; i < sortedDayNames.length; i++) {
1039
+ newObj[sortedDayNames[i]] = obj[sortedDayNames[i]]
1040
+ }
1041
+ return newObj // 返回排好序的新对象
1042
+ },
1043
+ searchSelect(val) {
1044
+ console.log(val)
1045
+ },
1046
+ huoqu() {
1047
+ WxUserFamilySysUser({ certno: this.temp.certno }).then((res) => {
1048
+ console.log('三方信息')
1049
+ console.log(res.result)
1050
+ if (res.status == 1) {
1051
+ this.$notify({
1052
+ title: '同步成功',
1053
+ message: res.info,
1054
+ type: 'success',
1055
+ duration: 2000
1056
+ })
1057
+ if (this.temp.certno.length === 18) {
1058
+ const birthday = this.temp.certno.substr(6, 8)
1059
+ res.result.birthday = birthday.replace(/(.{4})(.{2})/, '$1-$2-')
1060
+ }
1061
+ this.temp = res.result
1062
+ if (
1063
+ (this.userInfo.unitType == '01' && this.temp.nurscareWay != '07') ||
1064
+ (this.userInfo.unitType == '02' && this.temp.nurscareWay != '01')
1065
+ ) {
1066
+ this.$message({
1067
+ message: '客户护理方式与机构类型不匹配',
1068
+ type: 'warning'
1069
+ })
1070
+ }
1071
+
1072
+ // 01 上门机构 02养老
1073
+ // 判断 用户登录如果是上门机构 并且 机构的辖区code 和三方同步信息返回的辖区code不对应的话 弹出提示
1074
+ if (
1075
+ this.userInfo.unitType == '01' &&
1076
+ this.userInfo.unitCountyCode != this.temp.medicalCounty
1077
+ ) {
1078
+ this.$message({
1079
+ message: '客户与机构的辖区不一致',
1080
+ type: 'warning'
1081
+ })
1082
+ }
1083
+ return
1084
+ }
1085
+ this.$notify({
1086
+ title: '同步失败',
1087
+ message: res.info,
1088
+ type: 'error',
1089
+ duration: 2000
1090
+ })
1091
+ })
1092
+ },
1093
+ handleClose() {
1094
+ this.dialogVisibleExp = false
1095
+ this.dialogVisible = false
1096
+ this.startDate = []
1097
+ },
1098
+ expExcel() {
1099
+ try {
1100
+ this.loadExp = true
1101
+ const form = {
1102
+ startDate: this.startDate[0],
1103
+ endDate: this.startDate[1]
1104
+ }
1105
+ ExportExcelInfoWX(form)
1106
+ .then((res) => {
1107
+ const blob = new Blob([res])
1108
+ const fileName = '客户信息'
1109
+ if (blob.size > 0) {
1110
+ const elink = document.createElement('a')
1111
+ elink.style.display = 'none'
1112
+ elink.href = URL.createObjectURL(blob)
1113
+ // 类似a标签下载
1114
+ // 自定义文件名称和导出类型。最好和后台保持一致
1115
+ elink.download = `${fileName}/${this.$moment().format(
1116
+ 'YYYY-MM-DD'
1117
+ )}.xlsx`
1118
+ document.body.appendChild(elink)
1119
+ elink.click()
1120
+ // 释放URL 对象
1121
+ URL.revokeObjectURL(elink.href)
1122
+ // 删除创建的 a 标签
1123
+ document.body.removeChild(elink)
1124
+ }
1125
+ this.handleClose()
1126
+ this.loadExp = false
1127
+ })
1128
+ .catch(() => {
1129
+ this.loadExp = false
1130
+ })
1131
+ } catch (e) {
1132
+ this.loadExp = false
1133
+ console.log(e)
1134
+ }
1135
+ },
1136
+ initAMap() {
1137
+ AMapLoader.load({
1138
+ key: '3bd68974947ab074c863ad28dfe2fc5c', // 申请好的Web端开发者Key,首次调用 load 时必填
1139
+ version: '2.0', // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
1140
+ plugins: [
1141
+ 'AMap.Scale',
1142
+ 'AMap.ToolBar',
1143
+ 'AMap.ControlBar',
1144
+ 'AMap.Geocoder',
1145
+ 'AMap.Marker',
1146
+ 'AMap.CitySearch',
1147
+ 'AMap.Geocoder',
1148
+ 'AMap.Geolocation',
1149
+ 'AMap.AutoComplete',
1150
+ 'AMap.InfoWindow'
1151
+ ]
1152
+ })
1153
+ .then((AMap) => {
1154
+ // 获取到作为地图容器的DOM元素,创建地图实例
1155
+ this.map = new AMap.Map('amapcontainer', {
1156
+ // 设置地图容器id
1157
+ resizeEnable: true,
1158
+ zoom: this.zoom, // 地图显示的缩放级别
1159
+ zoomEnable: true, // 地图是否可缩放,默认值为true
1160
+ dragEnable: true, // 地图是否可通过鼠标拖拽平移,默认为true
1161
+ doubleClickZoom: true, // 地图是否可通过双击鼠标放大地图,默认为true
1162
+ zoom: 13, // 初始化地图级别
1163
+ center: [120.699366, 27.994267] // 初始化中心点坐标 广州
1164
+ })
1165
+
1166
+ // 添加控件
1167
+ AMap.plugin(['AMap.ToolBar'], () => {
1168
+ this.map.addControl(new AMap.ToolBar())
1169
+ })
1170
+ // 地址逆解析插件
1171
+ this.geoCoder = new AMap.Geocoder({
1172
+ radius: 1000, // 范围,默认:500
1173
+ extensions: 'all'
1174
+ })
1175
+ // 搜索提示插件
1176
+ this.AutoComplete = new AMap.AutoComplete({ city: '全国' })
1177
+ // 点击获取经纬度;
1178
+ this.map.on('click', (e) => {
1179
+ this.keywords = ''
1180
+ // this.temp.city = e.
1181
+ // this.temp.county = val.address
1182
+ // 获取经纬度
1183
+ this.temp.lng = e.lnglat.lng
1184
+ this.temp.lat = e.lnglat.lat
1185
+ // 清除点
1186
+ this.removeMarker()
1187
+ // 标记点
1188
+ this.setMapMarker()
1189
+ // 解析地址
1190
+ this.toGeoCoder()
1191
+ })
1192
+ })
1193
+ .catch((e) => {
1194
+ console.log(e)
1195
+ })
1196
+ },
1197
+ // 搜索
1198
+ remoteMethod(query) {
1199
+ if (query !== '') {
1200
+ this.loading = true
1201
+ this.options = []
1202
+ console.log(this.options)
1203
+ setTimeout(() => {
1204
+ this.loading = false
1205
+ this.AutoComplete.search(query, (status, result) => {
1206
+ this.options = result.tips
1207
+ })
1208
+ }, 200)
1209
+ } else {
1210
+ this.options = []
1211
+ }
1212
+ },
1213
+ // 选中提示
1214
+ currentSelect(val) {
1215
+ console.log(val)
1216
+ // 清空时不执行后面代码
1217
+ if (!val) {
1218
+ return
1219
+ }
1220
+ if (val.location) {
1221
+ this.temp.lng = val.location.lng
1222
+ this.temp.lat = val.location.lat
1223
+ }
1224
+ // 解析地址
1225
+ this.toGeoCoder()
1226
+ // this.temp.address = val.district + val.address
1227
+ // this.temp.adcode = val.adcode
1228
+ // this.temp.city = val.district;
1229
+ // this.temp.county = val.address;
1230
+ // 清除点
1231
+ this.removeMarker()
1232
+ // 标记点
1233
+ this.setMapMarker()
1234
+ },
1235
+
1236
+ // 解析地址
1237
+ toGeoCoder() {
1238
+ const lnglat = [this.temp.lng, this.temp.lat]
1239
+ this.geoCoder.getAddress(lnglat, (status, result) => {
1240
+ if (status === 'complete' && result.regeocode) {
1241
+ console.log(result.regeocode)
1242
+ this.$set(this.temp, 'city', result.regeocode.addressComponent.city)
1243
+ this.$set(
1244
+ this.temp,
1245
+ 'county',
1246
+ result.regeocode.addressComponent.district
1247
+ )
1248
+ this.$set(this.temp, 'address', result.regeocode.formattedAddress)
1249
+ }
1250
+ })
1251
+ },
1252
+ // 标记点
1253
+ setMapMarker() {
1254
+ // 自动适应显示想显示的范围区域
1255
+ this.map.setFitView()
1256
+ this.marker = new AMap.Marker({
1257
+ map: this.map,
1258
+ position: [this.temp.lng, this.temp.lat]
1259
+ })
1260
+ this.map.setFitView()
1261
+ this.map.add(this.marker)
1262
+ },
1263
+ // 清除点
1264
+ removeMarker() {
1265
+ if (this.marker) {
1266
+ this.map.remove(this.marker)
1267
+ }
1268
+ },
1269
+ // 获取客户信息
1270
+ getCustom() {
1271
+ WxUserCustomAll().then((res) => {
1272
+ this.customData = res.result.map((item) => {
1273
+ return {
1274
+ label: item.nickName,
1275
+ value: item.id,
1276
+ phoneNumber: item.phoneNumber
1277
+ }
1278
+ })
1279
+ })
1280
+ customAll().then((res) => {
1281
+ this.contacts = res.result.map((item) => {
1282
+ return {
1283
+ label: item.nickName,
1284
+ value: item.id,
1285
+ phoneNumber: item.phoneNumber
1286
+ }
1287
+ })
1288
+ })
1289
+ },
1290
+ changeUser(val) {
1291
+ for (var i = 0; i < this.customData.length; i++) {
1292
+ if (this.customData[i].value == val) {
1293
+ this.temp.wxUserPhoneNumber = this.customData[i].phoneNumber
1294
+ }
1295
+ }
1296
+ },
1297
+ getList() {
1298
+ this.listLoading = true
1299
+ WxUserFamilyPage(this.listQuery).then((response) => {
1300
+ this.list = response.result.data
1301
+ this.total = response.result.count
1302
+ setTimeout(() => {
1303
+ this.listLoading = false
1304
+ }, 1.5 * 1000)
1305
+ })
1306
+ WxUserFamilyAll().then((res) => {
1307
+ this.customerData = res.result.map((item) => {
1308
+ return { label: item.name, value: item.name }
1309
+ })
1310
+ })
1311
+ },
1312
+ handleModifyStatus(row, status) {
1313
+ this.$message({
1314
+ message: '操作成功',
1315
+ type: 'success'
1316
+ })
1317
+ row.status = status
1318
+ },
1319
+ resetting(formName) {
1320
+ this.$nextTick(() => {
1321
+ this.$refs[formName].resetFields()
1322
+ this.getList()
1323
+ })
1324
+ },
1325
+ add() {
1326
+ this.dialogStatus = 'create'
1327
+ this.dialogFormVisible = true
1328
+ this.temp = {}
1329
+ this.initAMap()
1330
+ },
1331
+ onSubmit() {
1332
+ this.getList()
1333
+ },
1334
+ createData() {
1335
+ this.$refs['temp'].validate((valid) => {
1336
+ if (valid) {
1337
+ WxUserFamilySave(this.temp).then((res) => {
1338
+ // this.list.unshift(this.temp)
1339
+ if (res.status == 1) {
1340
+ this.dialogFormVisible = false
1341
+ this.getList()
1342
+ this.$notify({
1343
+ title: res.info,
1344
+ message: '新增成功',
1345
+ type: 'success',
1346
+ duration: 2000
1347
+ })
1348
+ return
1349
+ }
1350
+ this.$notify({
1351
+ title: res.info,
1352
+ message: '新增失败',
1353
+ type: 'error',
1354
+ duration: 2000
1355
+ })
1356
+ })
1357
+ }
1358
+ })
1359
+ },
1360
+ updateData() {
1361
+ this.$refs['temp'].validate((valid) => {
1362
+ if (valid) {
1363
+ WxUserFamilySave(this.temp).then((res) => {
1364
+ if (res.status == 1) {
1365
+ this.dialogFormVisible = false
1366
+ this.getList()
1367
+ this.$notify({
1368
+ title: res.info,
1369
+ message: '更新成功',
1370
+ type: 'success',
1371
+ duration: 2000
1372
+ })
1373
+ return
1374
+ }
1375
+ this.$notify({
1376
+ title: res.info,
1377
+ message: '更新失败',
1378
+ type: 'error',
1379
+ duration: 2000
1380
+ })
1381
+ })
1382
+ }
1383
+ })
1384
+ },
1385
+ edit(row) {
1386
+ this.temp = row
1387
+ this.temp.wxUser = row.wxUserId
1388
+ this.dialogStatus = 'update'
1389
+ this.dialogFormVisible = true
1390
+ // for(var i = 0; i < this.customData.length; i ++) {
1391
+ // if(this.customData[i].value == this.temp.wxUserId) {
1392
+ // this.temp.wxUserPhoneNumber = this.customData[i].phoneNumber
1393
+ // }
1394
+ // }
1395
+ this.initAMap()
1396
+ },
1397
+ handleDelete(row, index) {
1398
+ this.dialogVisible = true
1399
+ this.allState.id = row.id
1400
+ },
1401
+ handleStatus(row) {
1402
+ this.$confirm('此操作将更改状态, 是否继续?', '提示', {
1403
+ confirmButtonText: '确定',
1404
+ cancelButtonText: '取消',
1405
+ type: 'warning'
1406
+ })
1407
+ .then(() => {
1408
+ updateIsDel(row).then((res) => {
1409
+ if (res.status == 1) {
1410
+ this.getList()
1411
+ this.$notify({
1412
+ title: '修改成功',
1413
+ message: res.info,
1414
+ type: 'success',
1415
+ duration: 2000
1416
+ })
1417
+ return
1418
+ }
1419
+ this.$notify({
1420
+ title: '修改失败',
1421
+ message: res.info,
1422
+ type: 'error',
1423
+ duration: 2000
1424
+ })
1425
+ })
1426
+ })
1427
+ .catch(() => {
1428
+ this.$message({
1429
+ type: 'info',
1430
+ message: '已取消'
1431
+ })
1432
+ })
1433
+ },
1434
+ termination() {
1435
+ this.trtExitObj.id = this.allState.id
1436
+ WxUserFamilyDel(this.trtExitObj).then((res) => {
1437
+ if (res.status == 1) {
1438
+ this.getList()
1439
+ this.$notify({
1440
+ title: '删除成功',
1441
+ message: res.info,
1442
+ type: 'success',
1443
+ duration: 2000
1444
+ })
1445
+ this.dialogVisible = false
1446
+ return
1447
+ }
1448
+ this.$notify({
1449
+ title: '删除失败',
1450
+ message: res.info,
1451
+ type: 'error',
1452
+ duration: 2000
1453
+ })
1454
+ })
1455
+ }
1456
+ }
1457
+ }
1458
+ </script>
1459
+ <style lang="scss" scoped>
1460
+ .el-col-12 {
1461
+ padding: 0 20px 0 0;
1462
+ }
1463
+
1464
+ .el-divider--horizontal {
1465
+ margin: 0 0 20px 0;
1466
+ }
1467
+ ::v-deep .el-calendar__button-group {
1468
+ display: none;
1469
+ }
1470
+
1471
+ .table ::v-deep .el-table .cell {
1472
+ padding: 0;
1473
+ }
1474
+
1475
+ .table ::v-deep .el-table td {
1476
+ padding: 5px 0;
1477
+ }
1478
+
1479
+ .active {
1480
+ color: #409eff;
1481
+ cursor: pointer;
1482
+ display: inline-block;
1483
+ width: 42px;
1484
+ }
1485
+
1486
+ .inactive {
1487
+ color: #999;
1488
+ }
1489
+ .exptable {
1490
+ font-size: 9px;
1491
+ text-align: center;
1492
+ width: 100%;
1493
+ // line-height: 26px;
1494
+ .leftXuhao {
1495
+ display: flex;
1496
+ border-bottom: 1px solid #333;
1497
+ div {
1498
+ display: flex;
1499
+ align-items: center;
1500
+ justify-content: center;
1501
+ border-right: 1px solid #333;
1502
+ }
1503
+ }
1504
+ .thead {
1505
+ // border: 1px solid #333;
1506
+ border-bottom: 0;
1507
+ color: #000;
1508
+ padding: 8px 0;
1509
+ }
1510
+ .tbody {
1511
+ border: 1px solid #333;
1512
+ font-size: 8px;
1513
+ }
1514
+ .tr {
1515
+ display: flex;
1516
+ border-bottom: 1px solid #333;
1517
+ color: #111;
1518
+ div {
1519
+ // flex: 1;
1520
+ display: flex;
1521
+ align-items: center;
1522
+ justify-content: center;
1523
+ border-right: 1px solid #333;
1524
+ // padding: 5px 2px;
1525
+ }
1526
+ .bodyday {
1527
+ flex: 1;
1528
+ }
1529
+ div:last-child {
1530
+ border-right: 0;
1531
+ }
1532
+ }
1533
+ .eight div {
1534
+ flex: 1;
1535
+ // width: calc((100% - 120px * 8) / 8);
1536
+ padding: 5px 0;
1537
+ }
1538
+ .eight .title {
1539
+ width: 110px;
1540
+ flex: none;
1541
+ }
1542
+
1543
+ .tr:last-child {
1544
+ border-bottom: 0;
1545
+ }
1546
+ .loop {
1547
+ .num {
1548
+ width: 22px !important;
1549
+ }
1550
+ .total {
1551
+ width: 23px;
1552
+ padding: 5px 0;
1553
+ }
1554
+ // .day {
1555
+ // width: calc(27px * 27);
1556
+ // }
1557
+ .name {
1558
+ // flex: 1;
1559
+ padding: 5px 0;
1560
+ // width: 300px !important;
1561
+ flex: 0.1;
1562
+ }
1563
+ .headday {
1564
+ flex-flow: column;
1565
+ flex: 1;
1566
+ .forday {
1567
+ border-top: 1px solid #333;
1568
+ }
1569
+ }
1570
+ .day span {
1571
+ padding: 5px 0;
1572
+ }
1573
+ .forday {
1574
+ display: table;
1575
+ width: 100%;
1576
+ height: 100%;
1577
+ span {
1578
+ display: table-cell;
1579
+ vertical-align: middle;
1580
+ border-right: 1px solid #333;
1581
+ width: 23px;
1582
+ height: 100%;
1583
+ overflow: hidden;
1584
+ word-wrap: break-word;
1585
+ word-break: break-all;
1586
+ }
1587
+ span:last-child {
1588
+ border-right: 0;
1589
+ }
1590
+ }
1591
+ }
1592
+ }
1593
+ </style>