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
|
@@ -711,19 +711,13 @@ var init_useMasterpiecesConfig = __esm({
|
|
|
711
711
|
setLoading(true);
|
|
712
712
|
setError(null);
|
|
713
713
|
console.log("\u{1F4E1} [Hook] \u5E76\u884C\u8BF7\u6C42\u6240\u6709\u6570\u636E...");
|
|
714
|
-
const timestamp = Date.now();
|
|
715
714
|
const [configData, collectionsResponse, categoriesData, tagsData] = await Promise.all([
|
|
716
715
|
getConfig(),
|
|
717
|
-
|
|
718
|
-
headers: {
|
|
719
|
-
"Cache-Control": "no-cache",
|
|
720
|
-
"Pragma": "no-cache"
|
|
721
|
-
}
|
|
722
|
-
}).then((r) => r.json()),
|
|
716
|
+
getAllCollections(),
|
|
723
717
|
getCategories(),
|
|
724
718
|
getTags()
|
|
725
719
|
]);
|
|
726
|
-
const collectionsData = collectionsResponse
|
|
720
|
+
const collectionsData = Array.isArray(collectionsResponse) ? collectionsResponse : [];
|
|
727
721
|
console.log("\u2705 [Hook] \u6570\u636E\u52A0\u8F7D\u5B8C\u6210:", {
|
|
728
722
|
\u914D\u7F6E: configData ? "\u5DF2\u52A0\u8F7D" : "\u672A\u52A0\u8F7D",
|
|
729
723
|
\u753B\u96C6\u6570\u91CF: collectionsData.length,
|
|
@@ -6554,13 +6548,16 @@ var UniversalImageUpload = ({
|
|
|
6554
6548
|
throw new Error(errorData.error || `HTTP ${response.status}`);
|
|
6555
6549
|
}
|
|
6556
6550
|
const result = await response.json();
|
|
6557
|
-
|
|
6558
|
-
|
|
6551
|
+
const resultData = result?.data || result?.file || result;
|
|
6552
|
+
const nextFileId = resultData?.fileId || resultData?.id;
|
|
6553
|
+
const nextImageUrl = resultData?.accessUrl || resultData?.url || resultData?.fileUrl;
|
|
6554
|
+
const isSuccess = typeof result?.success === "boolean" ? result.success : Boolean(nextFileId);
|
|
6555
|
+
if (!isSuccess || !nextFileId) {
|
|
6556
|
+
throw new Error(result?.error || result?.message || "\u4E0A\u4F20\u5931\u8D25");
|
|
6559
6557
|
}
|
|
6560
6558
|
onChange({
|
|
6561
|
-
image:
|
|
6562
|
-
|
|
6563
|
-
fileId: result.data.fileId
|
|
6559
|
+
image: nextImageUrl || `/api/universal-file/${nextFileId}`,
|
|
6560
|
+
fileId: nextFileId
|
|
6564
6561
|
});
|
|
6565
6562
|
} catch (error) {
|
|
6566
6563
|
alert(`\u6587\u4EF6\u4E0A\u4F20\u5931\u8D25: ${error instanceof Error ? error.message : "\u672A\u77E5\u9519\u8BEF"}`);
|
|
@@ -6579,13 +6576,10 @@ var UniversalImageUpload = ({
|
|
|
6579
6576
|
handleFileSelect(file);
|
|
6580
6577
|
}
|
|
6581
6578
|
};
|
|
6582
|
-
const handleDivClick = (e) => {
|
|
6583
|
-
};
|
|
6584
6579
|
return /* @__PURE__ */ React56__namespace.default.createElement(
|
|
6585
6580
|
"div",
|
|
6586
6581
|
{
|
|
6587
6582
|
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",
|
|
6588
|
-
onClick: handleDivClick,
|
|
6589
6583
|
style: { position: "relative", zIndex: 1 }
|
|
6590
6584
|
},
|
|
6591
6585
|
/* @__PURE__ */ React56__namespace.default.createElement(
|
|
@@ -8789,6 +8783,14 @@ var BookingAdminPanel = ({
|
|
|
8789
8783
|
}
|
|
8790
8784
|
) : /* @__PURE__ */ React56__namespace.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__namespace.default.createElement("div", { className: "min-w-0 flex-1" }, /* @__PURE__ */ React56__namespace.default.createElement("h4", { className: "font-medium text-slate-800 truncate" }, selectedBooking.collection.title), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-600" }, "\u7F16\u53F7\uFF1A", selectedBooking.collection.number), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-600" }, "\u4EF7\u683C\uFF1A\xA5", selectedBooking.collection.price || "\u5F85\u5B9A")))), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u9884\u8BA2\u4FE1\u606F"), /* @__PURE__ */ React56__namespace.default.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3 sm:gap-4" }, /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2ID"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "font-medium text-slate-800" }, "#", selectedBooking.id)), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "QQ\u53F7"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.qqNumber)), selectedBooking.phoneNumber && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u624B\u673A\u53F7"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.phoneNumber)), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u6570\u91CF"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "font-medium text-slate-800" }, selectedBooking.quantity)), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u603B\u4EF7\u683C"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "font-medium text-slate-800" }, "\xA5", selectedBooking.totalPrice)), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u72B6\u6001"), /* @__PURE__ */ React56__namespace.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__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u65F6\u95F4\u4FE1\u606F"), /* @__PURE__ */ React56__namespace.default.createElement("div", { className: "space-y-2" }, /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u9884\u8BA2\u65F6\u95F4"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.createdAt))), /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u66F4\u65B0\u65F6\u95F4"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.updatedAt))), selectedBooking.confirmedAt && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u786E\u8BA4\u65F6\u95F4"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.confirmedAt))), selectedBooking.completedAt && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u5B8C\u6210\u65F6\u95F4"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.completedAt))), selectedBooking.cancelledAt && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-500" }, "\u53D6\u6D88\u65F6\u95F4"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm font-medium text-slate-800" }, formatTime2(selectedBooking.cancelledAt))))), selectedBooking.notes && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7528\u6237\u5907\u6CE8"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.notes)), selectedBooking.adminNotes && /* @__PURE__ */ React56__namespace.default.createElement("div", null, /* @__PURE__ */ React56__namespace.default.createElement("h3", { className: "text-base sm:text-lg font-semibold text-slate-800 mb-3" }, "\u7BA1\u7406\u5458\u5907\u6CE8"), /* @__PURE__ */ React56__namespace.default.createElement("p", { className: "text-sm text-slate-800 bg-slate-50 p-4 rounded-lg break-words" }, selectedBooking.adminNotes)))))));
|
|
8791
8785
|
};
|
|
8786
|
+
var isSuccessResponse = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
8787
|
+
var extractPopupConfigs = (result) => {
|
|
8788
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
8789
|
+
if (Array.isArray(result?.configs)) return result.configs;
|
|
8790
|
+
if (Array.isArray(result?.data?.configs)) return result.data.configs;
|
|
8791
|
+
if (Array.isArray(result)) return result;
|
|
8792
|
+
return [];
|
|
8793
|
+
};
|
|
8792
8794
|
var PopupConfigManagement = () => {
|
|
8793
8795
|
const [configs, setConfigs] = React56.useState([]);
|
|
8794
8796
|
const [loading, setLoading] = React56.useState(true);
|
|
@@ -8835,12 +8837,13 @@ var PopupConfigManagement = () => {
|
|
|
8835
8837
|
console.log("\u{1F4E1} [PopupConfigManagement] API\u54CD\u5E94\u72B6\u6001:", response.status, response.statusText);
|
|
8836
8838
|
const result = await response.json();
|
|
8837
8839
|
console.log("\u{1F4CA} [PopupConfigManagement] API\u54CD\u5E94\u6570\u636E:", result);
|
|
8838
|
-
if (result.
|
|
8839
|
-
|
|
8840
|
-
|
|
8840
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8841
|
+
const nextConfigs = extractPopupConfigs(result);
|
|
8842
|
+
console.log("\u2705 [PopupConfigManagement] \u914D\u7F6E\u52A0\u8F7D\u6210\u529F\uFF0C\u6570\u91CF:", nextConfigs.length);
|
|
8843
|
+
setConfigs(nextConfigs);
|
|
8841
8844
|
} else {
|
|
8842
8845
|
console.error("\u274C [PopupConfigManagement] API\u8FD4\u56DE\u5931\u8D25:", result.error);
|
|
8843
|
-
setError(result
|
|
8846
|
+
setError(result?.error || result?.message || "\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25");
|
|
8844
8847
|
}
|
|
8845
8848
|
} catch (err) {
|
|
8846
8849
|
console.error("\u274C [PopupConfigManagement] \u52A0\u8F7D\u5F39\u7A97\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8941,13 +8944,13 @@ var PopupConfigManagement = () => {
|
|
|
8941
8944
|
body: JSON.stringify(requestData)
|
|
8942
8945
|
});
|
|
8943
8946
|
const result = await response.json();
|
|
8944
|
-
if (result.
|
|
8947
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8945
8948
|
await loadConfigs();
|
|
8946
8949
|
setShowCreateModal(false);
|
|
8947
8950
|
resetForm();
|
|
8948
8951
|
setEditingConfig(null);
|
|
8949
8952
|
} else {
|
|
8950
|
-
alert(result
|
|
8953
|
+
alert(result?.error || result?.message || "\u4FDD\u5B58\u5931\u8D25");
|
|
8951
8954
|
}
|
|
8952
8955
|
} catch (err) {
|
|
8953
8956
|
console.error("\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8963,10 +8966,10 @@ var PopupConfigManagement = () => {
|
|
|
8963
8966
|
method: "DELETE"
|
|
8964
8967
|
});
|
|
8965
8968
|
const result = await response.json();
|
|
8966
|
-
if (result.
|
|
8969
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8967
8970
|
await loadConfigs();
|
|
8968
8971
|
} else {
|
|
8969
|
-
alert(result
|
|
8972
|
+
alert(result?.error || result?.message || "\u5220\u9664\u5931\u8D25");
|
|
8970
8973
|
}
|
|
8971
8974
|
} catch (err) {
|
|
8972
8975
|
console.error("\u5220\u9664\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8993,10 +8996,10 @@ var PopupConfigManagement = () => {
|
|
|
8993
8996
|
body: JSON.stringify(requestBody)
|
|
8994
8997
|
});
|
|
8995
8998
|
const result = await response.json();
|
|
8996
|
-
if (result.
|
|
8999
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8997
9000
|
await loadConfigs();
|
|
8998
9001
|
} else {
|
|
8999
|
-
alert(result
|
|
9002
|
+
alert(result?.error || result?.message || "\u64CD\u4F5C\u5931\u8D25");
|
|
9000
9003
|
}
|
|
9001
9004
|
} catch (err) {
|
|
9002
9005
|
console.error("\u5207\u6362\u72B6\u6001\u5931\u8D25:", err);
|
|
@@ -10049,6 +10052,14 @@ function clearConfigCache() {
|
|
|
10049
10052
|
}
|
|
10050
10053
|
|
|
10051
10054
|
// src/showmasterpiece/ui/web/components/SystemConfigManager.tsx
|
|
10055
|
+
var isSuccessResponse2 = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
10056
|
+
var extractConfigItems = (result) => {
|
|
10057
|
+
if (Array.isArray(result?.items)) return result.items;
|
|
10058
|
+
if (Array.isArray(result?.data?.items)) return result.data.items;
|
|
10059
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
10060
|
+
if (Array.isArray(result)) return result;
|
|
10061
|
+
return [];
|
|
10062
|
+
};
|
|
10052
10063
|
var SystemConfigManager = () => {
|
|
10053
10064
|
const [configItems, setConfigItems] = React56.useState([]);
|
|
10054
10065
|
const [loading, setLoading] = React56.useState(true);
|
|
@@ -10073,8 +10084,16 @@ var SystemConfigManager = () => {
|
|
|
10073
10084
|
try {
|
|
10074
10085
|
const response = await fetch(`/api/showmasterpiece/config/items?environment=${env}`);
|
|
10075
10086
|
const data = await response.json();
|
|
10076
|
-
if (
|
|
10077
|
-
|
|
10087
|
+
if (!response.ok) {
|
|
10088
|
+
setMessage({
|
|
10089
|
+
type: "error",
|
|
10090
|
+
text: data?.error || data?.message || "\u52A0\u8F7D\u914D\u7F6E\u9879\u5931\u8D25"
|
|
10091
|
+
});
|
|
10092
|
+
return;
|
|
10093
|
+
}
|
|
10094
|
+
const items = extractConfigItems(data);
|
|
10095
|
+
if (Array.isArray(items)) {
|
|
10096
|
+
setConfigItems(items);
|
|
10078
10097
|
} else {
|
|
10079
10098
|
console.error("API\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF:", data);
|
|
10080
10099
|
setMessage({
|
|
@@ -10133,7 +10152,7 @@ var SystemConfigManager = () => {
|
|
|
10133
10152
|
})
|
|
10134
10153
|
});
|
|
10135
10154
|
const result = await response.json();
|
|
10136
|
-
if (result.
|
|
10155
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10137
10156
|
setMessage({
|
|
10138
10157
|
type: "success",
|
|
10139
10158
|
text: "\u914D\u7F6E\u9879\u66F4\u65B0\u6210\u529F"
|
|
@@ -10175,7 +10194,7 @@ var SystemConfigManager = () => {
|
|
|
10175
10194
|
method: "DELETE"
|
|
10176
10195
|
});
|
|
10177
10196
|
const result = await response.json();
|
|
10178
|
-
if (result.
|
|
10197
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10179
10198
|
setMessage({
|
|
10180
10199
|
type: "success",
|
|
10181
10200
|
text: "\u914D\u7F6E\u9879\u5220\u9664\u6210\u529F"
|
|
@@ -10361,7 +10380,7 @@ var SystemConfigManager = () => {
|
|
|
10361
10380
|
body: JSON.stringify(data)
|
|
10362
10381
|
});
|
|
10363
10382
|
const result = await response.json();
|
|
10364
|
-
if (result.
|
|
10383
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10365
10384
|
setMessage({
|
|
10366
10385
|
type: "success",
|
|
10367
10386
|
text: "\u914D\u7F6E\u9879\u521B\u5EFA\u6210\u529F"
|