@bwg-ui/core 1.2.9 → 1.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{MenuReport-CuAfCZbc.cjs → MenuReport-Bqeps5fC.cjs} +1 -1
- package/dist/chunks/{MenuReport-iuRC_snf.js → MenuReport-CozV1tpR.js} +28 -28
- package/dist/chunks/common-components-B-zgrX-L.cjs +1028 -0
- package/dist/chunks/common-components-XA2KG7Pl.js +30179 -0
- package/dist/chunks/{layout-components-C-9ATcL9.js → layout-components-MrnKV5g7.js} +548 -478
- package/dist/chunks/layout-components-bb0cWC3I.cjs +35 -0
- package/dist/components/common/BwgGrid.d.ts +1 -1
- package/dist/components/common/BwgGrid.d.ts.map +1 -1
- package/dist/components/common/BwgView.d.ts +9 -3
- package/dist/components/common/BwgView.d.ts.map +1 -1
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/index.d.ts.map +1 -1
- package/dist/components/common/index.js +5 -5
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.js +200 -200
- package/dist/components/guide/BwgPracticeGuide.d.ts +6 -0
- package/dist/components/guide/BwgPracticeGuide.d.ts.map +1 -0
- package/dist/components/guide/BwgPracticeGuideS00.d.ts +6 -0
- package/dist/components/guide/BwgPracticeGuideS00.d.ts.map +1 -0
- package/dist/components/guide/BwgPracticeGuideS01.d.ts +6 -0
- package/dist/components/guide/BwgPracticeGuideS01.d.ts.map +1 -0
- package/dist/components/guide/CMHldyCfg.d.ts +3 -0
- package/dist/components/guide/CMHldyCfg.d.ts.map +1 -0
- package/dist/components/guide/index.cjs +1 -1
- package/dist/components/guide/index.d.ts +2 -0
- package/dist/components/guide/index.d.ts.map +1 -1
- package/dist/components/guide/index.js +645 -5
- package/dist/components/layout/BwgCoreLogin.d.ts +38 -0
- package/dist/components/layout/BwgCoreLogin.d.ts.map +1 -0
- package/dist/components/layout/custom/ConfigurableHeader.d.ts.map +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +13 -11
- package/dist/components/pages/auth/CMAuthMstrM01.d.ts +6 -0
- package/dist/components/pages/auth/CMAuthMstrM01.d.ts.map +1 -0
- package/dist/components/pages/auth/CMRoleMstrM01.d.ts +4 -0
- package/dist/components/pages/auth/CMRoleMstrM01.d.ts.map +1 -0
- package/dist/components/pages/guide/BwgComponentGuideM01.d.ts +3 -0
- package/dist/components/pages/guide/BwgComponentGuideM01.d.ts.map +1 -0
- package/dist/components/pages/guide/BwgDeveloperGuideM01.d.ts +3 -0
- package/dist/components/pages/guide/BwgDeveloperGuideM01.d.ts.map +1 -0
- package/dist/components/pages/guide/BwgReactGuideM01.d.ts +3 -0
- package/dist/components/pages/guide/BwgReactGuideM01.d.ts.map +1 -0
- package/dist/components/pages/index.d.ts +20 -0
- package/dist/components/pages/index.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMFileMstrM01.d.ts +4 -0
- package/dist/components/pages/rsrc/CMFileMstrM01.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMMenuMstrM01.d.ts +4 -0
- package/dist/components/pages/rsrc/CMMenuMstrM01.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMMenuPrgrSelectModal.d.ts +16 -0
- package/dist/components/pages/rsrc/CMMenuPrgrSelectModal.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMMenuPrntSelectModal.d.ts +16 -0
- package/dist/components/pages/rsrc/CMMenuPrntSelectModal.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMPopuMstrM01.d.ts +4 -0
- package/dist/components/pages/rsrc/CMPopuMstrM01.d.ts.map +1 -0
- package/dist/components/pages/rsrc/CMPrgrMstrM01.d.ts +4 -0
- package/dist/components/pages/rsrc/CMPrgrMstrM01.d.ts.map +1 -0
- package/dist/components/pages/syst/CMSystCfgM01.d.ts +4 -0
- package/dist/components/pages/syst/CMSystCfgM01.d.ts.map +1 -0
- package/dist/components/pages/syst/CMSystCodeM01.d.ts +4 -0
- package/dist/components/pages/syst/CMSystCodeM01.d.ts.map +1 -0
- package/dist/components/pages/types.d.ts +5 -0
- package/dist/components/pages/types.d.ts.map +1 -0
- package/dist/components/pages/user/CMUserMstrM01.d.ts +4 -0
- package/dist/components/pages/user/CMUserMstrM01.d.ts.map +1 -0
- package/dist/components/popup/SearchAddressModalM01.d.ts +7 -0
- package/dist/components/popup/SearchAddressModalM01.d.ts.map +1 -0
- package/dist/components/popup/SearchHolidayP01.d.ts +4 -0
- package/dist/components/popup/SearchHolidayP01.d.ts.map +1 -0
- package/dist/components/popup/index.cjs +1 -1
- package/dist/components/popup/index.d.ts +2 -1
- package/dist/components/popup/index.d.ts.map +1 -1
- package/dist/components/popup/index.js +4 -3
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +256 -238
- package/dist/stores/favoriteStore.d.ts +10 -9
- package/dist/stores/favoriteStore.d.ts.map +1 -1
- package/dist/stores/index.cjs +2 -2
- package/dist/stores/index.d.ts +4 -0
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +1129 -631
- package/dist/stores/loginStore.d.ts +64 -0
- package/dist/stores/loginStore.d.ts.map +1 -0
- package/dist/stores/menuModelStore.d.ts +1 -1
- package/dist/stores/menuViewStore.d.ts +1 -0
- package/dist/stores/menuViewStore.d.ts.map +1 -1
- package/dist/stores/systemStore.d.ts +32 -0
- package/dist/stores/systemStore.d.ts.map +1 -0
- package/dist/stores/userStore.d.ts +5 -5
- package/dist/stores/userStore.d.ts.map +1 -1
- package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
- package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
- package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
- package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
- package/dist/types/bwg-global.d.ts +2 -1
- package/dist/utils/apiUtils.d.ts +27 -60
- package/dist/utils/apiUtils.d.ts.map +1 -1
- package/dist/utils/commonUtils.d.ts +0 -6
- package/dist/utils/commonUtils.d.ts.map +1 -1
- package/dist/utils/gwUtils.d.ts +3 -2
- package/dist/utils/gwUtils.d.ts.map +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.d.ts +3 -7
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1628 -1017
- package/dist/utils/serviceConfig.d.ts +1 -0
- package/dist/utils/serviceConfig.d.ts.map +1 -1
- package/dist/utils/userUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/common-components-CFIJNFN0.js +0 -16236
- package/dist/chunks/common-components-CioS_8Bi.cjs +0 -183
- package/dist/chunks/core-CA7iRgyb.cjs +0 -1
- package/dist/chunks/core-D18HD1It.js +0 -513
- package/dist/chunks/enc-base64-CdWu8KMI.js +0 -101
- package/dist/chunks/enc-base64-DSIiAsI5.cjs +0 -1
- package/dist/chunks/layout-components-DMR4tl9_.cjs +0 -35
- package/dist/chunks/sha256-D5iKSlK6.cjs +0 -1
- package/dist/chunks/sha256-DQcqzuys.js +0 -78
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { jsx as r, jsxs as q } from "react/jsx-runtime";
|
|
2
|
-
import { Button as J, Form as
|
|
2
|
+
import { Button as J, Form as B, Checkbox as ie, ConfigProvider as pe, DatePicker as le, message as L, Card as ye, List as P, Input as te, Spin as Le, Upload as G, Typography as Fe, Flex as de, Progress as Se, notification as we, Tooltip as _e, Select as se, Space as ae, InputNumber as Ie, Radio as Ne, Switch as Me } from "antd";
|
|
3
3
|
import { memo as De, useState as T, useEffect as j, useMemo as ee, forwardRef as ke, useRef as X, cloneElement as ve } from "react";
|
|
4
4
|
import z from "dayjs";
|
|
5
|
-
import { PaperClipOutlined as xe, DownloadOutlined as
|
|
5
|
+
import { PaperClipOutlined as xe, DownloadOutlined as Be, DeleteOutlined as Ee, InboxOutlined as Oe, UploadOutlined as Ye, CloudUploadOutlined as Ve, CheckCircleOutlined as Ue, CloseCircleOutlined as Ae, FileTextOutlined as ze, SearchOutlined as Te } from "@ant-design/icons";
|
|
6
6
|
import { isEmpty as Re, debounce as $e, findIndex as ne } from "lodash";
|
|
7
|
-
import {
|
|
7
|
+
import { callServiceBySysCd as je, getUserInfo as K, callService as W } from "../../utils/index.js";
|
|
8
8
|
import He from "jszip";
|
|
9
9
|
import Ce from "imask";
|
|
10
10
|
import { usePopupStore as Ke } from "../../stores/index.js";
|
|
11
11
|
import { DndProvider as Ge, useDrop as qe, useDrag as We } from "react-dnd";
|
|
12
12
|
import { HTML5Backend as Je } from "react-dnd-html5-backend";
|
|
13
|
-
const
|
|
13
|
+
const Ft = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
14
14
|
({
|
|
15
15
|
children: t,
|
|
16
16
|
label: e,
|
|
@@ -27,11 +27,11 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
27
27
|
u && /* @__PURE__ */ r("span", { style: { color: "#ff4d4f", marginLeft: "4px" }, children: "*" })
|
|
28
28
|
] }) : /* @__PURE__ */ r("span", { style: a, children: e });
|
|
29
29
|
return /* @__PURE__ */ r(
|
|
30
|
-
|
|
30
|
+
B.Item,
|
|
31
31
|
{
|
|
32
32
|
className: "bwg-form-item",
|
|
33
33
|
label: e ? s() : void 0,
|
|
34
|
-
labelAlign: "left",
|
|
34
|
+
labelAlign: d.labelAlign || "left",
|
|
35
35
|
name: l,
|
|
36
36
|
rules: i,
|
|
37
37
|
colon: !1,
|
|
@@ -48,7 +48,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
48
48
|
format: "YN"
|
|
49
49
|
}
|
|
50
50
|
}) => {
|
|
51
|
-
const l =
|
|
51
|
+
const l = B.useFormInstance();
|
|
52
52
|
return /* @__PURE__ */ r(
|
|
53
53
|
D,
|
|
54
54
|
{
|
|
@@ -61,7 +61,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
61
61
|
}
|
|
62
62
|
);
|
|
63
63
|
}, Ct = ({ itemProps: t, inputProps: e }) => {
|
|
64
|
-
const l =
|
|
64
|
+
const l = B.useFormInstance(), [i, n] = T(
|
|
65
65
|
t?.initialValue ?? []
|
|
66
66
|
), [o, d] = T([]), a = o.length > 0 && o.length == i?.length, u = i?.length > 0 && i.length < o.length;
|
|
67
67
|
j(() => {
|
|
@@ -70,13 +70,13 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
70
70
|
n(i);
|
|
71
71
|
}, [i]);
|
|
72
72
|
const s = (Y) => {
|
|
73
|
-
const
|
|
74
|
-
return (Y || []).map((k,
|
|
75
|
-
|
|
76
|
-
}),
|
|
73
|
+
const b = [];
|
|
74
|
+
return (Y || []).map((k, E) => {
|
|
75
|
+
b.push(k.value);
|
|
76
|
+
}), b;
|
|
77
77
|
}, C = (Y) => {
|
|
78
78
|
n(Y.target.checked ? o : []), l.setFieldValue(t?.name, Y.target.checked ? o : []);
|
|
79
|
-
},
|
|
79
|
+
}, y = (Y) => {
|
|
80
80
|
n(Y), l.setFieldValue(t?.name, Y), e?.onChange && typeof e?.onChange == "function" && e?.onChange(Y);
|
|
81
81
|
};
|
|
82
82
|
return /* @__PURE__ */ r(D, { ...t, children: /* @__PURE__ */ q(pe, { theme: {
|
|
@@ -102,7 +102,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
102
102
|
{
|
|
103
103
|
options: e?.options,
|
|
104
104
|
value: i,
|
|
105
|
-
onChange:
|
|
105
|
+
onChange: y
|
|
106
106
|
}
|
|
107
107
|
)
|
|
108
108
|
] }) });
|
|
@@ -115,7 +115,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
115
115
|
displayFormat: "YYYY-MM-DD HH:mm",
|
|
116
116
|
outputFormat: "YYYYMMDDHHmm"
|
|
117
117
|
}
|
|
118
|
-
},
|
|
118
|
+
}, bt = ({
|
|
119
119
|
itemProps: t,
|
|
120
120
|
inputProps: e,
|
|
121
121
|
type: l = "date",
|
|
@@ -155,7 +155,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
155
155
|
)
|
|
156
156
|
}
|
|
157
157
|
);
|
|
158
|
-
},
|
|
158
|
+
}, Lt = ({
|
|
159
159
|
fileGrpKey: t,
|
|
160
160
|
onFetchFilesTrxCd: e = "SCMFILE00101",
|
|
161
161
|
readOnly: l = !1,
|
|
@@ -163,7 +163,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
163
163
|
}) => {
|
|
164
164
|
const [n, o] = T([]);
|
|
165
165
|
j(() => {
|
|
166
|
-
t && e ? i != __SYS_CD__ ? je(
|
|
166
|
+
t && e ? i != __SYS_CD__ ? je(__APP_CD__, e, {
|
|
167
167
|
crprCd: K()?.crprCd,
|
|
168
168
|
sysCd: i,
|
|
169
169
|
fileGrpKey: t
|
|
@@ -177,7 +177,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
177
177
|
o(u);
|
|
178
178
|
}
|
|
179
179
|
}).catch((a) => {
|
|
180
|
-
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", a),
|
|
180
|
+
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", a), L.error("파일 목록을 불러오는 중 오류가 발생했습니다.");
|
|
181
181
|
}) : W(e, {
|
|
182
182
|
crprCd: K()?.crprCd,
|
|
183
183
|
sysCd: i,
|
|
@@ -192,7 +192,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
192
192
|
o(u);
|
|
193
193
|
}
|
|
194
194
|
}).catch((a) => {
|
|
195
|
-
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", a),
|
|
195
|
+
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", a), L.error("파일 목록을 불러오는 중 오류가 발생했습니다.");
|
|
196
196
|
}) : o([]);
|
|
197
197
|
}, [t, e]);
|
|
198
198
|
const d = async (a) => {
|
|
@@ -216,15 +216,15 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
216
216
|
const k = (await s.json().catch(() => null))?.message || "파일 다운로드에 실패했습니다.";
|
|
217
217
|
throw new Error(k);
|
|
218
218
|
}
|
|
219
|
-
const C = await s.blob(),
|
|
220
|
-
Y.href =
|
|
219
|
+
const C = await s.blob(), y = window.URL.createObjectURL(C), Y = document.createElement("a");
|
|
220
|
+
Y.href = y, Y.setAttribute("download", a.name), document.body.appendChild(Y), Y.click(), document.body.removeChild(Y), window.URL.revokeObjectURL(y);
|
|
221
221
|
} catch (u) {
|
|
222
|
-
console.error(u),
|
|
222
|
+
console.error(u), L.error(
|
|
223
223
|
u.message || "파일을 다운로드하는 중 오류가 발생했습니다."
|
|
224
224
|
);
|
|
225
225
|
}
|
|
226
226
|
};
|
|
227
|
-
return Re(n) ? null : /* @__PURE__ */ r(
|
|
227
|
+
return Re(n) ? null : /* @__PURE__ */ r(ye, { title: "파일 목록", children: /* @__PURE__ */ r(
|
|
228
228
|
P,
|
|
229
229
|
{
|
|
230
230
|
dataSource: n,
|
|
@@ -236,7 +236,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
236
236
|
J,
|
|
237
237
|
{
|
|
238
238
|
type: "text",
|
|
239
|
-
icon: /* @__PURE__ */ r(
|
|
239
|
+
icon: /* @__PURE__ */ r(Be, {}),
|
|
240
240
|
onClick: () => d(a)
|
|
241
241
|
},
|
|
242
242
|
"download"
|
|
@@ -256,7 +256,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
256
256
|
validateMessages: { required: "'${label}을(를) 입력해주세요.'" }
|
|
257
257
|
},
|
|
258
258
|
children: /* @__PURE__ */ r(
|
|
259
|
-
|
|
259
|
+
B,
|
|
260
260
|
{
|
|
261
261
|
ref: o,
|
|
262
262
|
...n,
|
|
@@ -271,7 +271,7 @@ const yt = (t) => /* @__PURE__ */ r(J, { ...t, className: "bwg-btn" }), D = De(
|
|
|
271
271
|
)
|
|
272
272
|
);
|
|
273
273
|
Xe.displayName = "BwgForm";
|
|
274
|
-
const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, children: /* @__PURE__ */ r(te, { ...e }) }), { Text: oe } =
|
|
274
|
+
const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, children: /* @__PURE__ */ r(te, { ...e }) }), { Text: oe } = Fe, { Dragger: Ze } = G, Qe = [
|
|
275
275
|
".pdf",
|
|
276
276
|
".xlsx",
|
|
277
277
|
".xls",
|
|
@@ -304,14 +304,14 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
304
304
|
maxFileSize: d = 2048
|
|
305
305
|
// 기본값 2GB
|
|
306
306
|
}) => {
|
|
307
|
-
const [a, u] = T([]), [s, C] = T(!1), [
|
|
307
|
+
const [a, u] = T([]), [s, C] = T(!1), [y, Y] = T(!1), [b, k] = T(0), E = (m) => {
|
|
308
308
|
if (o && o.length > 0) {
|
|
309
|
-
const
|
|
309
|
+
const _ = ((O) => {
|
|
310
310
|
const H = O.lastIndexOf(".");
|
|
311
311
|
return H === -1 ? "" : O.substring(H).toLowerCase();
|
|
312
312
|
})(m.name);
|
|
313
|
-
if (!o.includes(
|
|
314
|
-
return
|
|
313
|
+
if (!o.includes(_))
|
|
314
|
+
return L.error(
|
|
315
315
|
`${m.name} 파일은 허용되지 않는 확장자입니다. (${o.join(
|
|
316
316
|
", "
|
|
317
317
|
)}만 가능)`
|
|
@@ -319,11 +319,11 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
319
319
|
}
|
|
320
320
|
return !0;
|
|
321
321
|
}, v = async () => {
|
|
322
|
-
const m = a.filter((
|
|
323
|
-
(
|
|
322
|
+
const m = a.filter((I) => I.status !== "done"), h = m.reduce(
|
|
323
|
+
(I, R) => I + (R.size || 0),
|
|
324
324
|
0
|
|
325
|
-
),
|
|
326
|
-
if (
|
|
325
|
+
), _ = 2 * 1024 * 1024 * 1024;
|
|
326
|
+
if (h > _) {
|
|
327
327
|
we.error({
|
|
328
328
|
message: "업로드 용량 초과",
|
|
329
329
|
description: "한 번에 업로드할 수 있는 총 파일 용량은 2GB를 초과할 수 없습니다."
|
|
@@ -331,7 +331,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
331
331
|
return;
|
|
332
332
|
}
|
|
333
333
|
if (m.length === 0) {
|
|
334
|
-
|
|
334
|
+
L.warning(
|
|
335
335
|
"업로드할 파일이 없거나 모든 파일이 이미 업로드되었습니다."
|
|
336
336
|
);
|
|
337
337
|
return;
|
|
@@ -339,10 +339,10 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
339
339
|
Y(!0);
|
|
340
340
|
let O;
|
|
341
341
|
try {
|
|
342
|
-
const
|
|
342
|
+
const I = new He();
|
|
343
343
|
m.forEach((R) => {
|
|
344
|
-
R.originFileObj &&
|
|
345
|
-
}), O = await
|
|
344
|
+
R.originFileObj && I.file(R.name, R.originFileObj);
|
|
345
|
+
}), O = await I.generateAsync({
|
|
346
346
|
type: "blob",
|
|
347
347
|
compression: "DEFLATE",
|
|
348
348
|
compressionOptions: {
|
|
@@ -350,15 +350,15 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
350
350
|
// 높은 압축률 설정
|
|
351
351
|
}
|
|
352
352
|
});
|
|
353
|
-
} catch (
|
|
354
|
-
Y(!1),
|
|
353
|
+
} catch (I) {
|
|
354
|
+
Y(!1), L.error("파일을 압축하는 중 오류가 발생했습니다."), console.error("Zipping error:", I);
|
|
355
355
|
return;
|
|
356
356
|
}
|
|
357
357
|
Y(!1);
|
|
358
358
|
const H = new FormData();
|
|
359
359
|
H.append("file", O, "upload.zip"), C(!0), k(0);
|
|
360
360
|
try {
|
|
361
|
-
const
|
|
361
|
+
const I = await new Promise((p, S) => {
|
|
362
362
|
const x = new XMLHttpRequest();
|
|
363
363
|
x.open("POST", "/api/upload-large", !0), x.upload.onprogress = (N) => {
|
|
364
364
|
if (N.lengthComputable) {
|
|
@@ -388,15 +388,15 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
388
388
|
S(new Error("네트워크 오류가 발생했습니다."));
|
|
389
389
|
}, x.send(H);
|
|
390
390
|
});
|
|
391
|
-
|
|
392
|
-
|
|
391
|
+
L.success(
|
|
392
|
+
I.message || "압축 파일이 성공적으로 업로드되었습니다."
|
|
393
393
|
);
|
|
394
394
|
const R = a.map(
|
|
395
395
|
(p) => m.find((S) => S.uid === p.uid) ? { ...p, status: "done" } : p
|
|
396
396
|
);
|
|
397
|
-
if (u(R), i &&
|
|
397
|
+
if (u(R), i && I.uploadedFiles && Array.isArray(I.uploadedFiles)) {
|
|
398
398
|
const p = K();
|
|
399
|
-
|
|
399
|
+
I.uploadedFiles.forEach((S) => {
|
|
400
400
|
const x = {
|
|
401
401
|
crprCd: p?.crprCd,
|
|
402
402
|
sysCd: __SYS_CD__,
|
|
@@ -431,7 +431,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
431
431
|
sub: re
|
|
432
432
|
});
|
|
433
433
|
}).catch((N) => {
|
|
434
|
-
console.error("후처리 서비스 호출 실패:", N),
|
|
434
|
+
console.error("후처리 서비스 호출 실패:", N), L.error(
|
|
435
435
|
`${S.fileNameL} 파일의 후처리 작업에 실패했습니다.`
|
|
436
436
|
);
|
|
437
437
|
}), l && l({
|
|
@@ -440,13 +440,13 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
440
440
|
});
|
|
441
441
|
});
|
|
442
442
|
}
|
|
443
|
-
} catch (
|
|
444
|
-
|
|
443
|
+
} catch (I) {
|
|
444
|
+
L.error(I.message || "파일 업로드 중 오류가 발생했습니다.");
|
|
445
445
|
const R = a.map(
|
|
446
446
|
(p) => m.find((S) => S.uid === p.uid) ? {
|
|
447
447
|
...p,
|
|
448
448
|
status: "error",
|
|
449
|
-
response:
|
|
449
|
+
response: I.message || "파일 업로드 중 오류가 발생했습니다."
|
|
450
450
|
} : p
|
|
451
451
|
);
|
|
452
452
|
u(R);
|
|
@@ -456,32 +456,32 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
456
456
|
}, f = {
|
|
457
457
|
multiple: !0,
|
|
458
458
|
fileList: a,
|
|
459
|
-
beforeUpload: (m) =>
|
|
459
|
+
beforeUpload: (m) => E(m) ? d && m.size >= d * 1024 * 1024 ? (L.error(
|
|
460
460
|
`대용량 첨부 파일 최대 크기는 ${(d / 1024).toFixed(
|
|
461
461
|
1
|
|
462
462
|
)}GB입니다.`
|
|
463
463
|
), G.LIST_IGNORE) : !1 : G.LIST_IGNORE,
|
|
464
464
|
onChange: ({ fileList: m }) => {
|
|
465
|
-
const
|
|
466
|
-
m.forEach((
|
|
467
|
-
|
|
468
|
-
}), u(Array.from(
|
|
465
|
+
const h = new Map(a.map((_) => [_.uid, _]));
|
|
466
|
+
m.forEach((_) => {
|
|
467
|
+
h.set(_.uid, _);
|
|
468
|
+
}), u(Array.from(h.values()));
|
|
469
469
|
},
|
|
470
470
|
onRemove: (m) => {
|
|
471
|
-
const
|
|
472
|
-
u(
|
|
471
|
+
const h = a.filter((_) => _.uid !== m.uid);
|
|
472
|
+
u(h);
|
|
473
473
|
},
|
|
474
474
|
showUploadList: !1
|
|
475
475
|
// 수동으로 목록을 렌더링하므로 antd의 기본 목록은 숨깁니다.
|
|
476
476
|
};
|
|
477
477
|
return /* @__PURE__ */ r(
|
|
478
|
-
|
|
478
|
+
Le,
|
|
479
479
|
{
|
|
480
|
-
spinning: s ||
|
|
481
|
-
tip:
|
|
480
|
+
spinning: s || y,
|
|
481
|
+
tip: y ? "파일 압축 중..." : `파일 업로드 중... ${b}%`,
|
|
482
482
|
children: /* @__PURE__ */ q("div", { className: "bwg-large-uploader-container", children: [
|
|
483
483
|
/* @__PURE__ */ r(
|
|
484
|
-
|
|
484
|
+
ye,
|
|
485
485
|
{
|
|
486
486
|
title: /* @__PURE__ */ r(oe, { strong: !0, children: t }),
|
|
487
487
|
extra: /* @__PURE__ */ r(G, { ...f, children: /* @__PURE__ */ r(J, { icon: /* @__PURE__ */ r(Ye, {}), children: "파일 선택" }) }),
|
|
@@ -501,15 +501,15 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
501
501
|
style: { textAlign: "left" },
|
|
502
502
|
dataSource: a,
|
|
503
503
|
renderItem: (m) => {
|
|
504
|
-
const
|
|
504
|
+
const h = m.status === "done", _ = m.status === "error";
|
|
505
505
|
let O;
|
|
506
|
-
return
|
|
506
|
+
return h ? O = /* @__PURE__ */ r(
|
|
507
507
|
Ue,
|
|
508
508
|
{
|
|
509
509
|
style: { color: "#52c41a", fontSize: 14 }
|
|
510
510
|
}
|
|
511
|
-
) :
|
|
512
|
-
|
|
511
|
+
) : _ ? O = /* @__PURE__ */ r(
|
|
512
|
+
_e,
|
|
513
513
|
{
|
|
514
514
|
title: typeof m.response == "string" ? m.response : "업로드 실패",
|
|
515
515
|
children: /* @__PURE__ */ r(
|
|
@@ -528,11 +528,11 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
528
528
|
J,
|
|
529
529
|
{
|
|
530
530
|
type: "text",
|
|
531
|
-
icon: /* @__PURE__ */ r(
|
|
531
|
+
icon: /* @__PURE__ */ r(Ee, {}),
|
|
532
532
|
onClick: (H) => {
|
|
533
533
|
H.stopPropagation(), f.onRemove?.(m);
|
|
534
534
|
},
|
|
535
|
-
disabled: s ||
|
|
535
|
+
disabled: s || y
|
|
536
536
|
},
|
|
537
537
|
"delete"
|
|
538
538
|
)
|
|
@@ -541,7 +541,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
541
541
|
P.Item.Meta,
|
|
542
542
|
{
|
|
543
543
|
avatar: O,
|
|
544
|
-
title: /* @__PURE__ */ r(oe, { type:
|
|
544
|
+
title: /* @__PURE__ */ r(oe, { type: _ ? "danger" : void 0, children: m.name })
|
|
545
545
|
}
|
|
546
546
|
)
|
|
547
547
|
},
|
|
@@ -575,13 +575,13 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
575
575
|
gap: "large",
|
|
576
576
|
style: { marginTop: 16 },
|
|
577
577
|
children: [
|
|
578
|
-
s && /* @__PURE__ */ r("div", { style: { width: "250px" }, children: /* @__PURE__ */ r(Se, { percent:
|
|
578
|
+
s && /* @__PURE__ */ r("div", { style: { width: "250px" }, children: /* @__PURE__ */ r(Se, { percent: b, size: "small" }) }),
|
|
579
579
|
/* @__PURE__ */ r(
|
|
580
580
|
J,
|
|
581
581
|
{
|
|
582
582
|
type: "primary",
|
|
583
583
|
onClick: v,
|
|
584
|
-
disabled: s ||
|
|
584
|
+
disabled: s || y || a.filter((m) => m.status !== "done").length === 0,
|
|
585
585
|
icon: /* @__PURE__ */ r(Ve, {}),
|
|
586
586
|
children: "일괄 업로드"
|
|
587
587
|
}
|
|
@@ -605,12 +605,12 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
605
605
|
}).join(".");
|
|
606
606
|
}
|
|
607
607
|
return "";
|
|
608
|
-
},
|
|
608
|
+
}, _t = ({
|
|
609
609
|
itemProps: t,
|
|
610
610
|
inputProps: e,
|
|
611
611
|
mask: l
|
|
612
612
|
}) => {
|
|
613
|
-
const i = X(null), n =
|
|
613
|
+
const i = X(null), n = B.useFormInstance(), o = ee(() => et(l), [l]);
|
|
614
614
|
return j(() => {
|
|
615
615
|
if (!i.current?.input) return;
|
|
616
616
|
const d = typeof l == "string" || Array.isArray(l) ? { mask: l } : l, a = Ce(i.current.input, d);
|
|
@@ -634,12 +634,12 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
634
634
|
outputFormat: "YYYYMMDD"
|
|
635
635
|
};
|
|
636
636
|
}
|
|
637
|
-
},
|
|
637
|
+
}, It = ({
|
|
638
638
|
type: t = "date",
|
|
639
639
|
itemProps: e = { name: "calendar" },
|
|
640
640
|
inputProps: l
|
|
641
641
|
}) => {
|
|
642
|
-
const { format: i, mask: n, outputFormat: o } = tt(t), d = X(null), a = X(null), u =
|
|
642
|
+
const { format: i, mask: n, outputFormat: o } = tt(t), d = X(null), a = X(null), u = B.useFormInstance(), [s, C] = T(!1), [y, Y] = T(!1), b = e?.name, [k, E] = T(null);
|
|
643
643
|
j(() => {
|
|
644
644
|
if (!d.current?.input) return;
|
|
645
645
|
const f = Ce(d.current.input, {
|
|
@@ -648,14 +648,14 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
648
648
|
});
|
|
649
649
|
return a.current = f, f.on("accept", () => {
|
|
650
650
|
console.log("input :: ", f.value);
|
|
651
|
-
const m = f.value,
|
|
652
|
-
console.log("input :: ",
|
|
651
|
+
const m = f.value, h = z(m, i, !0);
|
|
652
|
+
console.log("input :: ", h), m.length === i.length && h.isValid() && (console.log("parsed :: ", h.format(o)), u.setFieldValue(b, h.format(o)), a.current?.updateValue(), C(!1));
|
|
653
653
|
}), () => {
|
|
654
654
|
f.destroy();
|
|
655
655
|
};
|
|
656
656
|
}, [i, n]), j(() => {
|
|
657
|
-
|
|
658
|
-
}, [u.getFieldValue(
|
|
657
|
+
E(z(u.getFieldValue(b)));
|
|
658
|
+
}, [u.getFieldValue(b)]);
|
|
659
659
|
const v = (f) => {
|
|
660
660
|
if (!f) {
|
|
661
661
|
a.current?.updateValue();
|
|
@@ -669,13 +669,13 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
669
669
|
{
|
|
670
670
|
...e,
|
|
671
671
|
name: void 0,
|
|
672
|
-
validateStatus:
|
|
673
|
-
help:
|
|
672
|
+
validateStatus: y ? "warning" : void 0,
|
|
673
|
+
help: y ? "유효하지 않은 날짜입니다" : void 0,
|
|
674
674
|
children: /* @__PURE__ */ q("div", { style: { position: "relative" }, children: [
|
|
675
675
|
/* @__PURE__ */ r(
|
|
676
|
-
|
|
676
|
+
B.Item,
|
|
677
677
|
{
|
|
678
|
-
name:
|
|
678
|
+
name: b,
|
|
679
679
|
getValueProps: (f) => ({
|
|
680
680
|
value: f ? z(f).format(i) : void 0
|
|
681
681
|
}),
|
|
@@ -753,7 +753,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
753
753
|
return e?.decimalPoint != null && o[1] != null && e?.decimalPoint > 0 ? o[1].length > e?.decimalPoint ? o[1] = "." + o[1].substring(0, e?.decimalPoint) : o[1] = "." + o[1] : o[1] = "", o[0].replace(/\$\s?|(,*)/g, "") + o[1];
|
|
754
754
|
};
|
|
755
755
|
return /* @__PURE__ */ r(D, { ...t, children: /* @__PURE__ */ r(
|
|
756
|
-
|
|
756
|
+
Ie,
|
|
757
757
|
{
|
|
758
758
|
...e,
|
|
759
759
|
formatter: (n) => l(n),
|
|
@@ -820,8 +820,8 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
820
820
|
)
|
|
821
821
|
}
|
|
822
822
|
);
|
|
823
|
-
},
|
|
824
|
-
const e =
|
|
823
|
+
}, ge = te.Search, vt = (t) => {
|
|
824
|
+
const e = B.useFormInstance(), { openPopup: l } = Ke(), i = t.itemProps?.name || [], n = t.popupConfig || {
|
|
825
825
|
callback(d) {
|
|
826
826
|
console.log("callback data :: ", d), i.length > 1 ? (e.setFieldValue(i[0], d.code), e.setFieldValue(i[1], d.name)) : e.setFieldValue(i, d.code);
|
|
827
827
|
}
|
|
@@ -837,7 +837,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
837
837
|
};
|
|
838
838
|
return i.length > 1 ? /* @__PURE__ */ r(D, { ...t.itemProps, name: void 0, children: /* @__PURE__ */ q(ae.Compact, { block: !0, children: [
|
|
839
839
|
/* @__PURE__ */ r(
|
|
840
|
-
|
|
840
|
+
B.Item,
|
|
841
841
|
{
|
|
842
842
|
name: i[0],
|
|
843
843
|
rules: t.itemProps?.rules,
|
|
@@ -854,8 +854,8 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
854
854
|
)
|
|
855
855
|
}
|
|
856
856
|
),
|
|
857
|
-
/* @__PURE__ */ r(
|
|
858
|
-
|
|
857
|
+
/* @__PURE__ */ r(B.Item, { name: i[1], style: { width: "60%", marginBottom: 0 }, children: /* @__PURE__ */ r(
|
|
858
|
+
ge,
|
|
859
859
|
{
|
|
860
860
|
readOnly: t.readOnly,
|
|
861
861
|
enterButton: /* @__PURE__ */ r(
|
|
@@ -868,7 +868,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
868
868
|
...o
|
|
869
869
|
}
|
|
870
870
|
) })
|
|
871
|
-
] }) }) : /* @__PURE__ */ r(D, { ...t.itemProps, children: /* @__PURE__ */ r(
|
|
871
|
+
] }) }) : /* @__PURE__ */ r(D, { ...t.itemProps, children: /* @__PURE__ */ r(ge, { ...o }) });
|
|
872
872
|
}, xt = ({
|
|
873
873
|
itemProps: t,
|
|
874
874
|
selectProps: e = {
|
|
@@ -876,7 +876,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
876
876
|
allowClear: !0
|
|
877
877
|
}
|
|
878
878
|
}) => {
|
|
879
|
-
const l =
|
|
879
|
+
const l = B.useFormInstance(), i = !!l, n = ee(() => e?.addField === "ALL" ? [{ label: "전체", value: "" }, ...e?.options || []] : e?.addField === "NULL" ? [{ label: "", value: "" }, ...e?.options || []] : e?.options || [], [e.options, e.addField]), o = (u) => {
|
|
880
880
|
e.onChange?.(u);
|
|
881
881
|
}, d = {
|
|
882
882
|
...e,
|
|
@@ -889,7 +889,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
889
889
|
"BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다."
|
|
890
890
|
), e.copyable ? /* @__PURE__ */ r(D, { ...t, name: void 0, children: /* @__PURE__ */ q(ae.Compact, { block: !0, children: [
|
|
891
891
|
/* @__PURE__ */ r(
|
|
892
|
-
|
|
892
|
+
B.Item,
|
|
893
893
|
{
|
|
894
894
|
name: t?.name,
|
|
895
895
|
rules: t?.rules,
|
|
@@ -900,7 +900,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
900
900
|
}
|
|
901
901
|
),
|
|
902
902
|
/* @__PURE__ */ r(
|
|
903
|
-
|
|
903
|
+
Fe.Paragraph,
|
|
904
904
|
{
|
|
905
905
|
copyable: {
|
|
906
906
|
text: i && l?.getFieldValue(t?.name)?.toString() || "",
|
|
@@ -921,13 +921,13 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
921
921
|
}
|
|
922
922
|
)
|
|
923
923
|
] }) }) : /* @__PURE__ */ r(D, { ...t, children: a });
|
|
924
|
-
},
|
|
924
|
+
}, Bt = ({
|
|
925
925
|
itemProps: t,
|
|
926
926
|
inputProps: e = {
|
|
927
927
|
format: "YN"
|
|
928
928
|
}
|
|
929
929
|
}) => {
|
|
930
|
-
const l =
|
|
930
|
+
const l = B.useFormInstance(), i = (n, o) => {
|
|
931
931
|
e.format === "boolean" ? l.setFieldValue(t?.name, n) : l.setFieldValue(t?.name, n ? "Y" : "N"), e.onChange && e.onChange(n, o);
|
|
932
932
|
};
|
|
933
933
|
return /* @__PURE__ */ r(
|
|
@@ -939,7 +939,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
939
939
|
children: /* @__PURE__ */ r(Me, { ...e, onChange: (n, o) => i(n, o) })
|
|
940
940
|
}
|
|
941
941
|
);
|
|
942
|
-
}, { TextArea: nt } = te,
|
|
942
|
+
}, { TextArea: nt } = te, Et = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, children: /* @__PURE__ */ r(nt, { ...e }) }), ot = [
|
|
943
943
|
".pdf",
|
|
944
944
|
".xlsx",
|
|
945
945
|
".xls",
|
|
@@ -957,7 +957,7 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
957
957
|
".gif",
|
|
958
958
|
// 압축
|
|
959
959
|
".zip"
|
|
960
|
-
],
|
|
960
|
+
], he = {
|
|
961
961
|
FILE: "file"
|
|
962
962
|
}, at = ({
|
|
963
963
|
originNode: t,
|
|
@@ -967,36 +967,36 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
967
967
|
onDrop: n
|
|
968
968
|
}) => {
|
|
969
969
|
const o = X(null), [{ handlerId: d }, a] = qe({
|
|
970
|
-
accept:
|
|
971
|
-
collect: (
|
|
972
|
-
handlerId:
|
|
970
|
+
accept: he.FILE,
|
|
971
|
+
collect: (y) => ({
|
|
972
|
+
handlerId: y.getHandlerId()
|
|
973
973
|
}),
|
|
974
|
-
hover(
|
|
974
|
+
hover(y, Y) {
|
|
975
975
|
if (!o.current)
|
|
976
976
|
return;
|
|
977
|
-
const
|
|
978
|
-
if (
|
|
977
|
+
const b = y.uid, k = e.uid;
|
|
978
|
+
if (b === k)
|
|
979
979
|
return;
|
|
980
|
-
const
|
|
981
|
-
if (v === -1 ||
|
|
980
|
+
const E = ne(l, { uid: k }), v = ne(l, { uid: b });
|
|
981
|
+
if (v === -1 || E === -1)
|
|
982
982
|
return;
|
|
983
983
|
const f = o.current.getBoundingClientRect(), m = Y.getClientOffset();
|
|
984
984
|
if (!m)
|
|
985
985
|
return;
|
|
986
|
-
const
|
|
987
|
-
v <
|
|
986
|
+
const h = (f.bottom - f.top) / 2, _ = m.y - f.top;
|
|
987
|
+
v < E && _ < h || v > E && _ > h || i(b, k);
|
|
988
988
|
},
|
|
989
989
|
drop() {
|
|
990
990
|
n();
|
|
991
991
|
}
|
|
992
992
|
}), [{ isDragging: u }, s] = We({
|
|
993
|
-
type:
|
|
993
|
+
type: he.FILE,
|
|
994
994
|
item: () => ({
|
|
995
995
|
uid: e.uid,
|
|
996
996
|
index: ne(l, { uid: e.uid })
|
|
997
997
|
}),
|
|
998
|
-
collect: (
|
|
999
|
-
isDragging:
|
|
998
|
+
collect: (y) => ({
|
|
999
|
+
isDragging: y.isDragging()
|
|
1000
1000
|
})
|
|
1001
1001
|
}), C = u ? 0 : 1;
|
|
1002
1002
|
return s(a(o)), /* @__PURE__ */ r("div", { ref: o, style: { opacity: C }, "data-handler-id": d, children: t });
|
|
@@ -1013,44 +1013,44 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1013
1013
|
showButton: s = !0,
|
|
1014
1014
|
// 기본값으로 true 설정
|
|
1015
1015
|
multiple: C = !1,
|
|
1016
|
-
newFileGrpKeyonModify:
|
|
1016
|
+
newFileGrpKeyonModify: y = !1,
|
|
1017
1017
|
buttonText: Y = "파일 선택",
|
|
1018
|
-
localOnly:
|
|
1018
|
+
localOnly: b = !1,
|
|
1019
1019
|
onFilesChange: k
|
|
1020
1020
|
}) => {
|
|
1021
|
-
const [
|
|
1021
|
+
const [E, v] = T([]), f = X(e), m = X([]), h = B.useFormInstance(), O = X(
|
|
1022
1022
|
$e(() => {
|
|
1023
|
-
if (
|
|
1023
|
+
if (b || m.current.length === 0)
|
|
1024
1024
|
return;
|
|
1025
1025
|
const c = [...m.current];
|
|
1026
1026
|
if (m.current = [], n) {
|
|
1027
|
-
const w = c.map((
|
|
1027
|
+
const w = c.map((F) => ({
|
|
1028
1028
|
crprCd: K()?.crprCd,
|
|
1029
1029
|
sysCd: __SYS_CD__,
|
|
1030
1030
|
fileGrpKey: f.current,
|
|
1031
|
-
physFileNm:
|
|
1032
|
-
lgclFileNm:
|
|
1033
|
-
filePath:
|
|
1034
|
-
fileExtn:
|
|
1035
|
-
fileSize:
|
|
1031
|
+
physFileNm: F.fileNameP,
|
|
1032
|
+
lgclFileNm: F.fileNameL,
|
|
1033
|
+
filePath: F.filePath,
|
|
1034
|
+
fileExtn: F.fileExt,
|
|
1035
|
+
fileSize: F.fileSize,
|
|
1036
1036
|
mltpYn: "N"
|
|
1037
1037
|
}));
|
|
1038
|
-
console.log("newFileGrpKeyonModify",
|
|
1038
|
+
console.log("newFileGrpKeyonModify", y), console.log(
|
|
1039
1039
|
"newFileGrpKeyonModify",
|
|
1040
|
-
|
|
1040
|
+
y ? 0 : f.current
|
|
1041
1041
|
), W(n, {
|
|
1042
1042
|
crprCd: K()?.crprCd,
|
|
1043
1043
|
sysCd: __SYS_CD__,
|
|
1044
|
-
fileGrpKey:
|
|
1044
|
+
fileGrpKey: y ? 0 : f.current,
|
|
1045
1045
|
oldFileGrpKey: f.current,
|
|
1046
|
-
newFileGrpKeyonModify:
|
|
1046
|
+
newFileGrpKeyonModify: y,
|
|
1047
1047
|
sub: w
|
|
1048
|
-
}).then((
|
|
1049
|
-
if (
|
|
1050
|
-
const
|
|
1051
|
-
(!f.current ||
|
|
1048
|
+
}).then((F) => {
|
|
1049
|
+
if (F?.sub && F.sub.length > 0) {
|
|
1050
|
+
const g = F.sub[0].fileGrpKey;
|
|
1051
|
+
(!f.current || y) && (f.current = g);
|
|
1052
1052
|
const V = /* @__PURE__ */ new Map();
|
|
1053
|
-
|
|
1053
|
+
F.sub.forEach((M) => {
|
|
1054
1054
|
const U = c.find(
|
|
1055
1055
|
($) => $.fileNameL === M.lgclFileNm
|
|
1056
1056
|
);
|
|
@@ -1059,24 +1059,24 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1059
1059
|
const Q = t?.name;
|
|
1060
1060
|
((M) => {
|
|
1061
1061
|
if (p) {
|
|
1062
|
-
const U =
|
|
1063
|
-
|
|
1062
|
+
const U = h?.getFieldValue(Q) || [], $ = M(U);
|
|
1063
|
+
h?.setFieldValue(Q, $);
|
|
1064
1064
|
} else
|
|
1065
1065
|
v((U) => M(U));
|
|
1066
1066
|
})((M) => M.map((U) => {
|
|
1067
1067
|
const $ = V.get(U.uid);
|
|
1068
1068
|
if ($) {
|
|
1069
1069
|
const ce = c.find(
|
|
1070
|
-
(
|
|
1070
|
+
(be) => be.tempId === U.uid
|
|
1071
1071
|
);
|
|
1072
1072
|
return l && ce && l({
|
|
1073
1073
|
...ce,
|
|
1074
|
-
fileGrpKey:
|
|
1074
|
+
fileGrpKey: g,
|
|
1075
1075
|
fileKey: $.fileKey
|
|
1076
1076
|
}), {
|
|
1077
1077
|
...U,
|
|
1078
1078
|
name: $.lgclFileNm,
|
|
1079
|
-
fileGrpKey:
|
|
1079
|
+
fileGrpKey: g,
|
|
1080
1080
|
fileKey: $.fileKey,
|
|
1081
1081
|
uid: $.fileKey,
|
|
1082
1082
|
status: "done",
|
|
@@ -1086,18 +1086,18 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1086
1086
|
return U;
|
|
1087
1087
|
}));
|
|
1088
1088
|
}
|
|
1089
|
-
}).catch((
|
|
1090
|
-
console.error("업로드 후처리 서비스 호출 실패:",
|
|
1091
|
-
const
|
|
1089
|
+
}).catch((F) => {
|
|
1090
|
+
console.error("업로드 후처리 서비스 호출 실패:", F), L.error("파일 후처리 중 오류가 발생했습니다.");
|
|
1091
|
+
const g = new Set(c.map((A) => A.tempId)), V = t?.name;
|
|
1092
1092
|
((A) => {
|
|
1093
1093
|
if (p) {
|
|
1094
|
-
const M =
|
|
1095
|
-
|
|
1094
|
+
const M = h?.getFieldValue(V) || [], U = A(M);
|
|
1095
|
+
h?.setFieldValue(V, U);
|
|
1096
1096
|
} else
|
|
1097
1097
|
v((M) => A(M));
|
|
1098
1098
|
})(
|
|
1099
1099
|
(A) => A.map(
|
|
1100
|
-
(M) =>
|
|
1100
|
+
(M) => g.has(M.uid) ? { ...M, status: "error", error: "후처리 실패" } : M
|
|
1101
1101
|
)
|
|
1102
1102
|
);
|
|
1103
1103
|
});
|
|
@@ -1109,96 +1109,96 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1109
1109
|
}, [O]), j(() => {
|
|
1110
1110
|
f.current = e;
|
|
1111
1111
|
}, [e]), j(() => {
|
|
1112
|
-
|
|
1112
|
+
b || e && i && W(i, {
|
|
1113
1113
|
crprCd: K()?.crprCd,
|
|
1114
1114
|
sysCd: __SYS_CD__,
|
|
1115
1115
|
fileGrpKey: e
|
|
1116
1116
|
}).then((c) => {
|
|
1117
1117
|
if (c?.sub) {
|
|
1118
|
-
const w = c.sub.map((
|
|
1119
|
-
uid:
|
|
1120
|
-
name:
|
|
1118
|
+
const w = c.sub.map((g) => ({
|
|
1119
|
+
uid: g.fileKey,
|
|
1120
|
+
name: g.lgclFileNm,
|
|
1121
1121
|
status: "done",
|
|
1122
|
-
url: `/api/download?filePath=${
|
|
1123
|
-
})),
|
|
1124
|
-
p ?
|
|
1122
|
+
url: `/api/download?filePath=${g.filePath}&logicalName=${g.lgclFileNm}`
|
|
1123
|
+
})), F = t?.name;
|
|
1124
|
+
p ? h?.setFieldValue(F, w) : v(w);
|
|
1125
1125
|
} else {
|
|
1126
1126
|
const w = t?.name;
|
|
1127
|
-
p ?
|
|
1127
|
+
p ? h?.setFieldValue(w, []) : v([]);
|
|
1128
1128
|
}
|
|
1129
1129
|
}).catch((c) => {
|
|
1130
|
-
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", c),
|
|
1130
|
+
console.error("파일 목록 조회 서비스 호출에 실패했습니다.", c), L.error("파일 목록을 불러오는 중 오류가 발생했습니다.");
|
|
1131
1131
|
});
|
|
1132
1132
|
}, [e, i]);
|
|
1133
1133
|
const H = (c, w) => {
|
|
1134
|
-
const
|
|
1134
|
+
const F = t?.name, g = p ? h?.getFieldValue(F) || [] : E, V = ne(g, { uid: c }), Q = ne(g, { uid: w });
|
|
1135
1135
|
if (V < 0 || Q < 0) return;
|
|
1136
|
-
const A = [...
|
|
1137
|
-
A.splice(Q, 0, M), p ?
|
|
1138
|
-
},
|
|
1139
|
-
if (!
|
|
1140
|
-
const c = t?.name,
|
|
1136
|
+
const A = [...g], [M] = A.splice(V, 1);
|
|
1137
|
+
A.splice(Q, 0, M), p ? h?.setFieldValue(F, A) : v(A);
|
|
1138
|
+
}, I = () => {
|
|
1139
|
+
if (!b && e && d) {
|
|
1140
|
+
const c = t?.name, F = (p ? h?.getFieldValue(c) || [] : E).map((g) => g.uid);
|
|
1141
1141
|
W(d, {
|
|
1142
1142
|
crprCd: K()?.crprCd,
|
|
1143
1143
|
sysCd: __SYS_CD__,
|
|
1144
1144
|
fileGrpKey: e,
|
|
1145
|
-
reorderedFileKeys:
|
|
1145
|
+
reorderedFileKeys: F
|
|
1146
1146
|
}).then(() => {
|
|
1147
|
-
|
|
1148
|
-
}).catch((
|
|
1149
|
-
console.error("파일 순서 저장 서비스 호출 실패:",
|
|
1147
|
+
L.success("파일 순서가 성공적으로 저장되었습니다.");
|
|
1148
|
+
}).catch((g) => {
|
|
1149
|
+
console.error("파일 순서 저장 서비스 호출 실패:", g), L.error("파일 순서 저장 중 오류가 발생했습니다.");
|
|
1150
1150
|
});
|
|
1151
1151
|
}
|
|
1152
1152
|
}, R = (c) => {
|
|
1153
|
-
const w = t?.name,
|
|
1154
|
-
if (!C &&
|
|
1155
|
-
return
|
|
1153
|
+
const w = t?.name, F = p ? h?.getFieldValue(w) || [] : E;
|
|
1154
|
+
if (!C && F.length > 0)
|
|
1155
|
+
return L.error("하나의 파일만 업로드할 수 있습니다."), G.LIST_IGNORE;
|
|
1156
1156
|
if (a && a.length > 0) {
|
|
1157
|
-
const
|
|
1158
|
-
if (!a.includes(
|
|
1159
|
-
return
|
|
1157
|
+
const g = `.${c.name.split(".").pop()?.toLowerCase()}`;
|
|
1158
|
+
if (!a.includes(g))
|
|
1159
|
+
return L.error(
|
|
1160
1160
|
`${c.name} 파일은 허용되지 않는 확장자입니다. (${a.join(
|
|
1161
1161
|
", "
|
|
1162
1162
|
)})`
|
|
1163
1163
|
), G.LIST_IGNORE;
|
|
1164
1164
|
}
|
|
1165
|
-
return u && !(c.size / 1024 / 1024 < u) ? (
|
|
1165
|
+
return u && !(c.size / 1024 / 1024 < u) ? (L.error(`일반업로드의 최대용량은 ${u}MB입니다.`), G.LIST_IGNORE) : !b;
|
|
1166
1166
|
}, p = !!t?.name, S = {
|
|
1167
1167
|
name: "file",
|
|
1168
1168
|
multiple: C,
|
|
1169
|
-
action:
|
|
1169
|
+
action: b ? void 0 : "/api/upload",
|
|
1170
1170
|
beforeUpload: R,
|
|
1171
1171
|
showUploadList: {
|
|
1172
1172
|
showRemoveIcon: s
|
|
1173
1173
|
// showButton 값에 따라 삭제 버튼 표시/숨김
|
|
1174
1174
|
},
|
|
1175
1175
|
onChange(c) {
|
|
1176
|
-
const { status: w, uid:
|
|
1176
|
+
const { status: w, uid: F } = c.file;
|
|
1177
1177
|
if (w === "removed") {
|
|
1178
|
-
if (!
|
|
1178
|
+
if (!b && o)
|
|
1179
1179
|
W(o, {
|
|
1180
1180
|
crprCd: K()?.crprCd,
|
|
1181
1181
|
sysCd: __SYS_CD__,
|
|
1182
|
-
fileGrpKey:
|
|
1183
|
-
fileKey:
|
|
1182
|
+
fileGrpKey: y ? 0 : f.current,
|
|
1183
|
+
fileKey: F,
|
|
1184
1184
|
oldFileGrpKey: f.current,
|
|
1185
|
-
newFileGrpKeyonModify:
|
|
1186
|
-
}).then((
|
|
1187
|
-
if (
|
|
1185
|
+
newFileGrpKeyonModify: y
|
|
1186
|
+
}).then((g) => {
|
|
1187
|
+
if (L.success("파일이 성공적으로 삭제되었습니다."), y && (f.current = g.fileGrpKey), p) {
|
|
1188
1188
|
const V = t?.name;
|
|
1189
|
-
|
|
1189
|
+
h?.setFieldValue(V, c.fileList);
|
|
1190
1190
|
} else
|
|
1191
1191
|
v(c.fileList);
|
|
1192
1192
|
k?.(c.fileList), l?.({
|
|
1193
|
-
fileGrpKey:
|
|
1193
|
+
fileGrpKey: g.fileGrpKey
|
|
1194
1194
|
});
|
|
1195
|
-
}).catch((
|
|
1196
|
-
console.error("파일 삭제 서비스 호출에 실패했습니다.",
|
|
1195
|
+
}).catch((g) => {
|
|
1196
|
+
console.error("파일 삭제 서비스 호출에 실패했습니다.", g), L.error("파일 삭제 중 오류가 발생했습니다.");
|
|
1197
1197
|
});
|
|
1198
1198
|
else {
|
|
1199
1199
|
if (p) {
|
|
1200
|
-
const
|
|
1201
|
-
|
|
1200
|
+
const g = t?.name;
|
|
1201
|
+
h?.setFieldValue(g, c.fileList);
|
|
1202
1202
|
} else
|
|
1203
1203
|
v(c.fileList);
|
|
1204
1204
|
k?.(c.fileList);
|
|
@@ -1206,46 +1206,46 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1206
1206
|
return;
|
|
1207
1207
|
}
|
|
1208
1208
|
if (p) {
|
|
1209
|
-
const
|
|
1210
|
-
|
|
1209
|
+
const g = t?.name;
|
|
1210
|
+
h?.setFieldValue(g, c.fileList);
|
|
1211
1211
|
} else
|
|
1212
1212
|
v(c.fileList);
|
|
1213
1213
|
if (k?.(c.fileList), w === "done")
|
|
1214
|
-
if (!
|
|
1215
|
-
const { uploadedFiles:
|
|
1216
|
-
|
|
1214
|
+
if (!b && c.file.response?.success) {
|
|
1215
|
+
const { uploadedFiles: g } = c.file.response;
|
|
1216
|
+
g && Array.isArray(g) && g.length > 0 && (g.forEach((V) => {
|
|
1217
1217
|
V.tempId = c.file.uid, m.current.push(V);
|
|
1218
|
-
}), O()),
|
|
1218
|
+
}), O()), L.success(
|
|
1219
1219
|
c.file.response.message || `${c.file.name} 파일이 성공적으로 업로드되었습니다.`
|
|
1220
1220
|
);
|
|
1221
1221
|
} else
|
|
1222
|
-
|
|
1222
|
+
L.error(
|
|
1223
1223
|
c.file.response?.message || `${c.file.name} 파일 업로드에 실패했습니다.`
|
|
1224
1224
|
);
|
|
1225
|
-
else w === "error" &&
|
|
1225
|
+
else w === "error" && L.error(
|
|
1226
1226
|
c.file.response?.message || `${c.file.name} 파일 업로드 중 오류가 발생했습니다.`
|
|
1227
1227
|
);
|
|
1228
1228
|
},
|
|
1229
|
-
itemRender(c, w,
|
|
1230
|
-
const
|
|
1229
|
+
itemRender(c, w, F) {
|
|
1230
|
+
const g = ve(c, {
|
|
1231
1231
|
href: w.url || void 0,
|
|
1232
1232
|
title: void 0
|
|
1233
1233
|
});
|
|
1234
1234
|
return /* @__PURE__ */ r(
|
|
1235
1235
|
at,
|
|
1236
1236
|
{
|
|
1237
|
-
originNode:
|
|
1237
|
+
originNode: g,
|
|
1238
1238
|
file: w,
|
|
1239
|
-
fileList:
|
|
1239
|
+
fileList: F,
|
|
1240
1240
|
moveFile: H,
|
|
1241
|
-
onDrop:
|
|
1241
|
+
onDrop: I
|
|
1242
1242
|
},
|
|
1243
1243
|
w.uid
|
|
1244
1244
|
);
|
|
1245
1245
|
}
|
|
1246
1246
|
};
|
|
1247
|
-
p || (S.fileList =
|
|
1248
|
-
const x = (c) => Array.isArray(c) ? c : c && c.fileList, N = t?.name, re = p ?
|
|
1247
|
+
p || (S.fileList = E);
|
|
1248
|
+
const x = (c) => Array.isArray(c) ? c : c && c.fileList, N = t?.name, re = p ? B.useWatch?.(N, h) : void 0, Z = p ? re || [] : E;
|
|
1249
1249
|
return /* @__PURE__ */ r(Ge, { backend: Je, children: /* @__PURE__ */ r(
|
|
1250
1250
|
D,
|
|
1251
1251
|
{
|
|
@@ -1265,24 +1265,24 @@ const St = ({ itemProps: t, inputProps: e }) => /* @__PURE__ */ r(D, { ...t, chi
|
|
|
1265
1265
|
) });
|
|
1266
1266
|
};
|
|
1267
1267
|
export {
|
|
1268
|
-
|
|
1268
|
+
Ft as BwgButton,
|
|
1269
1269
|
Yt as BwgCheck,
|
|
1270
1270
|
Ct as BwgCheckList,
|
|
1271
|
-
|
|
1272
|
-
|
|
1271
|
+
bt as BwgDatePicker,
|
|
1272
|
+
Lt as BwgDownload,
|
|
1273
1273
|
Xe as BwgForm,
|
|
1274
1274
|
D as BwgFormItem,
|
|
1275
1275
|
St as BwgInput,
|
|
1276
1276
|
wt as BwgLargeUploader,
|
|
1277
|
-
|
|
1278
|
-
|
|
1277
|
+
_t as BwgMaskedInput,
|
|
1278
|
+
It as BwgMaskedPicker,
|
|
1279
1279
|
Nt as BwgMultiSelect,
|
|
1280
1280
|
Mt as BwgNumber,
|
|
1281
1281
|
Dt as BwgRadio,
|
|
1282
1282
|
kt as BwgRangePicker,
|
|
1283
1283
|
vt as BwgSearch,
|
|
1284
1284
|
xt as BwgSelect,
|
|
1285
|
-
|
|
1286
|
-
|
|
1285
|
+
Bt as BwgSwitch,
|
|
1286
|
+
Et as BwgTextArea,
|
|
1287
1287
|
Ot as BwgUploader
|
|
1288
1288
|
};
|