fix: CORS/API 500 issues, switch to native tabbar, restore quick-actions

- Backend: guest UUID format fix, /auth/me guest branch, UUID validation in deps.py, CORS config fix
- Frontend: switch to native tabbar (custom: false), cleanup App.vue, redesign quick-actions with colored icons, conditional wechat login, proxy API requests via Vite
This commit is contained in:
TradeMate Dev
2026-05-13 17:54:13 +08:00
parent 7b62c2f8b4
commit 04f7ff0317
8 changed files with 101 additions and 66 deletions
+52 -41
View File
@@ -94,20 +94,28 @@
<view class="quick-actions">
<view class="action-item" @click="goToPage('/pages/translate/translate')">
<text class="action-icon">🔤</text>
<text class="action-text"></text>
<view class="action-icon-wrap" style="background:#e6f7ff">
<text class="action-icon-text" style="color:#1890ff"></text>
</view>
<text class="action-label">智能翻译</text>
</view>
<view class="action-item" @click="hasLogin ? goToPage('/pages/customers/customers') : goToLogin()">
<text class="action-icon">👥</text>
<text class="action-text"></text>
<view class="action-icon-wrap" style="background:#fff7e6">
<text class="action-icon-text" style="color:#fa8c16"></text>
</view>
<text class="action-label">客户管理</text>
</view>
<view class="action-item" @click="hasLogin ? goToPage('/pages/marketing/marketing') : goToLogin()">
<text class="action-icon">📢</text>
<text class="action-text"></text>
<view class="action-icon-wrap" style="background:#f6ffed">
<text class="action-icon-text" style="color:#52c41a"></text>
</view>
<text class="action-label">营销文案</text>
</view>
<view class="action-item" @click="hasLogin ? goToPage('/pages/quotation/quotation') : goToLogin()">
<text class="action-icon">📄</text>
<text class="action-text"></text>
<view class="action-icon-wrap" style="background:#fff0f6">
<text class="action-icon-text" style="color:#eb2f96"></text>
</view>
<text class="action-label">报价单</text>
</view>
</view>
@@ -716,39 +724,6 @@ const copyTryResult = () => {
padding: 40rpx;
}
.quick-actions {
display: flex;
justify-content: space-around;
background: #fff;
border-radius: 16rpx;
padding: 30rpx;
}
.action-item {
display: flex;
flex-direction: column;
align-items: center;
}
.action-icon {
width: 80rpx;
height: 80rpx;
background: #e6f7ff;
color: #1890ff;
border-radius: 16rpx;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
font-weight: 600;
margin-bottom: 12rpx;
}
.action-text {
font-size: 24rpx;
color: #666;
}
.followup-card {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 16rpx;
@@ -776,6 +751,42 @@ const copyTryResult = () => {
margin-top: 12rpx;
}
.quick-actions {
display: flex;
background: #fff;
border-radius: 16rpx;
padding: 20rpx 16rpx;
margin-bottom: 20rpx;
justify-content: space-around;
}
.action-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 8rpx;
cursor: pointer;
}
.action-icon-wrap {
width: 72rpx;
height: 72rpx;
border-radius: 36rpx;
display: flex;
align-items: center;
justify-content: center;
}
.action-icon-text {
font-size: 30rpx;
font-weight: bold;
}
.action-label {
font-size: 22rpx;
color: #666;
}
.more-section {
background: #fff;
border-radius: 16rpx;