@tongfun/tf-widget 0.1.27 → 0.1.28

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.
@@ -4,7 +4,7 @@
4
4
  <el-autocomplete
5
5
  ref="basic"
6
6
  v-model="displayValue"
7
- placeholder=""
7
+ :placeholder="placeholder"
8
8
  :fetch-suggestions="getAdvice"
9
9
  :disabled="disabled"
10
10
  popper-class="basic-suggest-poper"
@@ -92,7 +92,7 @@ export default {
92
92
  default: false
93
93
  }
94
94
  },
95
- inject: ['target', 'entity'],
95
+ inject: ['target', 'entity', 'placeholder'],
96
96
  data () {
97
97
  return {
98
98
  dialogVisible: false,
@@ -4,7 +4,7 @@
4
4
  <el-autocomplete
5
5
  ref="group"
6
6
  v-model="showValue"
7
- placeholder=""
7
+ :placeholder="placeholder"
8
8
  :fetch-suggestions="getAdvice"
9
9
  :disabled="disabled"
10
10
  :trigger-on-focus="false"
@@ -50,7 +50,7 @@ export default {
50
50
  default: false
51
51
  }
52
52
  },
53
- inject: ['target'],
53
+ inject: ['target', 'placeholder'],
54
54
  data () {
55
55
  return {
56
56
  options: [],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tongfun/tf-widget",
3
- "version": "0.1.27",
3
+ "version": "0.1.28",
4
4
  "description": "tf-widget",
5
5
  "main": "lib/tf-widget.umd.js",
6
6
  "private": false,
package/src/api/edit.js DELETED
@@ -1,97 +0,0 @@
1
- import request from '@/utils/request.js'
2
-
3
- /**
4
- * 获取编辑页面的布局信息
5
- */
6
- export function getFormConfig (tableId) {
7
- return request({
8
- url: '/api/crud/layout/editV2',
9
- method: 'get',
10
- params: { tableId }
11
- })
12
- }
13
-
14
- /**
15
- * 获取枚举的可选项
16
- */
17
- export function getEnumOptions (enumType) {
18
- return request({
19
- url: '/api/crud/uCrudEnum/type',
20
- method: 'get',
21
- params: { type: enumType }
22
- })
23
- }
24
-
25
- /**
26
- * 获取基础资料的搜索建议
27
- */
28
- export function getBasicDataSearchAdvice (tableId, value) {
29
- const params = { tableId, value }
30
- return request({
31
- url: '/api/crud/filter/searchBasicDataSuggestion',
32
- method: 'get',
33
- params
34
- })
35
- }
36
-
37
- /**
38
- * 新增一张单据数据数据
39
- */
40
- export function insert (data) {
41
- return request({
42
- url: '/api/crud/insert',
43
- method: 'post',
44
- data
45
- })
46
- }
47
-
48
- /**
49
- * 获取一张单据的数据
50
- */
51
- export function getFormData (data) {
52
- return request({
53
- url: '/api/crud/selSingleReceipt',
54
- method: 'post',
55
- data
56
- })
57
- }
58
-
59
- /**
60
- *更新单据数据
61
- */
62
- export function update (data) {
63
- return request({
64
- url: '/api/crud/update',
65
- method: 'post',
66
- data
67
- })
68
- }
69
-
70
- /**
71
- * 获取经过单据转换后的数据
72
- */
73
- export function getConversionResult (data) {
74
- return request({
75
- url: '/api/crud/conversion/push',
76
- method: 'post',
77
- data
78
- })
79
- // return {
80
- // code: 0,
81
- // data: [
82
- // {},{}
83
- // ],
84
- // msg: 'jjjjj'
85
- // }
86
- }
87
-
88
- /**
89
- * 根据tableName获取tableId
90
- */
91
- export function getTableIdByTableName (tableName) {
92
- return request({
93
- url: '/api/crud/layout/getTableIdByName',
94
- method: 'get',
95
- params: { tableName }
96
- })
97
- }
@@ -1,26 +0,0 @@
1
- import request from '@/utils/request.js'
2
-
3
- /**
4
- * 删除附件
5
- * @param {id} 删除附件的id
6
- */
7
- export function delAttachment (id) {
8
- return request({
9
- url: `/api/file/attachment/?ids[]=${id}`,
10
- method: 'delete'
11
- })
12
- }
13
-
14
- /**
15
- * 下载附件
16
- * @param {id} 下载附件的id
17
- */
18
-
19
- // 根据id下载附件
20
- export function download (id) {
21
- return request({
22
- url: `/api/file/attachment/download/${id}`,
23
- method: 'get',
24
- responseType: 'arraybuffer'
25
- })
26
- }
@@ -1,19 +0,0 @@
1
- import request from '@/utils/request'
2
-
3
- // 查询所有下推的单据
4
- export function findBillExchangeRouterVO (params) {
5
- return request({
6
- url: '/api/report/billExchange/findBillExchangeRouterVO',
7
- method: 'get',
8
- params
9
- })
10
- }
11
-
12
- // 下推时获取数据
13
- export function getDataWhenAdd (params) {
14
- return request({
15
- url: '/api/report/billExchange/doExchange',
16
- method: 'Get',
17
- params
18
- })
19
- }
package/src/api/table.js DELETED
@@ -1,294 +0,0 @@
1
- import request from '@/utils/request.js'
2
-
3
- // 通用表格导出
4
- export function exportExcel (data) {
5
- return request({
6
- url: '/api/crud/excel/commonExportExcel',
7
- method: 'post',
8
- responseType: 'blob',
9
- timeout: 60 * 1000,
10
- data
11
- })
12
- }
13
-
14
- // 通用表格-查询快捷过滤字段
15
- export function getCommonTableSearchCondition (data) {
16
- return request({
17
- url: '/api/crud/UCrudFastSearchCondition/searchByTableId',
18
- method: 'get',
19
- params: data
20
- })
21
- }
22
-
23
- // 通用表格-查询高级过滤字段
24
- export function getCommonTableHighSearchCondition (data) {
25
- return request({
26
- url: '/api/crud/field',
27
- method: 'post',
28
- data
29
- })
30
- }
31
-
32
- // 表格布局查询
33
- export function getCommonTableLayout (data) {
34
- return request({
35
- url: '/api/crud/layout/list',
36
- method: 'get',
37
- params: data
38
- })
39
- }
40
- // 表格布局查询
41
- export function getCommonTableLayout2 (data) {
42
- return request({
43
- url: '/api/crud/layout/listV2',
44
- method: 'post',
45
- data
46
- })
47
- }
48
-
49
- // 通用过滤查询
50
- export function getFilterData (data) {
51
- return request({
52
- url: '/api/crud/filter/searchData',
53
- method: 'post',
54
- data
55
- })
56
- }
57
-
58
- // 通用过滤合计
59
- export function getFilterDataSum (data) {
60
- return request({
61
- url: '/api/crud/filter/sum',
62
- method: 'post',
63
- data
64
- })
65
- }
66
-
67
- // 通用表格-快捷过滤输入框搜索建议
68
- export function getFilterSearchSuggestion (data) {
69
- return request({
70
- url: '/api/crud/filter/searchSuggestion',
71
- method: 'post',
72
- data
73
- })
74
- }
75
-
76
- // 通用表格-删除
77
- export function deleteCommonTableData (data) {
78
- return request({
79
- url: '/api/crud/del',
80
- method: 'post',
81
- data
82
- })
83
- }
84
-
85
- // 通用表格-查询变更所需字段布局信息
86
- export function findFieldList (params) {
87
- return request({
88
- url: '/api/crud/layout/list',
89
- method: 'get',
90
- params
91
- })
92
- }
93
-
94
- // 通用表格-查询分组
95
- export function findTableGroup (data) {
96
- return request({
97
- url: '/api/crud/tableGroup/select',
98
- method: 'get',
99
- params: data
100
- })
101
- }
102
-
103
- // 通用表格-创建分组
104
- export function createTableGroup (data) {
105
- return request({
106
- url: '/api/crud/tableGroup/create',
107
- method: 'post',
108
- data
109
- })
110
- }
111
-
112
- // 通用表格-更新分组
113
- export function updateTableGroup (data) {
114
- return request({
115
- url: '/api/crud/tableGroup/update',
116
- method: 'post',
117
- data
118
- })
119
- }
120
-
121
- // 通用表格-删除分组
122
- export function deleteTableGroup (data) {
123
- return request({
124
- url: '/api/crud/tableGroup/delete',
125
- method: 'delete',
126
- params: data
127
- })
128
- }
129
-
130
- /**
131
- * @method
132
- * @description 获取表字段枚举值
133
- * @param data
134
- * @returns {AxiosPromise}
135
- */
136
- export function getEnumerationInfo (data) {
137
- return request({
138
- url: '',
139
- method: 'post',
140
- data
141
- })
142
- }
143
- export function uploadFile (data) {
144
- return request({
145
- url: '/api/crud/excel/fileUploadAndExportExcel',
146
- method: 'post',
147
- data
148
- })
149
- }
150
-
151
- // 通用表格-通用审核
152
- export function sendAudit (data) {
153
- return request({
154
- url: '/api/crud/audit',
155
- method: 'post',
156
- data
157
- })
158
- }
159
-
160
- // 通用表格-全内容搜索
161
- export function getDescriptionByTableId (data) {
162
- return request({
163
- url: '/api/crud/UCrudCombinationSearchConfig/getDescriptionByTableId',
164
- method: 'get',
165
- params: data
166
- })
167
- }
168
-
169
- // 通用表格-分组过滤-获取表格所有字段
170
- export function getFieldDescription (data) {
171
- return request({
172
- url: '/api/crud/tableGroup/getFieldDescription',
173
- method: 'get',
174
- params: data
175
- })
176
- }
177
-
178
- // 通用表格-快捷过滤-搜索建议
179
- export function getFastSearchSuggestionVos (data) {
180
- // 追加限制显示数量的参数
181
- for (const query of data.fastSearchSuggestQueryDtos) {
182
- query.suggestionsNumber = 13
183
- }
184
- return request({
185
- url: '/api/crud/filter/getFastSearchSuggestionVos',
186
- method: 'post',
187
- data
188
- })
189
- }
190
-
191
- // 通用表格-获取切换单据体的下拉列表
192
- export function getSelectList (data) {
193
- return request({
194
- url: '/api/crud/layout/tableInfo',
195
- method: 'get',
196
- params: data
197
- })
198
- }
199
-
200
- // 通用表单-分享用户建议
201
- export function getUserListInfo (data) {
202
- return request({
203
- url: '/api/crud/filter/getUserListInfo',
204
- method: 'get',
205
- params: data
206
- })
207
- }
208
-
209
- // 批量更新排序
210
- export function updateDefaultPlans (data) {
211
- return request({
212
- url: '/api/crud/filter/updateDefaultPlans',
213
- method: 'post',
214
- data
215
- })
216
- }
217
- // 删除方案
218
- export function delPlans (data) {
219
- return request({
220
- url: '/api/crud/delPlans',
221
- method: 'post',
222
- data
223
- })
224
- }
225
-
226
- // 下推:获取当前单据的下游单据列表
227
- export function getTargetReceiptList (tableId, currentEntry) {
228
- return request({
229
- url: '/api/crud/getConversionForPush',
230
- method: 'get',
231
- params: {
232
- receiptEntry: currentEntry,
233
- tableId
234
- }
235
- })
236
- }
237
-
238
- // 默认方案更新
239
- export function saveDefaultPlans (data) {
240
- return request({
241
- url: '/api/crud/saveDefaultPlans',
242
- method: 'post',
243
- data
244
- })
245
- }
246
-
247
- // 附件保存接口
248
- export function uploadBatch (data) {
249
- return request({
250
- url: '/api/file/attachment/uploadBatch',
251
- method: 'post',
252
- data
253
- })
254
- }
255
- // 获取上下查的目标单列表信息
256
- export function getPreviousAndAfterData (data) {
257
- return request({
258
- url: '/api/crud/getPreviousAndAfterData',
259
- method: 'post',
260
- data
261
- })
262
- }
263
-
264
- // 生成id接口
265
- export function generateIdBatch (params) {
266
- return request({
267
- url: '/api/authority/common/generateIdBatch',
268
- method: 'get',
269
- params
270
- })
271
- }
272
- // 获取一个目标的上下查数据列表
273
- export function getResultListByIds (data) {
274
- return request({
275
- url: '/api/crud/getResultListByIds',
276
- method: 'post',
277
- data
278
- })
279
- }
280
- // 查询文件列表
281
- export function getFileByIds (params) {
282
- return request({
283
- url: '/api/file/attachment/byIds',
284
- method: 'get',
285
- params
286
- })
287
- }
288
- // 删除文件
289
- export function delFiles (data) {
290
- return request({
291
- url: `/api/file/attachment?ids[]=${data.ids}`,
292
- method: 'delete'
293
- })
294
- }
@@ -1,166 +0,0 @@
1
- import request from '@/utils/request.js'
2
-
3
- /**
4
- * 列表数据
5
- */
6
- // 获取列表的数据
7
- export function getTableData (target, data, queryType) {
8
- data.sceneSelector = queryType
9
- return request({
10
- url: `/api${target}/tList`,
11
- method: 'post',
12
- data
13
- })
14
- }
15
-
16
- // 获取列表的合计
17
- export function getTableSum (target, data) {
18
- data.sceneSelector = 'LIST'
19
- return request({
20
- url: `/api${target}/tSum`,
21
- method: 'post',
22
- data
23
- })
24
- }
25
-
26
- // 删除数据
27
- export function del ({ ids, target }) {
28
- return request({
29
- url: `/api${target}/tDel`,
30
- method: 'post',
31
- data: [...ids]
32
- })
33
- }
34
-
35
- // todo:导入导出
36
-
37
- /**
38
- * 方案
39
- */
40
- // 获取方案列表
41
- export function getFilterPlan (target) {
42
- return request({
43
- url: `/api${target}/tSchemeQuery`,
44
- method: 'get'
45
- })
46
- }
47
-
48
- // 添加一个新的方案
49
- export function addPlan (target, data) {
50
- return request({
51
- url: `/api${target}/tSchemeSave`,
52
- method: 'post',
53
- data: {
54
- commonUserQuerySchemeContentSaveDTOS: data.conditionMulti,
55
- commonUserQuerySchemeUsefulSaveDTOS: data.conditionAlways,
56
- commonUserQuerySchemeSaveDTO: data.planMsg
57
- }
58
- })
59
- }
60
-
61
- // 删除一个方案
62
- // todo:如果删除的是一个默认方案怎么办,还是说前端直接默认方案不允许删除
63
- export function deletePlan (target, planId) {
64
- return request({
65
- url: `/api${target}/tSchemeDelete`,
66
- method: 'post',
67
- data: [planId]
68
- })
69
- }
70
-
71
- // 修改一个方案
72
- export function updatePlan (target, data) {
73
- return request({
74
- url: `/api${target}/tSchemeUpdate`,
75
- method: 'post',
76
- data: {
77
- userQuerySchemeContentUpdateDTOS: data.conditionMulti,
78
- userQuerySchemeUsefulUpdateDTOS: data.conditionAlways,
79
- userQuerySchemeUpdateDTO: data.planMsg
80
- }
81
- })
82
- }
83
-
84
- // 获取方案中枚举的字段的选项
85
- export function getEnumOptions (target, field) {
86
- return request({
87
- url: `/api${target}/tEnum`,
88
- method: 'get',
89
- params: {
90
- field
91
- }
92
- })
93
- }
94
-
95
- /**
96
- * 列表布局(方案高级条件的字段
97
- */
98
- // 获取表格布局
99
- export function getTableLayout (target) {
100
- return request({
101
- url: `/api${target}/tListHeader`,
102
- method: 'get'
103
- })
104
- }
105
- // 修改布局
106
- export function updateTalbeLayout (data) {
107
-
108
- }
109
-
110
- /**
111
- * 列表的分组查询
112
- */
113
- export function getGroupTree (target) {
114
- return request({
115
- url: `/api${target}/tGroupQuery`,
116
- method: 'get'
117
- })
118
- }
119
-
120
- // 添加一个分组节点
121
- export function addGroupNode (target, name, id, pid, groupCode) {
122
- return request({
123
- url: `/api${target}/tGroupInsert`,
124
- method: 'post',
125
- data: {
126
- name,
127
- id: null,
128
- pid,
129
- groupCode
130
- }
131
- })
132
- }
133
-
134
- // 删除一个分组节点
135
- export function removeGroupNode (target, id) {
136
- return request({
137
- url: `/api${target}/tGroupDelete`,
138
- method: 'post',
139
- data: { id }
140
- })
141
- }
142
-
143
- // 修改一个分组节点
144
- export function updateGroupNode (target, name, id, pid, groupCode) {
145
- return request({
146
- url: `/api${target}/tGroupUpdate`,
147
- method: 'post',
148
- data: {
149
- name,
150
- id,
151
- pid,
152
- groupCode
153
- }
154
- })
155
- }
156
-
157
- export function pushDownValid (name, ids) {
158
- return request({
159
- url: '/api/report/billExchange/preHandle',
160
- method: 'post',
161
- data: {
162
- name,
163
- ids
164
- }
165
- })
166
- }
@@ -1,9 +0,0 @@
1
- import Vue from 'vue'
2
- import SvgIcon from '../../../../package/svg-icon/src/SvgIcon'// svg组件
3
-
4
- // register globally
5
- Vue.component('SvgIcon', SvgIcon)
6
-
7
- const req = require.context('./svg', false, /\.svg$/)
8
- const requireAll = requireContext => requireContext.keys().map(requireContext)
9
- requireAll(req)
@@ -1,5 +0,0 @@
1
- <svg t="1611221886259" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2618" width="200" height="200">
2
- <path d="M512 0C229.68 0 0 229.68 0 512s229.68 512 512 512 512-229.68 512-512S794.32 0 512 0z m0 950.858c-241.994 0-438.858-196.864-438.858-438.858S270.006 73.142 512 73.142 950.858 270.006 950.858 512 753.994 950.858 512 950.858z" fill="" p-id="2619"></path>
3
- <path d="M512 268.19c-20.2 0-36.572 16.372-36.572 36.572v414.476c0 20.2 16.372 36.572 36.572 36.572 20.2 0 36.572-16.372 36.572-36.572V304.762c0-20.2-16.372-36.572-36.572-36.572z" fill="" p-id="2620"></path>
4
- <path d="M719.238 475.428H304.762c-20.2 0-36.572 16.372-36.572 36.572 0 20.2 16.372 36.572 36.572 36.572h414.476c20.2 0 36.572-16.372 36.572-36.572 0-20.2-16.372-36.572-36.572-36.572z" fill="" p-id="2621"></path>
5
- </svg>
@@ -1,2 +0,0 @@
1
- <!-- <svg t="1611213136482" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4018" width="200" height="200"><path d="M901.632 464.384c28.16-27.648 73.216-27.648 101.376 0 13.312 13.312 20.992 31.232 20.992 50.176s-7.68 37.376-20.992 50.176l-440.32 437.76c-28.16 27.648-73.216 27.648-101.376 0l-440.32-437.76c-13.312-13.312-20.992-31.232-20.992-50.176s7.68-36.864 20.992-50.176c28.16-27.648 73.216-27.648 101.376 0l389.632 387.584 389.632-387.584z m-389.632-56.32L122.368 20.992c-28.16-27.648-73.216-27.648-101.376 0C7.68 34.304 0 52.224 0 71.168c0 18.944 7.68 37.376 20.992 50.176l440.32 437.76c28.16 27.648 73.216 27.648 101.376 0l440.32-437.76c13.312-13.312 20.992-31.232 20.992-50.176 0-18.944-7.68-36.864-20.992-50.176-28.16-27.648-73.216-27.648-101.376 0L512 408.064z m0 0" fill="#5D6775" p-id="4019"></path></svg> -->
2
- <svg t="1625210151009" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1426" width="200" height="200"><path d="M277.12 231.936a32 32 0 0 0-42.24 48.128L512 522.496l277.12-242.432a32 32 0 1 0-42.24-48.128L512 437.504 277.12 231.936z" p-id="1427"></path><path d="M277.12 487.936a32 32 0 0 0-42.24 48.128L512 778.496l277.12-242.432a32 32 0 1 0-42.24-48.128L512 693.504 277.12 487.936z" p-id="1428"></path></svg>
@@ -1 +0,0 @@
1
- <svg t="1611221959247" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3367" width="200" height="200"><path d="M734.3616 553.3184H299.88352c-19.91168 0-36.20352-16.29184-36.20352-36.1984 0-19.9168 16.29184-36.20352 36.20352-36.20352h434.46784c19.91168 0 36.20352 16.29184 36.20352 36.20352 0.00512 19.91168-16.29696 36.1984-36.19328 36.1984zM517.12 1024c-278.784 0-506.88-228.096-506.88-506.88S238.336 10.24 517.12 10.24s506.88 228.096 506.88 506.88-228.096 506.88-506.88 506.88z m0-941.34784c-238.96064 0-434.46784 195.5072-434.46784 434.46784S278.15936 951.58784 517.12 951.58784 951.58784 756.0704 951.58784 517.12 756.08064 82.65216 517.12 82.65216z" p-id="3368"></path></svg>
@@ -1 +0,0 @@
1
- <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1610711176402" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3212" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M456 864.8v-1.6 1.6z m57.6-58.4c-32 0-57.6 24.8-57.6 56.8v0.8c0 6.4 4.8 11.2 11.2 11.2s11.2-4.8 11.2-11.2v-0.8c0-18.4 15.2-34.4 34.4-34.4s34.4 16 34.4 34.4v0.8c0 6.4 4.8 11.2 11.2 11.2 6.4 0 11.2-4.8 11.2-11.2v-0.8c1.6-30.4-24.8-56.8-56-56.8zM380 717.6c-16-3.2-39.2-3.2-44.8 13.6-3.2 10.4 13.6 11.2 28.8 15.2 12 3.2 18.4 9.6 17.6 11.2-3.2 4-21.6-3.2-37.6 2.4s-12.8 20-3.2 24c9.6 3.2 24.8-0.8 60 4.8 17.6 3.2 28.8-3.2 31.2-13.6 3.2-24.8-29.6-52.8-52-57.6zM593.6 776c2.4 10.4 12 16.8 31.2 13.6 35.2-5.6 50.4-1.6 60-4.8 9.6-3.2 12-18.4-3.2-24-16-5.6-33.6 1.6-37.6-2.4-2.4-3.2 4.8-9.6 17.6-12 15.2-3.2 32-4.8 28.8-15.2-4.8-16.8-28-17.6-44.8-13.6-23.2 4.8-56 32.8-52 58.4z" fill="#2C2C2C" p-id="3213"></path><path d="M71.2 1024C32 1024 0 992 0 952.8V502.4c0-7.2 3.2-13.6 8-18.4l201.6-184c4.8-4 10.4-6.4 16.8-6.4h572.8c7.2 0 12.8 2.4 16.8 5.6l200 184c4.8 4.8 8.8 12 8.8 18.4V952c0 39.2-32 71.2-71.2 71.2H71.2z m-40-71.2c0 21.6 18.4 39.2 40.8 39.2h882.4c21.6 0 39.2-16.8 39.2-39.2V509.6H676.8l-1.6 9.6c-5.6 34.4-22.4 66.4-48.8 92.8-31.2 28.8-70.4 44.8-112 44.8-41.6 0-81.6-16-112-44.8-26.4-24-43.2-56.8-48.8-92.8l-1.6-9.6H31.2v443.2zM54.4 484h310.4c6.4 0 12 6.4 12 12.8 0 73.6 63.2 136 137.6 136S652 570.4 652 496.8c0-7.2 5.6-12.8 12-12.8h307.2L797.6 324h-568L54.4 484z m130.4-378.4c-28.8 0-52.8-24-52.8-52.8C132 24 156 0 184.8 0c28.8 0 52.8 24 52.8 52.8 0 28.8-24 52.8-52.8 52.8z m0-89.6c-20 0-36.8 16.8-36.8 36.8 0 20 16.8 36.8 36.8 36.8 20 0 36.8-16.8 36.8-36.8 0-20-16.8-36.8-36.8-36.8z m553.6 207.2c-19.2 0-35.2-16-35.2-35.2s16-35.2 35.2-35.2c19.2 0 35.2 16 35.2 35.2s-16 35.2-35.2 35.2z m0-53.6c-10.4 0-19.2 8.8-19.2 19.2S728 208 738.4 208s19.2-8.8 19.2-19.2-8.8-19.2-19.2-19.2zM364 179.2c-4.8 0-8-3.2-8-8v-36c0-4.8 3.2-8 8-8s8 3.2 8 8v36c0 4.8-4 8-8 8z" fill="#2C2C2C" p-id="3214"></path><path d="M381.6 160.8h-36c-4.8 0-8-3.2-8-8s3.2-8 8-8h36c4.8 0 8 3.2 8 8s-3.2 8-8 8zM72 301.6c-4.8 0-8-3.2-8-8v-70.4c0-4.8 3.2-8 8-8s8 3.2 8 8v70.4c0 4.8-3.2 8-8 8z" fill="#2C2C2C" p-id="3215"></path><path d="M107.2 266.4H36.8c-4.8 0-8-3.2-8-8s3.2-8 8-8h70.4c4.8 0 8 3.2 8 8s-3.2 8-8 8zM944 308c-4.8 0-8-3.2-8-8v-51.2c0-4.8 3.2-8 8-8s8 3.2 8 8V300c0 4.8-3.2 8-8 8z" fill="#2C2C2C" p-id="3216"></path><path d="M969.6 282.4h-51.2c-4.8 0-8-3.2-8-8s3.2-8 8-8h51.2c4.8 0 8 3.2 8 8s-3.2 8-8 8zM856 169.6c-4.8 0-8-3.2-8-8V80.8c0-4.8 3.2-8 8-8s8 3.2 8 8v80.8c0 4.8-3.2 8-8 8z" fill="#2C2C2C" p-id="3217"></path><path d="M896 129.6h-80c-4.8 0-8-3.2-8-8s3.2-8 8-8h80c4.8 0 8 3.2 8 8s-3.2 8-8 8z" fill="#2C2C2C" p-id="3218"></path></svg>