sa2kit 1.6.83 → 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.
@@ -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
- fetch(`/api/showmasterpiece/collections?_t=${timestamp}&nocache=true&includeImages=true`, {
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.data || [];
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
- if (!result.success) {
6534
- throw new Error(result.error || "\u4E0A\u4F20\u5931\u8D25");
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: result.data.accessUrl,
6538
- // 使用访问URL
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"}`);
@@ -6556,6 +6553,12 @@ var UniversalImageUpload = ({
6556
6553
  }
6557
6554
  };
6558
6555
  const handleDivClick = (e) => {
6556
+ e.preventDefault();
6557
+ e.stopPropagation();
6558
+ const input = document.getElementById(inputId);
6559
+ if (input && !disabled && !uploading) {
6560
+ input.click();
6561
+ }
6559
6562
  };
6560
6563
  return /* @__PURE__ */ React56__default.createElement(
6561
6564
  "div",
@@ -8765,6 +8768,14 @@ var BookingAdminPanel = ({
8765
8768
  }
8766
8769
  ) : /* @__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
8770
  };
8771
+ var isSuccessResponse = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
8772
+ var extractPopupConfigs = (result) => {
8773
+ if (Array.isArray(result?.data)) return result.data;
8774
+ if (Array.isArray(result?.configs)) return result.configs;
8775
+ if (Array.isArray(result?.data?.configs)) return result.data.configs;
8776
+ if (Array.isArray(result)) return result;
8777
+ return [];
8778
+ };
8768
8779
  var PopupConfigManagement = () => {
8769
8780
  const [configs, setConfigs] = useState([]);
8770
8781
  const [loading, setLoading] = useState(true);
@@ -8811,12 +8822,13 @@ var PopupConfigManagement = () => {
8811
8822
  console.log("\u{1F4E1} [PopupConfigManagement] API\u54CD\u5E94\u72B6\u6001:", response.status, response.statusText);
8812
8823
  const result = await response.json();
8813
8824
  console.log("\u{1F4CA} [PopupConfigManagement] API\u54CD\u5E94\u6570\u636E:", result);
8814
- if (result.success) {
8815
- console.log("\u2705 [PopupConfigManagement] \u914D\u7F6E\u52A0\u8F7D\u6210\u529F\uFF0C\u6570\u91CF:", result.data.length);
8816
- setConfigs(result.data);
8825
+ if (isSuccessResponse(result, response.ok)) {
8826
+ const nextConfigs = extractPopupConfigs(result);
8827
+ console.log("\u2705 [PopupConfigManagement] \u914D\u7F6E\u52A0\u8F7D\u6210\u529F\uFF0C\u6570\u91CF:", nextConfigs.length);
8828
+ setConfigs(nextConfigs);
8817
8829
  } else {
8818
8830
  console.error("\u274C [PopupConfigManagement] API\u8FD4\u56DE\u5931\u8D25:", result.error);
8819
- setError(result.error || "\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25");
8831
+ setError(result?.error || result?.message || "\u52A0\u8F7D\u914D\u7F6E\u5931\u8D25");
8820
8832
  }
8821
8833
  } catch (err) {
8822
8834
  console.error("\u274C [PopupConfigManagement] \u52A0\u8F7D\u5F39\u7A97\u914D\u7F6E\u5931\u8D25:", err);
@@ -8917,13 +8929,13 @@ var PopupConfigManagement = () => {
8917
8929
  body: JSON.stringify(requestData)
8918
8930
  });
8919
8931
  const result = await response.json();
8920
- if (result.success) {
8932
+ if (isSuccessResponse(result, response.ok)) {
8921
8933
  await loadConfigs();
8922
8934
  setShowCreateModal(false);
8923
8935
  resetForm();
8924
8936
  setEditingConfig(null);
8925
8937
  } else {
8926
- alert(result.error || "\u4FDD\u5B58\u5931\u8D25");
8938
+ alert(result?.error || result?.message || "\u4FDD\u5B58\u5931\u8D25");
8927
8939
  }
8928
8940
  } catch (err) {
8929
8941
  console.error("\u4FDD\u5B58\u914D\u7F6E\u5931\u8D25:", err);
@@ -8939,10 +8951,10 @@ var PopupConfigManagement = () => {
8939
8951
  method: "DELETE"
8940
8952
  });
8941
8953
  const result = await response.json();
8942
- if (result.success) {
8954
+ if (isSuccessResponse(result, response.ok)) {
8943
8955
  await loadConfigs();
8944
8956
  } else {
8945
- alert(result.error || "\u5220\u9664\u5931\u8D25");
8957
+ alert(result?.error || result?.message || "\u5220\u9664\u5931\u8D25");
8946
8958
  }
8947
8959
  } catch (err) {
8948
8960
  console.error("\u5220\u9664\u914D\u7F6E\u5931\u8D25:", err);
@@ -8969,10 +8981,10 @@ var PopupConfigManagement = () => {
8969
8981
  body: JSON.stringify(requestBody)
8970
8982
  });
8971
8983
  const result = await response.json();
8972
- if (result.success) {
8984
+ if (isSuccessResponse(result, response.ok)) {
8973
8985
  await loadConfigs();
8974
8986
  } else {
8975
- alert(result.error || "\u64CD\u4F5C\u5931\u8D25");
8987
+ alert(result?.error || result?.message || "\u64CD\u4F5C\u5931\u8D25");
8976
8988
  }
8977
8989
  } catch (err) {
8978
8990
  console.error("\u5207\u6362\u72B6\u6001\u5931\u8D25:", err);
@@ -10025,6 +10037,14 @@ function clearConfigCache() {
10025
10037
  }
10026
10038
 
10027
10039
  // src/showmasterpiece/ui/web/components/SystemConfigManager.tsx
10040
+ var isSuccessResponse2 = (result, fallback) => typeof result?.success === "boolean" ? result.success : fallback;
10041
+ var extractConfigItems = (result) => {
10042
+ if (Array.isArray(result?.items)) return result.items;
10043
+ if (Array.isArray(result?.data?.items)) return result.data.items;
10044
+ if (Array.isArray(result?.data)) return result.data;
10045
+ if (Array.isArray(result)) return result;
10046
+ return [];
10047
+ };
10028
10048
  var SystemConfigManager = () => {
10029
10049
  const [configItems, setConfigItems] = useState([]);
10030
10050
  const [loading, setLoading] = useState(true);
@@ -10049,8 +10069,16 @@ var SystemConfigManager = () => {
10049
10069
  try {
10050
10070
  const response = await fetch(`/api/showmasterpiece/config/items?environment=${env}`);
10051
10071
  const data = await response.json();
10052
- if (data.items && Array.isArray(data.items)) {
10053
- setConfigItems(data.items);
10072
+ if (!response.ok) {
10073
+ setMessage({
10074
+ type: "error",
10075
+ text: data?.error || data?.message || "\u52A0\u8F7D\u914D\u7F6E\u9879\u5931\u8D25"
10076
+ });
10077
+ return;
10078
+ }
10079
+ const items = extractConfigItems(data);
10080
+ if (Array.isArray(items)) {
10081
+ setConfigItems(items);
10054
10082
  } else {
10055
10083
  console.error("API\u54CD\u5E94\u683C\u5F0F\u9519\u8BEF:", data);
10056
10084
  setMessage({
@@ -10109,7 +10137,7 @@ var SystemConfigManager = () => {
10109
10137
  })
10110
10138
  });
10111
10139
  const result = await response.json();
10112
- if (result.success) {
10140
+ if (isSuccessResponse2(result, response.ok)) {
10113
10141
  setMessage({
10114
10142
  type: "success",
10115
10143
  text: "\u914D\u7F6E\u9879\u66F4\u65B0\u6210\u529F"
@@ -10151,7 +10179,7 @@ var SystemConfigManager = () => {
10151
10179
  method: "DELETE"
10152
10180
  });
10153
10181
  const result = await response.json();
10154
- if (result.success) {
10182
+ if (isSuccessResponse2(result, response.ok)) {
10155
10183
  setMessage({
10156
10184
  type: "success",
10157
10185
  text: "\u914D\u7F6E\u9879\u5220\u9664\u6210\u529F"
@@ -10337,7 +10365,7 @@ var SystemConfigManager = () => {
10337
10365
  body: JSON.stringify(data)
10338
10366
  });
10339
10367
  const result = await response.json();
10340
- if (result.success) {
10368
+ if (isSuccessResponse2(result, response.ok)) {
10341
10369
  setMessage({
10342
10370
  type: "success",
10343
10371
  text: "\u914D\u7F6E\u9879\u521B\u5EFA\u6210\u529F"