chore:表单鸿蒙做更改
This commit is contained in:
@@ -1,5 +1,10 @@
|
||||
<template>
|
||||
<!-- #ifdef MP-HARMONY -->
|
||||
<view :style="themeColor" class="harmony-root">
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-HARMONY -->
|
||||
<view :style="themeColor">
|
||||
<!-- #endif -->
|
||||
<!--
|
||||
自绘导航栏(仅在 navigationStyle:custom 的端渲染:APP / 微信小程序 / 华为快应用 / 鸿蒙元服务)
|
||||
- pages.json 已为这几端开启 navigationStyle:custom,系统不再提供原生 navbar
|
||||
@@ -23,6 +28,19 @@
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<block v-if="detail">
|
||||
<!-- 鸿蒙元服务:用原生 scroll-view 包裹表单,替代 CSS overflow 滚动(ArkUI 不识别 WebKit overflow 语义)。
|
||||
根容器 harmony-root 占满 100vh 并 flex 列布局,navbar 占顶部固定高度,page flex:1 占剩余,scroll-view 在其内滚动。
|
||||
提交按钮由 diy-form 内部渲染,处于 scroll-view 内,用户可滚到末尾点击。 -->
|
||||
<!-- #ifdef MP-HARMONY -->
|
||||
<view class="page harmony-page">
|
||||
<scroll-view scroll-y="true" :show-scrollbar="false" class="form-scroll">
|
||||
<view class="system-form-wrap">
|
||||
<diy-form ref="form" :value="diyValue" dataMode="raw" :onSubmit="handleSubmit" />
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
<!-- #ifndef MP-HARMONY -->
|
||||
<view class="page">
|
||||
<view class="system-form-wrap">
|
||||
<!-- 复用 diy-form:banner / tip / 表单字段 / 提交按钮 全部由其内部渲染,样式(bannerPaddingX/tipColor/submitBgColor 等)由 form_config 控制。
|
||||
@@ -32,6 +50,7 @@
|
||||
<diy-form ref="form" :value="diyValue" dataMode="raw" :onSubmit="handleSubmit" />
|
||||
</view>
|
||||
</view>
|
||||
<!-- #endif -->
|
||||
</block>
|
||||
<block v-else>
|
||||
<ns-empty :text="complete ? $lang('form.formdata.submitSuccess') : $lang('form.formdata.noFormInfo')"
|
||||
@@ -420,23 +439,49 @@ page {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
// iOS 兼容:确保页面内容区域可滚动,避免提交按钮被推出屏幕后无法访问
|
||||
// ===== 非鸿蒙端(H5 / 微信小程序 / App):保留原有 WebKit 滚动 / 安全区处理 =====
|
||||
// 鸿蒙走下方 MP-HARMONY 专属的 scroll-view 方案,不编译这些 WebKit 属性
|
||||
/* #ifdef H5 || MP-WEIXIN || APP-PLUS */
|
||||
.page {
|
||||
min-height: 100vh;
|
||||
// iOS Safari / WebView 需要显式开启 overflow 才能正确滚动
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch; // iOS 惯性滚动
|
||||
-webkit-overflow-scrolling: touch;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.system-form-wrap {
|
||||
// 移除 overflow: hidden,避免 iOS 上 textarea 撑开高度时裁剪掉提交按钮
|
||||
// 改用 overflow-visible 让内容自然流动,提交按钮始终可见
|
||||
overflow: visible;
|
||||
margin: 0 0 60rpx 0;
|
||||
// 确保 iOS 上表单区域有足够的底部空间显示提交按钮
|
||||
padding-bottom: env(safe-area-inset-bottom, 40rpx);
|
||||
}
|
||||
/* #endif */
|
||||
|
||||
// ===== 鸿蒙元服务:用原生 scroll-view 做滚动容器 =====
|
||||
// ArkUI 不识别 WebKit 的 overflow / -webkit-overflow-scrolling,必须用 scroll-view 组件(编译为 ArkUI Scroll)。
|
||||
// 根容器 harmony-root 占满 100vh 并 flex 列布局,navbar 占顶部固定高度,page flex:1 占剩余空间,
|
||||
// scroll-view 在 page 内 flex:1 获得确定高度后内部滚动。提交按钮由 diy-form 渲染在 scroll-view 内,可滚动到。
|
||||
/* #ifdef MP-HARMONY */
|
||||
.harmony-root {
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.harmony-page {
|
||||
flex: 1;
|
||||
min-height: 0; // 允许内容收缩,内部 scroll-view 才能拿到确定高度并正确滚动
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.form-scroll {
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
}
|
||||
.system-form-wrap {
|
||||
// 不再用 overflow:hidden 裁剪;提交按钮在 scroll-view 内,滚动可见
|
||||
overflow: visible;
|
||||
margin: 0 0 60rpx 0;
|
||||
padding-bottom: 40rpx; // 鸿蒙不识别 env(safe-area-inset-bottom),固定值兜底
|
||||
}
|
||||
/* #endif */
|
||||
|
||||
// 穿透 diy-form 包装层:消除其自带的 10rpx 圆角与白色背景,
|
||||
// 让 form 内容区域保持与原始 ns-newform 接入时一致的视觉
|
||||
|
||||
Reference in New Issue
Block a user