sg-lowcode-ui 0.0.5

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.
@@ -0,0 +1,15 @@
1
+ import { JSX } from 'react/jsx-runtime';
2
+
3
+ export declare function DictModule(props: Props): JSX.Element;
4
+
5
+ declare interface Props {
6
+ appCode: string;
7
+ baseUrl: string;
8
+ }
9
+
10
+ declare const Request_2: (url: string, options: RequestInit & {
11
+ timeout?: number;
12
+ }, resJson?: Boolean) => Promise<any>;
13
+ export { Request_2 as Request }
14
+
15
+ export { }
@@ -0,0 +1,758 @@
1
+ (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode("")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();import { jsxs as K, jsx as e, Fragment as Y } from "react/jsx-runtime";
2
+ import { EditableProTable as G } from "@ant-design/pro-components";
3
+ import { useRequest as D, useDebounceFn as X } from "ahooks";
4
+ import { notification as Z, Drawer as ee, Input as _, Popconfirm as M, Button as z, message as h, Tag as b } from "antd";
5
+ import { useState as m, useRef as U } from "react";
6
+ function C(i) {
7
+ return {
8
+ Authorization: JSON.parse(
9
+ localStorage.getItem(`${i}_TOKEN`) ?? '"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJsb2dpbl91c2VyIjp7InVzZXJJZCI6NDkzMjIxMywidXNlcm5hbWUiOiLkuo7mtKrljY4iLCJqb2JOdW1iZXIiOiIxMDA2NDkxMSIsInBob25lIjoiMTgzNTI3OTE0ODkiLCJzZXgiOjAsIm1zb0xpbWl0IjpmYWxzZSwicGVybWlzc2lvbnMiOltdfSwiZXhwIjoxNzY1MTU3MjU4fQ.GrH8Pp7XtFN81OGK8m3ys99dPkDPAEybJXJlWJADZtf33DcwpLczqJLy6kjAwzC8Axb8wDWZ9CzKQ5BaaAuJ4LyxN-B4EjUypFjyXOwrhGliUJXGb1KcPHe3zDEr0fJCKfAnClVxhG0VZKLejsABtaoTxa_SV3N-zpagw3032mQ"'
10
+ )
11
+ };
12
+ }
13
+ function V(i) {
14
+ return Object.keys(i).map((s) => `${s}=${i[s]}`).join("&");
15
+ }
16
+ const T = async (i, s, n = !0) => {
17
+ const { timeout: g = 5e3 } = s, y = new AbortController(), f = setTimeout(() => y.abort(), g), { headers: v, ...x } = s, S = {
18
+ "Content-Type": "application/json",
19
+ ...v
20
+ };
21
+ try {
22
+ const c = await fetch(i, {
23
+ headers: S,
24
+ ...x,
25
+ signal: y.signal
26
+ });
27
+ if (clearTimeout(f), !c.ok)
28
+ throw Z.error({
29
+ title: c.status,
30
+ description: c.statusText
31
+ }), new Error(`HTTP Error: ${c.status} ${c.statusText}`);
32
+ const p = await (n ? c.json() : c.blob());
33
+ if (n && p.code !== 200)
34
+ throw Z.warning({
35
+ title: p.code,
36
+ description: p.msg
37
+ }), new Error(p.message);
38
+ return p;
39
+ } catch (c) {
40
+ throw y.abort(), c instanceof Error && c.name === "AbortError" && Z.error({
41
+ title: "请求出错",
42
+ description: "请求超时,请检查网络连接"
43
+ }), clearTimeout(f), new Error("request failed");
44
+ }
45
+ };
46
+ function Q(i, s) {
47
+ const n = `${s}${i}`, g = D(
48
+ (a = { pageNum: 1, pageSize: 10 }) => T(`${n}/v1/system/dict/type/list?${V(a)}`, {
49
+ headers: C(i)
50
+ }),
51
+ {
52
+ manual: !0
53
+ }
54
+ ), y = D(
55
+ (a) => T(`${n}/v1/system/dict/type`, {
56
+ headers: C(i),
57
+ method: "POST",
58
+ body: JSON.stringify(a)
59
+ }),
60
+ {
61
+ manual: !0
62
+ }
63
+ ), f = D(
64
+ (a) => T(`${n}/v1/system/dict/type`, {
65
+ headers: C(i),
66
+ method: "PUT",
67
+ body: JSON.stringify(a)
68
+ }),
69
+ {
70
+ manual: !0
71
+ }
72
+ ), v = D(
73
+ (a) => T(`${n}/v1/system/dict/type/${a}`, {
74
+ headers: C(i),
75
+ method: "DELETE"
76
+ }),
77
+ {
78
+ manual: !0
79
+ }
80
+ ), x = D(
81
+ (a = { pageNum: 1, pageSize: 10 }) => T(`${n}/v1/system/dict/data/listByType?${V(a)}`, {
82
+ headers: C(i)
83
+ }),
84
+ {
85
+ manual: !0
86
+ }
87
+ ), S = D(
88
+ (a) => T(`${n}/v1/system/dict/data`, {
89
+ headers: C(i),
90
+ method: "POST",
91
+ body: JSON.stringify(a)
92
+ }),
93
+ {
94
+ manual: !0
95
+ }
96
+ ), c = D(
97
+ (a) => T(`${n}/v1/system/dict/data`, {
98
+ headers: C(i),
99
+ method: "PUT",
100
+ body: JSON.stringify(a)
101
+ }),
102
+ {
103
+ manual: !0
104
+ }
105
+ ), p = D(
106
+ (a) => T(`${n}/v1/system/dict/data/${a}`, {
107
+ headers: C(i),
108
+ method: "DELETE"
109
+ }),
110
+ {
111
+ manual: !0
112
+ }
113
+ );
114
+ return {
115
+ reqDictCategoryList: g,
116
+ reqDictCategoryAdd: y,
117
+ reqDictCategoryUpdate: f,
118
+ reqDictCategoryDel: v,
119
+ reqDictDetailById: x,
120
+ reqDictDetailAdd: S,
121
+ reqDictDetailUpdate: c,
122
+ reqDictDetailDel: p
123
+ };
124
+ }
125
+ function te(i) {
126
+ const { appCode: s, baseUrl: n, id: g, name: y, open: f, onClose: v } = i, [x, S] = m([]), [c, p] = m([]), [a, F] = m([]), [j, A] = m(""), d = U(null), I = U(null), {
127
+ reqDictDetailById: B,
128
+ reqDictDetailAdd: q,
129
+ reqDictDetailUpdate: l,
130
+ reqDictDetailDel: w
131
+ } = Q(s, n), W = [
132
+ {
133
+ title: "id",
134
+ dataIndex: "id",
135
+ hideInTable: !0
136
+ },
137
+ {
138
+ title: "字典名称",
139
+ dataIndex: "dictLabel",
140
+ formItemProps: {
141
+ rules: [
142
+ {
143
+ required: !0,
144
+ message: "字典名称为必填项"
145
+ }
146
+ ]
147
+ },
148
+ width: 200
149
+ },
150
+ {
151
+ title: "字典值",
152
+ dataIndex: "dictValue",
153
+ formItemProps: {
154
+ rules: [
155
+ {
156
+ required: !0,
157
+ message: "字典值为必填项"
158
+ }
159
+ ]
160
+ },
161
+ width: 200
162
+ },
163
+ {
164
+ title: "排序",
165
+ dataIndex: "dictSort",
166
+ width: 100
167
+ },
168
+ {
169
+ title: "备注",
170
+ dataIndex: "remark"
171
+ },
172
+ {
173
+ title: "字典类型",
174
+ dataIndex: "dictType",
175
+ width: 100,
176
+ editable: !1
177
+ },
178
+ {
179
+ title: "创建人",
180
+ dataIndex: "createBy",
181
+ editable: !1,
182
+ width: 200
183
+ },
184
+ {
185
+ title: "创建时间",
186
+ dataIndex: "createTime",
187
+ editable: !1,
188
+ width: 200
189
+ },
190
+ {
191
+ title: "操作",
192
+ dataIndex: "action",
193
+ valueType: "option",
194
+ width: 200,
195
+ render: (r, u) => [
196
+ /* @__PURE__ */ e(
197
+ b,
198
+ {
199
+ color: "blue",
200
+ variant: "outlined",
201
+ className: "cursor-pointer mr-1 py-[3px] leading-[1.2rem]",
202
+ onClick: () => d.current?.startEditable?.(u.id),
203
+ children: "编辑"
204
+ },
205
+ "editable"
206
+ ),
207
+ /* @__PURE__ */ e(
208
+ M,
209
+ {
210
+ title: "确定删除吗?",
211
+ okText: "确定",
212
+ cancelText: "取消",
213
+ disabled: w.loading,
214
+ onConfirm: () => {
215
+ w.runAsync(u.id).then((R) => {
216
+ R.code === 200 && (d.current?.reload(), h.success("删除成功"));
217
+ });
218
+ },
219
+ children: /* @__PURE__ */ e(
220
+ b,
221
+ {
222
+ variant: "outlined",
223
+ color: "red",
224
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
225
+ children: "删除"
226
+ },
227
+ "delete"
228
+ )
229
+ }
230
+ )
231
+ ]
232
+ }
233
+ ], E = (r, u, R) => [
234
+ /* @__PURE__ */ e(
235
+ b,
236
+ {
237
+ color: "blue",
238
+ variant: "outlined",
239
+ disabled: q.loading || l.loading,
240
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
241
+ onClick: async () => {
242
+ if (await I.current?.validateFields(), r.id.toString().startsWith("_")) {
243
+ const $ = I.current?.getRowData?.(r.id);
244
+ q.runAsync({ ...$, dictType: g }).then((t) => {
245
+ t.code === 200 && (d.current?.cancelEditable(r.id), d.current?.reload(), h.success("添加成功"));
246
+ });
247
+ return;
248
+ }
249
+ const N = I.current?.getRowData?.(r.id);
250
+ l.runAsync({ ...N, id: r.id, dictType: r.dictType }).then(($) => {
251
+ $.code === 200 && (d.current?.reload(), d.current?.cancelEditable?.(r.id), h.success("修改成功"));
252
+ });
253
+ },
254
+ children: "保存"
255
+ },
256
+ "save"
257
+ ),
258
+ /* @__PURE__ */ e(
259
+ b,
260
+ {
261
+ variant: "outlined",
262
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
263
+ onClick: () => d.current?.cancelEditable?.(r.id),
264
+ children: "取消"
265
+ },
266
+ "cancel"
267
+ )
268
+ ], L = async (r, u, R) => {
269
+ if (!f)
270
+ return {
271
+ data: [],
272
+ success: !0,
273
+ total: 0
274
+ };
275
+ const N = await B.runAsync({
276
+ dictType: g,
277
+ dictLabel: j,
278
+ page: r.current ?? 1,
279
+ pageSize: r.pageSize ?? 10
280
+ });
281
+ return {
282
+ data: N.rows,
283
+ success: !0,
284
+ total: N.total
285
+ };
286
+ }, k = X(
287
+ (r) => {
288
+ A(r);
289
+ },
290
+ { wait: 500 }
291
+ );
292
+ return /* @__PURE__ */ K(
293
+ ee,
294
+ {
295
+ title: `【${y}】字典详情列表`,
296
+ open: f,
297
+ onClose: v,
298
+ width: "90vw",
299
+ children: [
300
+ /* @__PURE__ */ K("div", { className: "gap-2 flex justify-end mb-4", children: [
301
+ /* @__PURE__ */ e(
302
+ _,
303
+ {
304
+ className: "mr-1 w-[200px]",
305
+ onChange: (r) => k.run(r.target.value),
306
+ placeholder: "搜索字典名称",
307
+ allowClear: !0,
308
+ prefix: /* @__PURE__ */ e(
309
+ "svg",
310
+ {
311
+ className: "icon w-[12px] h-[12px]",
312
+ viewBox: "0 0 1024 1024",
313
+ version: "1.1",
314
+ xmlns: "http://www.w3.org/2000/svg",
315
+ "p-id": "4820",
316
+ width: "50",
317
+ height: "50",
318
+ children: /* @__PURE__ */ e(
319
+ "path",
320
+ {
321
+ d: "M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z",
322
+ "p-id": "4821",
323
+ fill: "#999"
324
+ }
325
+ )
326
+ }
327
+ )
328
+ }
329
+ ),
330
+ /* @__PURE__ */ e(
331
+ M,
332
+ {
333
+ title: "确定要批量删除吗?",
334
+ okText: "确定",
335
+ cancelText: "取消",
336
+ disabled: w.loading,
337
+ onConfirm: () => {
338
+ const r = a;
339
+ r.length > 0 ? w.runAsync(r.join(",")).then((u) => {
340
+ u.code === 200 && (d.current?.reload(), h.success("删除成功"));
341
+ }) : h.warning("请选择要删除的项");
342
+ },
343
+ children: /* @__PURE__ */ e(z, { color: "danger", variant: "solid", children: "批量删除" })
344
+ }
345
+ ),
346
+ /* @__PURE__ */ e(
347
+ z,
348
+ {
349
+ type: "primary",
350
+ variant: "solid",
351
+ onClick: () => d.current?.addEditRecord({
352
+ id: `_${(Math.random() * 1e6).toFixed(0)}`
353
+ }),
354
+ children: "新增"
355
+ }
356
+ ),
357
+ /* @__PURE__ */ e(
358
+ z,
359
+ {
360
+ type: "primary",
361
+ variant: "solid",
362
+ onClick: () => d.current?.reload(),
363
+ children: "刷新"
364
+ }
365
+ )
366
+ ] }),
367
+ /* @__PURE__ */ e(
368
+ G,
369
+ {
370
+ params: { id: g, open: f, dictLabel: j },
371
+ bordered: !0,
372
+ debounceTime: 300,
373
+ actionRef: d,
374
+ request: L,
375
+ columns: W,
376
+ rowKey: "id",
377
+ editableFormRef: I,
378
+ editable: {
379
+ type: "single",
380
+ editableKeys: x,
381
+ onChange: S,
382
+ actionRender: E
383
+ },
384
+ sticky: !0,
385
+ recordCreatorProps: !1,
386
+ tableAlertRender: !1,
387
+ pagination: {
388
+ placement: "bottomRight",
389
+ defaultPageSize: 10,
390
+ pageSizeOptions: [10, 20, 50, 100],
391
+ showTotal: (r, u) => `第 ${u[0]}-${u[1]} 条,共 ${r} 条`,
392
+ showSizeChanger: !0,
393
+ showQuickJumper: !0
394
+ },
395
+ search: !1,
396
+ rowSelection: {
397
+ selectedRowKeys: a,
398
+ onChange(r, u, R) {
399
+ F(r), p(u);
400
+ },
401
+ columnWidth: 50,
402
+ fixed: !0
403
+ },
404
+ scroll: {
405
+ x: "max-content",
406
+ y: "auto",
407
+ scrollToFirstRowOnChange: !1
408
+ },
409
+ showSorterTooltip: !0
410
+ }
411
+ )
412
+ ]
413
+ }
414
+ );
415
+ }
416
+ function re(i) {
417
+ const { appCode: s, baseUrl: n } = i, [g, y] = m([]), [f, v] = m([]), [x, S] = m([]), [c, p] = m(""), [a, F] = m(""), [j, A] = m(!1), [d, I] = m(""), [B, q] = m(""), l = U(null), w = U(null), {
418
+ reqDictCategoryList: W,
419
+ reqDictCategoryUpdate: E,
420
+ reqDictCategoryAdd: L,
421
+ reqDictCategoryDel: k
422
+ } = Q(s, n), r = [
423
+ {
424
+ title: "id",
425
+ dataIndex: "id",
426
+ hideInTable: !0
427
+ },
428
+ {
429
+ title: "字典类型",
430
+ dataIndex: "dictName",
431
+ formItemProps: {
432
+ rules: [
433
+ {
434
+ required: !0,
435
+ message: "字典类型为必填项"
436
+ }
437
+ ]
438
+ },
439
+ width: 200
440
+ },
441
+ {
442
+ title: "字典编码",
443
+ dataIndex: "dictType",
444
+ formItemProps: {
445
+ rules: [
446
+ {
447
+ required: !0,
448
+ message: "字典编码为必填项"
449
+ },
450
+ {
451
+ pattern: /^[a-zA-Z_][a-zA-Z0-9_]*$/,
452
+ message: "字典编码只能包含字母、数字、下划线,且不能以数字开头"
453
+ }
454
+ ]
455
+ },
456
+ render(t, o, O, J, P) {
457
+ return /* @__PURE__ */ e(
458
+ "span",
459
+ {
460
+ className: "cursor-pointer underline text-green-600",
461
+ onClick: () => {
462
+ I(o.dictType), q(o.dictName), A(!0);
463
+ },
464
+ children: t
465
+ }
466
+ );
467
+ },
468
+ width: 200
469
+ },
470
+ // {
471
+ // title: '状态',
472
+ // dataIndex: 'status'
473
+ // },
474
+ {
475
+ title: "字典备注",
476
+ dataIndex: "remark"
477
+ },
478
+ {
479
+ title: "创建人",
480
+ dataIndex: "createBy",
481
+ editable: !1,
482
+ width: 200
483
+ },
484
+ {
485
+ title: "创建时间",
486
+ dataIndex: "createTime",
487
+ editable: !1,
488
+ width: 200
489
+ },
490
+ {
491
+ title: "操作",
492
+ dataIndex: "action",
493
+ valueType: "option",
494
+ width: 200,
495
+ render: (t, o) => [
496
+ /* @__PURE__ */ e(
497
+ b,
498
+ {
499
+ color: "blue",
500
+ variant: "outlined",
501
+ className: "cursor-pointer mr-1 py-[3px] leading-[1.2rem]",
502
+ onClick: () => l.current?.startEditable?.(o.id),
503
+ children: "编辑"
504
+ },
505
+ "editable"
506
+ ),
507
+ /* @__PURE__ */ e(
508
+ M,
509
+ {
510
+ title: "确定删除吗?",
511
+ okText: "确定",
512
+ cancelText: "取消",
513
+ onConfirm: () => {
514
+ k.runAsync(o.id).then((O) => {
515
+ O.code === 200 && (l.current?.reload(), h.success("删除成功"));
516
+ });
517
+ },
518
+ children: /* @__PURE__ */ e(
519
+ b,
520
+ {
521
+ variant: "outlined",
522
+ color: "red",
523
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
524
+ children: "删除"
525
+ },
526
+ "delete"
527
+ )
528
+ }
529
+ ),
530
+ /* @__PURE__ */ e(
531
+ b,
532
+ {
533
+ variant: "outlined",
534
+ color: "green",
535
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
536
+ onClick: () => {
537
+ I(o.dictType), q(o.dictName), A(!0);
538
+ },
539
+ children: "字典数据"
540
+ },
541
+ "detail"
542
+ )
543
+ ]
544
+ }
545
+ ], u = (t, o, O) => [
546
+ /* @__PURE__ */ e(
547
+ b,
548
+ {
549
+ color: "blue",
550
+ variant: "outlined",
551
+ disabled: L.loading || E.loading,
552
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
553
+ onClick: async () => {
554
+ if (await w.current?.validateFields(), t.id.toString().startsWith("_")) {
555
+ const P = w.current?.getRowData?.(t.id);
556
+ L.runAsync(P).then((H) => {
557
+ H.code === 200 && (l.current?.cancelEditable(t.id), l.current?.reload(), h.success("添加成功"));
558
+ });
559
+ return;
560
+ }
561
+ const J = w.current?.getRowData?.(t.id);
562
+ E.runAsync({ ...J, id: t.id }).then((P) => {
563
+ P.code === 200 && (l.current?.reload(), l.current?.cancelEditable?.(t.id), h.success("修改成功"));
564
+ });
565
+ },
566
+ children: "保存"
567
+ },
568
+ "save"
569
+ ),
570
+ /* @__PURE__ */ e(
571
+ b,
572
+ {
573
+ variant: "outlined",
574
+ className: "cursor-pointer py-[3px] leading-[1.2rem]",
575
+ onClick: () => l.current?.cancelEditable?.(t.id),
576
+ children: "取消"
577
+ },
578
+ "cancel"
579
+ )
580
+ ], R = async (t, o, O) => {
581
+ const J = await W.runAsync({
582
+ pageNum: t.current ?? 1,
583
+ pageSize: t.pageSize ?? 10,
584
+ dictName: c,
585
+ dictType: a
586
+ });
587
+ return {
588
+ data: J.rows,
589
+ success: !0,
590
+ total: J.total
591
+ };
592
+ }, N = X(
593
+ (t) => {
594
+ p(t);
595
+ },
596
+ { wait: 500 }
597
+ ), $ = X(
598
+ (t) => {
599
+ F(t);
600
+ },
601
+ { wait: 500 }
602
+ );
603
+ return /* @__PURE__ */ K(Y, { children: [
604
+ /* @__PURE__ */ K("div", { className: "gap-2 flex justify-end mb-4", children: [
605
+ /* @__PURE__ */ e(
606
+ _,
607
+ {
608
+ className: "mr-1 w-[200px]",
609
+ onChange: (t) => N.run(t.target.value),
610
+ placeholder: "搜索字典类型",
611
+ allowClear: !0,
612
+ prefix: /* @__PURE__ */ e(
613
+ "svg",
614
+ {
615
+ className: "icon w-[12px] h-[12px]",
616
+ viewBox: "0 0 1024 1024",
617
+ version: "1.1",
618
+ xmlns: "http://www.w3.org/2000/svg",
619
+ "p-id": "4820",
620
+ width: "50",
621
+ height: "50",
622
+ children: /* @__PURE__ */ e(
623
+ "path",
624
+ {
625
+ d: "M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z",
626
+ "p-id": "4821",
627
+ fill: "#999"
628
+ }
629
+ )
630
+ }
631
+ )
632
+ }
633
+ ),
634
+ /* @__PURE__ */ e(
635
+ _,
636
+ {
637
+ className: "mr-1 w-[200px]",
638
+ onChange: (t) => $.run(t.target.value),
639
+ placeholder: "搜索字典编码",
640
+ allowClear: !0,
641
+ prefix: /* @__PURE__ */ e(
642
+ "svg",
643
+ {
644
+ className: "icon w-[12px] h-[12px]",
645
+ viewBox: "0 0 1024 1024",
646
+ version: "1.1",
647
+ xmlns: "http://www.w3.org/2000/svg",
648
+ "p-id": "4820",
649
+ width: "50",
650
+ height: "50",
651
+ children: /* @__PURE__ */ e(
652
+ "path",
653
+ {
654
+ d: "M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z",
655
+ "p-id": "4821",
656
+ fill: "#999"
657
+ }
658
+ )
659
+ }
660
+ )
661
+ }
662
+ ),
663
+ /* @__PURE__ */ e(
664
+ M,
665
+ {
666
+ title: "确定要批量删除吗?",
667
+ okText: "确定",
668
+ cancelText: "取消",
669
+ disabled: k.loading,
670
+ onConfirm: () => {
671
+ const t = x;
672
+ t.length > 0 ? k.runAsync(t.join(",")).then((o) => {
673
+ o.code === 200 && (l.current?.reload(), h.success("删除成功"));
674
+ }) : h.warning("请选择要删除的项");
675
+ },
676
+ children: /* @__PURE__ */ e(z, { color: "danger", variant: "solid", children: "批量删除" })
677
+ }
678
+ ),
679
+ /* @__PURE__ */ e(
680
+ z,
681
+ {
682
+ type: "primary",
683
+ onClick: () => l.current?.addEditRecord({
684
+ id: `_${(Math.random() * 1e6).toFixed(0)}`
685
+ }),
686
+ children: "新增"
687
+ }
688
+ ),
689
+ /* @__PURE__ */ e(z, { type: "primary", onClick: () => l.current?.reload(), children: "刷新" })
690
+ ] }),
691
+ /* @__PURE__ */ e(
692
+ G,
693
+ {
694
+ bordered: !0,
695
+ params: { dictName: c, dictType: a },
696
+ debounceTime: 300,
697
+ request: R,
698
+ actionRef: l,
699
+ columns: r,
700
+ rowKey: "id",
701
+ editableFormRef: w,
702
+ editable: {
703
+ type: "single",
704
+ editableKeys: g,
705
+ onChange: y,
706
+ actionRender: u
707
+ },
708
+ sticky: !0,
709
+ recordCreatorProps: !1,
710
+ tableAlertRender: !1,
711
+ pagination: {
712
+ placement: "bottomRight",
713
+ defaultPageSize: 10,
714
+ pageSizeOptions: [10, 20, 50, 100],
715
+ showTotal: (t, o) => `第 ${o[0]}-${o[1]} 条,共 ${t} 条`,
716
+ showSizeChanger: !0,
717
+ showQuickJumper: !0
718
+ },
719
+ search: !1,
720
+ rowSelection: {
721
+ selectedRowKeys: x,
722
+ onChange(t, o, O) {
723
+ S(t), v(o);
724
+ },
725
+ columnWidth: 50,
726
+ fixed: !0
727
+ },
728
+ scroll: {
729
+ x: "max-content",
730
+ y: "auto",
731
+ scrollToFirstRowOnChange: !1
732
+ },
733
+ showSorterTooltip: !0,
734
+ form: { ignoreRules: !1 }
735
+ }
736
+ ),
737
+ /* @__PURE__ */ e(
738
+ te,
739
+ {
740
+ appCode: s,
741
+ baseUrl: n,
742
+ id: d,
743
+ name: B,
744
+ open: j,
745
+ onClose: () => A(!1)
746
+ }
747
+ )
748
+ ] });
749
+ }
750
+ function se(i) {
751
+ const { appCode: s, baseUrl: n = "/" } = i;
752
+ return /* @__PURE__ */ e("div", { className: "dict-manage-wrapper w-full h-full", children: /* @__PURE__ */ e(re, { appCode: s, baseUrl: n }) });
753
+ }
754
+ export {
755
+ se as DictModule,
756
+ T as Request
757
+ };
758
+ //# sourceMappingURL=sg-lowcode-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sg-lowcode-ui.js","sources":["../lib/utils/index.ts","../lib/utils/req.ts","../lib/hooks/useService.ts","../lib/components/dict/dict-manage/indext.tsx","../lib/components/dict/dict-category/index.tsx","../lib/components/dict/index.tsx"],"sourcesContent":["export function getHeader(appEnName: string) {\r\n return {\r\n Authorization: JSON.parse(\r\n localStorage.getItem(`${appEnName}_TOKEN`) ??\r\n '\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJsb2dpbl91c2VyIjp7InVzZXJJZCI6NDkzMjIxMywidXNlcm5hbWUiOiLkuo7mtKrljY4iLCJqb2JOdW1iZXIiOiIxMDA2NDkxMSIsInBob25lIjoiMTgzNTI3OTE0ODkiLCJzZXgiOjAsIm1zb0xpbWl0IjpmYWxzZSwicGVybWlzc2lvbnMiOltdfSwiZXhwIjoxNzY1MTU3MjU4fQ.GrH8Pp7XtFN81OGK8m3ys99dPkDPAEybJXJlWJADZtf33DcwpLczqJLy6kjAwzC8Axb8wDWZ9CzKQ5BaaAuJ4LyxN-B4EjUypFjyXOwrhGliUJXGb1KcPHe3zDEr0fJCKfAnClVxhG0VZKLejsABtaoTxa_SV3N-zpagw3032mQ\"'\r\n )\r\n }\r\n}\r\n\r\nexport function qs(params: Record<string, string>) {\r\n return Object.keys(params)\r\n .map(key => `${key}=${params[key]}`)\r\n .join('&')\r\n}\r\n","import { notification } from 'antd'\r\nconst req = async (\r\n url: string,\r\n options: RequestInit & { timeout?: number },\r\n resJson: Boolean = true\r\n) => {\r\n const { timeout = 5000 } = options\r\n const controller = new AbortController()\r\n const timer = setTimeout(() => controller.abort(), timeout)\r\n const { headers, ...rest } = options\r\n const defaultHeaders = {\r\n 'Content-Type': 'application/json',\r\n ...headers\r\n }\r\n try {\r\n const response = await fetch(url, {\r\n ...{ headers: defaultHeaders, ...rest },\r\n signal: controller.signal\r\n })\r\n clearTimeout(timer)\r\n\r\n // 检查HTTP状态码,4xx/5xx等状态码需要处理\r\n if (!response.ok) {\r\n notification.error({\r\n title: response.status,\r\n description: response.statusText\r\n })\r\n throw new Error(`HTTP Error: ${response.status} ${response.statusText}`)\r\n }\r\n // 根据resJson标志处理响应数据\r\n const data = await (resJson ? response.json() : response.blob())\r\n if (resJson && data.code !== 200) {\r\n notification.warning({\r\n title: data.code,\r\n description: data.msg\r\n })\r\n throw new Error(data.message)\r\n }\r\n return data\r\n } catch (error) {\r\n controller.abort()\r\n if (error instanceof Error) {\r\n if (error.name === 'AbortError') {\r\n notification.error({\r\n title: '请求出错',\r\n description: '请求超时,请检查网络连接'\r\n })\r\n }\r\n }\r\n clearTimeout(timer)\r\n throw new Error('request failed')\r\n }\r\n}\r\n\r\nexport default req\r\n","import { useRequest } from 'ahooks'\r\nimport { getHeader, qs } from '../utils'\r\nimport req from '../utils/req'\r\nexport default function useService(appEnName: string, baseUrl: string) {\r\n const base = `${baseUrl}${appEnName}`\r\n\r\n // 分页查询\r\n const reqDictCategoryList = useRequest(\r\n (params = { pageNum: 1, pageSize: 10 }) =>\r\n req(`${base}/v1/system/dict/type/list?${qs(params)}`, {\r\n headers: getHeader(appEnName)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 新增字典类型\r\n const reqDictCategoryAdd = useRequest(\r\n params =>\r\n req(`${base}/v1/system/dict/type`, {\r\n headers: getHeader(appEnName),\r\n method: 'POST',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 修改字典类型\r\n const reqDictCategoryUpdate = useRequest(\r\n (params: any) =>\r\n req(`${base}/v1/system/dict/type`, {\r\n headers: getHeader(appEnName),\r\n method: 'PUT',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 删除字典类型\r\n const reqDictCategoryDel = useRequest(\r\n ids =>\r\n req(`${base}/v1/system/dict/type/${ids}`, {\r\n headers: getHeader(appEnName),\r\n method: 'DELETE'\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n /********************************************* 字典详情接口 **********************************************/\r\n\r\n // 查询字典详情数据\r\n const reqDictDetailById = useRequest(\r\n (params = { pageNum: 1, pageSize: 10 }) =>\r\n req(`${base}/v1/system/dict/data/listByType?${qs(params)}`, {\r\n headers: getHeader(appEnName)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 新增字典详情\r\n const reqDictDetailAdd = useRequest(\r\n params =>\r\n req(`${base}/v1/system/dict/data`, {\r\n headers: getHeader(appEnName),\r\n method: 'POST',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 修改字典详情\r\n const reqDictDetailUpdate = useRequest(\r\n (params: any) =>\r\n req(`${base}/v1/system/dict/data`, {\r\n headers: getHeader(appEnName),\r\n method: 'PUT',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 删除字典详情\r\n const reqDictDetailDel = useRequest(\r\n ids =>\r\n req(`${base}/v1/system/dict/data/${ids}`, {\r\n headers: getHeader(appEnName),\r\n method: 'DELETE'\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n return {\r\n reqDictCategoryList,\r\n reqDictCategoryAdd,\r\n reqDictCategoryUpdate,\r\n reqDictCategoryDel,\r\n reqDictDetailById,\r\n reqDictDetailAdd,\r\n reqDictDetailUpdate,\r\n reqDictDetailDel\r\n }\r\n}\r\n","import {\r\n ActionType,\r\n EditableFormInstance,\r\n EditableProTable,\r\n ProColumns\r\n} from '@ant-design/pro-components'\r\nimport { useDebounceFn } from 'ahooks'\r\nimport { Button, Drawer, Input, message, Popconfirm, Tag } from 'antd'\r\nimport { SortOrder } from 'antd/es/table/interface'\r\nimport { Key, useRef, useState } from 'react'\r\nimport useService from '../../../hooks/useService'\r\n\r\ninterface Props {\r\n appCode: string\r\n baseUrl: string\r\n id: string\r\n name: string\r\n open: boolean\r\n onClose: () => void\r\n}\r\nexport default function DictManage(props: Props) {\r\n const { appCode, baseUrl, id, name, open, onClose } = props\r\n\r\n const [editableKeys, setEditableRowKeys] = useState<Key[]>([])\r\n const [selectedRows, setSelectedRows] = useState<any[]>([])\r\n const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])\r\n const [dictLabel, setDictLabel] = useState('')\r\n const actionRef = useRef<ActionType>(null)\r\n const editorFormRef = useRef<EditableFormInstance>(null)\r\n\r\n const {\r\n reqDictDetailById,\r\n reqDictDetailAdd,\r\n reqDictDetailUpdate,\r\n reqDictDetailDel\r\n } = useService(appCode, baseUrl)\r\n\r\n const columns: ProColumns[] = [\r\n {\r\n title: 'id',\r\n dataIndex: 'id',\r\n hideInTable: true\r\n },\r\n {\r\n title: '字典名称',\r\n dataIndex: 'dictLabel',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典名称为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '字典值',\r\n dataIndex: 'dictValue',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典值为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '排序',\r\n dataIndex: 'dictSort',\r\n width: 100\r\n },\r\n {\r\n title: '备注',\r\n dataIndex: 'remark'\r\n },\r\n {\r\n title: '字典类型',\r\n dataIndex: 'dictType',\r\n width: 100,\r\n editable: false\r\n },\r\n {\r\n title: '创建人',\r\n dataIndex: 'createBy',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '创建时间',\r\n dataIndex: 'createTime',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '操作',\r\n dataIndex: 'action',\r\n valueType: 'option',\r\n width: 200,\r\n render: (_, record) => [\r\n <Tag\r\n key=\"editable\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer mr-1 py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.startEditable?.(record.id)}\r\n >\r\n 编辑\r\n </Tag>,\r\n <Popconfirm\r\n title=\"确定删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictDetailDel.loading}\r\n onConfirm={() => {\r\n reqDictDetailDel.runAsync(record.id).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n }}\r\n >\r\n <Tag\r\n key=\"delete\"\r\n variant=\"outlined\"\r\n color=\"red\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n >\r\n 删除\r\n </Tag>\r\n </Popconfirm>\r\n ]\r\n }\r\n ]\r\n\r\n const actionRender = (row: any, config: any, defaultDom: any) => {\r\n return [\r\n <Tag\r\n key=\"save\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n disabled={reqDictDetailAdd.loading || reqDictDetailUpdate.loading}\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={async () => {\r\n await editorFormRef.current?.validateFields()\r\n if (row.id.toString().startsWith('_')) {\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictDetailAdd\r\n .runAsync({ ...editRow, dictType: id })\r\n .then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.cancelEditable(row.id)\r\n actionRef.current?.reload()\r\n message.success('添加成功')\r\n }\r\n })\r\n return\r\n }\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictDetailUpdate\r\n .runAsync({ ...editRow, id: row.id, dictType: row.dictType })\r\n .then(res => {\r\n if (res.code === 200) {\r\n // editorFormRef.current?.setRowData?.(row.id, editRow)\r\n actionRef.current?.reload()\r\n actionRef.current?.cancelEditable?.(row.id)\r\n message.success('修改成功')\r\n }\r\n })\r\n }}\r\n >\r\n 保存\r\n </Tag>,\r\n <Tag\r\n key=\"cancel\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.cancelEditable?.(row.id)}\r\n >\r\n 取消\r\n </Tag>\r\n ]\r\n }\r\n\r\n const asyncReq: any = async (\r\n params: {\r\n pageSize: number\r\n current: number\r\n [key: string]: any\r\n },\r\n sort: Record<string, SortOrder>,\r\n filter: Record<string, (string | number)[] | null>\r\n ) => {\r\n if (!open) {\r\n return {\r\n data: [],\r\n success: true,\r\n total: 0\r\n }\r\n }\r\n const res = await reqDictDetailById.runAsync({\r\n dictType: id,\r\n dictLabel,\r\n page: params.current ?? 1,\r\n pageSize: params.pageSize ?? 10\r\n })\r\n return {\r\n data: res.rows,\r\n success: true,\r\n total: res.total\r\n }\r\n }\r\n\r\n const onChangeDictLabelDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictLabel(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n // useEffect(() => {\r\n // if (open && Boolean(id)) {\r\n // reqDictDetailById.runAsync(id).then(res => {\r\n // if (res.code === 200) {\r\n // setDataSource(res.data)\r\n // }\r\n // })\r\n // }\r\n // }, [open, id])\r\n\r\n return (\r\n <Drawer\r\n title={`【${name}】字典详情列表`}\r\n open={open}\r\n onClose={onClose}\r\n width={'90vw'}\r\n >\r\n <div className=\"gap-2 flex justify-end mb-4\">\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictLabelDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典名称\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Popconfirm\r\n title=\"确定要批量删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictDetailDel.loading}\r\n onConfirm={() => {\r\n const idsArray = selectedRowKeys\r\n if (idsArray.length > 0) {\r\n reqDictDetailDel.runAsync(idsArray.join(',')).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n } else {\r\n message.warning('请选择要删除的项')\r\n }\r\n }}\r\n >\r\n <Button color=\"danger\" variant=\"solid\">\r\n 批量删除\r\n </Button>\r\n </Popconfirm>\r\n <Button\r\n type=\"primary\"\r\n variant=\"solid\"\r\n onClick={() =>\r\n actionRef.current?.addEditRecord({\r\n id: `_${(Math.random() * 1000000).toFixed(0)}`\r\n })\r\n }\r\n >\r\n 新增\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n variant=\"solid\"\r\n onClick={() => actionRef.current?.reload()}\r\n >\r\n 刷新\r\n </Button>\r\n </div>\r\n <EditableProTable\r\n params={{ id, open, dictLabel }}\r\n bordered\r\n debounceTime={300}\r\n actionRef={actionRef}\r\n request={asyncReq}\r\n // name=\"lowcode-table\"\r\n columns={columns}\r\n rowKey={'id'}\r\n editableFormRef={editorFormRef}\r\n editable={{\r\n type: 'single',\r\n editableKeys,\r\n onChange: setEditableRowKeys,\r\n actionRender\r\n }}\r\n sticky={true}\r\n recordCreatorProps={false}\r\n tableAlertRender={false}\r\n pagination={{\r\n placement: 'bottomRight' as any,\r\n defaultPageSize: 10,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n showTotal: (total, range) =>\r\n `第 ${range[0]}-${range[1]} 条,共 ${total} 条`,\r\n showSizeChanger: true,\r\n showQuickJumper: true\r\n }}\r\n search={false}\r\n rowSelection={{\r\n selectedRowKeys,\r\n onChange(selectedRowKeys, selectedRows, info) {\r\n setSelectedRowKeys(selectedRowKeys)\r\n setSelectedRows(selectedRows)\r\n },\r\n columnWidth: 50,\r\n fixed: true\r\n }}\r\n scroll={{\r\n x: 'max-content',\r\n y: 'auto',\r\n scrollToFirstRowOnChange: false\r\n }}\r\n showSorterTooltip={true}\r\n />\r\n </Drawer>\r\n )\r\n}\r\n","import {\r\n ActionType,\r\n EditableFormInstance,\r\n EditableProTable,\r\n ProColumns\r\n} from '@ant-design/pro-components'\r\nimport { useDebounceFn } from 'ahooks'\r\nimport { Button, Input, message, Popconfirm, Tag } from 'antd'\r\nimport { SortOrder } from 'antd/es/table/interface'\r\nimport { Key, useRef, useState } from 'react'\r\nimport { Props } from '..'\r\nimport useService from '../../../hooks/useService'\r\nimport DictManage from '../dict-manage/indext'\r\n\r\nexport default function (props: Props) {\r\n const { appCode, baseUrl } = props\r\n const [editableKeys, setEditableRowKeys] = useState<Key[]>([])\r\n const [selectedRows, setSelectedRows] = useState<any[]>([])\r\n const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])\r\n const [dictName, setDictName] = useState('')\r\n const [dictType, setDictType] = useState('')\r\n const [detailOpen, setDetailOpen] = useState(false)\r\n const [detailId, setDetailId] = useState('')\r\n const [detailName, setDetailName] = useState('')\r\n const actionRef = useRef<ActionType>(null)\r\n const editorFormRef = useRef<EditableFormInstance>(null)\r\n\r\n const {\r\n reqDictCategoryList,\r\n reqDictCategoryUpdate,\r\n reqDictCategoryAdd,\r\n reqDictCategoryDel\r\n } = useService(appCode, baseUrl)\r\n\r\n const columns: ProColumns[] = [\r\n {\r\n title: 'id',\r\n dataIndex: 'id',\r\n hideInTable: true\r\n },\r\n {\r\n title: '字典类型',\r\n dataIndex: 'dictName',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典类型为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '字典编码',\r\n dataIndex: 'dictType',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典编码为必填项'\r\n },\r\n {\r\n pattern: /^[a-zA-Z_][a-zA-Z0-9_]*$/,\r\n message: '字典编码只能包含字母、数字、下划线,且不能以数字开头'\r\n }\r\n ]\r\n },\r\n render(dom, entity, index, action, schema) {\r\n return (\r\n <span\r\n className=\"cursor-pointer underline text-green-600\"\r\n onClick={() => {\r\n setDetailId(entity['dictType'])\r\n setDetailName(entity['dictName'])\r\n setDetailOpen(true)\r\n }}\r\n >\r\n {dom}\r\n </span>\r\n )\r\n },\r\n width: 200\r\n },\r\n // {\r\n // title: '状态',\r\n // dataIndex: 'status'\r\n // },\r\n {\r\n title: '字典备注',\r\n dataIndex: 'remark'\r\n },\r\n {\r\n title: '创建人',\r\n dataIndex: 'createBy',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '创建时间',\r\n dataIndex: 'createTime',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '操作',\r\n dataIndex: 'action',\r\n valueType: 'option',\r\n width: 200,\r\n render: (_, record) => [\r\n <Tag\r\n key=\"editable\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer mr-1 py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.startEditable?.(record.id)}\r\n >\r\n 编辑\r\n </Tag>,\r\n <Popconfirm\r\n title=\"确定删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n onConfirm={() => {\r\n reqDictCategoryDel.runAsync(record.id).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n }}\r\n >\r\n <Tag\r\n key=\"delete\"\r\n variant=\"outlined\"\r\n color=\"red\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n >\r\n 删除\r\n </Tag>\r\n </Popconfirm>,\r\n <Tag\r\n key=\"detail\"\r\n variant=\"outlined\"\r\n color=\"green\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => {\r\n setDetailId(record.dictType)\r\n setDetailName(record.dictName)\r\n setDetailOpen(true)\r\n }}\r\n >\r\n 字典数据\r\n </Tag>\r\n ]\r\n }\r\n ]\r\n\r\n const actionRender = (row: any, config: any, defaultDom: any) => {\r\n return [\r\n <Tag\r\n key=\"save\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n disabled={reqDictCategoryAdd.loading || reqDictCategoryUpdate.loading}\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={async () => {\r\n await editorFormRef.current?.validateFields()\r\n if (row.id.toString().startsWith('_')) {\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictCategoryAdd.runAsync(editRow).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.cancelEditable(row.id)\r\n actionRef.current?.reload()\r\n message.success('添加成功')\r\n }\r\n })\r\n return\r\n }\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictCategoryUpdate\r\n .runAsync({ ...editRow, id: row.id })\r\n .then(res => {\r\n if (res.code === 200) {\r\n // editorFormRef.current?.setRowData?.(row.id, editRow)\r\n actionRef.current?.reload()\r\n actionRef.current?.cancelEditable?.(row.id)\r\n message.success('修改成功')\r\n }\r\n })\r\n }}\r\n >\r\n 保存\r\n </Tag>,\r\n <Tag\r\n key=\"cancel\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.cancelEditable?.(row.id)}\r\n >\r\n 取消\r\n </Tag>\r\n ]\r\n }\r\n\r\n const asyncReq: any = async (\r\n params: {\r\n pageSize: number\r\n current: number\r\n [key: string]: any\r\n },\r\n sort: Record<string, SortOrder>,\r\n filter: Record<string, (string | number)[] | null>\r\n ) => {\r\n const res = await reqDictCategoryList.runAsync({\r\n pageNum: params.current ?? 1,\r\n pageSize: params.pageSize ?? 10,\r\n dictName,\r\n dictType\r\n })\r\n return {\r\n data: res.rows,\r\n success: true,\r\n total: res.total\r\n }\r\n }\r\n\r\n const onChangeDictNameDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictName(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n const onChangeDictTypeDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictType(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n return (\r\n <>\r\n <div className=\"gap-2 flex justify-end mb-4\">\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictNameDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典类型\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictTypeDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典编码\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Popconfirm\r\n title=\"确定要批量删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictCategoryDel.loading}\r\n onConfirm={() => {\r\n const idsArray = selectedRowKeys\r\n if (idsArray.length > 0) {\r\n reqDictCategoryDel.runAsync(idsArray.join(',')).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n } else {\r\n message.warning('请选择要删除的项')\r\n }\r\n }}\r\n >\r\n <Button color=\"danger\" variant=\"solid\">\r\n 批量删除\r\n </Button>\r\n </Popconfirm>\r\n <Button\r\n type=\"primary\"\r\n onClick={() =>\r\n actionRef.current?.addEditRecord({\r\n id: `_${(Math.random() * 1000000).toFixed(0)}`\r\n })\r\n }\r\n >\r\n 新增\r\n </Button>\r\n <Button type=\"primary\" onClick={() => actionRef.current?.reload()}>\r\n 刷新\r\n </Button>\r\n </div>\r\n <EditableProTable\r\n bordered\r\n params={{ dictName, dictType }}\r\n debounceTime={300}\r\n request={asyncReq}\r\n actionRef={actionRef}\r\n columns={columns}\r\n rowKey={'id'}\r\n editableFormRef={editorFormRef}\r\n editable={{\r\n type: 'single',\r\n editableKeys,\r\n onChange: setEditableRowKeys,\r\n actionRender\r\n }}\r\n sticky={true}\r\n recordCreatorProps={false}\r\n tableAlertRender={false}\r\n pagination={{\r\n placement: 'bottomRight' as any,\r\n defaultPageSize: 10,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n showTotal: (total, range) =>\r\n `第 ${range[0]}-${range[1]} 条,共 ${total} 条`,\r\n showSizeChanger: true,\r\n showQuickJumper: true\r\n }}\r\n // 关闭搜索栏\r\n search={false}\r\n rowSelection={{\r\n selectedRowKeys,\r\n onChange(selectedRowKeys, selectedRows, info) {\r\n setSelectedRowKeys(selectedRowKeys)\r\n setSelectedRows(selectedRows)\r\n },\r\n columnWidth: 50,\r\n fixed: true\r\n }}\r\n scroll={{\r\n x: 'max-content',\r\n y: 'auto',\r\n scrollToFirstRowOnChange: false\r\n }}\r\n showSorterTooltip={true}\r\n form={{ ignoreRules: false }}\r\n />\r\n <DictManage\r\n appCode={appCode}\r\n baseUrl={baseUrl}\r\n id={detailId}\r\n name={detailName}\r\n open={detailOpen}\r\n onClose={() => setDetailOpen(false)}\r\n />\r\n </>\r\n )\r\n}\r\n","import DictCategory from './dict-category'\r\n\r\nexport interface Props {\r\n appCode: string\r\n baseUrl: string\r\n}\r\nexport default function Dict(props: Props) {\r\n const { appCode, baseUrl = '/' } = props\r\n return (\r\n <div className=\"dict-manage-wrapper w-full h-full\">\r\n <DictCategory appCode={appCode} baseUrl={baseUrl} />\r\n </div>\r\n )\r\n}\r\n"],"names":["getHeader","appEnName","qs","params","key","req","url","options","resJson","timeout","controller","timer","headers","rest","defaultHeaders","response","notification","data","error","useService","baseUrl","base","reqDictCategoryList","useRequest","reqDictCategoryAdd","reqDictCategoryUpdate","reqDictCategoryDel","ids","reqDictDetailById","reqDictDetailAdd","reqDictDetailUpdate","reqDictDetailDel","DictManage","props","appCode","id","name","open","onClose","editableKeys","setEditableRowKeys","useState","selectedRows","setSelectedRows","selectedRowKeys","setSelectedRowKeys","dictLabel","setDictLabel","actionRef","useRef","editorFormRef","columns","_","record","jsx","Tag","Popconfirm","res","message","actionRender","row","config","defaultDom","editRow","asyncReq","sort","filter","onChangeDictLabelDebounced","useDebounceFn","info","jsxs","Drawer","Input","e","idsArray","Button","EditableProTable","total","range","DictCategory","dictName","setDictName","dictType","setDictType","detailOpen","setDetailOpen","detailId","setDetailId","detailName","setDetailName","dom","entity","index","action","schema","onChangeDictNameDebounced","onChangeDictTypeDebounced","Fragment","Dict"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ (function(){ try {var elementStyle = document.createElement('style'); elementStyle.appendChild(document.createTextNode("")); document.head.appendChild(elementStyle);} catch(e) {console.error('vite-plugin-css-injected-by-js', e);} })();(function(h,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("@ant-design/pro-components"),require("ahooks"),require("antd"),require("react")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@ant-design/pro-components","ahooks","antd","react"],e):(h=typeof globalThis<"u"?globalThis:h||self,e(h.SGLowCodeUi={},h["react/jsx-runtime"],h.AntdProComponent,h.ahooks,h.antd,h.react))})(this,(function(h,e,F,y,t,c){"use strict";function D(s){return{Authorization:JSON.parse(localStorage.getItem(`${s}_TOKEN`)??'"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJsb2dpbl91c2VyIjp7InVzZXJJZCI6NDkzMjIxMywidXNlcm5hbWUiOiLkuo7mtKrljY4iLCJqb2JOdW1iZXIiOiIxMDA2NDkxMSIsInBob25lIjoiMTgzNTI3OTE0ODkiLCJzZXgiOjAsIm1zb0xpbWl0IjpmYWxzZSwicGVybWlzc2lvbnMiOltdfSwiZXhwIjoxNzY1MTU3MjU4fQ.GrH8Pp7XtFN81OGK8m3ys99dPkDPAEybJXJlWJADZtf33DcwpLczqJLy6kjAwzC8Axb8wDWZ9CzKQ5BaaAuJ4LyxN-B4EjUypFjyXOwrhGliUJXGb1KcPHe3zDEr0fJCKfAnClVxhG0VZKLejsABtaoTxa_SV3N-zpagw3032mQ"')}}function U(s){return Object.keys(s).map(d=>`${d}=${s[d]}`).join("&")}const f=async(s,d,n=!0)=>{const{timeout:w=5e3}=d,b=new AbortController,x=setTimeout(()=>b.abort(),w),{headers:S,...C}=d,v={"Content-Type":"application/json",...S};try{const o=await fetch(s,{headers:v,...C,signal:b.signal});if(clearTimeout(x),!o.ok)throw t.notification.error({title:o.status,description:o.statusText}),new Error(`HTTP Error: ${o.status} ${o.statusText}`);const m=await(n?o.json():o.blob());if(n&&m.code!==200)throw t.notification.warning({title:m.code,description:m.msg}),new Error(m.message);return m}catch(o){throw b.abort(),o instanceof Error&&o.name==="AbortError"&&t.notification.error({title:"请求出错",description:"请求超时,请检查网络连接"}),clearTimeout(x),new Error("request failed")}};function R(s,d){const n=`${d}${s}`,w=y.useRequest((a={pageNum:1,pageSize:10})=>f(`${n}/v1/system/dict/type/list?${U(a)}`,{headers:D(s)}),{manual:!0}),b=y.useRequest(a=>f(`${n}/v1/system/dict/type`,{headers:D(s),method:"POST",body:JSON.stringify(a)}),{manual:!0}),x=y.useRequest(a=>f(`${n}/v1/system/dict/type`,{headers:D(s),method:"PUT",body:JSON.stringify(a)}),{manual:!0}),S=y.useRequest(a=>f(`${n}/v1/system/dict/type/${a}`,{headers:D(s),method:"DELETE"}),{manual:!0}),C=y.useRequest((a={pageNum:1,pageSize:10})=>f(`${n}/v1/system/dict/data/listByType?${U(a)}`,{headers:D(s)}),{manual:!0}),v=y.useRequest(a=>f(`${n}/v1/system/dict/data`,{headers:D(s),method:"POST",body:JSON.stringify(a)}),{manual:!0}),o=y.useRequest(a=>f(`${n}/v1/system/dict/data`,{headers:D(s),method:"PUT",body:JSON.stringify(a)}),{manual:!0}),m=y.useRequest(a=>f(`${n}/v1/system/dict/data/${a}`,{headers:D(s),method:"DELETE"}),{manual:!0});return{reqDictCategoryList:w,reqDictCategoryAdd:b,reqDictCategoryUpdate:x,reqDictCategoryDel:S,reqDictDetailById:C,reqDictDetailAdd:v,reqDictDetailUpdate:o,reqDictDetailDel:m}}function W(s){const{appCode:d,baseUrl:n,id:w,name:b,open:x,onClose:S}=s,[C,v]=c.useState([]),[o,m]=c.useState([]),[a,M]=c.useState([]),[J,z]=c.useState(""),p=c.useRef(null),I=c.useRef(null),{reqDictDetailById:B,reqDictDetailAdd:A,reqDictDetailUpdate:u,reqDictDetailDel:T}=R(d,n),K=[{title:"id",dataIndex:"id",hideInTable:!0},{title:"字典名称",dataIndex:"dictLabel",formItemProps:{rules:[{required:!0,message:"字典名称为必填项"}]},width:200},{title:"字典值",dataIndex:"dictValue",formItemProps:{rules:[{required:!0,message:"字典值为必填项"}]},width:200},{title:"排序",dataIndex:"dictSort",width:100},{title:"备注",dataIndex:"remark"},{title:"字典类型",dataIndex:"dictType",width:100,editable:!1},{title:"创建人",dataIndex:"createBy",editable:!1,width:200},{title:"创建时间",dataIndex:"createTime",editable:!1,width:200},{title:"操作",dataIndex:"action",valueType:"option",width:200,render:(i,g)=>[e.jsx(t.Tag,{color:"blue",variant:"outlined",className:"cursor-pointer mr-1 py-[3px] leading-[1.2rem]",onClick:()=>p.current?.startEditable?.(g.id),children:"编辑"},"editable"),e.jsx(t.Popconfirm,{title:"确定删除吗?",okText:"确定",cancelText:"取消",disabled:T.loading,onConfirm:()=>{T.runAsync(g.id).then(q=>{q.code===200&&(p.current?.reload(),t.message.success("删除成功"))})},children:e.jsx(t.Tag,{variant:"outlined",color:"red",className:"cursor-pointer py-[3px] leading-[1.2rem]",children:"删除"},"delete")})]}],E=(i,g,q)=>[e.jsx(t.Tag,{color:"blue",variant:"outlined",disabled:A.loading||u.loading,className:"cursor-pointer py-[3px] leading-[1.2rem]",onClick:async()=>{if(await I.current?.validateFields(),i.id.toString().startsWith("_")){const O=I.current?.getRowData?.(i.id);A.runAsync({...O,dictType:w}).then(r=>{r.code===200&&(p.current?.cancelEditable(i.id),p.current?.reload(),t.message.success("添加成功"))});return}const N=I.current?.getRowData?.(i.id);u.runAsync({...N,id:i.id,dictType:i.dictType}).then(O=>{O.code===200&&(p.current?.reload(),p.current?.cancelEditable?.(i.id),t.message.success("修改成功"))})},children:"保存"},"save"),e.jsx(t.Tag,{variant:"outlined",className:"cursor-pointer py-[3px] leading-[1.2rem]",onClick:()=>p.current?.cancelEditable?.(i.id),children:"取消"},"cancel")],k=async(i,g,q)=>{if(!x)return{data:[],success:!0,total:0};const N=await B.runAsync({dictType:w,dictLabel:J,page:i.current??1,pageSize:i.pageSize??10});return{data:N.rows,success:!0,total:N.total}},$=y.useDebounceFn(i=>{z(i)},{wait:500});return e.jsxs(t.Drawer,{title:`【${b}】字典详情列表`,open:x,onClose:S,width:"90vw",children:[e.jsxs("div",{className:"gap-2 flex justify-end mb-4",children:[e.jsx(t.Input,{className:"mr-1 w-[200px]",onChange:i=>$.run(i.target.value),placeholder:"搜索字典名称",allowClear:!0,prefix:e.jsx("svg",{className:"icon w-[12px] h-[12px]",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"4820",width:"50",height:"50",children:e.jsx("path",{d:"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z","p-id":"4821",fill:"#999"})})}),e.jsx(t.Popconfirm,{title:"确定要批量删除吗?",okText:"确定",cancelText:"取消",disabled:T.loading,onConfirm:()=>{const i=a;i.length>0?T.runAsync(i.join(",")).then(g=>{g.code===200&&(p.current?.reload(),t.message.success("删除成功"))}):t.message.warning("请选择要删除的项")},children:e.jsx(t.Button,{color:"danger",variant:"solid",children:"批量删除"})}),e.jsx(t.Button,{type:"primary",variant:"solid",onClick:()=>p.current?.addEditRecord({id:`_${(Math.random()*1e6).toFixed(0)}`}),children:"新增"}),e.jsx(t.Button,{type:"primary",variant:"solid",onClick:()=>p.current?.reload(),children:"刷新"})]}),e.jsx(F.EditableProTable,{params:{id:w,open:x,dictLabel:J},bordered:!0,debounceTime:300,actionRef:p,request:k,columns:K,rowKey:"id",editableFormRef:I,editable:{type:"single",editableKeys:C,onChange:v,actionRender:E},sticky:!0,recordCreatorProps:!1,tableAlertRender:!1,pagination:{placement:"bottomRight",defaultPageSize:10,pageSizeOptions:[10,20,50,100],showTotal:(i,g)=>`第 ${g[0]}-${g[1]} 条,共 ${i} 条`,showSizeChanger:!0,showQuickJumper:!0},search:!1,rowSelection:{selectedRowKeys:a,onChange(i,g,q){M(i),m(g)},columnWidth:50,fixed:!0},scroll:{x:"max-content",y:"auto",scrollToFirstRowOnChange:!1},showSorterTooltip:!0})]})}function Z(s){const{appCode:d,baseUrl:n}=s,[w,b]=c.useState([]),[x,S]=c.useState([]),[C,v]=c.useState([]),[o,m]=c.useState(""),[a,M]=c.useState(""),[J,z]=c.useState(!1),[p,I]=c.useState(""),[B,A]=c.useState(""),u=c.useRef(null),T=c.useRef(null),{reqDictCategoryList:K,reqDictCategoryUpdate:E,reqDictCategoryAdd:k,reqDictCategoryDel:$}=R(d,n),i=[{title:"id",dataIndex:"id",hideInTable:!0},{title:"字典类型",dataIndex:"dictName",formItemProps:{rules:[{required:!0,message:"字典类型为必填项"}]},width:200},{title:"字典编码",dataIndex:"dictType",formItemProps:{rules:[{required:!0,message:"字典编码为必填项"},{pattern:/^[a-zA-Z_][a-zA-Z0-9_]*$/,message:"字典编码只能包含字母、数字、下划线,且不能以数字开头"}]},render(r,l,j,P,L){return e.jsx("span",{className:"cursor-pointer underline text-green-600",onClick:()=>{I(l.dictType),A(l.dictName),z(!0)},children:r})},width:200},{title:"字典备注",dataIndex:"remark"},{title:"创建人",dataIndex:"createBy",editable:!1,width:200},{title:"创建时间",dataIndex:"createTime",editable:!1,width:200},{title:"操作",dataIndex:"action",valueType:"option",width:200,render:(r,l)=>[e.jsx(t.Tag,{color:"blue",variant:"outlined",className:"cursor-pointer mr-1 py-[3px] leading-[1.2rem]",onClick:()=>u.current?.startEditable?.(l.id),children:"编辑"},"editable"),e.jsx(t.Popconfirm,{title:"确定删除吗?",okText:"确定",cancelText:"取消",onConfirm:()=>{$.runAsync(l.id).then(j=>{j.code===200&&(u.current?.reload(),t.message.success("删除成功"))})},children:e.jsx(t.Tag,{variant:"outlined",color:"red",className:"cursor-pointer py-[3px] leading-[1.2rem]",children:"删除"},"delete")}),e.jsx(t.Tag,{variant:"outlined",color:"green",className:"cursor-pointer py-[3px] leading-[1.2rem]",onClick:()=>{I(l.dictType),A(l.dictName),z(!0)},children:"字典数据"},"detail")]}],g=(r,l,j)=>[e.jsx(t.Tag,{color:"blue",variant:"outlined",disabled:k.loading||E.loading,className:"cursor-pointer py-[3px] leading-[1.2rem]",onClick:async()=>{if(await T.current?.validateFields(),r.id.toString().startsWith("_")){const L=T.current?.getRowData?.(r.id);k.runAsync(L).then(_=>{_.code===200&&(u.current?.cancelEditable(r.id),u.current?.reload(),t.message.success("添加成功"))});return}const P=T.current?.getRowData?.(r.id);E.runAsync({...P,id:r.id}).then(L=>{L.code===200&&(u.current?.reload(),u.current?.cancelEditable?.(r.id),t.message.success("修改成功"))})},children:"保存"},"save"),e.jsx(t.Tag,{variant:"outlined",className:"cursor-pointer py-[3px] leading-[1.2rem]",onClick:()=>u.current?.cancelEditable?.(r.id),children:"取消"},"cancel")],q=async(r,l,j)=>{const P=await K.runAsync({pageNum:r.current??1,pageSize:r.pageSize??10,dictName:o,dictType:a});return{data:P.rows,success:!0,total:P.total}},N=y.useDebounceFn(r=>{m(r)},{wait:500}),O=y.useDebounceFn(r=>{M(r)},{wait:500});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"gap-2 flex justify-end mb-4",children:[e.jsx(t.Input,{className:"mr-1 w-[200px]",onChange:r=>N.run(r.target.value),placeholder:"搜索字典类型",allowClear:!0,prefix:e.jsx("svg",{className:"icon w-[12px] h-[12px]",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"4820",width:"50",height:"50",children:e.jsx("path",{d:"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z","p-id":"4821",fill:"#999"})})}),e.jsx(t.Input,{className:"mr-1 w-[200px]",onChange:r=>O.run(r.target.value),placeholder:"搜索字典编码",allowClear:!0,prefix:e.jsx("svg",{className:"icon w-[12px] h-[12px]",viewBox:"0 0 1024 1024",version:"1.1",xmlns:"http://www.w3.org/2000/svg","p-id":"4820",width:"50",height:"50",children:e.jsx("path",{d:"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z","p-id":"4821",fill:"#999"})})}),e.jsx(t.Popconfirm,{title:"确定要批量删除吗?",okText:"确定",cancelText:"取消",disabled:$.loading,onConfirm:()=>{const r=C;r.length>0?$.runAsync(r.join(",")).then(l=>{l.code===200&&(u.current?.reload(),t.message.success("删除成功"))}):t.message.warning("请选择要删除的项")},children:e.jsx(t.Button,{color:"danger",variant:"solid",children:"批量删除"})}),e.jsx(t.Button,{type:"primary",onClick:()=>u.current?.addEditRecord({id:`_${(Math.random()*1e6).toFixed(0)}`}),children:"新增"}),e.jsx(t.Button,{type:"primary",onClick:()=>u.current?.reload(),children:"刷新"})]}),e.jsx(F.EditableProTable,{bordered:!0,params:{dictName:o,dictType:a},debounceTime:300,request:q,actionRef:u,columns:i,rowKey:"id",editableFormRef:T,editable:{type:"single",editableKeys:w,onChange:b,actionRender:g},sticky:!0,recordCreatorProps:!1,tableAlertRender:!1,pagination:{placement:"bottomRight",defaultPageSize:10,pageSizeOptions:[10,20,50,100],showTotal:(r,l)=>`第 ${l[0]}-${l[1]} 条,共 ${r} 条`,showSizeChanger:!0,showQuickJumper:!0},search:!1,rowSelection:{selectedRowKeys:C,onChange(r,l,j){v(r),S(l)},columnWidth:50,fixed:!0},scroll:{x:"max-content",y:"auto",scrollToFirstRowOnChange:!1},showSorterTooltip:!0,form:{ignoreRules:!1}}),e.jsx(W,{appCode:d,baseUrl:n,id:p,name:B,open:J,onClose:()=>z(!1)})]})}function X(s){const{appCode:d,baseUrl:n="/"}=s;return e.jsx("div",{className:"dict-manage-wrapper w-full h-full",children:e.jsx(Z,{appCode:d,baseUrl:n})})}h.DictModule=X,h.Request=f,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
2
+ //# sourceMappingURL=sg-lowcode-ui.umd.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sg-lowcode-ui.umd.cjs","sources":["../lib/utils/index.ts","../lib/utils/req.ts","../lib/hooks/useService.ts","../lib/components/dict/dict-manage/indext.tsx","../lib/components/dict/dict-category/index.tsx","../lib/components/dict/index.tsx"],"sourcesContent":["export function getHeader(appEnName: string) {\r\n return {\r\n Authorization: JSON.parse(\r\n localStorage.getItem(`${appEnName}_TOKEN`) ??\r\n '\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJsb2dpbl91c2VyIjp7InVzZXJJZCI6NDkzMjIxMywidXNlcm5hbWUiOiLkuo7mtKrljY4iLCJqb2JOdW1iZXIiOiIxMDA2NDkxMSIsInBob25lIjoiMTgzNTI3OTE0ODkiLCJzZXgiOjAsIm1zb0xpbWl0IjpmYWxzZSwicGVybWlzc2lvbnMiOltdfSwiZXhwIjoxNzY1MTU3MjU4fQ.GrH8Pp7XtFN81OGK8m3ys99dPkDPAEybJXJlWJADZtf33DcwpLczqJLy6kjAwzC8Axb8wDWZ9CzKQ5BaaAuJ4LyxN-B4EjUypFjyXOwrhGliUJXGb1KcPHe3zDEr0fJCKfAnClVxhG0VZKLejsABtaoTxa_SV3N-zpagw3032mQ\"'\r\n )\r\n }\r\n}\r\n\r\nexport function qs(params: Record<string, string>) {\r\n return Object.keys(params)\r\n .map(key => `${key}=${params[key]}`)\r\n .join('&')\r\n}\r\n","import { notification } from 'antd'\r\nconst req = async (\r\n url: string,\r\n options: RequestInit & { timeout?: number },\r\n resJson: Boolean = true\r\n) => {\r\n const { timeout = 5000 } = options\r\n const controller = new AbortController()\r\n const timer = setTimeout(() => controller.abort(), timeout)\r\n const { headers, ...rest } = options\r\n const defaultHeaders = {\r\n 'Content-Type': 'application/json',\r\n ...headers\r\n }\r\n try {\r\n const response = await fetch(url, {\r\n ...{ headers: defaultHeaders, ...rest },\r\n signal: controller.signal\r\n })\r\n clearTimeout(timer)\r\n\r\n // 检查HTTP状态码,4xx/5xx等状态码需要处理\r\n if (!response.ok) {\r\n notification.error({\r\n title: response.status,\r\n description: response.statusText\r\n })\r\n throw new Error(`HTTP Error: ${response.status} ${response.statusText}`)\r\n }\r\n // 根据resJson标志处理响应数据\r\n const data = await (resJson ? response.json() : response.blob())\r\n if (resJson && data.code !== 200) {\r\n notification.warning({\r\n title: data.code,\r\n description: data.msg\r\n })\r\n throw new Error(data.message)\r\n }\r\n return data\r\n } catch (error) {\r\n controller.abort()\r\n if (error instanceof Error) {\r\n if (error.name === 'AbortError') {\r\n notification.error({\r\n title: '请求出错',\r\n description: '请求超时,请检查网络连接'\r\n })\r\n }\r\n }\r\n clearTimeout(timer)\r\n throw new Error('request failed')\r\n }\r\n}\r\n\r\nexport default req\r\n","import { useRequest } from 'ahooks'\r\nimport { getHeader, qs } from '../utils'\r\nimport req from '../utils/req'\r\nexport default function useService(appEnName: string, baseUrl: string) {\r\n const base = `${baseUrl}${appEnName}`\r\n\r\n // 分页查询\r\n const reqDictCategoryList = useRequest(\r\n (params = { pageNum: 1, pageSize: 10 }) =>\r\n req(`${base}/v1/system/dict/type/list?${qs(params)}`, {\r\n headers: getHeader(appEnName)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 新增字典类型\r\n const reqDictCategoryAdd = useRequest(\r\n params =>\r\n req(`${base}/v1/system/dict/type`, {\r\n headers: getHeader(appEnName),\r\n method: 'POST',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 修改字典类型\r\n const reqDictCategoryUpdate = useRequest(\r\n (params: any) =>\r\n req(`${base}/v1/system/dict/type`, {\r\n headers: getHeader(appEnName),\r\n method: 'PUT',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 删除字典类型\r\n const reqDictCategoryDel = useRequest(\r\n ids =>\r\n req(`${base}/v1/system/dict/type/${ids}`, {\r\n headers: getHeader(appEnName),\r\n method: 'DELETE'\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n /********************************************* 字典详情接口 **********************************************/\r\n\r\n // 查询字典详情数据\r\n const reqDictDetailById = useRequest(\r\n (params = { pageNum: 1, pageSize: 10 }) =>\r\n req(`${base}/v1/system/dict/data/listByType?${qs(params)}`, {\r\n headers: getHeader(appEnName)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 新增字典详情\r\n const reqDictDetailAdd = useRequest(\r\n params =>\r\n req(`${base}/v1/system/dict/data`, {\r\n headers: getHeader(appEnName),\r\n method: 'POST',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 修改字典详情\r\n const reqDictDetailUpdate = useRequest(\r\n (params: any) =>\r\n req(`${base}/v1/system/dict/data`, {\r\n headers: getHeader(appEnName),\r\n method: 'PUT',\r\n body: JSON.stringify(params)\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n // 删除字典详情\r\n const reqDictDetailDel = useRequest(\r\n ids =>\r\n req(`${base}/v1/system/dict/data/${ids}`, {\r\n headers: getHeader(appEnName),\r\n method: 'DELETE'\r\n }),\r\n {\r\n manual: true\r\n }\r\n )\r\n\r\n return {\r\n reqDictCategoryList,\r\n reqDictCategoryAdd,\r\n reqDictCategoryUpdate,\r\n reqDictCategoryDel,\r\n reqDictDetailById,\r\n reqDictDetailAdd,\r\n reqDictDetailUpdate,\r\n reqDictDetailDel\r\n }\r\n}\r\n","import {\r\n ActionType,\r\n EditableFormInstance,\r\n EditableProTable,\r\n ProColumns\r\n} from '@ant-design/pro-components'\r\nimport { useDebounceFn } from 'ahooks'\r\nimport { Button, Drawer, Input, message, Popconfirm, Tag } from 'antd'\r\nimport { SortOrder } from 'antd/es/table/interface'\r\nimport { Key, useRef, useState } from 'react'\r\nimport useService from '../../../hooks/useService'\r\n\r\ninterface Props {\r\n appCode: string\r\n baseUrl: string\r\n id: string\r\n name: string\r\n open: boolean\r\n onClose: () => void\r\n}\r\nexport default function DictManage(props: Props) {\r\n const { appCode, baseUrl, id, name, open, onClose } = props\r\n\r\n const [editableKeys, setEditableRowKeys] = useState<Key[]>([])\r\n const [selectedRows, setSelectedRows] = useState<any[]>([])\r\n const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])\r\n const [dictLabel, setDictLabel] = useState('')\r\n const actionRef = useRef<ActionType>(null)\r\n const editorFormRef = useRef<EditableFormInstance>(null)\r\n\r\n const {\r\n reqDictDetailById,\r\n reqDictDetailAdd,\r\n reqDictDetailUpdate,\r\n reqDictDetailDel\r\n } = useService(appCode, baseUrl)\r\n\r\n const columns: ProColumns[] = [\r\n {\r\n title: 'id',\r\n dataIndex: 'id',\r\n hideInTable: true\r\n },\r\n {\r\n title: '字典名称',\r\n dataIndex: 'dictLabel',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典名称为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '字典值',\r\n dataIndex: 'dictValue',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典值为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '排序',\r\n dataIndex: 'dictSort',\r\n width: 100\r\n },\r\n {\r\n title: '备注',\r\n dataIndex: 'remark'\r\n },\r\n {\r\n title: '字典类型',\r\n dataIndex: 'dictType',\r\n width: 100,\r\n editable: false\r\n },\r\n {\r\n title: '创建人',\r\n dataIndex: 'createBy',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '创建时间',\r\n dataIndex: 'createTime',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '操作',\r\n dataIndex: 'action',\r\n valueType: 'option',\r\n width: 200,\r\n render: (_, record) => [\r\n <Tag\r\n key=\"editable\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer mr-1 py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.startEditable?.(record.id)}\r\n >\r\n 编辑\r\n </Tag>,\r\n <Popconfirm\r\n title=\"确定删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictDetailDel.loading}\r\n onConfirm={() => {\r\n reqDictDetailDel.runAsync(record.id).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n }}\r\n >\r\n <Tag\r\n key=\"delete\"\r\n variant=\"outlined\"\r\n color=\"red\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n >\r\n 删除\r\n </Tag>\r\n </Popconfirm>\r\n ]\r\n }\r\n ]\r\n\r\n const actionRender = (row: any, config: any, defaultDom: any) => {\r\n return [\r\n <Tag\r\n key=\"save\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n disabled={reqDictDetailAdd.loading || reqDictDetailUpdate.loading}\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={async () => {\r\n await editorFormRef.current?.validateFields()\r\n if (row.id.toString().startsWith('_')) {\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictDetailAdd\r\n .runAsync({ ...editRow, dictType: id })\r\n .then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.cancelEditable(row.id)\r\n actionRef.current?.reload()\r\n message.success('添加成功')\r\n }\r\n })\r\n return\r\n }\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictDetailUpdate\r\n .runAsync({ ...editRow, id: row.id, dictType: row.dictType })\r\n .then(res => {\r\n if (res.code === 200) {\r\n // editorFormRef.current?.setRowData?.(row.id, editRow)\r\n actionRef.current?.reload()\r\n actionRef.current?.cancelEditable?.(row.id)\r\n message.success('修改成功')\r\n }\r\n })\r\n }}\r\n >\r\n 保存\r\n </Tag>,\r\n <Tag\r\n key=\"cancel\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.cancelEditable?.(row.id)}\r\n >\r\n 取消\r\n </Tag>\r\n ]\r\n }\r\n\r\n const asyncReq: any = async (\r\n params: {\r\n pageSize: number\r\n current: number\r\n [key: string]: any\r\n },\r\n sort: Record<string, SortOrder>,\r\n filter: Record<string, (string | number)[] | null>\r\n ) => {\r\n if (!open) {\r\n return {\r\n data: [],\r\n success: true,\r\n total: 0\r\n }\r\n }\r\n const res = await reqDictDetailById.runAsync({\r\n dictType: id,\r\n dictLabel,\r\n page: params.current ?? 1,\r\n pageSize: params.pageSize ?? 10\r\n })\r\n return {\r\n data: res.rows,\r\n success: true,\r\n total: res.total\r\n }\r\n }\r\n\r\n const onChangeDictLabelDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictLabel(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n // useEffect(() => {\r\n // if (open && Boolean(id)) {\r\n // reqDictDetailById.runAsync(id).then(res => {\r\n // if (res.code === 200) {\r\n // setDataSource(res.data)\r\n // }\r\n // })\r\n // }\r\n // }, [open, id])\r\n\r\n return (\r\n <Drawer\r\n title={`【${name}】字典详情列表`}\r\n open={open}\r\n onClose={onClose}\r\n width={'90vw'}\r\n >\r\n <div className=\"gap-2 flex justify-end mb-4\">\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictLabelDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典名称\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Popconfirm\r\n title=\"确定要批量删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictDetailDel.loading}\r\n onConfirm={() => {\r\n const idsArray = selectedRowKeys\r\n if (idsArray.length > 0) {\r\n reqDictDetailDel.runAsync(idsArray.join(',')).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n } else {\r\n message.warning('请选择要删除的项')\r\n }\r\n }}\r\n >\r\n <Button color=\"danger\" variant=\"solid\">\r\n 批量删除\r\n </Button>\r\n </Popconfirm>\r\n <Button\r\n type=\"primary\"\r\n variant=\"solid\"\r\n onClick={() =>\r\n actionRef.current?.addEditRecord({\r\n id: `_${(Math.random() * 1000000).toFixed(0)}`\r\n })\r\n }\r\n >\r\n 新增\r\n </Button>\r\n <Button\r\n type=\"primary\"\r\n variant=\"solid\"\r\n onClick={() => actionRef.current?.reload()}\r\n >\r\n 刷新\r\n </Button>\r\n </div>\r\n <EditableProTable\r\n params={{ id, open, dictLabel }}\r\n bordered\r\n debounceTime={300}\r\n actionRef={actionRef}\r\n request={asyncReq}\r\n // name=\"lowcode-table\"\r\n columns={columns}\r\n rowKey={'id'}\r\n editableFormRef={editorFormRef}\r\n editable={{\r\n type: 'single',\r\n editableKeys,\r\n onChange: setEditableRowKeys,\r\n actionRender\r\n }}\r\n sticky={true}\r\n recordCreatorProps={false}\r\n tableAlertRender={false}\r\n pagination={{\r\n placement: 'bottomRight' as any,\r\n defaultPageSize: 10,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n showTotal: (total, range) =>\r\n `第 ${range[0]}-${range[1]} 条,共 ${total} 条`,\r\n showSizeChanger: true,\r\n showQuickJumper: true\r\n }}\r\n search={false}\r\n rowSelection={{\r\n selectedRowKeys,\r\n onChange(selectedRowKeys, selectedRows, info) {\r\n setSelectedRowKeys(selectedRowKeys)\r\n setSelectedRows(selectedRows)\r\n },\r\n columnWidth: 50,\r\n fixed: true\r\n }}\r\n scroll={{\r\n x: 'max-content',\r\n y: 'auto',\r\n scrollToFirstRowOnChange: false\r\n }}\r\n showSorterTooltip={true}\r\n />\r\n </Drawer>\r\n )\r\n}\r\n","import {\r\n ActionType,\r\n EditableFormInstance,\r\n EditableProTable,\r\n ProColumns\r\n} from '@ant-design/pro-components'\r\nimport { useDebounceFn } from 'ahooks'\r\nimport { Button, Input, message, Popconfirm, Tag } from 'antd'\r\nimport { SortOrder } from 'antd/es/table/interface'\r\nimport { Key, useRef, useState } from 'react'\r\nimport { Props } from '..'\r\nimport useService from '../../../hooks/useService'\r\nimport DictManage from '../dict-manage/indext'\r\n\r\nexport default function (props: Props) {\r\n const { appCode, baseUrl } = props\r\n const [editableKeys, setEditableRowKeys] = useState<Key[]>([])\r\n const [selectedRows, setSelectedRows] = useState<any[]>([])\r\n const [selectedRowKeys, setSelectedRowKeys] = useState<any[]>([])\r\n const [dictName, setDictName] = useState('')\r\n const [dictType, setDictType] = useState('')\r\n const [detailOpen, setDetailOpen] = useState(false)\r\n const [detailId, setDetailId] = useState('')\r\n const [detailName, setDetailName] = useState('')\r\n const actionRef = useRef<ActionType>(null)\r\n const editorFormRef = useRef<EditableFormInstance>(null)\r\n\r\n const {\r\n reqDictCategoryList,\r\n reqDictCategoryUpdate,\r\n reqDictCategoryAdd,\r\n reqDictCategoryDel\r\n } = useService(appCode, baseUrl)\r\n\r\n const columns: ProColumns[] = [\r\n {\r\n title: 'id',\r\n dataIndex: 'id',\r\n hideInTable: true\r\n },\r\n {\r\n title: '字典类型',\r\n dataIndex: 'dictName',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典类型为必填项'\r\n }\r\n ]\r\n },\r\n width: 200\r\n },\r\n {\r\n title: '字典编码',\r\n dataIndex: 'dictType',\r\n formItemProps: {\r\n rules: [\r\n {\r\n required: true,\r\n message: '字典编码为必填项'\r\n },\r\n {\r\n pattern: /^[a-zA-Z_][a-zA-Z0-9_]*$/,\r\n message: '字典编码只能包含字母、数字、下划线,且不能以数字开头'\r\n }\r\n ]\r\n },\r\n render(dom, entity, index, action, schema) {\r\n return (\r\n <span\r\n className=\"cursor-pointer underline text-green-600\"\r\n onClick={() => {\r\n setDetailId(entity['dictType'])\r\n setDetailName(entity['dictName'])\r\n setDetailOpen(true)\r\n }}\r\n >\r\n {dom}\r\n </span>\r\n )\r\n },\r\n width: 200\r\n },\r\n // {\r\n // title: '状态',\r\n // dataIndex: 'status'\r\n // },\r\n {\r\n title: '字典备注',\r\n dataIndex: 'remark'\r\n },\r\n {\r\n title: '创建人',\r\n dataIndex: 'createBy',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '创建时间',\r\n dataIndex: 'createTime',\r\n editable: false,\r\n width: 200\r\n },\r\n {\r\n title: '操作',\r\n dataIndex: 'action',\r\n valueType: 'option',\r\n width: 200,\r\n render: (_, record) => [\r\n <Tag\r\n key=\"editable\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer mr-1 py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.startEditable?.(record.id)}\r\n >\r\n 编辑\r\n </Tag>,\r\n <Popconfirm\r\n title=\"确定删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n onConfirm={() => {\r\n reqDictCategoryDel.runAsync(record.id).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n }}\r\n >\r\n <Tag\r\n key=\"delete\"\r\n variant=\"outlined\"\r\n color=\"red\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n >\r\n 删除\r\n </Tag>\r\n </Popconfirm>,\r\n <Tag\r\n key=\"detail\"\r\n variant=\"outlined\"\r\n color=\"green\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => {\r\n setDetailId(record.dictType)\r\n setDetailName(record.dictName)\r\n setDetailOpen(true)\r\n }}\r\n >\r\n 字典数据\r\n </Tag>\r\n ]\r\n }\r\n ]\r\n\r\n const actionRender = (row: any, config: any, defaultDom: any) => {\r\n return [\r\n <Tag\r\n key=\"save\"\r\n color=\"blue\"\r\n variant=\"outlined\"\r\n disabled={reqDictCategoryAdd.loading || reqDictCategoryUpdate.loading}\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={async () => {\r\n await editorFormRef.current?.validateFields()\r\n if (row.id.toString().startsWith('_')) {\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictCategoryAdd.runAsync(editRow).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.cancelEditable(row.id)\r\n actionRef.current?.reload()\r\n message.success('添加成功')\r\n }\r\n })\r\n return\r\n }\r\n const editRow = editorFormRef.current?.getRowData?.(row.id)\r\n reqDictCategoryUpdate\r\n .runAsync({ ...editRow, id: row.id })\r\n .then(res => {\r\n if (res.code === 200) {\r\n // editorFormRef.current?.setRowData?.(row.id, editRow)\r\n actionRef.current?.reload()\r\n actionRef.current?.cancelEditable?.(row.id)\r\n message.success('修改成功')\r\n }\r\n })\r\n }}\r\n >\r\n 保存\r\n </Tag>,\r\n <Tag\r\n key=\"cancel\"\r\n variant=\"outlined\"\r\n className={`cursor-pointer py-[3px] leading-[1.2rem]`}\r\n onClick={() => actionRef.current?.cancelEditable?.(row.id)}\r\n >\r\n 取消\r\n </Tag>\r\n ]\r\n }\r\n\r\n const asyncReq: any = async (\r\n params: {\r\n pageSize: number\r\n current: number\r\n [key: string]: any\r\n },\r\n sort: Record<string, SortOrder>,\r\n filter: Record<string, (string | number)[] | null>\r\n ) => {\r\n const res = await reqDictCategoryList.runAsync({\r\n pageNum: params.current ?? 1,\r\n pageSize: params.pageSize ?? 10,\r\n dictName,\r\n dictType\r\n })\r\n return {\r\n data: res.rows,\r\n success: true,\r\n total: res.total\r\n }\r\n }\r\n\r\n const onChangeDictNameDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictName(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n const onChangeDictTypeDebounced = useDebounceFn(\r\n (info: string) => {\r\n setDictType(info)\r\n },\r\n { wait: 500 }\r\n )\r\n\r\n return (\r\n <>\r\n <div className=\"gap-2 flex justify-end mb-4\">\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictNameDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典类型\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Input\r\n className=\"mr-1 w-[200px]\"\r\n onChange={e => onChangeDictTypeDebounced.run(e.target.value)}\r\n placeholder=\"搜索字典编码\"\r\n allowClear\r\n prefix={\r\n <svg\r\n className=\"icon w-[12px] h-[12px]\"\r\n viewBox=\"0 0 1024 1024\"\r\n version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n p-id=\"4820\"\r\n width=\"50\"\r\n height=\"50\"\r\n >\r\n <path\r\n d=\"M212.194304 726.972416c33.760256 33.760256 73.08288 60.269568 116.876288 78.792704 45.357056 19.18464 93.518848 28.911616 143.147008 28.911616s97.788928-9.728 143.145984-28.911616c25.648128-10.848256 49.750016-24.457216 72.112128-40.63744l156.345344 156.484608c6.677504 6.683648 15.43168 10.025984 24.18688 10.025984 8.74496 0 17.490944-3.334144 24.1664-10.00448 13.35808-13.345792 13.36832-34.994176 0.021504-48.35328L739.03616 719.985664c30.533632-32.160768 54.736896-69.082112 71.99744-109.889536 19.183616-45.357056 28.911616-93.518848 28.911616-143.147008s-9.728-97.789952-28.911616-143.147008c-18.523136-43.792384-45.033472-83.115008-78.792704-116.876288-33.76128-33.760256-73.083904-60.270592-116.876288-78.793728-45.35808-19.18464-93.518848-28.911616-143.147008-28.911616s-97.789952 9.728-143.147008 28.911616c-43.793408 18.523136-83.116032 45.033472-116.876288 78.793728s-60.269568 73.083904-78.792704 116.876288c-19.183616 45.357056-28.911616 93.518848-28.911616 143.147008s9.728 97.789952 28.911616 143.147008C151.923712 653.888512 178.434048 693.21216 212.194304 726.972416zM260.547584 255.279104c56.539136-56.539136 131.710976-87.676928 211.670016-87.676928 79.958016 0 155.13088 31.137792 211.670016 87.676928s87.675904 131.710976 87.675904 211.670016S740.425728 622.08 683.887616 678.619136c-56.539136 56.539136-131.712 87.676928-211.670016 87.676928-79.95904 0-155.13088-31.136768-211.670016-87.675904s-87.675904-131.712-87.675904-211.670016S204.008448 311.81824 260.547584 255.279104z\"\r\n p-id=\"4821\"\r\n fill=\"#999\"\r\n ></path>\r\n </svg>\r\n }\r\n />\r\n <Popconfirm\r\n title=\"确定要批量删除吗?\"\r\n okText=\"确定\"\r\n cancelText=\"取消\"\r\n disabled={reqDictCategoryDel.loading}\r\n onConfirm={() => {\r\n const idsArray = selectedRowKeys\r\n if (idsArray.length > 0) {\r\n reqDictCategoryDel.runAsync(idsArray.join(',')).then(res => {\r\n if (res.code === 200) {\r\n actionRef.current?.reload()\r\n message.success('删除成功')\r\n }\r\n })\r\n } else {\r\n message.warning('请选择要删除的项')\r\n }\r\n }}\r\n >\r\n <Button color=\"danger\" variant=\"solid\">\r\n 批量删除\r\n </Button>\r\n </Popconfirm>\r\n <Button\r\n type=\"primary\"\r\n onClick={() =>\r\n actionRef.current?.addEditRecord({\r\n id: `_${(Math.random() * 1000000).toFixed(0)}`\r\n })\r\n }\r\n >\r\n 新增\r\n </Button>\r\n <Button type=\"primary\" onClick={() => actionRef.current?.reload()}>\r\n 刷新\r\n </Button>\r\n </div>\r\n <EditableProTable\r\n bordered\r\n params={{ dictName, dictType }}\r\n debounceTime={300}\r\n request={asyncReq}\r\n actionRef={actionRef}\r\n columns={columns}\r\n rowKey={'id'}\r\n editableFormRef={editorFormRef}\r\n editable={{\r\n type: 'single',\r\n editableKeys,\r\n onChange: setEditableRowKeys,\r\n actionRender\r\n }}\r\n sticky={true}\r\n recordCreatorProps={false}\r\n tableAlertRender={false}\r\n pagination={{\r\n placement: 'bottomRight' as any,\r\n defaultPageSize: 10,\r\n pageSizeOptions: [10, 20, 50, 100],\r\n showTotal: (total, range) =>\r\n `第 ${range[0]}-${range[1]} 条,共 ${total} 条`,\r\n showSizeChanger: true,\r\n showQuickJumper: true\r\n }}\r\n // 关闭搜索栏\r\n search={false}\r\n rowSelection={{\r\n selectedRowKeys,\r\n onChange(selectedRowKeys, selectedRows, info) {\r\n setSelectedRowKeys(selectedRowKeys)\r\n setSelectedRows(selectedRows)\r\n },\r\n columnWidth: 50,\r\n fixed: true\r\n }}\r\n scroll={{\r\n x: 'max-content',\r\n y: 'auto',\r\n scrollToFirstRowOnChange: false\r\n }}\r\n showSorterTooltip={true}\r\n form={{ ignoreRules: false }}\r\n />\r\n <DictManage\r\n appCode={appCode}\r\n baseUrl={baseUrl}\r\n id={detailId}\r\n name={detailName}\r\n open={detailOpen}\r\n onClose={() => setDetailOpen(false)}\r\n />\r\n </>\r\n )\r\n}\r\n","import DictCategory from './dict-category'\r\n\r\nexport interface Props {\r\n appCode: string\r\n baseUrl: string\r\n}\r\nexport default function Dict(props: Props) {\r\n const { appCode, baseUrl = '/' } = props\r\n return (\r\n <div className=\"dict-manage-wrapper w-full h-full\">\r\n <DictCategory appCode={appCode} baseUrl={baseUrl} />\r\n </div>\r\n )\r\n}\r\n"],"names":["getHeader","appEnName","qs","params","key","req","url","options","resJson","timeout","controller","timer","headers","rest","defaultHeaders","response","notification","data","error","useService","baseUrl","base","reqDictCategoryList","useRequest","reqDictCategoryAdd","reqDictCategoryUpdate","reqDictCategoryDel","ids","reqDictDetailById","reqDictDetailAdd","reqDictDetailUpdate","reqDictDetailDel","DictManage","props","appCode","id","name","open","onClose","editableKeys","setEditableRowKeys","useState","selectedRows","setSelectedRows","selectedRowKeys","setSelectedRowKeys","dictLabel","setDictLabel","actionRef","useRef","editorFormRef","columns","_","record","jsx","Tag","Popconfirm","res","message","actionRender","row","config","defaultDom","editRow","asyncReq","sort","filter","onChangeDictLabelDebounced","useDebounceFn","info","jsxs","Drawer","Input","e","idsArray","Button","EditableProTable","total","range","DictCategory","dictName","setDictName","dictType","setDictType","detailOpen","setDetailOpen","detailId","setDetailId","detailName","setDetailName","dom","entity","index","action","schema","onChangeDictNameDebounced","onChangeDictTypeDebounced","Fragment","Dict"],"mappings":"+eAAO,SAASA,EAAUC,EAAmB,CAC3C,MAAO,CACL,cAAe,KAAK,MAClB,aAAa,QAAQ,GAAGA,CAAS,QAAQ,GACvC,2aAAA,CACJ,CAEJ,CAEO,SAASC,EAAGC,EAAgC,CACjD,OAAO,OAAO,KAAKA,CAAM,EACtB,IAAIC,GAAO,GAAGA,CAAG,IAAID,EAAOC,CAAG,CAAC,EAAE,EAClC,KAAK,GAAG,CACb,CCZA,MAAMC,EAAM,MACVC,EACAC,EACAC,EAAmB,KAChB,CACH,KAAM,CAAE,QAAAC,EAAU,GAAA,EAASF,EACrBG,EAAa,IAAI,gBACjBC,EAAQ,WAAW,IAAMD,EAAW,MAAA,EAASD,CAAO,EACpD,CAAE,QAAAG,EAAS,GAAGC,CAAA,EAASN,EACvBO,EAAiB,CACrB,eAAgB,mBAChB,GAAGF,CAAA,EAEL,GAAI,CACF,MAAMG,EAAW,MAAM,MAAMT,EAAK,CAC3B,QAASQ,EAAgB,GAAGD,EACjC,OAAQH,EAAW,MAAA,CACpB,EAID,GAHA,aAAaC,CAAK,EAGd,CAACI,EAAS,GACZC,MAAAA,EAAAA,aAAa,MAAM,CACjB,MAAOD,EAAS,OAChB,YAAaA,EAAS,UAAA,CACvB,EACK,IAAI,MAAM,eAAeA,EAAS,MAAM,IAAIA,EAAS,UAAU,EAAE,EAGzE,MAAME,EAAO,MAAOT,EAAUO,EAAS,OAASA,EAAS,QACzD,GAAIP,GAAWS,EAAK,OAAS,IAC3BD,MAAAA,EAAAA,aAAa,QAAQ,CACnB,MAAOC,EAAK,KACZ,YAAaA,EAAK,GAAA,CACnB,EACK,IAAI,MAAMA,EAAK,OAAO,EAE9B,OAAOA,CACT,OAASC,EAAO,CACd,MAAAR,EAAW,MAAA,EACPQ,aAAiB,OACfA,EAAM,OAAS,cACjBF,EAAAA,aAAa,MAAM,CACjB,MAAO,OACP,YAAa,cAAA,CACd,EAGL,aAAaL,CAAK,EACZ,IAAI,MAAM,gBAAgB,CAClC,CACF,ECjDA,SAAwBQ,EAAWlB,EAAmBmB,EAAiB,CACrE,MAAMC,EAAO,GAAGD,CAAO,GAAGnB,CAAS,GAG7BqB,EAAsBC,EAAAA,WAC1B,CAACpB,EAAS,CAAE,QAAS,EAAG,SAAU,EAAA,IAChCE,EAAI,GAAGgB,CAAI,6BAA6BnB,EAAGC,CAAM,CAAC,GAAI,CACpD,QAASH,EAAUC,CAAS,CAAA,CAC7B,EACH,CACE,OAAQ,EAAA,CACV,EAIIuB,EAAqBD,EAAAA,WACzBpB,GACEE,EAAI,GAAGgB,CAAI,uBAAwB,CACjC,QAASrB,EAAUC,CAAS,EAC5B,OAAQ,OACR,KAAM,KAAK,UAAUE,CAAM,CAAA,CAC5B,EACH,CACE,OAAQ,EAAA,CACV,EAIIsB,EAAwBF,EAAAA,WAC3BpB,GACCE,EAAI,GAAGgB,CAAI,uBAAwB,CACjC,QAASrB,EAAUC,CAAS,EAC5B,OAAQ,MACR,KAAM,KAAK,UAAUE,CAAM,CAAA,CAC5B,EACH,CACE,OAAQ,EAAA,CACV,EAIIuB,EAAqBH,EAAAA,cAEvBlB,EAAI,GAAGgB,CAAI,wBAAwBM,CAAG,GAAI,CACxC,QAAS3B,EAAUC,CAAS,EAC5B,OAAQ,QAAA,CACT,EACH,CACE,OAAQ,EAAA,CACV,EAMI2B,EAAoBL,EAAAA,WACxB,CAACpB,EAAS,CAAE,QAAS,EAAG,SAAU,EAAA,IAChCE,EAAI,GAAGgB,CAAI,mCAAmCnB,EAAGC,CAAM,CAAC,GAAI,CAC1D,QAASH,EAAUC,CAAS,CAAA,CAC7B,EACH,CACE,OAAQ,EAAA,CACV,EAII4B,EAAmBN,EAAAA,WACvBpB,GACEE,EAAI,GAAGgB,CAAI,uBAAwB,CACjC,QAASrB,EAAUC,CAAS,EAC5B,OAAQ,OACR,KAAM,KAAK,UAAUE,CAAM,CAAA,CAC5B,EACH,CACE,OAAQ,EAAA,CACV,EAII2B,EAAsBP,EAAAA,WACzBpB,GACCE,EAAI,GAAGgB,CAAI,uBAAwB,CACjC,QAASrB,EAAUC,CAAS,EAC5B,OAAQ,MACR,KAAM,KAAK,UAAUE,CAAM,CAAA,CAC5B,EACH,CACE,OAAQ,EAAA,CACV,EAII4B,EAAmBR,EAAAA,cAErBlB,EAAI,GAAGgB,CAAI,wBAAwBM,CAAG,GAAI,CACxC,QAAS3B,EAAUC,CAAS,EAC5B,OAAQ,QAAA,CACT,EACH,CACE,OAAQ,EAAA,CACV,EAGF,MAAO,CACL,oBAAAqB,EACA,mBAAAE,EACA,sBAAAC,EACA,mBAAAC,EACA,kBAAAE,EACA,iBAAAC,EACA,oBAAAC,EACA,iBAAAC,CAAA,CAEJ,CChGA,SAAwBC,EAAWC,EAAc,CAC/C,KAAM,CAAE,QAAAC,EAAS,QAAAd,EAAS,GAAAe,EAAI,KAAAC,EAAM,KAAAC,EAAM,QAAAC,GAAYL,EAEhD,CAACM,EAAcC,CAAkB,EAAIC,EAAAA,SAAgB,CAAA,CAAE,EACvD,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAAgB,CAAA,CAAE,EACpD,CAACG,EAAiBC,CAAkB,EAAIJ,EAAAA,SAAgB,CAAA,CAAE,EAC1D,CAACK,EAAWC,CAAY,EAAIN,EAAAA,SAAS,EAAE,EACvCO,EAAYC,EAAAA,OAAmB,IAAI,EACnCC,EAAgBD,EAAAA,OAA6B,IAAI,EAEjD,CACJ,kBAAArB,EACA,iBAAAC,EACA,oBAAAC,EACA,iBAAAC,CAAA,EACEZ,EAAWe,EAASd,CAAO,EAEzB+B,EAAwB,CAC5B,CACE,MAAO,KACP,UAAW,KACX,YAAa,EAAA,EAEf,CACE,MAAO,OACP,UAAW,YACX,cAAe,CACb,MAAO,CACL,CACE,SAAU,GACV,QAAS,UAAA,CACX,CACF,EAEF,MAAO,GAAA,EAET,CACE,MAAO,MACP,UAAW,YACX,cAAe,CACb,MAAO,CACL,CACE,SAAU,GACV,QAAS,SAAA,CACX,CACF,EAEF,MAAO,GAAA,EAET,CACE,MAAO,KACP,UAAW,WACX,MAAO,GAAA,EAET,CACE,MAAO,KACP,UAAW,QAAA,EAEb,CACE,MAAO,OACP,UAAW,WACX,MAAO,IACP,SAAU,EAAA,EAEZ,CACE,MAAO,MACP,UAAW,WACX,SAAU,GACV,MAAO,GAAA,EAET,CACE,MAAO,OACP,UAAW,aACX,SAAU,GACV,MAAO,GAAA,EAET,CACE,MAAO,KACP,UAAW,SACX,UAAW,SACX,MAAO,IACP,OAAQ,CAACC,EAAGC,IAAW,CACrBC,EAAAA,IAACC,EAAAA,IAAA,CAEC,MAAM,OACN,QAAQ,WACR,UAAW,gDACX,QAAS,IAAMP,EAAU,SAAS,gBAAgBK,EAAO,EAAE,EAC5D,SAAA,IAAA,EALK,UAAA,EAQNC,EAAAA,IAACE,EAAAA,WAAA,CACC,MAAM,SACN,OAAO,KACP,WAAW,KACX,SAAUzB,EAAiB,QAC3B,UAAW,IAAM,CACfA,EAAiB,SAASsB,EAAO,EAAE,EAAE,KAAKI,GAAO,CAC3CA,EAAI,OAAS,MACfT,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,CACH,EAEA,SAAAJ,EAAAA,IAACC,EAAAA,IAAA,CAEC,QAAQ,WACR,MAAM,MACN,UAAW,2CACZ,SAAA,IAAA,EAJK,QAAA,CAMN,CAAA,CACF,CACF,CACF,EAGII,EAAe,CAACC,EAAUC,EAAaC,IACpC,CACLR,EAAAA,IAACC,EAAAA,IAAA,CAEC,MAAM,OACN,QAAQ,WACR,SAAU1B,EAAiB,SAAWC,EAAoB,QAC1D,UAAW,2CACX,QAAS,SAAY,CAEnB,GADA,MAAMoB,EAAc,SAAS,eAAA,EACzBU,EAAI,GAAG,SAAA,EAAW,WAAW,GAAG,EAAG,CACrC,MAAMG,EAAUb,EAAc,SAAS,aAAaU,EAAI,EAAE,EAC1D/B,EACG,SAAS,CAAE,GAAGkC,EAAS,SAAU5B,EAAI,EACrC,KAAKsB,GAAO,CACPA,EAAI,OAAS,MACfT,EAAU,SAAS,eAAeY,EAAI,EAAE,EACxCZ,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,EACH,MACF,CACA,MAAMK,EAAUb,EAAc,SAAS,aAAaU,EAAI,EAAE,EAC1D9B,EACG,SAAS,CAAE,GAAGiC,EAAS,GAAIH,EAAI,GAAI,SAAUA,EAAI,QAAA,CAAU,EAC3D,KAAKH,GAAO,CACPA,EAAI,OAAS,MAEfT,EAAU,SAAS,OAAA,EACnBA,EAAU,SAAS,iBAAiBY,EAAI,EAAE,EAC1CF,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,CACL,EACD,SAAA,IAAA,EAhCK,MAAA,EAmCNJ,EAAAA,IAACC,EAAAA,IAAA,CAEC,QAAQ,WACR,UAAW,2CACX,QAAS,IAAMP,EAAU,SAAS,iBAAiBY,EAAI,EAAE,EAC1D,SAAA,IAAA,EAJK,QAAA,CAMN,EAIEI,EAAgB,MACpB7D,EAKA8D,EACAC,IACG,CACH,GAAI,CAAC7B,EACH,MAAO,CACL,KAAM,CAAA,EACN,QAAS,GACT,MAAO,CAAA,EAGX,MAAMoB,EAAM,MAAM7B,EAAkB,SAAS,CAC3C,SAAUO,EACV,UAAAW,EACA,KAAM3C,EAAO,SAAW,EACxB,SAAUA,EAAO,UAAY,EAAA,CAC9B,EACD,MAAO,CACL,KAAMsD,EAAI,KACV,QAAS,GACT,MAAOA,EAAI,KAAA,CAEf,EAEMU,EAA6BC,EAAAA,cAChCC,GAAiB,CAChBtB,EAAasB,CAAI,CACnB,EACA,CAAE,KAAM,GAAA,CAAI,EAad,OACEC,EAAAA,KAACC,EAAAA,OAAA,CACC,MAAO,IAAInC,CAAI,UACf,KAAAC,EACA,QAAAC,EACA,MAAO,OAEP,SAAA,CAAAgC,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAhB,EAAAA,IAACkB,EAAAA,MAAA,CACC,UAAU,iBACV,SAAUC,GAAKN,EAA2B,IAAIM,EAAE,OAAO,KAAK,EAC5D,YAAY,SACZ,WAAU,GACV,OACEnB,EAAAA,IAAC,MAAA,CACC,UAAU,yBACV,QAAQ,gBACR,QAAQ,MACR,MAAM,6BACN,OAAK,OACL,MAAM,KACN,OAAO,KAEP,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,g+CACF,OAAK,OACL,KAAK,MAAA,CAAA,CACN,CAAA,CACH,CAAA,EAGJA,EAAAA,IAACE,EAAAA,WAAA,CACC,MAAM,YACN,OAAO,KACP,WAAW,KACX,SAAUzB,EAAiB,QAC3B,UAAW,IAAM,CACf,MAAM2C,EAAW9B,EACb8B,EAAS,OAAS,EACpB3C,EAAiB,SAAS2C,EAAS,KAAK,GAAG,CAAC,EAAE,KAAKjB,GAAO,CACpDA,EAAI,OAAS,MACfT,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,EAEDA,EAAAA,QAAQ,QAAQ,UAAU,CAE9B,EAEA,eAACiB,EAAAA,OAAA,CAAO,MAAM,SAAS,QAAQ,QAAQ,SAAA,MAAA,CAEvC,CAAA,CAAA,EAEFrB,EAAAA,IAACqB,EAAAA,OAAA,CACC,KAAK,UACL,QAAQ,QACR,QAAS,IACP3B,EAAU,SAAS,cAAc,CAC/B,GAAI,KAAK,KAAK,OAAA,EAAW,KAAS,QAAQ,CAAC,CAAC,EAAA,CAC7C,EAEJ,SAAA,IAAA,CAAA,EAGDM,EAAAA,IAACqB,EAAAA,OAAA,CACC,KAAK,UACL,QAAQ,QACR,QAAS,IAAM3B,EAAU,SAAS,OAAA,EACnC,SAAA,IAAA,CAAA,CAED,EACF,EACAM,EAAAA,IAACsB,EAAAA,iBAAA,CACC,OAAQ,CAAE,GAAAzC,EAAI,KAAAE,EAAM,UAAAS,CAAA,EACpB,SAAQ,GACR,aAAc,IACd,UAAAE,EACA,QAASgB,EAET,QAAAb,EACA,OAAQ,KACR,gBAAiBD,EACjB,SAAU,CACR,KAAM,SACN,aAAAX,EACA,SAAUC,EACV,aAAAmB,CAAA,EAEF,OAAQ,GACR,mBAAoB,GACpB,iBAAkB,GAClB,WAAY,CACV,UAAW,cACX,gBAAiB,GACjB,gBAAiB,CAAC,GAAI,GAAI,GAAI,GAAG,EACjC,UAAW,CAACkB,EAAOC,IACjB,KAAKA,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,QAAQD,CAAK,KACxC,gBAAiB,GACjB,gBAAiB,EAAA,EAEnB,OAAQ,GACR,aAAc,CACZ,gBAAAjC,EACA,SAASA,EAAiBF,EAAc2B,EAAM,CAC5CxB,EAAmBD,CAAe,EAClCD,EAAgBD,CAAY,CAC9B,EACA,YAAa,GACb,MAAO,EAAA,EAET,OAAQ,CACN,EAAG,cACH,EAAG,OACH,yBAA0B,EAAA,EAE5B,kBAAmB,EAAA,CAAA,CACrB,CAAA,CAAA,CAGN,CCnVA,SAAAqC,EAAyB9C,EAAc,CACrC,KAAM,CAAE,QAAAC,EAAS,QAAAd,CAAA,EAAYa,EACvB,CAACM,EAAcC,CAAkB,EAAIC,EAAAA,SAAgB,CAAA,CAAE,EACvD,CAACC,EAAcC,CAAe,EAAIF,EAAAA,SAAgB,CAAA,CAAE,EACpD,CAACG,EAAiBC,CAAkB,EAAIJ,EAAAA,SAAgB,CAAA,CAAE,EAC1D,CAACuC,EAAUC,CAAW,EAAIxC,EAAAA,SAAS,EAAE,EACrC,CAACyC,EAAUC,CAAW,EAAI1C,EAAAA,SAAS,EAAE,EACrC,CAAC2C,EAAYC,CAAa,EAAI5C,EAAAA,SAAS,EAAK,EAC5C,CAAC6C,EAAUC,CAAW,EAAI9C,EAAAA,SAAS,EAAE,EACrC,CAAC+C,EAAYC,CAAa,EAAIhD,EAAAA,SAAS,EAAE,EACzCO,EAAYC,EAAAA,OAAmB,IAAI,EACnCC,EAAgBD,EAAAA,OAA6B,IAAI,EAEjD,CACJ,oBAAA3B,EACA,sBAAAG,EACA,mBAAAD,EACA,mBAAAE,CAAA,EACEP,EAAWe,EAASd,CAAO,EAEzB+B,EAAwB,CAC5B,CACE,MAAO,KACP,UAAW,KACX,YAAa,EAAA,EAEf,CACE,MAAO,OACP,UAAW,WACX,cAAe,CACb,MAAO,CACL,CACE,SAAU,GACV,QAAS,UAAA,CACX,CACF,EAEF,MAAO,GAAA,EAET,CACE,MAAO,OACP,UAAW,WACX,cAAe,CACb,MAAO,CACL,CACE,SAAU,GACV,QAAS,UAAA,EAEX,CACE,QAAS,2BACT,QAAS,4BAAA,CACX,CACF,EAEF,OAAOuC,EAAKC,EAAQC,EAAOC,EAAQC,EAAQ,CACzC,OACExC,EAAAA,IAAC,OAAA,CACC,UAAU,0CACV,QAAS,IAAM,CACbiC,EAAYI,EAAO,QAAW,EAC9BF,EAAcE,EAAO,QAAW,EAChCN,EAAc,EAAI,CACpB,EAEC,SAAAK,CAAA,CAAA,CAGP,EACA,MAAO,GAAA,EAMT,CACE,MAAO,OACP,UAAW,QAAA,EAEb,CACE,MAAO,MACP,UAAW,WACX,SAAU,GACV,MAAO,GAAA,EAET,CACE,MAAO,OACP,UAAW,aACX,SAAU,GACV,MAAO,GAAA,EAET,CACE,MAAO,KACP,UAAW,SACX,UAAW,SACX,MAAO,IACP,OAAQ,CAACtC,EAAGC,IAAW,CACrBC,EAAAA,IAACC,EAAAA,IAAA,CAEC,MAAM,OACN,QAAQ,WACR,UAAW,gDACX,QAAS,IAAMP,EAAU,SAAS,gBAAgBK,EAAO,EAAE,EAC5D,SAAA,IAAA,EALK,UAAA,EAQNC,EAAAA,IAACE,EAAAA,WAAA,CACC,MAAM,SACN,OAAO,KACP,WAAW,KACX,UAAW,IAAM,CACf9B,EAAmB,SAAS2B,EAAO,EAAE,EAAE,KAAKI,GAAO,CAC7CA,EAAI,OAAS,MACfT,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,CACH,EAEA,SAAAJ,EAAAA,IAACC,EAAAA,IAAA,CAEC,QAAQ,WACR,MAAM,MACN,UAAW,2CACZ,SAAA,IAAA,EAJK,QAAA,CAMN,CAAA,EAEFD,EAAAA,IAACC,EAAAA,IAAA,CAEC,QAAQ,WACR,MAAM,QACN,UAAW,2CACX,QAAS,IAAM,CACbgC,EAAYlC,EAAO,QAAQ,EAC3BoC,EAAcpC,EAAO,QAAQ,EAC7BgC,EAAc,EAAI,CACpB,EACD,SAAA,MAAA,EATK,QAAA,CAWN,CACF,CACF,EAGI1B,EAAe,CAACC,EAAUC,EAAaC,IACpC,CACLR,EAAAA,IAACC,EAAAA,IAAA,CAEC,MAAM,OACN,QAAQ,WACR,SAAU/B,EAAmB,SAAWC,EAAsB,QAC9D,UAAW,2CACX,QAAS,SAAY,CAEnB,GADA,MAAMyB,EAAc,SAAS,eAAA,EACzBU,EAAI,GAAG,SAAA,EAAW,WAAW,GAAG,EAAG,CACrC,MAAMG,EAAUb,EAAc,SAAS,aAAaU,EAAI,EAAE,EAC1DpC,EAAmB,SAASuC,CAAO,EAAE,KAAKN,GAAO,CAC3CA,EAAI,OAAS,MACfT,EAAU,SAAS,eAAeY,EAAI,EAAE,EACxCZ,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,EACD,MACF,CACA,MAAMK,EAAUb,EAAc,SAAS,aAAaU,EAAI,EAAE,EAC1DnC,EACG,SAAS,CAAE,GAAGsC,EAAS,GAAIH,EAAI,GAAI,EACnC,KAAKH,GAAO,CACPA,EAAI,OAAS,MAEfT,EAAU,SAAS,OAAA,EACnBA,EAAU,SAAS,iBAAiBY,EAAI,EAAE,EAC1CF,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,CACL,EACD,SAAA,IAAA,EA9BK,MAAA,EAiCNJ,EAAAA,IAACC,EAAAA,IAAA,CAEC,QAAQ,WACR,UAAW,2CACX,QAAS,IAAMP,EAAU,SAAS,iBAAiBY,EAAI,EAAE,EAC1D,SAAA,IAAA,EAJK,QAAA,CAMN,EAIEI,EAAgB,MACpB7D,EAKA8D,EACAC,IACG,CACH,MAAMT,EAAM,MAAMnC,EAAoB,SAAS,CAC7C,QAASnB,EAAO,SAAW,EAC3B,SAAUA,EAAO,UAAY,GAC7B,SAAA6E,EACA,SAAAE,CAAA,CACD,EACD,MAAO,CACL,KAAMzB,EAAI,KACV,QAAS,GACT,MAAOA,EAAI,KAAA,CAEf,EAEMsC,EAA4B3B,EAAAA,cAC/BC,GAAiB,CAChBY,EAAYZ,CAAI,CAClB,EACA,CAAE,KAAM,GAAA,CAAI,EAGR2B,EAA4B5B,EAAAA,cAC/BC,GAAiB,CAChBc,EAAYd,CAAI,CAClB,EACA,CAAE,KAAM,GAAA,CAAI,EAGd,OACEC,EAAAA,KAAA2B,WAAA,CACE,SAAA,CAAA3B,EAAAA,KAAC,MAAA,CAAI,UAAU,8BACb,SAAA,CAAAhB,EAAAA,IAACkB,EAAAA,MAAA,CACC,UAAU,iBACV,SAAUC,GAAKsB,EAA0B,IAAItB,EAAE,OAAO,KAAK,EAC3D,YAAY,SACZ,WAAU,GACV,OACEnB,EAAAA,IAAC,MAAA,CACC,UAAU,yBACV,QAAQ,gBACR,QAAQ,MACR,MAAM,6BACN,OAAK,OACL,MAAM,KACN,OAAO,KAEP,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,g+CACF,OAAK,OACL,KAAK,MAAA,CAAA,CACN,CAAA,CACH,CAAA,EAGJA,EAAAA,IAACkB,EAAAA,MAAA,CACC,UAAU,iBACV,SAAUC,GAAKuB,EAA0B,IAAIvB,EAAE,OAAO,KAAK,EAC3D,YAAY,SACZ,WAAU,GACV,OACEnB,EAAAA,IAAC,MAAA,CACC,UAAU,yBACV,QAAQ,gBACR,QAAQ,MACR,MAAM,6BACN,OAAK,OACL,MAAM,KACN,OAAO,KAEP,SAAAA,EAAAA,IAAC,OAAA,CACC,EAAE,g+CACF,OAAK,OACL,KAAK,MAAA,CAAA,CACN,CAAA,CACH,CAAA,EAGJA,EAAAA,IAACE,EAAAA,WAAA,CACC,MAAM,YACN,OAAO,KACP,WAAW,KACX,SAAU9B,EAAmB,QAC7B,UAAW,IAAM,CACf,MAAMgD,EAAW9B,EACb8B,EAAS,OAAS,EACpBhD,EAAmB,SAASgD,EAAS,KAAK,GAAG,CAAC,EAAE,KAAKjB,GAAO,CACtDA,EAAI,OAAS,MACfT,EAAU,SAAS,OAAA,EACnBU,EAAAA,QAAQ,QAAQ,MAAM,EAE1B,CAAC,EAEDA,EAAAA,QAAQ,QAAQ,UAAU,CAE9B,EAEA,eAACiB,EAAAA,OAAA,CAAO,MAAM,SAAS,QAAQ,QAAQ,SAAA,MAAA,CAEvC,CAAA,CAAA,EAEFrB,EAAAA,IAACqB,EAAAA,OAAA,CACC,KAAK,UACL,QAAS,IACP3B,EAAU,SAAS,cAAc,CAC/B,GAAI,KAAK,KAAK,OAAA,EAAW,KAAS,QAAQ,CAAC,CAAC,EAAA,CAC7C,EAEJ,SAAA,IAAA,CAAA,EAGDM,EAAAA,IAACqB,EAAAA,OAAA,CAAO,KAAK,UAAU,QAAS,IAAM3B,EAAU,SAAS,SAAU,SAAA,IAAA,CAEnE,CAAA,EACF,EACAM,EAAAA,IAACsB,EAAAA,iBAAA,CACC,SAAQ,GACR,OAAQ,CAAE,SAAAI,EAAU,SAAAE,CAAA,EACpB,aAAc,IACd,QAASlB,EACT,UAAAhB,EACA,QAAAG,EACA,OAAQ,KACR,gBAAiBD,EACjB,SAAU,CACR,KAAM,SACN,aAAAX,EACA,SAAUC,EACV,aAAAmB,CAAA,EAEF,OAAQ,GACR,mBAAoB,GACpB,iBAAkB,GAClB,WAAY,CACV,UAAW,cACX,gBAAiB,GACjB,gBAAiB,CAAC,GAAI,GAAI,GAAI,GAAG,EACjC,UAAW,CAACkB,EAAOC,IACjB,KAAKA,EAAM,CAAC,CAAC,IAAIA,EAAM,CAAC,CAAC,QAAQD,CAAK,KACxC,gBAAiB,GACjB,gBAAiB,EAAA,EAGnB,OAAQ,GACR,aAAc,CACZ,gBAAAjC,EACA,SAASA,EAAiBF,EAAc2B,EAAM,CAC5CxB,EAAmBD,CAAe,EAClCD,EAAgBD,CAAY,CAC9B,EACA,YAAa,GACb,MAAO,EAAA,EAET,OAAQ,CACN,EAAG,cACH,EAAG,OACH,yBAA0B,EAAA,EAE5B,kBAAmB,GACnB,KAAM,CAAE,YAAa,EAAA,CAAM,CAAA,EAE7BY,EAAAA,IAACtB,EAAA,CACC,QAAAE,EACA,QAAAd,EACA,GAAIkE,EACJ,KAAME,EACN,KAAMJ,EACN,QAAS,IAAMC,EAAc,EAAK,CAAA,CAAA,CACpC,EACF,CAEJ,CCzXA,SAAwBa,EAAKjE,EAAc,CACzC,KAAM,CAAE,QAAAC,EAAS,QAAAd,EAAU,GAAA,EAAQa,EACnC,OACEqB,MAAC,OAAI,UAAU,oCACb,eAACyB,EAAA,CAAa,QAAA7C,EAAkB,QAAAd,EAAkB,CAAA,CACpD,CAEJ"}
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "sg-lowcode-ui",
3
+ "version": "0.0.5",
4
+ "type": "module",
5
+ "files": [
6
+ "dist"
7
+ ],
8
+ "main": "./dist/sg-lowcode-ui.umd.cjs",
9
+ "module": "./dist/sg-lowcode-ui.js",
10
+ "types": "./dist/index.d.ts",
11
+ "exports": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/sg-lowcode-ui.js",
14
+ "require": "./dist/sg-lowcode-ui.umd.cjs"
15
+ },
16
+ "scripts": {
17
+ "dev": "vite",
18
+ "build": "tsc && vite build"
19
+ },
20
+ "devDependencies": {
21
+ "@types/react": "^19.2.7",
22
+ "@types/react-dom": "^19.2.3",
23
+ "typescript": "~5.9.2",
24
+ "vite": "^7.1.5",
25
+ "vite-plugin-dts": "4.0.0-beta.1",
26
+ "vite-plugin-style-inject": "^0.0.1"
27
+ },
28
+ "dependencies": {
29
+ "@ant-design/pro-components": "^2.8.10",
30
+ "@wangeditor/editor": "^5.1.23",
31
+ "@wangeditor/editor-for-react": "^1.0.6",
32
+ "ahooks": "^3.9.6",
33
+ "antd": "6.0.1",
34
+ "react": "^19.2.0",
35
+ "react-dom": "^19.2.0",
36
+ "tailwindcss": "^3.4.7"
37
+ }
38
+ }