|
|
@@ -67,6 +67,14 @@ import { getFileUrl } from "@/utils/file.js";
|
|
|
import { DiningOrderFood, GetStoreCategories, GetStoreCuisines, GetStoreDetail, getOrderSseConfig, GetOrderCart, PostOrderCartAdd, PostOrderCartUpdate, PostOrderCartClear, PutOrderCartUpdateTableware, GetUserOwnedCouponList } from "@/api/dining.js";
|
|
|
import { createSSEConnection } from "@/utils/sse.js";
|
|
|
|
|
|
+// 商品图片:取第一张,若为逗号分隔字符串则截取逗号前的第一张
|
|
|
+function firstImage(val) {
|
|
|
+ if (val == null || val === '') return '';
|
|
|
+ if (Array.isArray(val)) return (val[0] != null && val[0] !== '') ? String(val[0]).split(/[,,]/)[0].trim() : '';
|
|
|
+ const str = String(val).trim();
|
|
|
+ return str ? str.split(/[,,]/)[0].trim() : '';
|
|
|
+}
|
|
|
+
|
|
|
const storeName = ref(''); // 店铺名称,用于导航栏标题
|
|
|
const tableId = ref(''); // 桌号ID,来自上一页 url 参数 tableid,用于接口入参
|
|
|
const tableNumber = ref(''); // 桌号展示,来自 dining/page-info 接口返回的 tableNumber
|
|
|
@@ -312,11 +320,11 @@ const fetchCuisinesByCategoryId = async (categoryId) => {
|
|
|
try {
|
|
|
const res = await GetStoreCuisines({ categoryId });
|
|
|
const list = res?.list ?? res?.data ?? (Array.isArray(res) ? res : []);
|
|
|
- const normalized = (Array.isArray(list) ? list : []).map(item => ({
|
|
|
- ...item,
|
|
|
- quantity: item.quantity ?? 0,
|
|
|
- categoryId: item.categoryId ?? categoryId
|
|
|
- }));
|
|
|
+ const normalized = (Array.isArray(list) ? list : []).map(item => {
|
|
|
+ const rawImg = item.images ?? item.cuisineImage ?? item.image ?? item.imageUrl ?? item.pic ?? item.cover ?? '';
|
|
|
+ const img = firstImage(rawImg) || (typeof rawImg === 'string' ? rawImg : (rawImg && (rawImg.url ?? rawImg.path ?? rawImg.src) ? (rawImg.url ?? rawImg.path ?? rawImg.src) : ''));
|
|
|
+ return { ...item, images: img, image: img, cuisineImage: img, quantity: item.quantity ?? 0, categoryId: item.categoryId ?? categoryId };
|
|
|
+ });
|
|
|
// 其他分类的菜品原样保留(含已选数量)
|
|
|
const rest = foodList.value.filter(f => !sameCategory(f.categoryId, categoryId));
|
|
|
// 本分类:按菜品 id 从整份列表里取已选数量,id 一致则自动带上数量
|
|
|
@@ -757,11 +765,11 @@ onLoad(async (options) => {
|
|
|
if (firstCategoryId) {
|
|
|
const cuisinesRes = await GetStoreCuisines({ categoryId: firstCategoryId });
|
|
|
const cuisinesList = cuisinesRes?.list ?? cuisinesRes?.data ?? (Array.isArray(cuisinesRes) ? cuisinesRes : []);
|
|
|
- foodList.value = (Array.isArray(cuisinesList) ? cuisinesList : []).map(item => ({
|
|
|
- ...item,
|
|
|
- quantity: item.quantity ?? 0,
|
|
|
- categoryId: item.categoryId ?? firstCategoryId
|
|
|
- }));
|
|
|
+ foodList.value = (Array.isArray(cuisinesList) ? cuisinesList : []).map(item => {
|
|
|
+ const rawImg = item.images ?? item.cuisineImage ?? item.image ?? item.imageUrl ?? item.pic ?? item.cover ?? '';
|
|
|
+ const img = firstImage(rawImg) || (typeof rawImg === 'string' ? rawImg : (rawImg && (rawImg.url ?? rawImg.path ?? rawImg.src) ? (rawImg.url ?? rawImg.path ?? rawImg.src) : ''));
|
|
|
+ return { ...item, images: img, image: img, cuisineImage: img, quantity: item.quantity ?? 0, categoryId: item.categoryId ?? firstCategoryId };
|
|
|
+ });
|
|
|
console.log('默认分类菜品:', cuisinesRes);
|
|
|
mergeCartIntoFoodList();
|
|
|
}
|