fix: 修复 VoiceController Map.of 兼容性 + ExploreController 参数不匹配

- VoiceController: Map.of() -> Collections.singletonMap() 兼容 Java 8
- ExploreController: 补齐 takeoutService.roll() 缺失的 taste/priceRange/allergies 参数

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
王鹏
2026-05-08 20:02:27 +08:00
commit 802b4ba229
98 changed files with 5761 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
Component({
properties: {
type: { type: String, value: 'takeout' },
icon: { type: String, value: '' },
title: { type: String, value: '' },
desc: { type: String, value: '' },
actionText: { type: String, value: '开盒' }
},
methods: {
onTap() {
this.triggerEvent('open', { type: this.data.type });
}
}
});

View File

@@ -0,0 +1,3 @@
{
"component": true
}

View File

@@ -0,0 +1,10 @@
<view class="mode-card {{type}}" bind:tap="onTap">
<view class="card-icon-wrap">
<text class="card-icon">{{icon}}</text>
</view>
<view class="card-body">
<view class="card-title">{{title}}</view>
<view class="card-desc">{{desc}}</view>
</view>
<view class="card-action">{{actionText}}</view>
</view>

View File

@@ -0,0 +1,93 @@
/*
* 模式卡片
* 水平布局:图标区 | 文字区 | 行动按钮
* 三种模式各用色条区分(无伪元素装饰)
*/
.mode-card {
display: flex;
align-items: center;
padding: var(--space-md);
background: var(--color-surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-sm);
transition: transform 0.15s var(--ease-out);
}
.mode-card:active {
transform: scale(0.985);
}
/* ── 图标区 ── */
.card-icon-wrap {
width: 88rpx;
height: 88rpx;
border-radius: var(--radius-md);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin-right: var(--space-md);
}
.card-icon {
font-size: 44rpx;
line-height: 1;
}
/* ── 文字区 ── */
.card-body {
flex: 1;
min-width: 0;
}
.card-title {
font-size: var(--text-body);
font-weight: 600;
color: var(--color-text);
margin-bottom: 4rpx;
}
.card-desc {
font-size: var(--text-body-sm);
color: var(--color-text-muted);
}
/* ── 行动按钮 ── */
.card-action {
flex-shrink: 0;
font-size: var(--text-body-sm);
font-weight: 500;
padding: var(--space-xs) var(--space-md);
border-radius: var(--radius-full);
white-space: nowrap;
}
/* ═══ 各模式专属色 ═══ */
/* 外卖 — 橙 */
.mode-card.takeout .card-icon-wrap {
background: var(--color-primary-pale);
}
.mode-card.takeout .card-action {
color: var(--color-primary);
background: var(--color-primary-pale);
}
/* 冰箱 — 绿 */
.mode-card.fridge .card-icon-wrap {
background: var(--color-green-pale);
}
.mode-card.fridge .card-action {
color: var(--color-green);
background: var(--color-green-pale);
}
/* 探店 — 紫 */
.mode-card.explore .card-icon-wrap {
background: var(--color-purple-pale);
}
.mode-card.explore .card-action {
color: var(--color-purple);
background: var(--color-purple-pale);
}