style(mpuniapp): 修复移动端视口安全区避让、触控热区与零Emoji规范并完善UI/UX测试覆盖
这个提交包含在:
@@ -389,7 +389,8 @@ onUnmounted(() => {
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding-inline: var(--oc-space-16, 16px);
|
||||
padding-block: 16px 36px;
|
||||
padding-top: 16px;
|
||||
padding-bottom: calc(36px + env(safe-area-inset-bottom, 0px));
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
|
||||
@@ -522,8 +522,8 @@ onShow(() => {
|
||||
}
|
||||
|
||||
.primary-cta-btn {
|
||||
height: 38px;
|
||||
min-height: 38px;
|
||||
height: 44px;
|
||||
min-height: 44px;
|
||||
padding-inline: 16px;
|
||||
border-width: 0;
|
||||
border-radius: var(--oc-radius-btn, 14px);
|
||||
@@ -657,7 +657,8 @@ onShow(() => {
|
||||
.leads-list {
|
||||
flex: 1;
|
||||
padding-inline: var(--oc-space-16, 16px);
|
||||
padding-block: var(--oc-space-8, 8px);
|
||||
padding-top: var(--oc-space-8, 8px);
|
||||
padding-bottom: calc(var(--oc-space-8, 8px) + var(--window-bottom, 0px) + env(safe-area-inset-bottom, 0px));
|
||||
}
|
||||
|
||||
/* High-Density Lead Row (76px Height, Fast Scan for Sales) */
|
||||
|
||||
@@ -501,8 +501,9 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
.copy-link-btn {
|
||||
height: 36px;
|
||||
padding: 0 12px;
|
||||
height: 44px;
|
||||
min-height: 44px;
|
||||
padding: 0 14px;
|
||||
border-radius: 8px;
|
||||
background-color: var(--bg, #F5F8FC);
|
||||
border: 1px solid var(--border, #E3E7ED);
|
||||
@@ -666,8 +667,9 @@ onMounted(() => {
|
||||
}
|
||||
|
||||
.pulse-action-btn {
|
||||
height: 36px;
|
||||
padding: 0 14px;
|
||||
height: 44px;
|
||||
min-height: 44px;
|
||||
padding: 0 16px;
|
||||
border-radius: 8px;
|
||||
background-color: var(--primary, #0B5CFF);
|
||||
display: flex;
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<view v-if="submitSuccess" class="success-card">
|
||||
<view class="success-icon-wrap">
|
||||
<view class="success-icon-ring"></view>
|
||||
<text class="success-icon-check">✓</text>
|
||||
<view class="success-icon-tick"></view>
|
||||
</view>
|
||||
<text class="success-title">{{ t('successTitle') }}</text>
|
||||
<text class="success-desc">{{ t('successDesc') }}</text>
|
||||
@@ -90,7 +90,9 @@
|
||||
:aria-label="ocrCtaLabel"
|
||||
@click="handleOcrScan"
|
||||
>
|
||||
<text class="ocr-btn-symbol">📷</text>
|
||||
<view class="ocr-camera-icon">
|
||||
<view class="ocr-camera-lens"></view>
|
||||
</view>
|
||||
<text class="ocr-btn-text">{{ ocrCtaLabel }}</text>
|
||||
</button>
|
||||
</view>
|
||||
@@ -222,7 +224,9 @@
|
||||
<!-- Bento 模组 D: 国际隐私合规与企业级安全背书 -->
|
||||
<view class="bento-card privacy-card">
|
||||
<view class="privacy-icon-box">
|
||||
<text class="privacy-shield-icon">🛡</text>
|
||||
<view class="privacy-shield-badge">
|
||||
<view class="shield-core-dot"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="privacy-text-wrap">
|
||||
<text class="privacy-title">{{ t('privacyTitle') }}</text>
|
||||
@@ -637,10 +641,31 @@ onLoad((options: ExchangePageOptions) => {
|
||||
border-radius: 36px;
|
||||
}
|
||||
|
||||
.success-icon-check {
|
||||
font-size: 28px;
|
||||
font-weight: 700;
|
||||
color: var(--oc-success, #12B76A);
|
||||
.success-icon-tick {
|
||||
width: 14px;
|
||||
height: 24px;
|
||||
border-right: 3px solid var(--oc-success, #12B76A);
|
||||
border-bottom: 3px solid var(--oc-success, #12B76A);
|
||||
transform: rotate(45deg);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.ocr-camera-icon {
|
||||
width: 18px;
|
||||
height: 14px;
|
||||
border: 1.5px solid var(--oc-text, #101828);
|
||||
border-radius: 3px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.ocr-camera-lens {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border: 1.5px solid var(--oc-text, #101828);
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
.success-title {
|
||||
@@ -1062,8 +1087,22 @@ onLoad((options: ExchangePageOptions) => {
|
||||
padding-block-start: 1px;
|
||||
}
|
||||
|
||||
.privacy-shield-icon {
|
||||
font-size: 18px;
|
||||
.privacy-shield-badge {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
border-radius: 5px;
|
||||
background-color: var(--oc-primary-soft, #EBF5FF);
|
||||
border: 1px solid var(--oc-primary, #0088FF);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.shield-core-dot {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 9999px;
|
||||
background-color: var(--oc-primary, #0088FF);
|
||||
}
|
||||
|
||||
.privacy-text-wrap {
|
||||
|
||||
@@ -7,6 +7,7 @@ const MP_ROOT = path.resolve('m:/2026项目/CRMmp/mpuniapp');
|
||||
|
||||
// 18 个全量页面路由列表
|
||||
const ALL_PAGES = [
|
||||
'pages/owner/workplace/index.uvue',
|
||||
'pages/portal/index.uvue',
|
||||
'pages/portal/exchange.uvue',
|
||||
'pages/portal/case-detail.uvue',
|
||||
@@ -36,10 +37,11 @@ const ALL_COMPONENTS = [
|
||||
'components/image-uploader/image-uploader.uvue',
|
||||
];
|
||||
|
||||
// 4 个 TabBar 页面
|
||||
// 5 个 TabBar 页面
|
||||
const TABBAR_PAGES = [
|
||||
'pages/owner/hall/index.uvue',
|
||||
'pages/owner/workplace/index.uvue',
|
||||
'pages/owner/card/index.uvue',
|
||||
'pages/owner/radar.uvue',
|
||||
'pages/owner/leads.uvue',
|
||||
'pages/owner/profile/index.uvue',
|
||||
];
|
||||
@@ -49,8 +51,6 @@ const FORM_PAGES = [
|
||||
'pages/portal/exchange.uvue',
|
||||
'pages/common/login.uvue',
|
||||
'pages/owner/card/edit.uvue',
|
||||
'pages/owner/card/cases.uvue',
|
||||
'pages/owner/card/articles.uvue',
|
||||
'pages/owner/leads-detail.uvue',
|
||||
'pages/owner/nfc/scan.uvue',
|
||||
'pages/owner/nfc/mode.uvue',
|
||||
|
||||
在新工单中引用
屏蔽一个用户