1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
| <template>
| <a-card :loading="loading" :body-style="{ padding: '20px 24px 8px' }" :bordered="false">
| <div class="chart-card-header">
| <div class="meta">
| <span class="chart-card-title">
| <slot name="title">
| {{ title }}
| </slot>
| </span>
| <span class="chart-card-action">
| <slot name="action"></slot>
| </span>
| </div>
| <div class="total">
| <slot name="total">
| <span>{{ typeof total === 'function' && total() || total }}</span>
| </slot>
| </div>
| </div>
| <div class="chart-card-content">
| <div class="content-fix">
| <slot></slot>
| </div>
| </div>
| <div class="chart-card-footer">
| <div class="field">
| <slot name="footer"></slot>
| </div>
| </div>
| </a-card>
| </template>
|
| <script>
| export default {
| name: 'ChartCard',
| props: {
| title: {
| type: String,
| default: ''
| },
| total: {
| type: [Function, Number, String],
| required: false,
| default: null
| },
| loading: {
| type: Boolean,
| default: false
| }
| }
| }
| </script>
|
| <style lang="less" scoped>
| .chart-card-header {
| position: relative;
| overflow: hidden;
| width: 100%;
|
| .meta {
| position: relative;
| overflow: hidden;
| width: 100%;
| color: rgba(0, 0, 0, .45);
| font-size: 14px;
| line-height: 22px;
| }
| }
|
| .chart-card-action {
| cursor: pointer;
| position: absolute;
| top: 0;
| right: 0;
| }
|
| .chart-card-footer {
| border-top: 1px solid #e8e8e8;
| padding-top: 9px;
| margin-top: 8px;
|
| > * {
| position: relative;
| }
|
| .field {
| white-space: nowrap;
| overflow: hidden;
| text-overflow: ellipsis;
| margin: 0;
| }
| }
|
| .chart-card-content {
| margin-bottom: 12px;
| position: relative;
| height: 46px;
| width: 100%;
|
| .content-fix {
| position: absolute;
| left: 0;
| bottom: 0;
| width: 100%;
| }
| }
|
| .total {
| overflow: hidden;
| text-overflow: ellipsis;
| word-break: break-all;
| white-space: nowrap;
| color: #000;
| margin-top: 4px;
| margin-bottom: 0;
| font-size: 30px;
| line-height: 38px;
| height: 38px;
| }
| </style>
|
|