sa2kit 1.6.83 → 1.6.85
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/showmasterpiece/core.d.mts +1 -1
- package/dist/showmasterpiece/core.d.ts +1 -1
- package/dist/showmasterpiece/core.js +2 -8
- package/dist/showmasterpiece/core.js.map +1 -1
- package/dist/showmasterpiece/core.mjs +2 -8
- package/dist/showmasterpiece/core.mjs.map +1 -1
- package/dist/showmasterpiece/index.js +50 -31
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +50 -31
- package/dist/showmasterpiece/index.mjs.map +1 -1
- package/dist/showmasterpiece/logic/index.js +2 -8
- package/dist/showmasterpiece/logic/index.js.map +1 -1
- package/dist/showmasterpiece/logic/index.mjs +2 -8
- package/dist/showmasterpiece/logic/index.mjs.map +1 -1
- package/dist/showmasterpiece/ui/web/index.js +50 -31
- package/dist/showmasterpiece/ui/web/index.js.map +1 -1
- package/dist/showmasterpiece/ui/web/index.mjs +50 -31
- package/dist/showmasterpiece/ui/web/index.mjs.map +1 -1
- package/dist/showmasterpiece/web/index.js +50 -31
- package/dist/showmasterpiece/web/index.js.map +1 -1
- package/dist/showmasterpiece/web/index.mjs +50 -31
- package/dist/showmasterpiece/web/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -687,19 +687,13 @@ var init_useMasterpiecesConfig = __esm({
|
|
|
687
687
|
setLoading(true);
|
|
688
688
|
setError(null);
|
|
689
689
|
console.log("\u{1F4E1} [Hook] \u5E76\u884C\u8BF7\u6C42\u6240\u6709\u6570\u636E...");
|
|
690
|
-
const timestamp = Date.now();
|
|
691
690
|
const [configData, collectionsResponse, categoriesData, tagsData] = await Promise.all([
|
|
692
691
|
getConfig(),
|
|
693
|
-
|
|
694
|
-
headers: {
|
|
695
|
-
"Cache-Control": "no-cache",
|
|
696
|
-
"Pragma": "no-cache"
|
|
697
|
-
}
|
|
698
|
-
}).then((r) => r.json()),
|
|
692
|
+
getAllCollections(),
|
|
699
693
|
getCategories(),
|
|
700
694
|
getTags()
|
|
701
695
|
]);
|
|
702
|
-
const collectionsData = collectionsResponse
|
|
696
|
+
const collectionsData = Array.isArray(collectionsResponse) ? collectionsResponse : [];
|
|
703
697
|
console.log("\u2705 [Hook] \u6570\u636E\u52A0\u8F7D\u5B8C\u6210:", {
|
|
704
698
|
\u914D\u7F6E: configData ? "\u5DF2\u52A0\u8F7D" : "\u672A\u52A0\u8F7D",
|
|
705
699
|
\u753B\u96C6\u6570\u91CF: collectionsData.length,
|
|
@@ -6530,13 +6524,16 @@ var UniversalImageUpload = ({
|
|
|
6530
6524
|
throw new Error(errorData.error || `HTTP ${response.status}`);
|
|
6531
6525
|
}
|
|
6532
6526
|
const result = await response.json();
|
|
6533
|
-
|
|
6534
|
-
|
|
6527
|
+
const resultData = result?.data || result?.file || result;
|
|
6528
|
+
const nextFileId = resultData?.fileId || resultData?.id;
|
|
6529
|
+
const nextImageUrl = resultData?.accessUrl || resultData?.url || resultData?.fileUrl;
|
|
6530
|
+
const isSuccess = typeof result?.success === "boolean" ? result.success : Boolean(nextFileId);
|
|
6531
|
+
if (!isSuccess || !nextFileId) {
|
|
6532
|
+
throw new Error(result?.error || result?.message || "\u4E0A\u4F20\u5931\u8D25");
|
|
6535
6533
|
}
|
|
6536
6534
|
onChange({
|
|
6537
|
-
image:
|
|
6538
|
-
|
|
6539
|
-
fileId: result.data.fileId
|
|
6535
|
+
image: nextImageUrl || `/api/universal-file/${nextFileId}`,
|
|
6536
|
+
fileId: nextFileId
|
|
6540
6537
|
});
|
|
6541
6538
|
} catch (error) {
|
|
6542
6539
|
alert(`\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`);
|
|
@@ -6555,13 +6552,10 @@ var UniversalImageUpload = ({
|
|
|
6555
6552
|
handleFileSelect(file);
|
|
6556
6553
|
}
|
|
6557
6554
|
};
|
|
6558
|
-
const handleDivClick = (e) => {
|
|
6559
|
-
};
|
|
6560
6555
|
return /* @__PURE__ */ React56__default.createElement(
|
|
6561
6556
|
"div",
|
|
6562
6557
|
{
|
|
6563
6558
|
className: "border-2 border-dashed border-slate-300 rounded-xl p-8 text-center hover:border-blue-400 hover:bg-slate-50 transition-all duration-200 cursor-pointer",
|
|
6564
|
-
onClick: handleDivClick,
|
|
6565
6559
|
style: { position: "relative", zIndex: 1 }
|
|
6566
6560
|
},
|
|
6567
6561
|
/* @__PURE__ */ React56__default.createElement(
|
|
@@ -8765,6 +8759,14 @@ var BookingAdminPanel = ({
|
|
|
8765
8759
|
}
|
|
8766
8760
|
) : /* @__PURE__ */ React56__default.createElement("div", { className: "w-16 h-16 sm:w-20 sm:h-20 bg-slate-100 rounded-lg flex-shrink-0 flex items-center justify-center text-slate-400 text-xs" }, "\u6682\u65E0\u56FE\u7247"), /* @__PURE__ */ React56__default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React56__default.createElement("h4", { className: "font-medium text-slate-800 truncate" }, selectedBooking.collection.title), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-600" }, "\u4EF7\u683C\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")))), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React56__default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4" }, /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React56__default.createElement("p", { className: "font-medium text-slate-800" }, "#", selectedBooking.id)), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React56__default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), selectedBooking.phoneNumber && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React56__default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u6570\u91CF"), /* @__PURE__ */ React56__default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u603B\u4EF7\u683C"), /* @__PURE__ */ React56__default.createElement("p", { className: "font-medium text-slate-800" }, "\xA5", selectedBooking.totalPrice)), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React56__default.createElement("span", { className: `inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ${getStatusInfo(selectedBooking.status).color}` }, getStatusInfo(selectedBooking.status).label)))), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React56__default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.createdAt))), /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.cancelledAt))))), selectedBooking.notes && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React56__default.createElement("div", null, /* @__PURE__ */ React56__default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React56__default.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)))))));
|
|
8767
8761
|
};
|
|
8762
|
+
var isSuccessResponse = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
8763
|
+
var extractPopupConfigs = (result) => {
|
|
8764
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
8765
|
+
if (Array.isArray(result?.configs)) return result.configs;
|
|
8766
|
+
if (Array.isArray(result?.data?.configs)) return result.data.configs;
|
|
8767
|
+
if (Array.isArray(result)) return result;
|
|
8768
|
+
return [];
|
|
8769
|
+
};
|
|
8768
8770
|
var PopupConfigManagement = () => {
|
|
8769
8771
|
const [configs, setConfigs] = useState([]);
|
|
8770
8772
|
const [loading, setLoading] = useState(true);
|
|
@@ -8811,12 +8813,13 @@ var PopupConfigManagement = () => {
|
|
|
8811
8813
|
console.log("\u{1F4E1} [PopupConfigManagement] API\u54CD\u5E94\u72B6\u6001:", response.status, response.statusText);
|
|
8812
8814
|
const result = await response.json();
|
|
8813
8815
|
console.log("\u{1F4CA} [PopupConfigManagement] API\u54CD\u5E94\u6570\u636E:", result);
|
|
8814
|
-
if (result.
|
|
8815
|
-
|
|
8816
|
-
|
|
8816
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8817
|
+
const nextConfigs = extractPopupConfigs(result);
|
|
8818
|
+
console.log("\u2705 [PopupConfigManagement] \u914D\u7F6E\u52A0\u8F7D\u6210\u529F\uFF0C\u6570\u91CF:", nextConfigs.length);
|
|
8819
|
+
setConfigs(nextConfigs);
|
|
8817
8820
|
} else {
|
|
8818
8821
|
console.error("\u274C [PopupConfigManagement] API\u8FD4\u56DE\u5931\u8D25:", result.error);
|
|
8819
|
-
setError(result
|
|
8822
|
+
setError(result?.error || result?.message || "\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25");
|
|
8820
8823
|
}
|
|
8821
8824
|
} catch (err) {
|
|
8822
8825
|
console.error("\u274C [PopupConfigManagement] \u52A0\u8F7D\u5F39\u7A97\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8917,13 +8920,13 @@ var PopupConfigManagement = () => {
|
|
|
8917
8920
|
body: JSON.stringify(requestData)
|
|
8918
8921
|
});
|
|
8919
8922
|
const result = await response.json();
|
|
8920
|
-
if (result.
|
|
8923
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8921
8924
|
await loadConfigs();
|
|
8922
8925
|
setShowCreateModal(false);
|
|
8923
8926
|
resetForm();
|
|
8924
8927
|
setEditingConfig(null);
|
|
8925
8928
|
} else {
|
|
8926
|
-
alert(result
|
|
8929
|
+
alert(result?.error || result?.message || "\u4FDD\u5B58\u5931\u8D25");
|
|
8927
8930
|
}
|
|
8928
8931
|
} catch (err) {
|
|
8929
8932
|
console.error("\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8939,10 +8942,10 @@ var PopupConfigManagement = () => {
|
|
|
8939
8942
|
method: "DELETE"
|
|
8940
8943
|
});
|
|
8941
8944
|
const result = await response.json();
|
|
8942
|
-
if (result.
|
|
8945
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8943
8946
|
await loadConfigs();
|
|
8944
8947
|
} else {
|
|
8945
|
-
alert(result
|
|
8948
|
+
alert(result?.error || result?.message || "\u5220\u9664\u5931\u8D25");
|
|
8946
8949
|
}
|
|
8947
8950
|
} catch (err) {
|
|
8948
8951
|
console.error("\u5220\u9664\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8969,10 +8972,10 @@ var PopupConfigManagement = () => {
|
|
|
8969
8972
|
body: JSON.stringify(requestBody)
|
|
8970
8973
|
});
|
|
8971
8974
|
const result = await response.json();
|
|
8972
|
-
if (result.
|
|
8975
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8973
8976
|
await loadConfigs();
|
|
8974
8977
|
} else {
|
|
8975
|
-
alert(result
|
|
8978
|
+
alert(result?.error || result?.message || "\u64CD\u4F5C\u5931\u8D25");
|
|
8976
8979
|
}
|
|
8977
8980
|
} catch (err) {
|
|
8978
8981
|
console.error("\u5207\u6362\u72B6\u6001\u5931\u8D25:", err);
|
|
@@ -10025,6 +10028,14 @@ function clearConfigCache() {
|
|
|
10025
10028
|
}
|
|
10026
10029
|
|
|
10027
10030
|
// src/showmasterpiece/ui/web/components/SystemConfigManager.tsx
|
|
10031
|
+
var isSuccessResponse2 = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
10032
|
+
var extractConfigItems = (result) => {
|
|
10033
|
+
if (Array.isArray(result?.items)) return result.items;
|
|
10034
|
+
if (Array.isArray(result?.data?.items)) return result.data.items;
|
|
10035
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
10036
|
+
if (Array.isArray(result)) return result;
|
|
10037
|
+
return [];
|
|
10038
|
+
};
|
|
10028
10039
|
var SystemConfigManager = () => {
|
|
10029
10040
|
const [configItems, setConfigItems] = useState([]);
|
|
10030
10041
|
const [loading, setLoading] = useState(true);
|
|
@@ -10049,8 +10060,16 @@ var SystemConfigManager = () => {
|
|
|
10049
10060
|
try {
|
|
10050
10061
|
const response = await fetch(`/api/showmasterpiece/config/items?environment=${env}`);
|
|
10051
10062
|
const data = await response.json();
|
|
10052
|
-
if (
|
|
10053
|
-
|
|
10063
|
+
if (!response.ok) {
|
|
10064
|
+
setMessage({
|
|
10065
|
+
type: "error",
|
|
10066
|
+
text: data?.error || data?.message || "\u52A0\u8F7D\u914D\u7F6E\u9879\u5931\u8D25"
|
|
10067
|
+
});
|
|
10068
|
+
return;
|
|
10069
|
+
}
|
|
10070
|
+
const items = extractConfigItems(data);
|
|
10071
|
+
if (Array.isArray(items)) {
|
|
10072
|
+
setConfigItems(items);
|
|
10054
10073
|
} else {
|
|
10055
10074
|
console.error("API\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF:", data);
|
|
10056
10075
|
setMessage({
|
|
@@ -10109,7 +10128,7 @@ var SystemConfigManager = () => {
|
|
|
10109
10128
|
})
|
|
10110
10129
|
});
|
|
10111
10130
|
const result = await response.json();
|
|
10112
|
-
if (result.
|
|
10131
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10113
10132
|
setMessage({
|
|
10114
10133
|
type: "success",
|
|
10115
10134
|
text: "\u914D\u7F6E\u9879\u66F4\u65B0\u6210\u529F"
|
|
@@ -10151,7 +10170,7 @@ var SystemConfigManager = () => {
|
|
|
10151
10170
|
method: "DELETE"
|
|
10152
10171
|
});
|
|
10153
10172
|
const result = await response.json();
|
|
10154
|
-
if (result.
|
|
10173
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10155
10174
|
setMessage({
|
|
10156
10175
|
type: "success",
|
|
10157
10176
|
text: "\u914D\u7F6E\u9879\u5220\u9664\u6210\u529F"
|
|
@@ -10337,7 +10356,7 @@ var SystemConfigManager = () => {
|
|
|
10337
10356
|
body: JSON.stringify(data)
|
|
10338
10357
|
});
|
|
10339
10358
|
const result = await response.json();
|
|
10340
|
-
if (result.
|
|
10359
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10341
10360
|
setMessage({
|
|
10342
10361
|
type: "success",
|
|
10343
10362
|
text: "\u914D\u7F6E\u9879\u521B\u5EFA\u6210\u529F"
|