sa2kit 1.6.29 → 1.6.31
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/AliyunOSSProvider-P6TOVKMM.mjs +6 -0
- package/dist/{AliyunOSSProvider-I7I5YGLB.mjs.map → AliyunOSSProvider-P6TOVKMM.mjs.map} +1 -1
- package/dist/AliyunOSSProvider-Z5BRBCG6.js +15 -0
- package/dist/{AliyunOSSProvider-L7JWMKS4.js.map → AliyunOSSProvider-Z5BRBCG6.js.map} +1 -1
- package/dist/ConfigService-3DIC6C3Q.js +21 -0
- package/dist/{ConfigService-7MEZXKJ5.js.map → ConfigService-3DIC6C3Q.js.map} +1 -1
- package/dist/ConfigService-V6ZK273Z.mjs +4 -0
- package/dist/{ConfigService-BV57YYFW.mjs.map → ConfigService-V6ZK273Z.mjs.map} +1 -1
- package/dist/LocalStorageProvider-3RVPCQB3.mjs +6 -0
- package/dist/{LocalStorageProvider-FVLLHBHO.mjs.map → LocalStorageProvider-3RVPCQB3.mjs.map} +1 -1
- package/dist/LocalStorageProvider-PP7MA5OT.js +15 -0
- package/dist/{LocalStorageProvider-NBNHHWLY.js.map → LocalStorageProvider-PP7MA5OT.js.map} +1 -1
- package/dist/PMXParser-2VTA737I.js +13 -0
- package/dist/{PMXParser-YBS3B6HM.js.map → PMXParser-2VTA737I.js.map} +1 -1
- package/dist/PMXParser-RNVQL76A.mjs +4 -0
- package/dist/{PMXParser-L6IWHL4I.mjs.map → PMXParser-RNVQL76A.mjs.map} +1 -1
- package/dist/analytics/index.js +46 -45
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/index.mjs +45 -44
- package/dist/analytics/index.mjs.map +1 -1
- package/dist/analytics/server/index.js +4 -4
- package/dist/analytics/server/index.js.map +1 -1
- package/dist/analytics/server/index.mjs +4 -4
- package/dist/analytics/server/index.mjs.map +1 -1
- package/dist/api/index.js +5 -5
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +5 -5
- package/dist/api/index.mjs.map +1 -1
- package/dist/audioDetection/index.js +17 -16
- package/dist/audioDetection/index.js.map +1 -1
- package/dist/audioDetection/index.mjs +17 -16
- package/dist/audioDetection/index.mjs.map +1 -1
- package/dist/auth/client/index.js +4 -4
- package/dist/auth/client/index.mjs +1 -1
- package/dist/auth/components/index.js +3 -3
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/components/index.mjs +3 -3
- package/dist/auth/components/index.mjs.map +1 -1
- package/dist/auth/index.js +29 -29
- package/dist/auth/index.mjs +5 -5
- package/dist/auth/middleware/index.js +3 -3
- package/dist/auth/middleware/index.mjs +2 -2
- package/dist/auth/routes/index.js +14 -14
- package/dist/auth/routes/index.mjs +2 -2
- package/dist/auth/services/index.js +7 -7
- package/dist/auth/services/index.mjs +1 -1
- package/dist/calendar/index.js +146 -182
- package/dist/calendar/index.js.map +1 -1
- package/dist/calendar/index.mjs +139 -175
- package/dist/calendar/index.mjs.map +1 -1
- package/dist/calendar/routes/index.js +1 -1
- package/dist/calendar/routes/index.js.map +1 -1
- package/dist/calendar/routes/index.mjs +1 -1
- package/dist/calendar/routes/index.mjs.map +1 -1
- package/dist/{chunk-5YQ5B7IZ.js → chunk-24HGREE6.js} +5 -5
- package/dist/{chunk-5YQ5B7IZ.js.map → chunk-24HGREE6.js.map} +1 -1
- package/dist/{chunk-6PRFP5EG.js → chunk-25OFOKNF.js} +6 -6
- package/dist/chunk-25OFOKNF.js.map +1 -0
- package/dist/{chunk-KQGP6BTS.mjs → chunk-3DXPQ4YV.mjs} +6 -6
- package/dist/chunk-3DXPQ4YV.mjs.map +1 -0
- package/dist/{chunk-3BGPZN4X.mjs → chunk-3NHAT7D4.mjs} +12 -12
- package/dist/chunk-3NHAT7D4.mjs.map +1 -0
- package/dist/{chunk-MW4BCIZC.mjs → chunk-4HC6M7FK.mjs} +3 -3
- package/dist/chunk-4HC6M7FK.mjs.map +1 -0
- package/dist/{chunk-ESRCX5TQ.mjs → chunk-52TN2QSS.mjs} +3 -3
- package/dist/{chunk-ESRCX5TQ.mjs.map → chunk-52TN2QSS.mjs.map} +1 -1
- package/dist/{chunk-DW2ZTOCV.js → chunk-5A7ERLKK.js} +105 -106
- package/dist/chunk-5A7ERLKK.js.map +1 -0
- package/dist/{chunk-CNTILN5J.mjs → chunk-5YQ62BKX.mjs} +20 -19
- package/dist/chunk-5YQ62BKX.mjs.map +1 -0
- package/dist/{chunk-6W5BMXJG.js → chunk-6OWNMJKG.js} +4 -4
- package/dist/{chunk-6W5BMXJG.js.map → chunk-6OWNMJKG.js.map} +1 -1
- package/dist/{chunk-WSNM4EU5.mjs → chunk-77M5AQG3.mjs} +37 -41
- package/dist/chunk-77M5AQG3.mjs.map +1 -0
- package/dist/{chunk-DUHZ7VZP.js → chunk-7VRT55ZD.js} +3 -3
- package/dist/chunk-7VRT55ZD.js.map +1 -0
- package/dist/{chunk-LX4XX6W7.js → chunk-C54W2CMK.js} +16 -16
- package/dist/chunk-C54W2CMK.js.map +1 -0
- package/dist/{chunk-3WOAPLEG.mjs → chunk-EB4NR623.mjs} +27 -26
- package/dist/chunk-EB4NR623.mjs.map +1 -0
- package/dist/{chunk-CD77U7LZ.js → chunk-GBPLX42J.js} +9 -9
- package/dist/chunk-GBPLX42J.js.map +1 -0
- package/dist/{chunk-TFQF2HDO.mjs → chunk-HDEOCX2L.mjs} +12 -12
- package/dist/chunk-HDEOCX2L.mjs.map +1 -0
- package/dist/{chunk-LFG6FPM5.mjs → chunk-KIP2CERU.mjs} +37 -38
- package/dist/chunk-KIP2CERU.mjs.map +1 -0
- package/dist/{chunk-6YKMCPQI.mjs → chunk-KZKIH4AS.mjs} +4 -4
- package/dist/chunk-KZKIH4AS.mjs.map +1 -0
- package/dist/{chunk-6MQUBPKB.mjs → chunk-LJ4CCSSY.mjs} +3 -3
- package/dist/{chunk-6MQUBPKB.mjs.map → chunk-LJ4CCSSY.mjs.map} +1 -1
- package/dist/{chunk-TOC5FSHP.js → chunk-NJ2SNXBJ.js} +12 -12
- package/dist/chunk-NJ2SNXBJ.js.map +1 -0
- package/dist/{chunk-OCR5DS4C.mjs → chunk-PE5EAHZK.mjs} +3 -3
- package/dist/chunk-PE5EAHZK.mjs.map +1 -0
- package/dist/{chunk-TKCYPDWU.js → chunk-Q5EDCKQA.js} +27 -29
- package/dist/chunk-Q5EDCKQA.js.map +1 -0
- package/dist/{chunk-CLKKZSPZ.js → chunk-RBKGYWME.js} +20 -19
- package/dist/chunk-RBKGYWME.js.map +1 -0
- package/dist/{chunk-VRTRSEEH.mjs → chunk-RSJSZ7QH.mjs} +11 -11
- package/dist/chunk-RSJSZ7QH.mjs.map +1 -0
- package/dist/{chunk-E7RGBAYJ.js → chunk-TDCDEBGP.js} +30 -29
- package/dist/chunk-TDCDEBGP.js.map +1 -0
- package/dist/{chunk-T5OZHYVM.mjs → chunk-TVROG2Q4.mjs} +15 -15
- package/dist/chunk-TVROG2Q4.mjs.map +1 -0
- package/dist/{chunk-JZXJQMVE.js → chunk-UIFFDRTE.js} +11 -11
- package/dist/chunk-UIFFDRTE.js.map +1 -0
- package/dist/{chunk-UOFTHYIH.js → chunk-UL6XJGUZ.js} +4 -4
- package/dist/chunk-UL6XJGUZ.js.map +1 -0
- package/dist/{chunk-A3UP56MS.js → chunk-WA67GZSZ.js} +3 -3
- package/dist/chunk-WA67GZSZ.js.map +1 -0
- package/dist/{chunk-OLHGZXN3.mjs → chunk-WEEXCPSE.mjs} +5 -5
- package/dist/chunk-WEEXCPSE.mjs.map +1 -0
- package/dist/{chunk-5GCHAXY5.js → chunk-X3UU7JHT.js} +38 -42
- package/dist/chunk-X3UU7JHT.js.map +1 -0
- package/dist/{chunk-QU5OT4DF.js → chunk-XJ7ZAGC5.js} +5 -5
- package/dist/chunk-XJ7ZAGC5.js.map +1 -0
- package/dist/{chunk-GSTLV3MB.mjs → chunk-YOTQG4NP.mjs} +26 -28
- package/dist/chunk-YOTQG4NP.mjs.map +1 -0
- package/dist/{chunk-QAT2RWAO.mjs → chunk-Z36R3P62.mjs} +7 -7
- package/dist/chunk-Z36R3P62.mjs.map +1 -0
- package/dist/{chunk-7Z5LLJ3A.js → chunk-ZWQJSZEY.js} +13 -13
- package/dist/chunk-ZWQJSZEY.js.map +1 -0
- package/dist/config/index.js +6 -6
- package/dist/config/index.js.map +1 -1
- package/dist/config/index.mjs +6 -6
- package/dist/config/index.mjs.map +1 -1
- package/dist/config/server/index.js +37 -37
- package/dist/config/server/index.js.map +1 -1
- package/dist/config/server/index.mjs +37 -37
- package/dist/config/server/index.mjs.map +1 -1
- package/dist/i18n/index.d.mts +2 -2
- package/dist/i18n/index.d.ts +2 -2
- package/dist/i18n/index.js +16 -17
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/index.mjs +16 -17
- package/dist/i18n/index.mjs.map +1 -1
- package/dist/imageCrop/index.js +11 -10
- package/dist/imageCrop/index.js.map +1 -1
- package/dist/imageCrop/index.mjs +11 -10
- package/dist/imageCrop/index.mjs.map +1 -1
- package/dist/index.js +221 -246
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +79 -104
- package/dist/index.mjs.map +1 -1
- package/dist/logger/index.js +6 -6
- package/dist/logger/index.mjs +1 -1
- package/dist/mmd/admin/index.js +11 -10
- package/dist/mmd/admin/index.js.map +1 -1
- package/dist/mmd/admin/index.mjs +11 -10
- package/dist/mmd/admin/index.mjs.map +1 -1
- package/dist/mmd/index.js +223 -241
- package/dist/mmd/index.js.map +1 -1
- package/dist/mmd/index.mjs +220 -238
- package/dist/mmd/index.mjs.map +1 -1
- package/dist/mmd/server/index.js +6 -6
- package/dist/mmd/server/index.js.map +1 -1
- package/dist/mmd/server/index.mjs +6 -6
- package/dist/mmd/server/index.mjs.map +1 -1
- package/dist/music/index.js +16 -16
- package/dist/music/index.mjs +2 -2
- package/dist/music/server/index.js +8 -8
- package/dist/music/server/index.mjs +1 -1
- package/dist/request/index.js +2 -2
- package/dist/request/index.js.map +1 -1
- package/dist/request/index.mjs +2 -2
- package/dist/request/index.mjs.map +1 -1
- package/dist/storage/index.js +11 -11
- package/dist/storage/index.mjs +2 -2
- package/dist/testYourself/admin/index.js +3 -3
- package/dist/testYourself/admin/index.mjs +1 -1
- package/dist/testYourself/index.js +22 -22
- package/dist/testYourself/index.js.map +1 -1
- package/dist/testYourself/index.mjs +14 -14
- package/dist/testYourself/index.mjs.map +1 -1
- package/dist/testYourself/server/index.js +4 -4
- package/dist/testYourself/server/index.mjs +1 -1
- package/dist/universalExport/index.d.mts +3 -3
- package/dist/universalExport/index.d.ts +3 -3
- package/dist/universalExport/index.js +48 -47
- package/dist/universalExport/index.js.map +1 -1
- package/dist/universalExport/index.mjs +48 -47
- package/dist/universalExport/index.mjs.map +1 -1
- package/dist/universalExport/server/index.js +29 -29
- package/dist/universalExport/server/index.js.map +1 -1
- package/dist/universalExport/server/index.mjs +28 -28
- package/dist/universalExport/server/index.mjs.map +1 -1
- package/dist/universalFile/index.d.mts +3 -3
- package/dist/universalFile/index.d.ts +3 -3
- package/dist/universalFile/index.js +73 -72
- package/dist/universalFile/index.js.map +1 -1
- package/dist/universalFile/index.mjs +73 -72
- package/dist/universalFile/index.mjs.map +1 -1
- package/dist/universalFile/server/index.js +258 -260
- package/dist/universalFile/server/index.js.map +1 -1
- package/dist/universalFile/server/index.mjs +244 -246
- package/dist/universalFile/server/index.mjs.map +1 -1
- package/dist/utils/index.js +11 -11
- package/dist/utils/index.mjs +2 -2
- package/package.json +1 -1
- package/dist/AliyunOSSProvider-I7I5YGLB.mjs +0 -6
- package/dist/AliyunOSSProvider-L7JWMKS4.js +0 -15
- package/dist/ConfigService-7MEZXKJ5.js +0 -21
- package/dist/ConfigService-BV57YYFW.mjs +0 -4
- package/dist/LocalStorageProvider-FVLLHBHO.mjs +0 -6
- package/dist/LocalStorageProvider-NBNHHWLY.js +0 -15
- package/dist/PMXParser-L6IWHL4I.mjs +0 -4
- package/dist/PMXParser-YBS3B6HM.js +0 -13
- package/dist/chunk-3BGPZN4X.mjs.map +0 -1
- package/dist/chunk-3WOAPLEG.mjs.map +0 -1
- package/dist/chunk-5GCHAXY5.js.map +0 -1
- package/dist/chunk-6PRFP5EG.js.map +0 -1
- package/dist/chunk-6YKMCPQI.mjs.map +0 -1
- package/dist/chunk-7Z5LLJ3A.js.map +0 -1
- package/dist/chunk-A3UP56MS.js.map +0 -1
- package/dist/chunk-CD77U7LZ.js.map +0 -1
- package/dist/chunk-CLKKZSPZ.js.map +0 -1
- package/dist/chunk-CNTILN5J.mjs.map +0 -1
- package/dist/chunk-DUHZ7VZP.js.map +0 -1
- package/dist/chunk-DW2ZTOCV.js.map +0 -1
- package/dist/chunk-E7RGBAYJ.js.map +0 -1
- package/dist/chunk-GSTLV3MB.mjs.map +0 -1
- package/dist/chunk-JZXJQMVE.js.map +0 -1
- package/dist/chunk-KQGP6BTS.mjs.map +0 -1
- package/dist/chunk-LFG6FPM5.mjs.map +0 -1
- package/dist/chunk-LX4XX6W7.js.map +0 -1
- package/dist/chunk-MW4BCIZC.mjs.map +0 -1
- package/dist/chunk-OCR5DS4C.mjs.map +0 -1
- package/dist/chunk-OLHGZXN3.mjs.map +0 -1
- package/dist/chunk-QAT2RWAO.mjs.map +0 -1
- package/dist/chunk-QU5OT4DF.js.map +0 -1
- package/dist/chunk-T5OZHYVM.mjs.map +0 -1
- package/dist/chunk-TFQF2HDO.mjs.map +0 -1
- package/dist/chunk-TKCYPDWU.js.map +0 -1
- package/dist/chunk-TOC5FSHP.js.map +0 -1
- package/dist/chunk-UOFTHYIH.js.map +0 -1
- package/dist/chunk-VRTRSEEH.mjs.map +0 -1
- package/dist/chunk-WSNM4EU5.mjs.map +0 -1
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var chunkUIYKZ73N_js = require('../chunk-UIYKZ73N.js');
|
|
4
4
|
require('../chunk-DGUM43GV.js');
|
|
5
5
|
var React = require('react');
|
|
6
|
+
var clsx = require('clsx');
|
|
6
7
|
var lucideReact = require('lucide-react');
|
|
7
8
|
|
|
8
9
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -35,19 +36,19 @@ var EXPORT_FORMAT_MIME_TYPES = {
|
|
|
35
36
|
var API_BASE_PATH = "/api/universal-export";
|
|
36
37
|
var API_ENDPOINTS = {
|
|
37
38
|
/** 获取配置列表 */
|
|
38
|
-
GET_CONFIGS:
|
|
39
|
+
GET_CONFIGS: API_BASE_PATH + "/configs",
|
|
39
40
|
/** 创建配置 */
|
|
40
|
-
CREATE_CONFIG:
|
|
41
|
+
CREATE_CONFIG: API_BASE_PATH + "/configs",
|
|
41
42
|
/** 更新配置 */
|
|
42
|
-
UPDATE_CONFIG: (configId) =>
|
|
43
|
+
UPDATE_CONFIG: (configId) => API_BASE_PATH + "/configs/" + configId,
|
|
43
44
|
/** 删除配置 */
|
|
44
|
-
DELETE_CONFIG: (configId) =>
|
|
45
|
+
DELETE_CONFIG: (configId) => API_BASE_PATH + "/configs/" + configId,
|
|
45
46
|
/** 触发导出 */
|
|
46
|
-
EXPORT_DATA:
|
|
47
|
+
EXPORT_DATA: API_BASE_PATH + "/export",
|
|
47
48
|
/** 查询导出进度 */
|
|
48
|
-
GET_PROGRESS: (exportId) =>
|
|
49
|
+
GET_PROGRESS: (exportId) => API_BASE_PATH + "/export/" + exportId + "/progress",
|
|
49
50
|
/** 下载导出文件 */
|
|
50
|
-
DOWNLOAD_FILE: (exportId) =>
|
|
51
|
+
DOWNLOAD_FILE: (exportId) => API_BASE_PATH + "/export/" + exportId + "/download"
|
|
51
52
|
};
|
|
52
53
|
var ERROR_CODES = {
|
|
53
54
|
/** 导出配置错误 */
|
|
@@ -72,7 +73,7 @@ function generateExportFileName(template, format) {
|
|
|
72
73
|
const dateStr = now.toISOString().split("T")[0] || "";
|
|
73
74
|
const timeStr = (now.toTimeString().split(" ")[0] || "").replace(/:/g, "-");
|
|
74
75
|
const extension = EXPORT_FORMAT_EXTENSIONS[format];
|
|
75
|
-
return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) +
|
|
76
|
+
return template.replace("{date}", dateStr).replace("{time}", timeStr).replace("{timestamp}", now.getTime().toString()) + "." + extension;
|
|
76
77
|
}
|
|
77
78
|
function validateFileName(fileName) {
|
|
78
79
|
const invalidChars = /[<>:"|?*\/\\]/;
|
|
@@ -90,7 +91,7 @@ function sanitizeFileName(fileName) {
|
|
|
90
91
|
function escapeCSVField(value, delimiter = ",") {
|
|
91
92
|
const valueStr = String(value || "");
|
|
92
93
|
if (valueStr.includes(delimiter) || valueStr.includes('"') || valueStr.includes("\n")) {
|
|
93
|
-
return
|
|
94
|
+
return '"' + valueStr.replace(/"/g, '""') + '"';
|
|
94
95
|
}
|
|
95
96
|
return valueStr;
|
|
96
97
|
}
|
|
@@ -123,12 +124,12 @@ var DEFAULT_FORMATTERS = {
|
|
|
123
124
|
// 货币格式化
|
|
124
125
|
currency: (value) => {
|
|
125
126
|
if (value === null || value === void 0) return "";
|
|
126
|
-
return
|
|
127
|
+
return "\xA5" + Number(value).toFixed(2);
|
|
127
128
|
},
|
|
128
129
|
// 百分比格式化
|
|
129
130
|
percentage: (value) => {
|
|
130
131
|
if (value === null || value === void 0) return "";
|
|
131
|
-
return
|
|
132
|
+
return (Number(value) * 100).toFixed(2) + "%";
|
|
132
133
|
},
|
|
133
134
|
// 布尔值格式化
|
|
134
135
|
boolean: (value) => {
|
|
@@ -197,24 +198,24 @@ function formatFileSize(bytes) {
|
|
|
197
198
|
const units = ["B", "KB", "MB", "GB", "TB"];
|
|
198
199
|
const k = 1024;
|
|
199
200
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
200
|
-
return
|
|
201
|
+
return (bytes / Math.pow(k, i)).toFixed(2) + " " + units[i];
|
|
201
202
|
}
|
|
202
203
|
function formatDuration(milliseconds) {
|
|
203
204
|
if (milliseconds < 1e3) {
|
|
204
|
-
return
|
|
205
|
+
return milliseconds + "ms";
|
|
205
206
|
}
|
|
206
207
|
const seconds = Math.floor(milliseconds / 1e3);
|
|
207
208
|
if (seconds < 60) {
|
|
208
|
-
return
|
|
209
|
+
return seconds + "\u79D2";
|
|
209
210
|
}
|
|
210
211
|
const minutes = Math.floor(seconds / 60);
|
|
211
212
|
const remainingSeconds = seconds % 60;
|
|
212
213
|
if (minutes < 60) {
|
|
213
|
-
return remainingSeconds > 0 ?
|
|
214
|
+
return remainingSeconds > 0 ? minutes + "\u5206" + remainingSeconds + "\u79D2" : minutes + "\u5206\u949F";
|
|
214
215
|
}
|
|
215
216
|
const hours = Math.floor(minutes / 60);
|
|
216
217
|
const remainingMinutes = minutes % 60;
|
|
217
|
-
return remainingMinutes > 0 ?
|
|
218
|
+
return remainingMinutes > 0 ? hours + "\u5C0F\u65F6" + remainingMinutes + "\u5206\u949F" : hours + "\u5C0F\u65F6";
|
|
218
219
|
}
|
|
219
220
|
function estimateEndTime(startTime, processedRows, totalRows) {
|
|
220
221
|
if (processedRows === 0 || totalRows === 0) {
|
|
@@ -279,21 +280,21 @@ var UniversalExportClient = class {
|
|
|
279
280
|
if (businessId) {
|
|
280
281
|
params.append("businessId", businessId);
|
|
281
282
|
}
|
|
282
|
-
const url =
|
|
283
|
+
const url = this.config.baseUrl + API_ENDPOINTS.GET_CONFIGS + "?" + params;
|
|
283
284
|
try {
|
|
284
285
|
const response = await this.fetchWithTimeout(url, {
|
|
285
286
|
method: "GET",
|
|
286
287
|
headers: this.getHeaders()
|
|
287
288
|
});
|
|
288
289
|
if (!response.ok) {
|
|
289
|
-
throw new Error(
|
|
290
|
+
throw new Error("\u83B7\u53D6\u914D\u7F6E\u5931\u8D25: " + response.statusText);
|
|
290
291
|
}
|
|
291
292
|
const data = await response.json();
|
|
292
293
|
return this.transformConfigsFromAPI(data.configs || []);
|
|
293
294
|
} catch (error) {
|
|
294
295
|
throw createExportError(
|
|
295
296
|
ERROR_CODES.NETWORK_ERROR,
|
|
296
|
-
|
|
297
|
+
"\u83B7\u53D6\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
|
|
297
298
|
{ moduleId, businessId, originalError: error }
|
|
298
299
|
);
|
|
299
300
|
}
|
|
@@ -302,7 +303,7 @@ var UniversalExportClient = class {
|
|
|
302
303
|
* 创建导出配置
|
|
303
304
|
*/
|
|
304
305
|
async createConfig(config) {
|
|
305
|
-
const url =
|
|
306
|
+
const url = this.config.baseUrl + API_ENDPOINTS.CREATE_CONFIG;
|
|
306
307
|
try {
|
|
307
308
|
const response = await this.fetchWithTimeout(url, {
|
|
308
309
|
method: "POST",
|
|
@@ -313,14 +314,14 @@ var UniversalExportClient = class {
|
|
|
313
314
|
body: JSON.stringify(config)
|
|
314
315
|
});
|
|
315
316
|
if (!response.ok) {
|
|
316
|
-
throw new Error(
|
|
317
|
+
throw new Error("\u521B\u5EFA\u914D\u7F6E\u5931\u8D25: " + response.statusText);
|
|
317
318
|
}
|
|
318
319
|
const data = await response.json();
|
|
319
320
|
return this.transformConfigFromAPI(data.config);
|
|
320
321
|
} catch (error) {
|
|
321
322
|
throw createExportError(
|
|
322
323
|
ERROR_CODES.NETWORK_ERROR,
|
|
323
|
-
|
|
324
|
+
"\u521B\u5EFA\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
|
|
324
325
|
{ config, originalError: error }
|
|
325
326
|
);
|
|
326
327
|
}
|
|
@@ -329,7 +330,7 @@ var UniversalExportClient = class {
|
|
|
329
330
|
* 更新导出配置
|
|
330
331
|
*/
|
|
331
332
|
async updateConfig(configId, updates) {
|
|
332
|
-
const url =
|
|
333
|
+
const url = this.config.baseUrl + API_ENDPOINTS.UPDATE_CONFIG(configId);
|
|
333
334
|
try {
|
|
334
335
|
const response = await this.fetchWithTimeout(url, {
|
|
335
336
|
method: "PUT",
|
|
@@ -340,14 +341,14 @@ var UniversalExportClient = class {
|
|
|
340
341
|
body: JSON.stringify(updates)
|
|
341
342
|
});
|
|
342
343
|
if (!response.ok) {
|
|
343
|
-
throw new Error(
|
|
344
|
+
throw new Error("\u66F4\u65B0\u914D\u7F6E\u5931\u8D25: " + response.statusText);
|
|
344
345
|
}
|
|
345
346
|
const data = await response.json();
|
|
346
347
|
return this.transformConfigFromAPI(data.config);
|
|
347
348
|
} catch (error) {
|
|
348
349
|
throw createExportError(
|
|
349
350
|
ERROR_CODES.NETWORK_ERROR,
|
|
350
|
-
|
|
351
|
+
"\u66F4\u65B0\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
|
|
351
352
|
{ configId, updates, originalError: error }
|
|
352
353
|
);
|
|
353
354
|
}
|
|
@@ -356,19 +357,19 @@ var UniversalExportClient = class {
|
|
|
356
357
|
* 删除导出配置
|
|
357
358
|
*/
|
|
358
359
|
async deleteConfig(configId) {
|
|
359
|
-
const url =
|
|
360
|
+
const url = this.config.baseUrl + API_ENDPOINTS.DELETE_CONFIG(configId);
|
|
360
361
|
try {
|
|
361
362
|
const response = await this.fetchWithTimeout(url, {
|
|
362
363
|
method: "DELETE",
|
|
363
364
|
headers: this.getHeaders()
|
|
364
365
|
});
|
|
365
366
|
if (!response.ok) {
|
|
366
|
-
throw new Error(
|
|
367
|
+
throw new Error("\u5220\u9664\u914D\u7F6E\u5931\u8D25: " + response.statusText);
|
|
367
368
|
}
|
|
368
369
|
} catch (error) {
|
|
369
370
|
throw createExportError(
|
|
370
371
|
ERROR_CODES.NETWORK_ERROR,
|
|
371
|
-
|
|
372
|
+
"\u5220\u9664\u5BFC\u51FA\u914D\u7F6E\u5931\u8D25: " + formatErrorMessage(error),
|
|
372
373
|
{ configId, originalError: error }
|
|
373
374
|
);
|
|
374
375
|
}
|
|
@@ -378,7 +379,7 @@ var UniversalExportClient = class {
|
|
|
378
379
|
* 触发数据导出
|
|
379
380
|
*/
|
|
380
381
|
async exportData(request) {
|
|
381
|
-
const url =
|
|
382
|
+
const url = this.config.baseUrl + API_ENDPOINTS.EXPORT_DATA;
|
|
382
383
|
try {
|
|
383
384
|
const isDataArray = Array.isArray(request.dataSource);
|
|
384
385
|
const requestBody = {
|
|
@@ -411,14 +412,14 @@ var UniversalExportClient = class {
|
|
|
411
412
|
} catch {
|
|
412
413
|
errorData = { message: errorText };
|
|
413
414
|
}
|
|
414
|
-
throw new Error(errorData.message ||
|
|
415
|
+
throw new Error(errorData.message || "\u5BFC\u51FA\u5931\u8D25: " + response.statusText);
|
|
415
416
|
}
|
|
416
417
|
const data = await response.json();
|
|
417
418
|
return this.transformExportResultFromAPI(data.result);
|
|
418
419
|
} catch (error) {
|
|
419
420
|
throw createExportError(
|
|
420
421
|
ERROR_CODES.EXPORT_DATA_ERROR,
|
|
421
|
-
|
|
422
|
+
"\u6570\u636E\u5BFC\u51FA\u5931\u8D25: " + formatErrorMessage(error),
|
|
422
423
|
{ request, originalError: error }
|
|
423
424
|
);
|
|
424
425
|
}
|
|
@@ -427,21 +428,21 @@ var UniversalExportClient = class {
|
|
|
427
428
|
* 查询导出进度
|
|
428
429
|
*/
|
|
429
430
|
async getExportProgress(exportId) {
|
|
430
|
-
const url =
|
|
431
|
+
const url = this.config.baseUrl + API_ENDPOINTS.GET_PROGRESS(exportId);
|
|
431
432
|
try {
|
|
432
433
|
const response = await this.fetchWithTimeout(url, {
|
|
433
434
|
method: "GET",
|
|
434
435
|
headers: this.getHeaders()
|
|
435
436
|
});
|
|
436
437
|
if (!response.ok) {
|
|
437
|
-
throw new Error(
|
|
438
|
+
throw new Error("\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: " + response.statusText);
|
|
438
439
|
}
|
|
439
440
|
const data = await response.json();
|
|
440
441
|
return this.transformProgressFromAPI(data.progress);
|
|
441
442
|
} catch (error) {
|
|
442
443
|
throw createExportError(
|
|
443
444
|
ERROR_CODES.NETWORK_ERROR,
|
|
444
|
-
|
|
445
|
+
"\u83B7\u53D6\u5BFC\u51FA\u8FDB\u5EA6\u5931\u8D25: " + formatErrorMessage(error),
|
|
445
446
|
{ exportId, originalError: error }
|
|
446
447
|
);
|
|
447
448
|
}
|
|
@@ -450,20 +451,20 @@ var UniversalExportClient = class {
|
|
|
450
451
|
* 下载导出文件
|
|
451
452
|
*/
|
|
452
453
|
async downloadExportFile(exportId) {
|
|
453
|
-
const url =
|
|
454
|
+
const url = this.config.baseUrl + API_ENDPOINTS.DOWNLOAD_FILE(exportId);
|
|
454
455
|
try {
|
|
455
456
|
const response = await this.fetchWithTimeout(url, {
|
|
456
457
|
method: "GET",
|
|
457
458
|
headers: this.getHeaders()
|
|
458
459
|
});
|
|
459
460
|
if (!response.ok) {
|
|
460
|
-
throw new Error(
|
|
461
|
+
throw new Error("\u4E0B\u8F7D\u6587\u4EF6\u5931\u8D25: " + response.statusText);
|
|
461
462
|
}
|
|
462
463
|
return await response.blob();
|
|
463
464
|
} catch (error) {
|
|
464
465
|
throw createExportError(
|
|
465
466
|
ERROR_CODES.NETWORK_ERROR,
|
|
466
|
-
|
|
467
|
+
"\u4E0B\u8F7D\u5BFC\u51FA\u6587\u4EF6\u5931\u8D25: " + formatErrorMessage(error),
|
|
467
468
|
{ exportId, originalError: error }
|
|
468
469
|
);
|
|
469
470
|
}
|
|
@@ -634,7 +635,7 @@ var ExportConfigEditor = ({
|
|
|
634
635
|
if (businessId) {
|
|
635
636
|
params.set("businessId", businessId);
|
|
636
637
|
}
|
|
637
|
-
const response = await fetch(
|
|
638
|
+
const response = await fetch("/api/universal-export/configs?" + params.toString());
|
|
638
639
|
if (response.ok) {
|
|
639
640
|
const data = await response.json();
|
|
640
641
|
setSavedConfigs(data.configs || []);
|
|
@@ -648,7 +649,7 @@ var ExportConfigEditor = ({
|
|
|
648
649
|
const deleteConfig = React.useCallback(async (configId) => {
|
|
649
650
|
setDeletingConfigId(configId);
|
|
650
651
|
try {
|
|
651
|
-
const response = await fetch(
|
|
652
|
+
const response = await fetch("/api/universal-export/configs/" + configId, {
|
|
652
653
|
method: "DELETE"
|
|
653
654
|
});
|
|
654
655
|
if (response.ok) {
|
|
@@ -674,7 +675,7 @@ var ExportConfigEditor = ({
|
|
|
674
675
|
if (!visible) return;
|
|
675
676
|
const scrollY = window.scrollY;
|
|
676
677
|
document.body.style.position = "fixed";
|
|
677
|
-
document.body.style.top =
|
|
678
|
+
document.body.style.top = "-" + scrollY + "px";
|
|
678
679
|
document.body.style.left = "0";
|
|
679
680
|
document.body.style.right = "0";
|
|
680
681
|
document.body.style.overflow = "hidden";
|
|
@@ -843,7 +844,7 @@ var ExportConfigEditor = ({
|
|
|
843
844
|
return /* @__PURE__ */ React__default.default.createElement(
|
|
844
845
|
"div",
|
|
845
846
|
{
|
|
846
|
-
className:
|
|
847
|
+
className: clsx.clsx("fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-[50] p-4", className),
|
|
847
848
|
onClick: onCancel
|
|
848
849
|
},
|
|
849
850
|
/* @__PURE__ */ React__default.default.createElement(
|
|
@@ -858,7 +859,7 @@ var ExportConfigEditor = ({
|
|
|
858
859
|
{
|
|
859
860
|
key: tab.id,
|
|
860
861
|
onClick: () => setActiveTab(tab.id),
|
|
861
|
-
className:
|
|
862
|
+
className: clsx.clsx("flex items-center gap-2 px-4 py-3 text-sm font-medium rounded-lg transition-colors", activeTab === tab.id ? "bg-white text-blue-600 shadow-sm border border-gray-200" : "text-gray-600 hover:text-gray-900")
|
|
862
863
|
},
|
|
863
864
|
tab.icon,
|
|
864
865
|
/* @__PURE__ */ React__default.default.createElement("span", null, tab.label)
|
|
@@ -1030,7 +1031,7 @@ var UniversalExportButton = ({
|
|
|
1030
1031
|
if ("message" in error && typeof error.message === "string") {
|
|
1031
1032
|
errorMessage = error.message;
|
|
1032
1033
|
} else if ("code" in error && "message" in error) {
|
|
1033
|
-
errorMessage =
|
|
1034
|
+
errorMessage = error.code + ": " + error.message;
|
|
1034
1035
|
}
|
|
1035
1036
|
} else if (typeof error === "string") {
|
|
1036
1037
|
errorMessage = error;
|
|
@@ -1084,7 +1085,7 @@ var UniversalExportButton = ({
|
|
|
1084
1085
|
"div",
|
|
1085
1086
|
{
|
|
1086
1087
|
className: "bg-blue-600 h-2 rounded-full transition-all duration-300",
|
|
1087
|
-
style: { width:
|
|
1088
|
+
style: { width: progress + "%" }
|
|
1088
1089
|
}
|
|
1089
1090
|
))));
|
|
1090
1091
|
};
|
|
@@ -1129,13 +1130,13 @@ var UniversalExportButton = ({
|
|
|
1129
1130
|
));
|
|
1130
1131
|
};
|
|
1131
1132
|
const buttonStyle = BUTTON_STYLES[variant][size];
|
|
1132
|
-
const baseClasses =
|
|
1133
|
-
return /* @__PURE__ */ React__default.default.createElement("div", { className:
|
|
1133
|
+
const baseClasses = "inline-flex items-center gap-2 rounded-lg font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed " + buttonStyle;
|
|
1134
|
+
return /* @__PURE__ */ React__default.default.createElement("div", { className: clsx.clsx("relative", className) }, /* @__PURE__ */ React__default.default.createElement(
|
|
1134
1135
|
"button",
|
|
1135
1136
|
{
|
|
1136
1137
|
onClick: () => setShowDropdown(!showDropdown),
|
|
1137
1138
|
disabled: disabled || isExporting,
|
|
1138
|
-
className:
|
|
1139
|
+
className: clsx.clsx(baseClasses, isExporting ? "cursor-not-allowed" : "")
|
|
1139
1140
|
},
|
|
1140
1141
|
isExporting ? /* @__PURE__ */ React__default.default.createElement(lucideReact.Loader2, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ React__default.default.createElement(lucideReact.Download, { className: "w-4 h-4" }),
|
|
1141
1142
|
/* @__PURE__ */ React__default.default.createElement("span", null, isExporting ? "\u5BFC\u51FA\u4E2D..." : buttonText),
|