@deepinnet-components/pc 0.0.12 → 0.0.14
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/dist/Map2D/Map/index.d.ts +2 -0
- package/dist/Map2D/Map/index.js +192 -0
- package/dist/Map2D/MapMarker/index.d.ts +3 -0
- package/dist/Map2D/MapMarker/index.js +118 -0
- package/dist/Map2D/MapPolygon/index.d.ts +2 -0
- package/dist/Map2D/MapPolygon/index.js +135 -0
- package/dist/Map2D/MapPolyline/index.d.ts +2 -0
- package/dist/Map2D/MapPolyline/index.js +342 -0
- package/dist/Map2D/com.d.ts +1 -0
- package/dist/Map2D/demo/basic.d.ts +7 -0
- package/dist/Map2D/demo/basic.js +14 -0
- package/dist/Map2D/index.d.ts +7 -0
- package/dist/Map2D/index.js +11 -0
- package/dist/Map2D/utils.d.ts +1 -0
- package/dist/Map2D/utils.js +8 -0
- package/dist/UserCenter/AccountPage/components/CreateAccount/index.js +81 -41
- package/dist/UserCenter/AccountPage/index.js +163 -20
- package/dist/UserCenter/AuthSelect/index.js +4 -1
- package/dist/UserCenter/ConfigProvider/index.d.ts +5 -3
- package/dist/UserCenter/ConfigProvider/index.js +44 -11
- package/dist/UserCenter/MemberSelect/index.d.ts +3 -0
- package/dist/UserCenter/MemberSelect/index.js +132 -0
- package/dist/UserCenter/OrgPage/components/CreateMember/index.js +3 -3
- package/dist/UserCenter/OrgPage/components/CreateOrg/index.js +10 -10
- package/dist/UserCenter/OrgPage/index.js +44 -19
- package/dist/UserCenter/OrgSelect/index.js +1 -1
- package/dist/UserCenter/RolePage/components/Create/index.js +57 -9
- package/dist/UserCenter/RolePage/index.js +1 -1
- package/dist/UserCenter/index.d.ts +1 -0
- package/dist/UserCenter/index.js +3 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/package.json +5 -2
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import { useEffect, useRef, useState, memo } from 'react';
|
|
8
|
+
import { useGetState } from 'ahooks';
|
|
9
|
+
import { isEqual } from 'lodash-es';
|
|
10
|
+
import shortid from 'shortid';
|
|
11
|
+
import { getAllLineLayers } from "../utils";
|
|
12
|
+
function findKeyWithMinValueGreaterThan(obj, a) {
|
|
13
|
+
var minValue = Infinity;
|
|
14
|
+
var resultKey = null;
|
|
15
|
+
for (var key in obj) {
|
|
16
|
+
if (obj.hasOwnProperty(key)) {
|
|
17
|
+
var val = obj[key];
|
|
18
|
+
if (val > a && val < minValue) {
|
|
19
|
+
minValue = val;
|
|
20
|
+
resultKey = key;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return resultKey;
|
|
25
|
+
}
|
|
26
|
+
var MapPolyline = function MapPolyline(props) {
|
|
27
|
+
var map = props.map,
|
|
28
|
+
_props$path = props.path,
|
|
29
|
+
path = _props$path === void 0 ? [] : _props$path,
|
|
30
|
+
_props$color = props.color,
|
|
31
|
+
color = _props$color === void 0 ? '#00A4B2' : _props$color,
|
|
32
|
+
_props$lineEndColor = props.lineEndColor,
|
|
33
|
+
lineEndColor = _props$lineEndColor === void 0 ? '' : _props$lineEndColor,
|
|
34
|
+
_props$width = props.width,
|
|
35
|
+
width = _props$width === void 0 ? 6 : _props$width,
|
|
36
|
+
_props$opacity = props.opacity,
|
|
37
|
+
opacity = _props$opacity === void 0 ? 1 : _props$opacity,
|
|
38
|
+
_props$isOutline = props.isOutline,
|
|
39
|
+
isOutline = _props$isOutline === void 0 ? false : _props$isOutline,
|
|
40
|
+
_props$outlineColor = props.outlineColor,
|
|
41
|
+
outlineColor = _props$outlineColor === void 0 ? '#ffa7a5' : _props$outlineColor,
|
|
42
|
+
_props$outlineWidth = props.outlineWidth,
|
|
43
|
+
outlineWidth = _props$outlineWidth === void 0 ? 12 : _props$outlineWidth,
|
|
44
|
+
_props$outlineOpacity = props.outlineOpacity,
|
|
45
|
+
outlineOpacity = _props$outlineOpacity === void 0 ? 1 : _props$outlineOpacity,
|
|
46
|
+
_props$zIndex = props.zIndex,
|
|
47
|
+
zIndex = _props$zIndex === void 0 ? 12 : _props$zIndex,
|
|
48
|
+
_props$isArrow = props.isArrow,
|
|
49
|
+
isArrow = _props$isArrow === void 0 ? false : _props$isArrow;
|
|
50
|
+
var _useState = useState('customLine::' + (props.id || shortid.generate())),
|
|
51
|
+
_useState2 = _slicedToArray(_useState, 1),
|
|
52
|
+
id = _useState2[0];
|
|
53
|
+
var outlineId = id + '_outline';
|
|
54
|
+
var allowLayerId = id + '_allow';
|
|
55
|
+
var _useGetState = useGetState(),
|
|
56
|
+
_useGetState2 = _slicedToArray(_useGetState, 3),
|
|
57
|
+
sourceData = _useGetState2[0],
|
|
58
|
+
setSourceData = _useGetState2[1],
|
|
59
|
+
getSourceData = _useGetState2[2];
|
|
60
|
+
var _useGetState3 = useGetState(),
|
|
61
|
+
_useGetState4 = _slicedToArray(_useGetState3, 3),
|
|
62
|
+
line = _useGetState4[0],
|
|
63
|
+
setLine = _useGetState4[1],
|
|
64
|
+
getLine = _useGetState4[2];
|
|
65
|
+
var _useGetState5 = useGetState(),
|
|
66
|
+
_useGetState6 = _slicedToArray(_useGetState5, 3),
|
|
67
|
+
outline = _useGetState6[0],
|
|
68
|
+
setOutline = _useGetState6[1],
|
|
69
|
+
getOutline = _useGetState6[2];
|
|
70
|
+
var _useGetState7 = useGetState(),
|
|
71
|
+
_useGetState8 = _slicedToArray(_useGetState7, 3),
|
|
72
|
+
arrowLine = _useGetState8[0],
|
|
73
|
+
setArrowLine = _useGetState8[1],
|
|
74
|
+
getArrowLine = _useGetState8[2];
|
|
75
|
+
useEffect(function () {
|
|
76
|
+
if (!map) return;
|
|
77
|
+
var sourceDataObj = {
|
|
78
|
+
type: 'FeatureCollection',
|
|
79
|
+
features: [{
|
|
80
|
+
type: 'Feature',
|
|
81
|
+
geometry: {
|
|
82
|
+
type: 'LineString',
|
|
83
|
+
coordinates: path
|
|
84
|
+
}
|
|
85
|
+
}]
|
|
86
|
+
};
|
|
87
|
+
if (isEqual(getSourceData(), sourceDataObj)) return;
|
|
88
|
+
var source = map.getSource(id);
|
|
89
|
+
if (source) {
|
|
90
|
+
// console.log('更新source')
|
|
91
|
+
source.setData(sourceDataObj);
|
|
92
|
+
} else {
|
|
93
|
+
// console.log('添加source')
|
|
94
|
+
map.addSource(id, {
|
|
95
|
+
type: 'geojson',
|
|
96
|
+
data: sourceDataObj,
|
|
97
|
+
lineMetrics: true
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
setSourceData(sourceDataObj);
|
|
101
|
+
}, [map, path]);
|
|
102
|
+
useEffect(function () {
|
|
103
|
+
if (map && line) {
|
|
104
|
+
var lineObj = {
|
|
105
|
+
id: id,
|
|
106
|
+
type: 'line',
|
|
107
|
+
source: id,
|
|
108
|
+
layout: {
|
|
109
|
+
'line-join': 'round',
|
|
110
|
+
'line-cap': 'round'
|
|
111
|
+
},
|
|
112
|
+
paint: {
|
|
113
|
+
'line-color': color,
|
|
114
|
+
'line-width': width,
|
|
115
|
+
'line-opacity': opacity
|
|
116
|
+
},
|
|
117
|
+
zIndex: zIndex,
|
|
118
|
+
metadata: {
|
|
119
|
+
zIndex: zIndex
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
if (isEqual(getLine(), lineObj)) return;
|
|
123
|
+
var layers = getAllLineLayers(map);
|
|
124
|
+
var obj = {};
|
|
125
|
+
layers.forEach(function (item) {
|
|
126
|
+
obj[item.id] = item.metadata.zIndex;
|
|
127
|
+
});
|
|
128
|
+
var fKey = findKeyWithMinValueGreaterThan(obj, zIndex);
|
|
129
|
+
if (fKey) {
|
|
130
|
+
map.moveLayer(id, fKey);
|
|
131
|
+
if (getOutline()) {
|
|
132
|
+
map.moveLayer(outlineId, fKey);
|
|
133
|
+
}
|
|
134
|
+
if (getArrowLine()) {
|
|
135
|
+
map.moveLayer(allowLayerId, fKey);
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
map.moveLayer(id);
|
|
139
|
+
if (getOutline()) {
|
|
140
|
+
map.moveLayer(outlineId);
|
|
141
|
+
}
|
|
142
|
+
if (getArrowLine()) {
|
|
143
|
+
map.moveLayer(allowLayerId);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}, [zIndex, map, line]);
|
|
148
|
+
useEffect(function () {
|
|
149
|
+
return function () {
|
|
150
|
+
// @ts-ignore
|
|
151
|
+
delete window.layerZIndexConfig[id];
|
|
152
|
+
// @ts-ignore
|
|
153
|
+
delete window.layerZIndexConfig[outlineId];
|
|
154
|
+
// @ts-ignore
|
|
155
|
+
delete window.layerZIndexConfig[allowLayerId];
|
|
156
|
+
};
|
|
157
|
+
}, []);
|
|
158
|
+
function drawLine() {
|
|
159
|
+
var lineObj = {
|
|
160
|
+
id: id,
|
|
161
|
+
type: 'line',
|
|
162
|
+
source: id,
|
|
163
|
+
layout: {
|
|
164
|
+
'line-join': 'round',
|
|
165
|
+
'line-cap': 'round'
|
|
166
|
+
},
|
|
167
|
+
paint: {
|
|
168
|
+
'line-color': color,
|
|
169
|
+
'line-width': width,
|
|
170
|
+
'line-opacity': opacity
|
|
171
|
+
},
|
|
172
|
+
zIndex: zIndex,
|
|
173
|
+
metadata: {
|
|
174
|
+
zIndex: zIndex
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
if (lineEndColor) {
|
|
178
|
+
lineObj.paint['line-gradient'] = ['interpolate', ['linear'], ['line-progress'], 0, color, 1, lineEndColor];
|
|
179
|
+
}
|
|
180
|
+
if (isEqual(getLine(), lineObj)) return;
|
|
181
|
+
var layer = map.getLayer(id);
|
|
182
|
+
if (layer) {
|
|
183
|
+
// console.log('更新layer')
|
|
184
|
+
map.setPaintProperty(id, 'line-color', color);
|
|
185
|
+
map.setPaintProperty(id, 'line-width', width);
|
|
186
|
+
map.setPaintProperty(id, 'line-opacity', opacity);
|
|
187
|
+
} else {
|
|
188
|
+
// console.log('添加layer')
|
|
189
|
+
map.addLayer(lineObj);
|
|
190
|
+
if (isArrow) {
|
|
191
|
+
var arrowLineObj = {
|
|
192
|
+
id: allowLayerId,
|
|
193
|
+
type: 'symbol',
|
|
194
|
+
source: id,
|
|
195
|
+
layout: {
|
|
196
|
+
'icon-image': 'custom-arrow',
|
|
197
|
+
// 箭头图标
|
|
198
|
+
'symbol-placement': 'line',
|
|
199
|
+
'symbol-spacing': 25,
|
|
200
|
+
// 图标间隔,默认为250
|
|
201
|
+
'icon-size': 1
|
|
202
|
+
},
|
|
203
|
+
metadata: {
|
|
204
|
+
zIndex: zIndex
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
map.addLayer(arrowLineObj);
|
|
208
|
+
setArrowLine(arrowLineObj);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
setLine(JSON.parse(JSON.stringify(lineObj)));
|
|
212
|
+
}
|
|
213
|
+
function drawOutLine() {
|
|
214
|
+
var outlineObj = {
|
|
215
|
+
id: outlineId,
|
|
216
|
+
type: 'line',
|
|
217
|
+
source: id,
|
|
218
|
+
layout: {
|
|
219
|
+
'line-join': 'round',
|
|
220
|
+
'line-cap': 'round'
|
|
221
|
+
},
|
|
222
|
+
paint: {
|
|
223
|
+
'line-color': outlineColor,
|
|
224
|
+
'line-width': outlineWidth,
|
|
225
|
+
'line-opacity': outlineOpacity
|
|
226
|
+
},
|
|
227
|
+
isOutline: isOutline,
|
|
228
|
+
metadata: {
|
|
229
|
+
zIndex: zIndex
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
if (isOutline) {
|
|
233
|
+
if (isEqual(getOutline(), outlineObj)) return;
|
|
234
|
+
var layer = map.getLayer(outlineId);
|
|
235
|
+
if (layer) {
|
|
236
|
+
// console.log('更新layer')
|
|
237
|
+
// console.log('更新outline')
|
|
238
|
+
map.setPaintProperty(id, 'line-color', outlineColor);
|
|
239
|
+
map.setPaintProperty(id, 'line-width', outlineWidth);
|
|
240
|
+
map.setPaintProperty(id, 'line-opacity', outlineOpacity);
|
|
241
|
+
} else {
|
|
242
|
+
// console.log('添加layer')
|
|
243
|
+
// console.log('添加outline')
|
|
244
|
+
map.addLayer(outlineObj);
|
|
245
|
+
map.moveLayer(outlineId, id);
|
|
246
|
+
}
|
|
247
|
+
} else {
|
|
248
|
+
var _layer = map.getLayer(outlineId);
|
|
249
|
+
if (_layer) {
|
|
250
|
+
// console.log('删除outline')
|
|
251
|
+
map === null || map === void 0 || map.removeLayerAndSource(outlineId);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
setOutline(outlineObj);
|
|
255
|
+
}
|
|
256
|
+
useEffect(function () {
|
|
257
|
+
if (!map || !sourceData) return;
|
|
258
|
+
drawLine();
|
|
259
|
+
drawOutLine();
|
|
260
|
+
}, [map, sourceData, color, width, opacity, isOutline]);
|
|
261
|
+
var flagRef = useRef(false);
|
|
262
|
+
function onMouseenter(e) {
|
|
263
|
+
if (flagRef.current) return;
|
|
264
|
+
flagRef.current = true;
|
|
265
|
+
setTimeout(function () {
|
|
266
|
+
flagRef.current = false;
|
|
267
|
+
}, 150);
|
|
268
|
+
var features = map.queryRenderedFeatures(e.point);
|
|
269
|
+
if (!features.length) return;
|
|
270
|
+
var item = features.find(function (item) {
|
|
271
|
+
return item.source.includes('customLine::');
|
|
272
|
+
});
|
|
273
|
+
if (item && item.source === id) {
|
|
274
|
+
var _props$onMouseenter;
|
|
275
|
+
(_props$onMouseenter = props.onMouseenter) === null || _props$onMouseenter === void 0 || _props$onMouseenter.call(props, e);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function onMouseleave(e) {
|
|
279
|
+
var _props$onMouseleave;
|
|
280
|
+
(_props$onMouseleave = props.onMouseleave) === null || _props$onMouseleave === void 0 || _props$onMouseleave.call(props, e);
|
|
281
|
+
}
|
|
282
|
+
function onClick(e) {
|
|
283
|
+
var features = map.queryRenderedFeatures(e.point);
|
|
284
|
+
if (!features.length) return;
|
|
285
|
+
var item = features.find(function (item) {
|
|
286
|
+
return item.source.includes('customLine::');
|
|
287
|
+
});
|
|
288
|
+
if (item && item.source === id) {
|
|
289
|
+
var _props$onClick;
|
|
290
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props, e);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
function onRightClick(e) {
|
|
294
|
+
var _e$stopPropagation;
|
|
295
|
+
(_e$stopPropagation = e.stopPropagation) === null || _e$stopPropagation === void 0 || _e$stopPropagation.call(e);
|
|
296
|
+
var features = map.queryRenderedFeatures(e.point);
|
|
297
|
+
if (!features.length) return;
|
|
298
|
+
var item = features.find(function (item) {
|
|
299
|
+
return item.source.includes('customLine::');
|
|
300
|
+
});
|
|
301
|
+
if (item && item.source === id) {
|
|
302
|
+
var _props$onRightClick;
|
|
303
|
+
(_props$onRightClick = props.onRightClick) === null || _props$onRightClick === void 0 || _props$onRightClick.call(props, e);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// 事件处理
|
|
308
|
+
useEffect(function () {
|
|
309
|
+
if (map) {
|
|
310
|
+
if (props.onMouseenter) {
|
|
311
|
+
map.on('mouseenter', id, onMouseenter);
|
|
312
|
+
}
|
|
313
|
+
if (props.onMouseleave) {
|
|
314
|
+
map.on('mouseleave', id, onMouseleave);
|
|
315
|
+
}
|
|
316
|
+
if (props.onClick) {
|
|
317
|
+
map.on('click', id, onClick);
|
|
318
|
+
}
|
|
319
|
+
if (props.onRightClick) {
|
|
320
|
+
map.on('contextmenu', id, onRightClick);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}, [map]);
|
|
324
|
+
useEffect(function () {
|
|
325
|
+
return function () {
|
|
326
|
+
// console.log(id + '组件销毁')
|
|
327
|
+
map === null || map === void 0 || map.removeLayerAndSource(allowLayerId);
|
|
328
|
+
map === null || map === void 0 || map.removeLayerAndSource(outlineId);
|
|
329
|
+
map === null || map === void 0 || map.removeLayerAndSource(id);
|
|
330
|
+
map === null || map === void 0 || map.off('mouseenter', id, onMouseenter);
|
|
331
|
+
map === null || map === void 0 || map.off('mouseleave', id, onMouseleave);
|
|
332
|
+
map === null || map === void 0 || map.off('click', id, onClick);
|
|
333
|
+
map === null || map === void 0 || map.off('contextmenu', id, onClick);
|
|
334
|
+
};
|
|
335
|
+
}, []);
|
|
336
|
+
return null;
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
// export default MapPolyline
|
|
340
|
+
|
|
341
|
+
var memoCom = /*#__PURE__*/memo(MapPolyline);
|
|
342
|
+
export default memoCom;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare const mapabcgl: any;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* title: 用法
|
|
3
|
+
* description:
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import React from 'react';
|
|
7
|
+
// import { Map2D } from '@deepinnet-components/pc'
|
|
8
|
+
|
|
9
|
+
// const { Map, MapMarker, MapPolyline, MapPolygon } = Map2D
|
|
10
|
+
|
|
11
|
+
var App = function App() {
|
|
12
|
+
return /*#__PURE__*/React.createElement("div", null, "\u8FD9\u4E2A\u6587\u6863\u4E0D\u597D\u641E\u4F8B\u5B50");
|
|
13
|
+
};
|
|
14
|
+
export default App;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// import Map from './Map';
|
|
2
|
+
import MapMarker from "./MapMarker";
|
|
3
|
+
import MapPolyline from "./MapPolyline";
|
|
4
|
+
import MapPolygon from "./MapPolygon";
|
|
5
|
+
var Map2D = {
|
|
6
|
+
// Map,
|
|
7
|
+
MapMarker: MapMarker,
|
|
8
|
+
MapPolyline: MapPolyline,
|
|
9
|
+
MapPolygon: MapPolygon
|
|
10
|
+
};
|
|
11
|
+
export default Map2D;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getAllLineLayers(map: any): any;
|
|
@@ -5,43 +5,67 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
5
5
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
6
6
|
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
7
7
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
8
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
9
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
10
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
11
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
12
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
8
13
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
9
14
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
10
15
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
11
16
|
import { Form, FormButtonGroup, FormItem, Input } from '@formily/antd-v5';
|
|
12
|
-
import { createForm } from '@formily/core';
|
|
17
|
+
import { createForm, onFieldValueChange } from '@formily/core';
|
|
13
18
|
import { createSchemaField } from '@formily/react';
|
|
14
19
|
import { Button, Spin, message } from 'antd';
|
|
15
20
|
import md5 from 'md5';
|
|
16
21
|
import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
|
|
17
22
|
import OrgTreeSelect from "../../../OrgTreeSelect";
|
|
23
|
+
import OrgSelect from "../../../OrgSelect";
|
|
18
24
|
import RoleSelect from "../../../RoleSelect";
|
|
25
|
+
import MemberSelect from "../../../MemberSelect";
|
|
19
26
|
import ValueContext from "../../../context";
|
|
20
27
|
var SchemaField = createSchemaField({
|
|
21
28
|
components: {
|
|
22
29
|
FormItem: FormItem,
|
|
23
30
|
Input: Input,
|
|
24
31
|
RoleSelect: RoleSelect,
|
|
25
|
-
OrgTreeSelect: OrgTreeSelect
|
|
32
|
+
OrgTreeSelect: OrgTreeSelect,
|
|
33
|
+
OrgSelect: OrgSelect,
|
|
34
|
+
MemberSelect: MemberSelect
|
|
26
35
|
}
|
|
27
36
|
});
|
|
28
37
|
var schema = {
|
|
29
38
|
type: 'object',
|
|
30
39
|
properties: {
|
|
31
|
-
|
|
40
|
+
orgArr: {
|
|
32
41
|
type: 'string',
|
|
33
|
-
title: '
|
|
42
|
+
title: '组织',
|
|
34
43
|
'x-decorator': 'FormItem',
|
|
35
|
-
'x-component': '
|
|
44
|
+
// 'x-component': 'OrgTreeSelect',
|
|
45
|
+
'x-component': 'OrgSelect',
|
|
36
46
|
'x-component-props': {
|
|
37
|
-
placeholder: '
|
|
47
|
+
placeholder: '请选择组织'
|
|
48
|
+
// allowClear: true,
|
|
49
|
+
// disabled: '{{addOrEdit === "edit"}}',
|
|
50
|
+
},
|
|
51
|
+
'x-validator': [{
|
|
52
|
+
required: true,
|
|
53
|
+
message: '请选择组织'
|
|
54
|
+
}]
|
|
55
|
+
},
|
|
56
|
+
bindMemberId: {
|
|
57
|
+
type: 'string',
|
|
58
|
+
title: '成员',
|
|
59
|
+
'x-decorator': 'FormItem',
|
|
60
|
+
'x-component': 'MemberSelect',
|
|
61
|
+
'x-component-props': {
|
|
62
|
+
placeholder: '请选择关联成员',
|
|
38
63
|
allowClear: true,
|
|
39
|
-
|
|
40
|
-
showCount: true
|
|
64
|
+
disabled: true
|
|
41
65
|
},
|
|
42
66
|
'x-validator': [{
|
|
43
67
|
required: true,
|
|
44
|
-
message: '
|
|
68
|
+
message: '请选择关联成员'
|
|
45
69
|
}]
|
|
46
70
|
},
|
|
47
71
|
phone: {
|
|
@@ -117,27 +141,14 @@ var schema = {
|
|
|
117
141
|
'x-component-props': {
|
|
118
142
|
placeholder: '请选择角色',
|
|
119
143
|
allowClear: true,
|
|
120
|
-
mode: 'multiple',
|
|
144
|
+
// mode: 'multiple',
|
|
145
|
+
mode: '{{isMultiRole ? "multiple" : ""}}',
|
|
121
146
|
showSearch: true
|
|
122
147
|
},
|
|
123
148
|
'x-validator': [{
|
|
124
149
|
required: true,
|
|
125
150
|
message: '请选择角色'
|
|
126
151
|
}]
|
|
127
|
-
},
|
|
128
|
-
orgArr: {
|
|
129
|
-
type: 'string',
|
|
130
|
-
title: '部门',
|
|
131
|
-
'x-decorator': 'FormItem',
|
|
132
|
-
'x-component': 'OrgTreeSelect',
|
|
133
|
-
'x-component-props': {
|
|
134
|
-
placeholder: '请选择部门',
|
|
135
|
-
allowClear: true
|
|
136
|
-
},
|
|
137
|
-
'x-validator': [{
|
|
138
|
-
required: true,
|
|
139
|
-
message: '请选择部门'
|
|
140
|
-
}]
|
|
141
152
|
}
|
|
142
153
|
}
|
|
143
154
|
};
|
|
@@ -152,10 +163,11 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
152
163
|
var contextValue = useContext(ValueContext);
|
|
153
164
|
var ApiService = contextValue.ApiService,
|
|
154
165
|
Components = contextValue.Components,
|
|
155
|
-
userType = contextValue.userType
|
|
156
|
-
|
|
166
|
+
userType = contextValue.userType,
|
|
167
|
+
isMultiRole = contextValue.isMultiRole;
|
|
168
|
+
var getAccountDetail = /*#__PURE__*/function () {
|
|
157
169
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
158
|
-
var params, _yield$ApiService$get, data;
|
|
170
|
+
var params, _yield$ApiService$get, data, _data$departmentFlatD, _data$userMemberBindD;
|
|
159
171
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
160
172
|
while (1) switch (_context.prev = _context.next) {
|
|
161
173
|
case 0:
|
|
@@ -176,7 +188,15 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
176
188
|
roleCodeList: (data.roleList || []).map(function (item) {
|
|
177
189
|
return item.roleCode;
|
|
178
190
|
}),
|
|
179
|
-
orgArr: data.
|
|
191
|
+
orgArr: JSON.parse((_data$departmentFlatD = data.departmentFlatDTOs) === null || _data$departmentFlatD === void 0 || (_data$departmentFlatD = _data$departmentFlatD[0]) === null || _data$departmentFlatD === void 0 ? void 0 : _data$departmentFlatD.fullPath),
|
|
192
|
+
bindMemberId: (_data$userMemberBindD = data.userMemberBindDTO) === null || _data$userMemberBindD === void 0 ? void 0 : _data$userMemberBindD.memberId
|
|
193
|
+
});
|
|
194
|
+
// 下面这个是解决异步问题
|
|
195
|
+
setTimeout(function () {
|
|
196
|
+
var _data$userMemberBindD2;
|
|
197
|
+
form.setValues({
|
|
198
|
+
bindMemberId: (_data$userMemberBindD2 = data.userMemberBindDTO) === null || _data$userMemberBindD2 === void 0 ? void 0 : _data$userMemberBindD2.memberId
|
|
199
|
+
});
|
|
180
200
|
});
|
|
181
201
|
}
|
|
182
202
|
case 8:
|
|
@@ -189,14 +209,14 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
189
209
|
}
|
|
190
210
|
}, _callee, null, [[0,, 8, 11]]);
|
|
191
211
|
}));
|
|
192
|
-
return function
|
|
212
|
+
return function getAccountDetail() {
|
|
193
213
|
return _ref.apply(this, arguments);
|
|
194
214
|
};
|
|
195
215
|
}();
|
|
196
216
|
useEffect(function () {
|
|
197
217
|
if (visible) {
|
|
198
218
|
if (addOrEdit === 'edit') {
|
|
199
|
-
|
|
219
|
+
getAccountDetail();
|
|
200
220
|
}
|
|
201
221
|
} else {
|
|
202
222
|
form.reset();
|
|
@@ -204,9 +224,26 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
204
224
|
}, [visible, actionRow]);
|
|
205
225
|
var form = useMemo(function () {
|
|
206
226
|
return createForm({
|
|
207
|
-
effects: function effects() {
|
|
227
|
+
effects: function effects() {
|
|
228
|
+
onFieldValueChange('orgArr', function (field) {
|
|
229
|
+
form.setFieldState('bindMemberId', function (state) {
|
|
230
|
+
var _field$value, _field$value2;
|
|
231
|
+
state.value = undefined;
|
|
232
|
+
state.componentProps = _objectSpread(_objectSpread({}, state.componentProps), {}, {
|
|
233
|
+
disabled: addOrEdit === 'edit' || !field.value,
|
|
234
|
+
searchParams: {
|
|
235
|
+
departmentId: (_field$value = field.value) === null || _field$value === void 0 ? void 0 : _field$value[((_field$value2 = field.value) === null || _field$value2 === void 0 ? void 0 : _field$value2.length) - 1],
|
|
236
|
+
memberStatus: addOrEdit === 'add' ? 'available' : 'occupied'
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
onFieldValueChange('bindMemberId', function (field) {
|
|
242
|
+
console.log(field.value);
|
|
243
|
+
});
|
|
244
|
+
}
|
|
208
245
|
});
|
|
209
|
-
}, []);
|
|
246
|
+
}, [visible]);
|
|
210
247
|
var _useState = useState(addOrEdit === 'edit'),
|
|
211
248
|
_useState2 = _slicedToArray(_useState, 2),
|
|
212
249
|
getDataLoading = _useState2[0],
|
|
@@ -238,12 +275,13 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
238
275
|
}
|
|
239
276
|
_context2.prev = 6;
|
|
240
277
|
params = {
|
|
241
|
-
name: values.name.trim(),
|
|
242
278
|
phone: values.phone.trim(),
|
|
243
|
-
roleCodeList: values.roleCodeList,
|
|
279
|
+
roleCodeList: Array.isArray(values.roleCodeList) ? values.roleCodeList : [values.roleCodeList],
|
|
244
280
|
password: md5(values.password.trim()),
|
|
245
|
-
departmentIdList: values.orgArr || [],
|
|
246
|
-
|
|
281
|
+
// departmentIdList: values.orgArr || [],
|
|
282
|
+
departmentIdList: [values.orgArr[values.orgArr.length - 1]],
|
|
283
|
+
userType: userType,
|
|
284
|
+
bindMemberId: values.bindMemberId
|
|
247
285
|
};
|
|
248
286
|
setLoading(true);
|
|
249
287
|
_context2.next = 11;
|
|
@@ -269,10 +307,11 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
269
307
|
_context2.prev = 19;
|
|
270
308
|
_params = {
|
|
271
309
|
accountNo: actionRow.accountNo,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
departmentIdList: values.orgArr
|
|
275
|
-
userType: userType
|
|
310
|
+
roleCodeList: Array.isArray(values.roleCodeList) ? values.roleCodeList : [values.roleCodeList],
|
|
311
|
+
// departmentIdList: values.orgArr || [],
|
|
312
|
+
departmentIdList: [values.orgArr[values.orgArr.length - 1]],
|
|
313
|
+
userType: userType,
|
|
314
|
+
bindMemberId: values.bindMemberId
|
|
276
315
|
};
|
|
277
316
|
setLoading(true);
|
|
278
317
|
_context2.next = 24;
|
|
@@ -315,7 +354,8 @@ var CreateAccount = function CreateAccount(props) {
|
|
|
315
354
|
}, /*#__PURE__*/React.createElement(SchemaField, {
|
|
316
355
|
schema: schema,
|
|
317
356
|
scope: {
|
|
318
|
-
addOrEdit: addOrEdit
|
|
357
|
+
addOrEdit: addOrEdit,
|
|
358
|
+
isMultiRole: isMultiRole
|
|
319
359
|
}
|
|
320
360
|
}), /*#__PURE__*/React.createElement(FormButtonGroup.FormItem, null, /*#__PURE__*/React.createElement(Button, {
|
|
321
361
|
type: "primary",
|