sa2kit 1.6.80 → 1.6.84
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 +56 -28
- package/dist/showmasterpiece/index.js.map +1 -1
- package/dist/showmasterpiece/index.mjs +56 -28
- 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/miniapp/index.js +98 -3
- package/dist/showmasterpiece/ui/miniapp/index.js.map +1 -1
- package/dist/showmasterpiece/ui/miniapp/index.mjs +98 -3
- package/dist/showmasterpiece/ui/miniapp/index.mjs.map +1 -1
- package/dist/showmasterpiece/ui/web/index.js +56 -28
- package/dist/showmasterpiece/ui/web/index.js.map +1 -1
- package/dist/showmasterpiece/ui/web/index.mjs +56 -28
- package/dist/showmasterpiece/ui/web/index.mjs.map +1 -1
- package/dist/showmasterpiece/web/index.js +56 -28
- package/dist/showmasterpiece/web/index.js.map +1 -1
- package/dist/showmasterpiece/web/index.mjs +56 -28
- 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"}`);
|
|
@@ -6580,6 +6577,12 @@ var UniversalImageUpload = ({
|
|
|
6580
6577
|
}
|
|
6581
6578
|
};
|
|
6582
6579
|
const handleDivClick = (e) => {
|
|
6580
|
+
e.preventDefault();
|
|
6581
|
+
e.stopPropagation();
|
|
6582
|
+
const input = document.getElementById(inputId);
|
|
6583
|
+
if (input && !disabled && !uploading) {
|
|
6584
|
+
input.click();
|
|
6585
|
+
}
|
|
6583
6586
|
};
|
|
6584
6587
|
return /* @__PURE__ */ React56__namespace.default.createElement(
|
|
6585
6588
|
"div",
|
|
@@ -8789,6 +8792,14 @@ var BookingAdminPanel = ({
|
|
|
8789
8792
|
}
|
|
8790
8793
|
) : /* @__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
8794
|
};
|
|
8795
|
+
var isSuccessResponse = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
8796
|
+
var extractPopupConfigs = (result) => {
|
|
8797
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
8798
|
+
if (Array.isArray(result?.configs)) return result.configs;
|
|
8799
|
+
if (Array.isArray(result?.data?.configs)) return result.data.configs;
|
|
8800
|
+
if (Array.isArray(result)) return result;
|
|
8801
|
+
return [];
|
|
8802
|
+
};
|
|
8792
8803
|
var PopupConfigManagement = () => {
|
|
8793
8804
|
const [configs, setConfigs] = React56.useState([]);
|
|
8794
8805
|
const [loading, setLoading] = React56.useState(true);
|
|
@@ -8835,12 +8846,13 @@ var PopupConfigManagement = () => {
|
|
|
8835
8846
|
console.log("\u{1F4E1} [PopupConfigManagement] API\u54CD\u5E94\u72B6\u6001:", response.status, response.statusText);
|
|
8836
8847
|
const result = await response.json();
|
|
8837
8848
|
console.log("\u{1F4CA} [PopupConfigManagement] API\u54CD\u5E94\u6570\u636E:", result);
|
|
8838
|
-
if (result.
|
|
8839
|
-
|
|
8840
|
-
|
|
8849
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8850
|
+
const nextConfigs = extractPopupConfigs(result);
|
|
8851
|
+
console.log("\u2705 [PopupConfigManagement] \u914D\u7F6E\u52A0\u8F7D\u6210\u529F\uFF0C\u6570\u91CF:", nextConfigs.length);
|
|
8852
|
+
setConfigs(nextConfigs);
|
|
8841
8853
|
} else {
|
|
8842
8854
|
console.error("\u274C [PopupConfigManagement] API\u8FD4\u56DE\u5931\u8D25:", result.error);
|
|
8843
|
-
setError(result
|
|
8855
|
+
setError(result?.error || result?.message || "\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25");
|
|
8844
8856
|
}
|
|
8845
8857
|
} catch (err) {
|
|
8846
8858
|
console.error("\u274C [PopupConfigManagement] \u52A0\u8F7D\u5F39\u7A97\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8941,13 +8953,13 @@ var PopupConfigManagement = () => {
|
|
|
8941
8953
|
body: JSON.stringify(requestData)
|
|
8942
8954
|
});
|
|
8943
8955
|
const result = await response.json();
|
|
8944
|
-
if (result.
|
|
8956
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8945
8957
|
await loadConfigs();
|
|
8946
8958
|
setShowCreateModal(false);
|
|
8947
8959
|
resetForm();
|
|
8948
8960
|
setEditingConfig(null);
|
|
8949
8961
|
} else {
|
|
8950
|
-
alert(result
|
|
8962
|
+
alert(result?.error || result?.message || "\u4FDD\u5B58\u5931\u8D25");
|
|
8951
8963
|
}
|
|
8952
8964
|
} catch (err) {
|
|
8953
8965
|
console.error("\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8963,10 +8975,10 @@ var PopupConfigManagement = () => {
|
|
|
8963
8975
|
method: "DELETE"
|
|
8964
8976
|
});
|
|
8965
8977
|
const result = await response.json();
|
|
8966
|
-
if (result.
|
|
8978
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8967
8979
|
await loadConfigs();
|
|
8968
8980
|
} else {
|
|
8969
|
-
alert(result
|
|
8981
|
+
alert(result?.error || result?.message || "\u5220\u9664\u5931\u8D25");
|
|
8970
8982
|
}
|
|
8971
8983
|
} catch (err) {
|
|
8972
8984
|
console.error("\u5220\u9664\u914D\u7F6E\u5931\u8D25:", err);
|
|
@@ -8993,10 +9005,10 @@ var PopupConfigManagement = () => {
|
|
|
8993
9005
|
body: JSON.stringify(requestBody)
|
|
8994
9006
|
});
|
|
8995
9007
|
const result = await response.json();
|
|
8996
|
-
if (result.
|
|
9008
|
+
if (isSuccessResponse(result, response.ok)) {
|
|
8997
9009
|
await loadConfigs();
|
|
8998
9010
|
} else {
|
|
8999
|
-
alert(result
|
|
9011
|
+
alert(result?.error || result?.message || "\u64CD\u4F5C\u5931\u8D25");
|
|
9000
9012
|
}
|
|
9001
9013
|
} catch (err) {
|
|
9002
9014
|
console.error("\u5207\u6362\u72B6\u6001\u5931\u8D25:", err);
|
|
@@ -10049,6 +10061,14 @@ function clearConfigCache() {
|
|
|
10049
10061
|
}
|
|
10050
10062
|
|
|
10051
10063
|
// src/showmasterpiece/ui/web/components/SystemConfigManager.tsx
|
|
10064
|
+
var isSuccessResponse2 = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
|
|
10065
|
+
var extractConfigItems = (result) => {
|
|
10066
|
+
if (Array.isArray(result?.items)) return result.items;
|
|
10067
|
+
if (Array.isArray(result?.data?.items)) return result.data.items;
|
|
10068
|
+
if (Array.isArray(result?.data)) return result.data;
|
|
10069
|
+
if (Array.isArray(result)) return result;
|
|
10070
|
+
return [];
|
|
10071
|
+
};
|
|
10052
10072
|
var SystemConfigManager = () => {
|
|
10053
10073
|
const [configItems, setConfigItems] = React56.useState([]);
|
|
10054
10074
|
const [loading, setLoading] = React56.useState(true);
|
|
@@ -10073,8 +10093,16 @@ var SystemConfigManager = () => {
|
|
|
10073
10093
|
try {
|
|
10074
10094
|
const response = await fetch(`/api/showmasterpiece/config/items?environment=${env}`);
|
|
10075
10095
|
const data = await response.json();
|
|
10076
|
-
if (
|
|
10077
|
-
|
|
10096
|
+
if (!response.ok) {
|
|
10097
|
+
setMessage({
|
|
10098
|
+
type: "error",
|
|
10099
|
+
text: data?.error || data?.message || "\u52A0\u8F7D\u914D\u7F6E\u9879\u5931\u8D25"
|
|
10100
|
+
});
|
|
10101
|
+
return;
|
|
10102
|
+
}
|
|
10103
|
+
const items = extractConfigItems(data);
|
|
10104
|
+
if (Array.isArray(items)) {
|
|
10105
|
+
setConfigItems(items);
|
|
10078
10106
|
} else {
|
|
10079
10107
|
console.error("API\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF:", data);
|
|
10080
10108
|
setMessage({
|
|
@@ -10133,7 +10161,7 @@ var SystemConfigManager = () => {
|
|
|
10133
10161
|
})
|
|
10134
10162
|
});
|
|
10135
10163
|
const result = await response.json();
|
|
10136
|
-
if (result.
|
|
10164
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10137
10165
|
setMessage({
|
|
10138
10166
|
type: "success",
|
|
10139
10167
|
text: "\u914D\u7F6E\u9879\u66F4\u65B0\u6210\u529F"
|
|
@@ -10175,7 +10203,7 @@ var SystemConfigManager = () => {
|
|
|
10175
10203
|
method: "DELETE"
|
|
10176
10204
|
});
|
|
10177
10205
|
const result = await response.json();
|
|
10178
|
-
if (result.
|
|
10206
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10179
10207
|
setMessage({
|
|
10180
10208
|
type: "success",
|
|
10181
10209
|
text: "\u914D\u7F6E\u9879\u5220\u9664\u6210\u529F"
|
|
@@ -10361,7 +10389,7 @@ var SystemConfigManager = () => {
|
|
|
10361
10389
|
body: JSON.stringify(data)
|
|
10362
10390
|
});
|
|
10363
10391
|
const result = await response.json();
|
|
10364
|
-
if (result.
|
|
10392
|
+
if (isSuccessResponse2(result, response.ok)) {
|
|
10365
10393
|
setMessage({
|
|
10366
10394
|
type: "success",
|
|
10367
10395
|
text: "\u914D\u7F6E\u9879\u521B\u5EFA\u6210\u529F"
|