diff --git a/frontend/admin/src/pages/plugin/normal/order/Detail.vue b/frontend/admin/src/pages/plugin/normal/order/Detail.vue
index e86b93fa7..e1814a91b 100644
--- a/frontend/admin/src/pages/plugin/normal/order/Detail.vue
+++ b/frontend/admin/src/pages/plugin/normal/order/Detail.vue
@@ -372,12 +372,12 @@
-
+
表单信息
-
+
{{ item.title }}:{{ item.value }}
@@ -386,7 +386,13 @@
{{ item.title }}:
-
+
@@ -601,6 +607,28 @@ function formatDate(ts) {
.padStart(2, '0')}`;
}
+// 图片扩展名判断
+const IMAGE_EXT_RE = /\.(jpe?g|png|gif|webp|bmp)(\?.*)?$/i;
+
+/** 自定义表单字段值规范化为图片 URL 数组(兼容字符串单图 / 数组多图) */
+function formImageUrls(item) {
+ if (!item || !item.value) return [];
+ const list = Array.isArray(item.value) ? item.value : [item.value];
+ return list.filter((v) => typeof v === 'string' && v.indexOf('http') === 0);
+}
+
+/**
+ * 图片字段判断:新订单 type=img,或存量订单无类型但值是图片链接
+ * (新数据 label 是 custom_field_N,不能再按 label == 'img' 判断)
+ */
+function isImageItem(item) {
+ if (!item) return false;
+ if (item.type === 'img') return true;
+ if (item.type) return false;
+ const urls = formImageUrls(item);
+ return urls.length > 0 && urls.every((v) => IMAGE_EXT_RE.test(v) || v.indexOf('/uploads/') !== -1);
+}
+
/** 将 "Y-m-d H:i:s" 或 "Y-m-d H:i" 字符串转为时间戳,用于时间线排序 */
function parseTimeToTimestamp(timeStr) {
if (!timeStr) return 0;
diff --git a/frontend/uni-app/src/dynamic-pages/components/order/detail/CustomForm.vue b/frontend/uni-app/src/dynamic-pages/components/order/detail/CustomForm.vue
index 4198fa9da..b5ff87da3 100644
--- a/frontend/uni-app/src/dynamic-pages/components/order/detail/CustomForm.vue
+++ b/frontend/uni-app/src/dynamic-pages/components/order/detail/CustomForm.vue
@@ -7,9 +7,9 @@
{{ $t('自定义信息') }}
-
-
- {{ item.title || item.label }}:
+
+
+ {{ item.title || item.label }}
-
+
- {{ item.title || item.label }}:
+ {{ item.title || item.label }}
{{ item.value }}
@@ -97,11 +97,42 @@ function previewImages(item, index) {