wl-design-mobile 0.8.2 → 0.8.4
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.
- package/doc/file/compoents/lambo-file-row.vue +5 -92
- package/doc/file-type/file-type.js +286 -0
- package/doc/file-type/icons/icon-file-ai.svg +1 -0
- package/doc/file-type/icons/icon-file-avi.svg +1 -0
- package/doc/file-type/icons/icon-file-default.svg +1 -0
- package/doc/file-type/icons/icon-file-epub.svg +1 -0
- package/doc/file-type/icons/icon-file-excel.svg +1 -0
- package/doc/file-type/icons/icon-file-flv.svg +1 -0
- package/doc/file-type/icons/icon-file-gif.svg +1 -0
- package/doc/file-type/icons/icon-file-html.svg +1 -0
- package/doc/file-type/icons/icon-file-java.svg +1 -0
- package/doc/file-type/icons/icon-file-js.svg +1 -0
- package/doc/file-type/icons/icon-file-jsp.svg +1 -0
- package/doc/file-type/icons/icon-file-mp3.svg +1 -0
- package/doc/file-type/icons/icon-file-msi.svg +1 -0
- package/doc/file-type/icons/icon-file-pdf.svg +1 -0
- package/doc/file-type/icons/icon-file-png.svg +1 -0
- package/doc/file-type/icons/icon-file-ppt.svg +1 -0
- package/doc/file-type/icons/icon-file-psd.svg +1 -0
- package/doc/file-type/icons/icon-file-rar.svg +1 -0
- package/doc/file-type/icons/icon-file-raw.svg +1 -0
- package/doc/file-type/icons/icon-file-txt.svg +1 -0
- package/doc/file-type/icons/icon-file-word.svg +1 -0
- package/doc/img/comonents/lambo-img-grid.vue +6 -1
- package/flow/approval/flow-approval.vue +550 -0
- package/flow/comps/flow-attachment-list.vue +230 -0
- package/flow/comps/flow-attachment-modal.vue +132 -0
- package/flow/comps/flow-copy-users.vue +358 -0
- package/flow/comps/flow-node-card.vue +150 -0
- package/flow/comps/flow-node-header.vue +172 -0
- package/flow/comps/flow-util.js +156 -0
- package/flow/comps/icons/approved.svg +11 -0
- package/flow/comps/icons/canceled.svg +11 -0
- package/flow/comps/icons/rejected.svg +11 -0
- package/flow/comps/icons/underway.svg +11 -0
- package/flow/detail/flow-detail.vue +466 -0
- package/flow/index.js +51 -0
- package/flow/lambo-flow-detail.vue +894 -12
- package/flow/lambo-flow-edit.vue +6 -21
- package/flow/submit/flow-submit.vue +381 -0
- package/package.json +1 -1
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="node-detail-card">
|
|
3
|
+
<div class="audit-result-badge" :class="'badge-' + getAuditResultClass(nodeInfo.auditResult)" v-if="showResultBadge && !isApplyNode">
|
|
4
|
+
<van-icon :name="getAuditIcon(nodeInfo.auditResult)" size="12"></van-icon>
|
|
5
|
+
<span>{{ getAuditResultText(nodeInfo.auditResult) }}</span>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="detail-grid">
|
|
8
|
+
<div class="detail-item">
|
|
9
|
+
<span class="detail-label">{{ isApplyNode ? '发起时间:' : '审批时间:' }}</span>
|
|
10
|
+
<span class="detail-value">{{ (isApplyNode ? nodeInfo.createTime : nodeInfo.auditTime) || '-' }}</span>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="detail-item">
|
|
13
|
+
<span class="detail-label">{{ isApplyNode ? '发起人:' : '审批人:' }}</span>
|
|
14
|
+
<span class="detail-value">{{ (isApplyNode ? nodeInfo.createUserName : nodeInfo.auditUserName) || '-' }}</span>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="detail-grid" style="margin-top: 8px" v-if="!isApplyNode && (nodeInfo.startTime || nodeInfo.endTime)">
|
|
18
|
+
<div class="detail-item">
|
|
19
|
+
<span class="detail-label">开始时间:</span>
|
|
20
|
+
<span class="detail-value">{{ nodeInfo.startTime || '-' }}</span>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="detail-item">
|
|
23
|
+
<span class="detail-label">结束时间:</span>
|
|
24
|
+
<span class="detail-value">{{ nodeInfo.endTime || '-' }}</span>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
<div class="detail-item comment-item" v-if="isApplyNode ? nodeInfo.applyDescription : nodeInfo.auditComment">
|
|
28
|
+
<span class="detail-label">{{ isApplyNode ? '申请描述:' : '审批意见:' }}</span>
|
|
29
|
+
<span class="detail-value">{{ isApplyNode ? nodeInfo.applyDescription : nodeInfo.auditComment }}</span>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<!-- 附件列表插槽 -->
|
|
33
|
+
<slot name="attachments"></slot>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
36
|
+
|
|
37
|
+
<script>
|
|
38
|
+
import { getAuditResultClass, getAuditResultText, getAuditIcon } from './flow-util.js'
|
|
39
|
+
|
|
40
|
+
export default {
|
|
41
|
+
name: 'FlowNodeCard',
|
|
42
|
+
props: {
|
|
43
|
+
nodeInfo: {
|
|
44
|
+
type: Object,
|
|
45
|
+
default: () => ({})
|
|
46
|
+
},
|
|
47
|
+
showResultBadge: {
|
|
48
|
+
type: Boolean,
|
|
49
|
+
default: true
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* 是否为发起节点
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
isApplyNode: {
|
|
56
|
+
type: Boolean,
|
|
57
|
+
default: false
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
methods: {
|
|
61
|
+
getAuditResultClass,
|
|
62
|
+
getAuditResultText,
|
|
63
|
+
getAuditIcon
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<style scoped>
|
|
69
|
+
.node-detail-card {
|
|
70
|
+
border-radius: 4px;
|
|
71
|
+
padding: 12px;
|
|
72
|
+
border: 1px solid #e8e8e8;
|
|
73
|
+
position: relative;
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.audit-result-badge {
|
|
78
|
+
position: absolute;
|
|
79
|
+
top: 0;
|
|
80
|
+
right: 0;
|
|
81
|
+
display: inline-flex;
|
|
82
|
+
align-items: center;
|
|
83
|
+
gap: 4px;
|
|
84
|
+
padding: 4px 10px;
|
|
85
|
+
border-radius: 0 0 0 4px;
|
|
86
|
+
font-size: 12px;
|
|
87
|
+
font-weight: 500;
|
|
88
|
+
z-index: 1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.audit-result-badge.badge-pass {
|
|
92
|
+
background: #07c160;
|
|
93
|
+
color: #fff;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.audit-result-badge.badge-reject {
|
|
97
|
+
background: #ee0a24;
|
|
98
|
+
color: #fff;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.audit-result-badge.badge-transfer {
|
|
102
|
+
background: #ff976a;
|
|
103
|
+
color: #fff;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.audit-result-badge.badge-return {
|
|
107
|
+
background: #8c8c8c;
|
|
108
|
+
color: #fff;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.audit-result-badge.badge-default {
|
|
112
|
+
background: #d9d9d9;
|
|
113
|
+
color: #fff;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.detail-grid {
|
|
117
|
+
display: flex;
|
|
118
|
+
flex-wrap: wrap;
|
|
119
|
+
gap: 8px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.detail-item {
|
|
123
|
+
display: flex;
|
|
124
|
+
align-items: flex-start;
|
|
125
|
+
font-size: 13px;
|
|
126
|
+
width: calc(50% - 4px);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@media (max-width: 510px) {
|
|
130
|
+
.detail-item {
|
|
131
|
+
width: 100% !important;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.comment-item {
|
|
136
|
+
width: 100%;
|
|
137
|
+
margin-top: 8px;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.detail-label {
|
|
141
|
+
color: #8c8c8c;
|
|
142
|
+
flex-shrink: 0;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.detail-value {
|
|
146
|
+
color: #262626;
|
|
147
|
+
flex: 1;
|
|
148
|
+
word-break: break-all;
|
|
149
|
+
}
|
|
150
|
+
</style>
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="node-header">
|
|
3
|
+
<div class="avatar-wrapper">
|
|
4
|
+
<div class="node-avatar" :class="{ 'avatar-no-image': !nodeInfo.auditUserAvatar }">
|
|
5
|
+
<img v-if="nodeInfo.auditUserAvatar" :src="nodeInfo.auditUserAvatar" alt="" />
|
|
6
|
+
<span v-else>{{ nodeInfo.auditUserName ? nodeInfo.auditUserName.charAt(0) : (nodeIndex + 1) }}</span>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="status-badge" :class="'badge-' + getStatusClass(nodeInfo.status)">
|
|
9
|
+
<van-icon :name="getStatusIcon(nodeInfo.status)" :size="badgeIconSize"></van-icon>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
<div class="node-info">
|
|
13
|
+
<div class="node-title-row">
|
|
14
|
+
<span class="task-name">{{ nodeInfo.taskName }}</span>
|
|
15
|
+
<slot name="extra"></slot>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="node-user-row" v-if="nodeInfo.auditUserName">
|
|
18
|
+
<span class="user-name">{{ nodeInfo.auditUserName }}</span>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</template>
|
|
23
|
+
|
|
24
|
+
<script>
|
|
25
|
+
import { getStatusIcon, getStatusClass } from './flow-util.js'
|
|
26
|
+
|
|
27
|
+
export default {
|
|
28
|
+
name: 'FlowNodeHeader',
|
|
29
|
+
props: {
|
|
30
|
+
nodeInfo: {
|
|
31
|
+
type: Object,
|
|
32
|
+
default: () => ({})
|
|
33
|
+
},
|
|
34
|
+
nodeIndex: {
|
|
35
|
+
type: Number,
|
|
36
|
+
default: 0
|
|
37
|
+
},
|
|
38
|
+
avatarSize: {
|
|
39
|
+
type: Number,
|
|
40
|
+
default: 40
|
|
41
|
+
},
|
|
42
|
+
badgeIconSize: {
|
|
43
|
+
type: String,
|
|
44
|
+
default: '10'
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
methods: {
|
|
48
|
+
getStatusIcon,
|
|
49
|
+
getStatusClass
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<style scoped>
|
|
55
|
+
.node-header {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
margin-bottom: 8px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.avatar-wrapper {
|
|
62
|
+
position: relative;
|
|
63
|
+
margin-right: 12px;
|
|
64
|
+
flex-shrink: 0;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.node-avatar {
|
|
68
|
+
width: 40px;
|
|
69
|
+
height: 40px;
|
|
70
|
+
border-radius: 50%;
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: center;
|
|
74
|
+
background: #1989fa;
|
|
75
|
+
color: #fff;
|
|
76
|
+
font-size: 16px;
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.node-avatar img {
|
|
81
|
+
width: 100%;
|
|
82
|
+
height: 100%;
|
|
83
|
+
object-fit: cover;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.node-avatar.avatar-no-image {
|
|
87
|
+
background: #1989fa;
|
|
88
|
+
color: #fff;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.status-badge {
|
|
92
|
+
position: absolute;
|
|
93
|
+
bottom: 0;
|
|
94
|
+
right: 0;
|
|
95
|
+
width: 16px;
|
|
96
|
+
height: 16px;
|
|
97
|
+
border-radius: 50%;
|
|
98
|
+
display: flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
justify-content: center;
|
|
101
|
+
border: 2px solid #fff;
|
|
102
|
+
background: #f0f0f0;
|
|
103
|
+
color: #999;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.status-badge.badge-success {
|
|
107
|
+
background: #07c160;
|
|
108
|
+
color: #fff;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.status-badge.badge-process {
|
|
112
|
+
background: #1989fa;
|
|
113
|
+
color: #fff;
|
|
114
|
+
animation: pulse 2s infinite;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.status-badge.badge-error {
|
|
118
|
+
background: #ee0a24;
|
|
119
|
+
color: #fff;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.status-badge.badge-warning {
|
|
123
|
+
background: #ff976a;
|
|
124
|
+
color: #fff;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.status-badge.badge-wait {
|
|
128
|
+
background: #f0f0f0;
|
|
129
|
+
color: #999;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@keyframes pulse {
|
|
133
|
+
0%,
|
|
134
|
+
100% {
|
|
135
|
+
box-shadow: 0 0 0 0 rgba(25, 137, 250, 0.4);
|
|
136
|
+
}
|
|
137
|
+
50% {
|
|
138
|
+
box-shadow: 0 0 0 8px rgba(25, 137, 250, 0);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.node-info {
|
|
143
|
+
flex: 1;
|
|
144
|
+
padding-top: 2px;
|
|
145
|
+
min-width: 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.node-title-row {
|
|
149
|
+
display: flex;
|
|
150
|
+
align-items: center;
|
|
151
|
+
justify-content: space-between;
|
|
152
|
+
gap: 12px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.task-name {
|
|
156
|
+
font-size: 14px;
|
|
157
|
+
font-weight: 600;
|
|
158
|
+
color: #262626;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.node-user-row {
|
|
162
|
+
display: flex;
|
|
163
|
+
align-items: center;
|
|
164
|
+
gap: 4px;
|
|
165
|
+
margin-top: 2px;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.user-name {
|
|
169
|
+
font-size: 12px;
|
|
170
|
+
color: #262626;
|
|
171
|
+
}
|
|
172
|
+
</style>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 流程组件公共工具方法(Vant 移动端版)
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 获取状态图标
|
|
7
|
+
* @param {string} status - 节点状态
|
|
8
|
+
* @returns {string} Vant 图标名称
|
|
9
|
+
*/
|
|
10
|
+
export function getStatusIcon(status) {
|
|
11
|
+
const iconMap = {
|
|
12
|
+
completed: 'passed',
|
|
13
|
+
processing: 'clock-o',
|
|
14
|
+
rejected: 'cross',
|
|
15
|
+
transferred: 'replay',
|
|
16
|
+
pending: 'circle'
|
|
17
|
+
}
|
|
18
|
+
return iconMap[status] || iconMap.pending
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* 获取状态样式类名
|
|
23
|
+
* @param {string} status - 节点状态
|
|
24
|
+
* @returns {string} 样式类名
|
|
25
|
+
*/
|
|
26
|
+
export function getStatusClass(status) {
|
|
27
|
+
const classMap = {
|
|
28
|
+
completed: 'success',
|
|
29
|
+
processing: 'process',
|
|
30
|
+
rejected: 'error',
|
|
31
|
+
transferred: 'warning',
|
|
32
|
+
pending: 'wait'
|
|
33
|
+
}
|
|
34
|
+
return classMap[status] || classMap.pending
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 获取状态文本
|
|
39
|
+
* @param {string} status - 节点状态
|
|
40
|
+
* @returns {string} 状态文本
|
|
41
|
+
*/
|
|
42
|
+
export function getStatusText(status) {
|
|
43
|
+
const textMap = {
|
|
44
|
+
completed: '已完成',
|
|
45
|
+
processing: '审批中',
|
|
46
|
+
rejected: '已驳回',
|
|
47
|
+
transferred: '已转办',
|
|
48
|
+
pending: '待审批'
|
|
49
|
+
}
|
|
50
|
+
return textMap[status] || '待审批'
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* 获取审批结果样式类名
|
|
55
|
+
* @param {string} auditResult - 审批结果
|
|
56
|
+
* @returns {string} 样式类名
|
|
57
|
+
*/
|
|
58
|
+
export function getAuditResultClass(auditResult) {
|
|
59
|
+
const classMap = {
|
|
60
|
+
'30': 'pass',
|
|
61
|
+
'40': 'reject',
|
|
62
|
+
'50': 'transfer',
|
|
63
|
+
'60': 'return'
|
|
64
|
+
}
|
|
65
|
+
return classMap[auditResult] || 'default'
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 获取审批结果文本
|
|
70
|
+
* @param {string} auditResult - 审批结果
|
|
71
|
+
* @returns {string} 结果文本
|
|
72
|
+
*/
|
|
73
|
+
export function getAuditResultText(auditResult) {
|
|
74
|
+
const textMap = {
|
|
75
|
+
'30': '同意',
|
|
76
|
+
'40': '驳回',
|
|
77
|
+
'50': '转办',
|
|
78
|
+
'60': '退回'
|
|
79
|
+
}
|
|
80
|
+
return textMap[auditResult] || '审批'
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* 获取审批结果图标
|
|
85
|
+
* @param {string} auditResult - 审批结果
|
|
86
|
+
* @returns {string} Vant 图标名称
|
|
87
|
+
*/
|
|
88
|
+
export function getAuditIcon(auditResult) {
|
|
89
|
+
const iconMap = {
|
|
90
|
+
'30': 'passed',
|
|
91
|
+
'40': 'cross',
|
|
92
|
+
'50': 'replay',
|
|
93
|
+
'60': 'undo'
|
|
94
|
+
}
|
|
95
|
+
return iconMap[auditResult] || 'circle'
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* 获取文件图标
|
|
100
|
+
* @param {string} fileName - 文件名
|
|
101
|
+
* @returns {string} Vant 图标名称
|
|
102
|
+
*/
|
|
103
|
+
export function getFileIcon(fileName) {
|
|
104
|
+
if (!fileName) return 'description'
|
|
105
|
+
const ext = fileName.substring(fileName.lastIndexOf('.')).toLowerCase()
|
|
106
|
+
const iconMap = {
|
|
107
|
+
'.pdf': 'description',
|
|
108
|
+
'.doc': 'description',
|
|
109
|
+
'.docx': 'description',
|
|
110
|
+
'.xls': 'description',
|
|
111
|
+
'.xlsx': 'description',
|
|
112
|
+
'.ppt': 'description',
|
|
113
|
+
'.pptx': 'description',
|
|
114
|
+
'.jpg': 'photo',
|
|
115
|
+
'.jpeg': 'photo',
|
|
116
|
+
'.png': 'photo',
|
|
117
|
+
'.gif': 'photo',
|
|
118
|
+
'.bmp': 'photo',
|
|
119
|
+
'.webp': 'photo',
|
|
120
|
+
'.zip': 'folder',
|
|
121
|
+
'.rar': 'folder',
|
|
122
|
+
'.7z': 'folder',
|
|
123
|
+
'.tar': 'folder',
|
|
124
|
+
'.gz': 'folder',
|
|
125
|
+
'.txt': 'description',
|
|
126
|
+
'.mp4': 'video',
|
|
127
|
+
'.avi': 'video',
|
|
128
|
+
'.mov': 'video',
|
|
129
|
+
'.mp3': 'music',
|
|
130
|
+
'.wav': 'music'
|
|
131
|
+
}
|
|
132
|
+
return iconMap[ext] || 'description'
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* 格式化文件大小
|
|
137
|
+
* @param {number} size - 文件大小(字节)
|
|
138
|
+
* @returns {string} 格式化后的大小
|
|
139
|
+
*/
|
|
140
|
+
export function formatFileSize(size) {
|
|
141
|
+
if (!size) return '-'
|
|
142
|
+
if (size < 1024) return size + ' B'
|
|
143
|
+
if (size < 1024 * 1024) return (size / 1024).toFixed(2) + ' KB'
|
|
144
|
+
return (size / (1024 * 1024)).toFixed(2) + ' MB'
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export default {
|
|
148
|
+
getStatusIcon,
|
|
149
|
+
getStatusClass,
|
|
150
|
+
getStatusText,
|
|
151
|
+
getAuditResultClass,
|
|
152
|
+
getAuditResultText,
|
|
153
|
+
getAuditIcon,
|
|
154
|
+
getFileIcon,
|
|
155
|
+
formatFileSize
|
|
156
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="59.622" height="59.616" viewBox="0 0 59.622 59.616">
|
|
2
|
+
<g id="通过" transform="translate(-291.798 -153.753)">
|
|
3
|
+
<g id="组_977" data-name="组 977" transform="translate(291.798 153.753)">
|
|
4
|
+
<path id="路径_604" data-name="路径 604" d="M29.853,59.769a29.8,29.8,0,1,1,25.88-15.078,29.806,29.806,0,0,1-25.88,15.078Zm-.1-58.37a28.621,28.621,0,1,0,7.1.9,28.576,28.576,0,0,0-7.1-.9Z" transform="translate(0 -0.153)" fill="#00b42a"/>
|
|
5
|
+
<path id="路径_605" data-name="路径 605" d="M64.173,92.121a27.692,27.692,0,1,1,14.1-3.877A27.693,27.693,0,0,1,64.173,92.121Zm-.092-54.593a26.979,26.979,0,1,0,6.683.846,26.88,26.88,0,0,0-6.683-.846Z" transform="translate(-34.325 -34.602)" fill="#00b42a"/>
|
|
6
|
+
<path id="路径_606" data-name="路径 606" d="M221.473,224.75l-1.213-.309A17.511,17.511,0,0,1,241.564,211.8l-.309,1.213A16.26,16.26,0,0,0,221.473,224.75Zm15.772,21.539a17.482,17.482,0,0,1-4.336-.538l.309-1.213A16.285,16.285,0,0,0,253,232.792l1.213.309a17.548,17.548,0,0,1-16.969,13.187Z" transform="translate(-207.434 -198.955)" fill="#00b42a"/>
|
|
7
|
+
<path id="路径_607" data-name="路径 607" d="M124.715,88.9l-.809-.2a15.539,15.539,0,0,1,18.87-11.207l-.2.809a14.7,14.7,0,0,0-17.857,10.6Zm14.238,19.15a15.484,15.484,0,0,1-3.832-.484l.2-.809a14.7,14.7,0,0,0,17.849-10.59l.809.2a15.547,15.547,0,0,1-15.03,11.678ZM125.982,69.952l.88.78a.417.417,0,0,0,.463.042l1-.6a.417.417,0,0,1,.563.5l-.463,1.076a.417.417,0,0,0,.1.442l.88.771a.417.417,0,0,1-.3.688l-1.163-.108a.417.417,0,0,0-.417.238l-.463,1.076a.417.417,0,0,1-.746-.071l-.242-1.134a.417.417,0,0,0-.35-.3l-1.163-.113a.417.417,0,0,1-.167-.734l1-.6a.417.417,0,0,0,.183-.417l-.259-1.142a.417.417,0,0,1,.65-.392ZM116.347,80.2l1.155.188a.417.417,0,0,0,.417-.208l.534-1.042a.417.417,0,0,1,.742.121l.163,1.155a.417.417,0,0,0,.325.329l1.155.188a.417.417,0,0,1,.117.742l-1.042.529a.417.417,0,0,0-.213.417l.179,1.155a.417.417,0,0,1-.671.338l-.834-.834a.417.417,0,0,0-.459-.075l-1.042.53a.417.417,0,0,1-.53-.534l.534-1.042a.417.417,0,0,0-.071-.459l-.834-.834a.417.417,0,0,1,.375-.663Zm22.606-13.413-.417,1.1a.417.417,0,0,1-.384.263l-1.172-.029a.417.417,0,0,0-.25.709l.93.713a.417.417,0,0,1,.133.446l-.392,1.1a.417.417,0,0,0,.617.471l.963-.663a.417.417,0,0,1,.463,0l.93.713a.417.417,0,0,0,.617-.417l-.334-1.122a.417.417,0,0,1,.154-.417l.963-.663a.417.417,0,0,0-.213-.767H140.4a.417.417,0,0,1-.367-.284l-.334-1.122a.417.417,0,0,0-.742-.038Zm13.6,47.926-.258-1.142a.417.417,0,0,1,.183-.417l1-.6a.417.417,0,0,0-.167-.734l-1.163-.108a.417.417,0,0,1-.35-.3l-.258-1.142a.417.417,0,0,0-.746-.071l-.463,1.076a.417.417,0,0,1-.417.238l-1.163-.108a.417.417,0,0,0-.3.688l.917.75a.417.417,0,0,1,.1.45l-.463,1.076a.417.417,0,0,0,.563.5l1-.6a.417.417,0,0,1,.463.042l.88.771a.417.417,0,0,0,.63-.367Zm-13.6,3.548.392-1.1a.417.417,0,0,1,.384-.263l1.172.029a.417.417,0,0,0,.25-.709l-.946-.709a.417.417,0,0,1-.133-.446l.392-1.1a.417.417,0,0,0-.6-.454l-.963.663a.417.417,0,0,1-.463,0l-.93-.713a.417.417,0,0,0-.617.417l.334,1.122a.417.417,0,0,1-.154.417l-.963.663a.417.417,0,0,0,.213.717l1.172.029a.417.417,0,0,1,.367.284l.334,1.122a.417.417,0,0,0,.759.042Zm22.585-13.413-1.155-.188a.417.417,0,0,0-.417.208l-.534,1.042a.417.417,0,0,1-.742-.121l-.179-1.155a.417.417,0,0,0-.325-.329l-1.155-.188a.417.417,0,0,1-.117-.742l1.042-.53a.417.417,0,0,0,.213-.417l-.179-1.155a.417.417,0,0,1,.671-.338l.834.834a.417.417,0,0,0,.459.075l1.042-.529a.417.417,0,0,1,.53.534l-.534,1.042a.417.417,0,0,0,.071.459l.834.834a.417.417,0,0,1-.359.663Z" transform="translate(-109.142 -62.71)" fill="#00b42a"/>
|
|
8
|
+
</g>
|
|
9
|
+
<text id="审批通过" transform="matrix(0.848, -0.53, 0.53, 0.848, 304.807, 199.83)" fill="#00b42a" font-size="12" font-family="PingFang SC Medium, PingFang SC" letter-spacing="-0.04em"><tspan x="0" y="0">审批通过</tspan></text>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="59.622" height="59.616" viewBox="0 0 59.622 59.616">
|
|
2
|
+
<g id="撤销" transform="translate(-291.798 -153.753)">
|
|
3
|
+
<g id="组_977" data-name="组 977" transform="translate(291.798 153.753)">
|
|
4
|
+
<path id="路径_604" data-name="路径 604" d="M29.853,59.769a29.8,29.8,0,1,1,25.88-15.078,29.806,29.806,0,0,1-25.88,15.078Zm-.1-58.37a28.621,28.621,0,1,0,7.1.9,28.576,28.576,0,0,0-7.1-.9Z" transform="translate(0 -0.153)" fill="#f5834f"/>
|
|
5
|
+
<path id="路径_605" data-name="路径 605" d="M64.173,92.121a27.692,27.692,0,1,1,14.1-3.877A27.693,27.693,0,0,1,64.173,92.121Zm-.092-54.593a26.979,26.979,0,1,0,6.683.846,26.88,26.88,0,0,0-6.683-.846Z" transform="translate(-34.325 -34.602)" fill="#f5834f"/>
|
|
6
|
+
<path id="路径_606" data-name="路径 606" d="M221.473,224.75l-1.213-.309A17.511,17.511,0,0,1,241.564,211.8l-.309,1.213A16.26,16.26,0,0,0,221.473,224.75Zm15.772,21.539a17.482,17.482,0,0,1-4.336-.538l.309-1.213A16.285,16.285,0,0,0,253,232.792l1.213.309a17.548,17.548,0,0,1-16.969,13.187Z" transform="translate(-207.434 -198.955)" fill="#f5834f"/>
|
|
7
|
+
<path id="路径_607" data-name="路径 607" d="M124.715,88.9l-.809-.2a15.539,15.539,0,0,1,18.87-11.207l-.2.809a14.7,14.7,0,0,0-17.857,10.6Zm14.238,19.15a15.484,15.484,0,0,1-3.832-.484l.2-.809a14.7,14.7,0,0,0,17.849-10.59l.809.2a15.547,15.547,0,0,1-15.03,11.678ZM125.982,69.952l.88.78a.417.417,0,0,0,.463.042l1-.6a.417.417,0,0,1,.563.5l-.463,1.076a.417.417,0,0,0,.1.442l.88.771a.417.417,0,0,1-.3.688l-1.163-.108a.417.417,0,0,0-.417.238l-.463,1.076a.417.417,0,0,1-.746-.071l-.242-1.134a.417.417,0,0,0-.35-.3l-1.163-.113a.417.417,0,0,1-.167-.734l1-.6a.417.417,0,0,0,.183-.417l-.259-1.142a.417.417,0,0,1,.65-.392ZM116.347,80.2l1.155.188a.417.417,0,0,0,.417-.208l.534-1.042a.417.417,0,0,1,.742.121l.163,1.155a.417.417,0,0,0,.325.329l1.155.188a.417.417,0,0,1,.117.742l-1.042.529a.417.417,0,0,0-.213.417l.179,1.155a.417.417,0,0,1-.671.338l-.834-.834a.417.417,0,0,0-.459-.075l-1.042.53a.417.417,0,0,1-.53-.534l.534-1.042a.417.417,0,0,0-.071-.459l-.834-.834a.417.417,0,0,1,.375-.663Zm22.606-13.413-.417,1.1a.417.417,0,0,1-.384.263l-1.172-.029a.417.417,0,0,0-.25.709l.93.713a.417.417,0,0,1,.133.446l-.392,1.1a.417.417,0,0,0,.617.471l.963-.663a.417.417,0,0,1,.463,0l.93.713a.417.417,0,0,0,.617-.417l-.334-1.122a.417.417,0,0,1,.154-.417l.963-.663a.417.417,0,0,0-.213-.767H140.4a.417.417,0,0,1-.367-.284l-.334-1.122a.417.417,0,0,0-.742-.038Zm13.6,47.926-.258-1.142a.417.417,0,0,1,.183-.417l1-.6a.417.417,0,0,0-.167-.734l-1.163-.108a.417.417,0,0,1-.35-.3l-.258-1.142a.417.417,0,0,0-.746-.071l-.463,1.076a.417.417,0,0,1-.417.238l-1.163-.108a.417.417,0,0,0-.3.688l.917.75a.417.417,0,0,1,.1.45l-.463,1.076a.417.417,0,0,0,.563.5l1-.6a.417.417,0,0,1,.463.042l.88.771a.417.417,0,0,0,.63-.367Zm-13.6,3.548.392-1.1a.417.417,0,0,1,.384-.263l1.172.029a.417.417,0,0,0,.25-.709l-.946-.709a.417.417,0,0,1-.133-.446l.392-1.1a.417.417,0,0,0-.6-.454l-.963.663a.417.417,0,0,1-.463,0l-.93-.713a.417.417,0,0,0-.617.417l.334,1.122a.417.417,0,0,1-.154.417l-.963.663a.417.417,0,0,0,.213.717l1.172.029a.417.417,0,0,1,.367.284l.334,1.122a.417.417,0,0,0,.759.042Zm22.585-13.413-1.155-.188a.417.417,0,0,0-.417.208l-.534,1.042a.417.417,0,0,1-.742-.121l-.179-1.155a.417.417,0,0,0-.325-.329l-1.155-.188a.417.417,0,0,1-.117-.742l1.042-.53a.417.417,0,0,0,.213-.417l-.179-1.155a.417.417,0,0,1,.671-.338l.834.834a.417.417,0,0,0,.459.075l1.042-.529a.417.417,0,0,1,.53.534l-.534,1.042a.417.417,0,0,0,.071.459l.834.834a.417.417,0,0,1-.359.663Z" transform="translate(-109.142 -62.71)" fill="#f5834f"/>
|
|
8
|
+
</g>
|
|
9
|
+
<text id="审批撤销" transform="matrix(0.848, -0.53, 0.53, 0.848, 304.807, 199.83)" fill="#f5834f" font-size="12" font-family="PingFang SC Medium, PingFang SC" letter-spacing="-0.04em"><tspan x="0" y="0">审批撤销</tspan></text>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="59.622" height="59.616" viewBox="0 0 59.622 59.616">
|
|
2
|
+
<g id="拒绝" transform="translate(-291.798 -153.753)">
|
|
3
|
+
<g id="组_977" data-name="组 977" transform="translate(291.798 153.753)">
|
|
4
|
+
<path id="路径_604" data-name="路径 604" d="M29.853,59.769a29.8,29.8,0,1,1,25.88-15.078,29.806,29.806,0,0,1-25.88,15.078Zm-.1-58.37a28.621,28.621,0,1,0,7.1.9,28.576,28.576,0,0,0-7.1-.9Z" transform="translate(0 -0.153)" fill="#f53f3f"/>
|
|
5
|
+
<path id="路径_605" data-name="路径 605" d="M64.173,92.121a27.692,27.692,0,1,1,14.1-3.877A27.693,27.693,0,0,1,64.173,92.121Zm-.092-54.593a26.979,26.979,0,1,0,6.683.846,26.88,26.88,0,0,0-6.683-.846Z" transform="translate(-34.325 -34.602)" fill="#f53f3f"/>
|
|
6
|
+
<path id="路径_606" data-name="路径 606" d="M221.473,224.75l-1.213-.309A17.511,17.511,0,0,1,241.564,211.8l-.309,1.213A16.26,16.26,0,0,0,221.473,224.75Zm15.772,21.539a17.482,17.482,0,0,1-4.336-.538l.309-1.213A16.285,16.285,0,0,0,253,232.792l1.213.309a17.548,17.548,0,0,1-16.969,13.187Z" transform="translate(-207.434 -198.955)" fill="#f53f3f"/>
|
|
7
|
+
<path id="路径_607" data-name="路径 607" d="M124.715,88.9l-.809-.2a15.539,15.539,0,0,1,18.87-11.207l-.2.809a14.7,14.7,0,0,0-17.857,10.6Zm14.238,19.15a15.484,15.484,0,0,1-3.832-.484l.2-.809a14.7,14.7,0,0,0,17.849-10.59l.809.2a15.547,15.547,0,0,1-15.03,11.678ZM125.982,69.952l.88.78a.417.417,0,0,0,.463.042l1-.6a.417.417,0,0,1,.563.5l-.463,1.076a.417.417,0,0,0,.1.442l.88.771a.417.417,0,0,1-.3.688l-1.163-.108a.417.417,0,0,0-.417.238l-.463,1.076a.417.417,0,0,1-.746-.071l-.242-1.134a.417.417,0,0,0-.35-.3l-1.163-.113a.417.417,0,0,1-.167-.734l1-.6a.417.417,0,0,0,.183-.417l-.259-1.142a.417.417,0,0,1,.65-.392ZM116.347,80.2l1.155.188a.417.417,0,0,0,.417-.208l.534-1.042a.417.417,0,0,1,.742.121l.163,1.155a.417.417,0,0,0,.325.329l1.155.188a.417.417,0,0,1,.117.742l-1.042.529a.417.417,0,0,0-.213.417l.179,1.155a.417.417,0,0,1-.671.338l-.834-.834a.417.417,0,0,0-.459-.075l-1.042.53a.417.417,0,0,1-.53-.534l.534-1.042a.417.417,0,0,0-.071-.459l-.834-.834a.417.417,0,0,1,.375-.663Zm22.606-13.413-.417,1.1a.417.417,0,0,1-.384.263l-1.172-.029a.417.417,0,0,0-.25.709l.93.713a.417.417,0,0,1,.133.446l-.392,1.1a.417.417,0,0,0,.617.471l.963-.663a.417.417,0,0,1,.463,0l.93.713a.417.417,0,0,0,.617-.417l-.334-1.122a.417.417,0,0,1,.154-.417l.963-.663a.417.417,0,0,0-.213-.767H140.4a.417.417,0,0,1-.367-.284l-.334-1.122a.417.417,0,0,0-.742-.038Zm13.6,47.926-.258-1.142a.417.417,0,0,1,.183-.417l1-.6a.417.417,0,0,0-.167-.734l-1.163-.108a.417.417,0,0,1-.35-.3l-.258-1.142a.417.417,0,0,0-.746-.071l-.463,1.076a.417.417,0,0,1-.417.238l-1.163-.108a.417.417,0,0,0-.3.688l.917.75a.417.417,0,0,1,.1.45l-.463,1.076a.417.417,0,0,0,.563.5l1-.6a.417.417,0,0,1,.463.042l.88.771a.417.417,0,0,0,.63-.367Zm-13.6,3.548.392-1.1a.417.417,0,0,1,.384-.263l1.172.029a.417.417,0,0,0,.25-.709l-.946-.709a.417.417,0,0,1-.133-.446l.392-1.1a.417.417,0,0,0-.6-.454l-.963.663a.417.417,0,0,1-.463,0l-.93-.713a.417.417,0,0,0-.617.417l.334,1.122a.417.417,0,0,1-.154.417l-.963.663a.417.417,0,0,0,.213.717l1.172.029a.417.417,0,0,1,.367.284l.334,1.122a.417.417,0,0,0,.759.042Zm22.585-13.413-1.155-.188a.417.417,0,0,0-.417.208l-.534,1.042a.417.417,0,0,1-.742-.121l-.179-1.155a.417.417,0,0,0-.325-.329l-1.155-.188a.417.417,0,0,1-.117-.742l1.042-.53a.417.417,0,0,0,.213-.417l-.179-1.155a.417.417,0,0,1,.671-.338l.834.834a.417.417,0,0,0,.459.075l1.042-.529a.417.417,0,0,1,.53.534l-.534,1.042a.417.417,0,0,0,.071.459l.834.834a.417.417,0,0,1-.359.663Z" transform="translate(-109.142 -62.71)" fill="#f53f3f"/>
|
|
8
|
+
</g>
|
|
9
|
+
<text id="审批拒绝" transform="matrix(0.848, -0.53, 0.53, 0.848, 304.807, 199.83)" fill="#f53f3f" font-size="12" font-family="PingFang SC Medium, PingFang SC" letter-spacing="-0.04em"><tspan x="0" y="0">审批拒绝</tspan></text>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="59.622" height="59.616" viewBox="0 0 59.622 59.616">
|
|
2
|
+
<g id="进行" transform="translate(-291.798 -153.753)">
|
|
3
|
+
<g id="组_977" data-name="组 977" transform="translate(291.798 153.753)">
|
|
4
|
+
<path id="路径_604" data-name="路径 604" d="M29.853,59.769a29.8,29.8,0,1,1,25.88-15.078,29.806,29.806,0,0,1-25.88,15.078Zm-.1-58.37a28.621,28.621,0,1,0,7.1.9,28.576,28.576,0,0,0-7.1-.9Z" transform="translate(0 -0.153)" fill="#519ef7"/>
|
|
5
|
+
<path id="路径_605" data-name="路径 605" d="M64.173,92.121a27.692,27.692,0,1,1,14.1-3.877A27.693,27.693,0,0,1,64.173,92.121Zm-.092-54.593a26.979,26.979,0,1,0,6.683.846,26.88,26.88,0,0,0-6.683-.846Z" transform="translate(-34.325 -34.602)" fill="#519ef7"/>
|
|
6
|
+
<path id="路径_606" data-name="路径 606" d="M221.473,224.75l-1.213-.309A17.511,17.511,0,0,1,241.564,211.8l-.309,1.213A16.26,16.26,0,0,0,221.473,224.75Zm15.772,21.539a17.482,17.482,0,0,1-4.336-.538l.309-1.213A16.285,16.285,0,0,0,253,232.792l1.213.309a17.548,17.548,0,0,1-16.969,13.187Z" transform="translate(-207.434 -198.955)" fill="#519ef7"/>
|
|
7
|
+
<path id="路径_607" data-name="路径 607" d="M124.715,88.9l-.809-.2a15.539,15.539,0,0,1,18.87-11.207l-.2.809a14.7,14.7,0,0,0-17.857,10.6Zm14.238,19.15a15.484,15.484,0,0,1-3.832-.484l.2-.809a14.7,14.7,0,0,0,17.849-10.59l.809.2a15.547,15.547,0,0,1-15.03,11.678ZM125.982,69.952l.88.78a.417.417,0,0,0,.463.042l1-.6a.417.417,0,0,1,.563.5l-.463,1.076a.417.417,0,0,0,.1.442l.88.771a.417.417,0,0,1-.3.688l-1.163-.108a.417.417,0,0,0-.417.238l-.463,1.076a.417.417,0,0,1-.746-.071l-.242-1.134a.417.417,0,0,0-.35-.3l-1.163-.113a.417.417,0,0,1-.167-.734l1-.6a.417.417,0,0,0,.183-.417l-.259-1.142a.417.417,0,0,1,.65-.392ZM116.347,80.2l1.155.188a.417.417,0,0,0,.417-.208l.534-1.042a.417.417,0,0,1,.742.121l.163,1.155a.417.417,0,0,0,.325.329l1.155.188a.417.417,0,0,1,.117.742l-1.042.529a.417.417,0,0,0-.213.417l.179,1.155a.417.417,0,0,1-.671.338l-.834-.834a.417.417,0,0,0-.459-.075l-1.042.53a.417.417,0,0,1-.53-.534l.534-1.042a.417.417,0,0,0-.071-.459l-.834-.834a.417.417,0,0,1,.375-.663Zm22.606-13.413-.417,1.1a.417.417,0,0,1-.384.263l-1.172-.029a.417.417,0,0,0-.25.709l.93.713a.417.417,0,0,1,.133.446l-.392,1.1a.417.417,0,0,0,.617.471l.963-.663a.417.417,0,0,1,.463,0l.93.713a.417.417,0,0,0,.617-.417l-.334-1.122a.417.417,0,0,1,.154-.417l.963-.663a.417.417,0,0,0-.213-.767H140.4a.417.417,0,0,1-.367-.284l-.334-1.122a.417.417,0,0,0-.742-.038Zm13.6,47.926-.258-1.142a.417.417,0,0,1,.183-.417l1-.6a.417.417,0,0,0-.167-.734l-1.163-.108a.417.417,0,0,1-.35-.3l-.258-1.142a.417.417,0,0,0-.746-.071l-.463,1.076a.417.417,0,0,1-.417.238l-1.163-.108a.417.417,0,0,0-.3.688l.917.75a.417.417,0,0,1,.1.45l-.463,1.076a.417.417,0,0,0,.563.5l1-.6a.417.417,0,0,1,.463.042l.88.771a.417.417,0,0,0,.63-.367Zm-13.6,3.548.392-1.1a.417.417,0,0,1,.384-.263l1.172.029a.417.417,0,0,0,.25-.709l-.946-.709a.417.417,0,0,1-.133-.446l.392-1.1a.417.417,0,0,0-.6-.454l-.963.663a.417.417,0,0,1-.463,0l-.93-.713a.417.417,0,0,0-.617.417l.334,1.122a.417.417,0,0,1-.154.417l-.963.663a.417.417,0,0,0,.213.717l1.172.029a.417.417,0,0,1,.367.284l.334,1.122a.417.417,0,0,0,.759.042Zm22.585-13.413-1.155-.188a.417.417,0,0,0-.417.208l-.534,1.042a.417.417,0,0,1-.742-.121l-.179-1.155a.417.417,0,0,0-.325-.329l-1.155-.188a.417.417,0,0,1-.117-.742l1.042-.53a.417.417,0,0,0,.213-.417l-.179-1.155a.417.417,0,0,1,.671-.338l.834.834a.417.417,0,0,0,.459.075l1.042-.529a.417.417,0,0,1,.53.534l-.534,1.042a.417.417,0,0,0,.071.459l.834.834a.417.417,0,0,1-.359.663Z" transform="translate(-109.142 -62.71)" fill="#519ef7"/>
|
|
8
|
+
</g>
|
|
9
|
+
<text id="审批进行" transform="matrix(0.848, -0.53, 0.53, 0.848, 304.807, 199.83)" fill="#519ef7" font-size="12" font-family="PingFang SC Medium, PingFang SC" letter-spacing="-0.04em"><tspan x="0" y="0">审批进行</tspan></text>
|
|
10
|
+
</g>
|
|
11
|
+
</svg>
|