fix(gxmu): 六张申报表输入框边框改画在外层 view,修复小程序端边框不显示

:deep(.field-input.uv-input) 在小程序里穿透不到 uv-input 宿主节点,边框完全丢失。改为包一层页面级 field-input-wrap 承载边框,并统一 picker/textarea 边框为 1px。#qmgc #未来学术之星 #挑战杯 #通用申报表
This commit is contained in:
2026-11-02 14:20:27 +08:00
parent a28a9ed86c
commit c2fba0ffd1
6 changed files with 96 additions and 72 deletions
+7 -6
View File
@@ -123,8 +123,7 @@
</text>
</view>
<uv-input
v-else
<view v-else class="field-input-wrap"><uv-input
class="field-input"
:modelValue="formData[field.key]"
:type="getInputType(field)"
@@ -132,7 +131,7 @@
placeholder-style="color: #c0c4cc;"
:maxlength="-1"
@input="setFieldValue(field.key, $event)"
/>
/></view>
</view>
</view>
</view>
@@ -874,11 +873,13 @@
.field-label { margin-bottom: 12rpx; font-size: 25rpx; font-weight: 600; color: #2b3037; }
.field-required { margin-left: 8rpx; color: #1496f2; }
.field-textarea,.field-picker { width: 100%; box-sizing: border-box; padding: 22rpx 24rpx; border-radius: 22rpx; font-size: 24rpx; color: #2a2e35; }
.field-textarea { background: #f8f4f1; border: 1rpx solid #eadfd7; }
.field-picker { background: #F4FCFF; border: 1rpx solid rgba(220,220,220,1); }
.field-textarea { background: #f8f4f1; border: 1px solid #c9d4e1; }
.field-picker { background: #F4FCFF; border: 1px solid #c9d4e1; }
.field-picker--disabled { background: #f7f9fb; color: #aaafb7; }
.field-textarea { min-height: 180rpx; }
:deep(.field-input.uv-input) { width: 100%; min-height: 88rpx; padding: 0 24rpx; border-radius: 12rpx; border: 1px solid #dcdfe6; background: #ffffff; box-sizing: border-box; transition: border-color 0.2s ease; }
/* 边框画在外层 view 上:小程序里 :deep 穿透不到 uv-input 宿主节点,边框会不显示 */
.field-input-wrap { width: 100%; box-sizing: border-box; display: flex; align-items: center; min-height: 88rpx; padding: 0 24rpx; border-radius: 12rpx; border: 1px solid #c9d4e1; background: #ffffff; }
:deep(.field-input.uv-input) { width: 100%; border: none !important; background: transparent !important; padding: 0 !important; }
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) { height: 88rpx; min-height: 88rpx; font-size: 28rpx; line-height: 88rpx; color: #303133; }
.field-placeholder { color: #aa9f98; }
.field-value { color: #2a2e35; }
+17 -14
View File
@@ -32,8 +32,8 @@
<scroll-view scroll-y class="modal-body">
<view class="form-section">
<view class="form-section-title">登记表</view>
<view class="field-item"><view class="field-label">年份</view><uv-input class="field-input" :modelValue="current.year" border="none" @input="setField('year', $event)" /></view>
<view class="field-item"><view class="field-label">姓名</view><uv-input class="field-input" :modelValue="current.name" border="none" @input="setField('name', $event)" /></view>
<view class="field-item"><view class="field-label">年份</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.year" border="none" @input="setField('year', $event)" /></view></view>
<view class="field-item"><view class="field-label">姓名</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.name" border="none" @input="setField('name', $event)" /></view></view>
<view class="field-item">
<view class="field-label">性别</view>
<view class="field-picker" @tap="openGenderPicker">
@@ -60,21 +60,21 @@
{{ current.politics || (politicsOptions.length ? '请选择政治面貌' : '政治面貌加载中') }}
</view>
</view>
<view class="field-item"><view class="field-label">籍贯</view><uv-input class="field-input" :modelValue="current.nativePlace" border="none" @input="setField('nativePlace', $event)" /></view>
<view class="field-item"><view class="field-label">手机号码</view><uv-input class="field-input" :modelValue="current.phone" border="none" @input="setField('phone', $event)" /></view>
<view class="field-item"><view class="field-label">微信号</view><uv-input class="field-input" :modelValue="current.wechat" border="none" @input="setField('wechat', $event)" /></view>
<view class="field-item"><view class="field-label">电子邮箱</view><uv-input class="field-input" :modelValue="current.email" border="none" @input="setField('email', $event)" /></view>
<view class="field-item"><view class="field-label">QQ号</view><uv-input class="field-input" :modelValue="current.qq" border="none" @input="setField('qq', $event)" /></view>
<view class="field-item"><view class="field-label">身份证号</view><uv-input class="field-input" :modelValue="current.idCardNo" border="none" @input="setField('idCardNo', $event)" /></view>
<view class="field-item"><view class="field-label">爱好特长</view><uv-input class="field-input" :modelValue="current.hobby" border="none" @input="setField('hobby', $event)" /></view>
<view class="field-item"><view class="field-label">籍贯</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.nativePlace" border="none" @input="setField('nativePlace', $event)" /></view></view>
<view class="field-item"><view class="field-label">手机号码</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.phone" border="none" @input="setField('phone', $event)" /></view></view>
<view class="field-item"><view class="field-label">微信号</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.wechat" border="none" @input="setField('wechat', $event)" /></view></view>
<view class="field-item"><view class="field-label">电子邮箱</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.email" border="none" @input="setField('email', $event)" /></view></view>
<view class="field-item"><view class="field-label">QQ号</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.qq" border="none" @input="setField('qq', $event)" /></view></view>
<view class="field-item"><view class="field-label">身份证号</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.idCardNo" border="none" @input="setField('idCardNo', $event)" /></view></view>
<view class="field-item"><view class="field-label">爱好特长</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.hobby" border="none" @input="setField('hobby', $event)" /></view></view>
<view class="field-item">
<view class="field-label">是否有志到广西基层工作</view>
<view class="field-picker" @tap="openWillingPicker">
{{ current.willingToWorkInGuangxi || '请选择' }}
</view>
</view>
<view class="field-item"><view class="field-label">学校、院系、年级、专业</view><uv-input class="field-input" :modelValue="current.schoolInfo" border="none" @input="setField('schoolInfo', $event)" /></view>
<view class="field-item"><view class="field-label">担任团学职务情况</view><uv-input class="field-input" :modelValue="current.leaguePosition" border="none" @input="setField('leaguePosition', $event)" /></view>
<view class="field-item"><view class="field-label">学校、院系、年级、专业</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.schoolInfo" border="none" @input="setField('schoolInfo', $event)" /></view></view>
<view class="field-item"><view class="field-label">担任团学职务情况</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.leaguePosition" border="none" @input="setField('leaguePosition', $event)" /></view></view>
<view class="field-item"><view class="field-label">个人简历</view><textarea class="field-textarea" :value="current.resume" @input="setField('resume', $event)" /></view>
<view class="field-item"><view class="field-label">奖惩情况</view><textarea class="field-textarea" :value="current.awards" @input="setField('awards', $event)" /></view>
<view class="field-item"><view class="field-label">综合成绩情况</view><textarea class="field-textarea" :value="current.academicPerformance" @input="setField('academicPerformance', $event)" /></view>
@@ -419,10 +419,13 @@
.form-section-title { font-size: 28rpx; font-weight: 700; color: #1f2329; margin-bottom: 16rpx; }
.field-item + .field-item { margin-top: 16rpx; }
.field-label { margin-bottom: 10rpx; font-size: 24rpx; color: #5f6b7a; }
.field-picker { width: 100%; box-sizing: border-box; min-height: 84rpx; padding: 20rpx; border-radius: 20rpx; border: 1rpx solid rgba(220,220,220,1); background: #F4FCFF; font-size: 24rpx; color: #1f2329; }
.field-picker { width: 100%; box-sizing: border-box; min-height: 88rpx; padding: 20rpx; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #F4FCFF; font-size: 24rpx; color: #1f2329; }
.field-picker--disabled { color: #a8b3bf; background: #f7f9fb; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; }
:deep(.field-input.uv-input) { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec !important; background: #fff !important; padding: 20rpx !important; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; }
/* 边框画在外层 view 上:小程序里 :deep 穿透到 uv-input 宿主节点的边框不可靠,边框会看不见 */
.field-input-wrap { width: 100%; box-sizing: border-box; display: flex; align-items: center; min-height: 88rpx; padding: 0 20rpx; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; }
:deep(.field-input.uv-input) { width: 100%; border: none !important; background: transparent !important; padding: 0 !important; }
:deep(.field-input.uv-input .uv-input__content) { padding: 0 !important; }
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) { font-size: 24rpx; color: #1f2329; min-height: 40rpx; }
.field-textarea { min-height: 180rpx; }
.modal-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16rpx; padding: 24rpx; border-top: 1rpx solid #eef1f4; }
+17 -9
View File
@@ -45,7 +45,7 @@
</view>
<view class="field-row">
<uv-input
<view class="field-input-wrap"><uv-input
v-model.trim="filters.schoolName"
class="field-input"
placeholder="高校名称"
@@ -53,7 +53,7 @@
@confirm="applyFilters"
:maxlength="-1"
border="none"
/>
/></view>
</view>
<view class="picker-row">
@@ -394,7 +394,6 @@
}
.search-box,
.field-input,
.picker-trigger {
background: #f8fbff;
border: 1rpx solid rgba(37, 99, 235, 0.1);
@@ -435,14 +434,23 @@
margin-top: 16rpx;
}
/* 边框画在外层 view 上:小程序里 :deep 穿透不到 uv-input 宿主节点,边框会不显示 */
.field-input-wrap {
display: flex;
align-items: center;
height: 84rpx;
padding: 0 20rpx;
box-sizing: border-box;
border-radius: 22rpx;
background: #f8fbff;
border: 1px solid rgba(37, 99, 235, 0.3);
}
:deep(.field-input.uv-input) {
width: 100%;
height: 84rpx;
padding: 0 20rpx !important;
border-radius: 22rpx;
box-sizing: border-box;
background: #f8fbff !important;
border: 1rpx solid rgba(37, 99, 235, 0.1) !important;
padding: 0 !important;
background: transparent !important;
border: 0 !important;
}
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) {
+19 -11
View File
@@ -45,7 +45,7 @@
</view>
<view class="field-row">
<uv-input
<view class="field-input-wrap"><uv-input
v-model.trim="filters.schoolName"
class="field-input"
placeholder="参赛学校"
@@ -53,11 +53,11 @@
@confirm="applyFilters"
:maxlength="-1"
border="none"
/>
/></view>
</view>
<view class="field-row">
<uv-input
<view class="field-input-wrap"><uv-input
v-model.trim="filters.talentType"
class="field-input"
placeholder="人才类型"
@@ -65,7 +65,7 @@
@confirm="applyFilters"
:maxlength="-1"
border="none"
/>
/></view>
</view>
<view class="picker-row picker-row--single">
@@ -393,7 +393,6 @@ export default {
}
.search-box,
.field-input,
.picker-trigger {
background: #f7fffb;
border: 1rpx solid rgba(16, 185, 129, 0.12);
@@ -434,14 +433,23 @@ export default {
margin-top: 16rpx;
}
/* 边框画在外层 view 上:小程序里 :deep 穿透不到 uv-input 宿主节点,边框会不显示 */
.field-input-wrap {
display: flex;
align-items: center;
height: 84rpx;
padding: 0 20rpx;
box-sizing: border-box;
border-radius: 22rpx;
background: #f7fffb;
border: 1px solid rgba(16, 185, 129, 0.3);
}
:deep(.field-input.uv-input) {
width: 100%;
height: 84rpx;
padding: 0 20rpx !important;
border-radius: 22rpx;
box-sizing: border-box;
background: #f7fffb !important;
border: 1rpx solid rgba(16, 185, 129, 0.12) !important;
padding: 0 !important;
background: transparent !important;
border: 0 !important;
}
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) {
+25 -23
View File
@@ -51,21 +51,21 @@
<view v-if="activeTab === 'base'" class="form-section">
<view class="field-item">
<view class="field-label">年份</view>
<uv-input class="field-input field-input--readonly" :modelValue="current.year" border="none" readonly placeholder="当前申报年份" />
<view class="field-input-wrap field-input-wrap--readonly"><uv-input class="field-input field-input--readonly" :modelValue="current.year" border="none" readonly placeholder="当前申报年份" /></view>
</view>
<view class="field-grid field-grid--2">
<view class="field-item">
<view class="field-label">所在省(区、市)</view>
<uv-input class="field-input" :modelValue="current.provinceCity" border="none" @input="setField('provinceCity', $event)" placeholder="请输入所在省/市" />
<view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.provinceCity" border="none" @input="setField('provinceCity', $event)" placeholder="请输入所在省/市" /></view>
</view>
<view class="field-item">
<view class="field-label">学校名称(全称)</view>
<uv-input class="field-input" :modelValue="current.schoolName" border="none" @input="setField('schoolName', $event)" placeholder="请输入学校名称" />
<view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.schoolName" border="none" @input="setField('schoolName', $event)" placeholder="请输入学校名称" /></view>
</view>
</view>
<view class="field-item">
<view class="field-label">项目名称</view>
<uv-input class="field-input" :modelValue="current.projectName" border="none" @input="setField('projectName', $event)" placeholder="请输入项目名称" />
<view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.projectName" border="none" @input="setField('projectName', $event)" placeholder="请输入项目名称" /></view>
</view>
<view class="field-item">
<view class="field-label">项目类型</view>
@@ -98,12 +98,12 @@
<view class="group-remove" @tap="removeTeamMember(index)">删除</view>
</view>
<view class="field-grid field-grid--2">
<view class="field-item"><view class="field-label">姓名</view><uv-input class="field-input" :modelValue="item.name" border="none" @input="setTeamMemberField(index, 'name', $event)" /></view>
<view class="field-item"><view class="field-label">性别</view><uv-input class="field-input" :modelValue="item.gender" border="none" @input="setTeamMemberField(index, 'gender', $event)" /></view>
<view class="field-item"><view class="field-label">学院</view><uv-input class="field-input" :modelValue="item.college" border="none" @input="setTeamMemberField(index, 'college', $event)" /></view>
<view class="field-item"><view class="field-label">年级、专业</view><uv-input class="field-input" :modelValue="item.gradeMajor" border="none" @input="setTeamMemberField(index, 'gradeMajor', $event)" /></view>
<view class="field-item"><view class="field-label">手机</view><uv-input class="field-input" :modelValue="item.phone" border="none" @input="setTeamMemberField(index, 'phone', $event)" /></view>
<view class="field-item"><view class="field-label">备注</view><uv-input class="field-input" :modelValue="item.remark" border="none" @input="setTeamMemberField(index, 'remark', $event)" placeholder="负责人及学历等备注" /></view>
<view class="field-item"><view class="field-label">姓名</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.name" border="none" @input="setTeamMemberField(index, 'name', $event)" /></view></view>
<view class="field-item"><view class="field-label">性别</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.gender" border="none" @input="setTeamMemberField(index, 'gender', $event)" /></view></view>
<view class="field-item"><view class="field-label">学院</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.college" border="none" @input="setTeamMemberField(index, 'college', $event)" /></view></view>
<view class="field-item"><view class="field-label">年级、专业</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.gradeMajor" border="none" @input="setTeamMemberField(index, 'gradeMajor', $event)" /></view></view>
<view class="field-item"><view class="field-label">手机</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.phone" border="none" @input="setTeamMemberField(index, 'phone', $event)" /></view></view>
<view class="field-item"><view class="field-label">备注</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.remark" border="none" @input="setTeamMemberField(index, 'remark', $event)" placeholder="负责人及学历等备注" /></view></view>
</view>
</view>
@@ -118,12 +118,12 @@
<view class="group-remove" @tap="removeAdvisor(index)">删除</view>
</view>
<view class="field-grid field-grid--2">
<view class="field-item"><view class="field-label">姓名</view><uv-input class="field-input" :modelValue="item.name" border="none" @input="setAdvisorField(index, 'name', $event)" /></view>
<view class="field-item"><view class="field-label">性别</view><uv-input class="field-input" :modelValue="item.gender" border="none" @input="setAdvisorField(index, 'gender', $event)" /></view>
<view class="field-item"><view class="field-label">学院</view><uv-input class="field-input" :modelValue="item.college" border="none" @input="setAdvisorField(index, 'college', $event)" /></view>
<view class="field-item"><view class="field-label">职称</view><uv-input class="field-input" :modelValue="item.title" border="none" @input="setAdvisorField(index, 'title', $event)" /></view>
<view class="field-item"><view class="field-label">职务</view><uv-input class="field-input" :modelValue="item.duty" border="none" @input="setAdvisorField(index, 'duty', $event)" /></view>
<view class="field-item"><view class="field-label">手机</view><uv-input class="field-input" :modelValue="item.phone" border="none" @input="setAdvisorField(index, 'phone', $event)" /></view>
<view class="field-item"><view class="field-label">姓名</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.name" border="none" @input="setAdvisorField(index, 'name', $event)" /></view></view>
<view class="field-item"><view class="field-label">性别</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.gender" border="none" @input="setAdvisorField(index, 'gender', $event)" /></view></view>
<view class="field-item"><view class="field-label">学院</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.college" border="none" @input="setAdvisorField(index, 'college', $event)" /></view></view>
<view class="field-item"><view class="field-label">职称</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.title" border="none" @input="setAdvisorField(index, 'title', $event)" /></view></view>
<view class="field-item"><view class="field-label">职务</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.duty" border="none" @input="setAdvisorField(index, 'duty', $event)" /></view></view>
<view class="field-item"><view class="field-label">手机</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="item.phone" border="none" @input="setAdvisorField(index, 'phone', $event)" /></view></view>
</view>
</view>
@@ -146,11 +146,11 @@
<view v-else class="form-section">
<view class="field-item">
<view class="field-label">项目名称</view>
<uv-input class="field-input" :modelValue="current.projectName" border="none" @input="setField('projectName', $event)" placeholder="请输入项目名称" />
<view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.projectName" border="none" @input="setField('projectName', $event)" placeholder="请输入项目名称" /></view>
</view>
<view class="field-item">
<view class="field-label">参赛学校</view>
<uv-input class="field-input" :modelValue="current.schoolName" border="none" @input="setField('schoolName', $event)" placeholder="请输入参赛学校" />
<view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.schoolName" border="none" @input="setField('schoolName', $event)" placeholder="请输入参赛学校" /></view>
</view>
<view class="field-item">
<view class="field-label">项目类型</view>
@@ -183,7 +183,7 @@
</view>
</view>
</view>
<view class="field-item"><view class="field-label">我们的口号</view><uv-input class="field-input" :modelValue="current.teamSlogan" border="none" @input="setField('teamSlogan', $event)" placeholder="20字以内" /></view>
<view class="field-item"><view class="field-label">我们的口号</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.teamSlogan" border="none" @input="setField('teamSlogan', $event)" placeholder="20字以内" /></view></view>
<view class="field-item">
<view class="field-label">我们的实践日志(选填)</view>
<view class="upload-card">
@@ -764,12 +764,14 @@ export default {
.field-item + .field-item { margin-top: 16rpx; }
.field-label { margin-bottom: 10rpx; font-size: 24rpx; color: #5f6b7a; }
.field-note { margin-top: 6rpx; font-size: 20rpx; line-height: 1.6; color: #98a2b3; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; min-height: 180rpx; }
:deep(.field-input.uv-input) { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec !important; background: #fff !important; padding: 20rpx !important; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; min-height: 180rpx; }
/* 边框画在外层 view 上:小程序里 :deep 穿透不到 uv-input 宿主节点,边框会不显示 */
.field-input-wrap { width: 100%; box-sizing: border-box; display: flex; align-items: center; min-height: 88rpx; padding: 0 20rpx; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; }
.field-input-wrap--readonly { background: #f8fafc; }
:deep(.field-input.uv-input) { width: 100%; border: none !important; background: transparent !important; padding: 0 !important; }
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) { font-size: 24rpx; color: #1f2329; min-height: 40rpx; }
:deep(.field-input--readonly.uv-input) { background: #f8fafc !important; }
:deep(.field-input--readonly.uv-input .uv-input__content__field-wrapper__field) { color: #667085; }
.field-picker { width: 100%; box-sizing: border-box; padding: 20rpx; border-radius: 20rpx; border: 1rpx solid rgba(220,220,220,1); background: #F4FCFF; font-size: 24rpx; }
.field-picker { width: 100%; box-sizing: border-box; padding: 20rpx; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #F4FCFF; font-size: 24rpx; }
.field-placeholder { color: #98a2b3; }
.field-value { color: #1f2329; }
.upload-card { padding: 20rpx; border-radius: 20rpx; border: 1rpx solid #dce4ec; background: #fff; }
+11 -9
View File
@@ -32,13 +32,13 @@
<scroll-view scroll-y class="modal-body">
<view class="form-section">
<view class="form-section-title">基本信息</view>
<view class="field-item"><view class="field-label">年份</view><uv-input class="field-input" :modelValue="current.year" border="none" @input="setField('year', $event)" /></view>
<view class="field-item"><view class="field-label">课题名称</view><uv-input class="field-input" :modelValue="current.topicName" border="none" @input="setField('topicName', $event)" /></view>
<view class="field-item"><view class="field-label">课题负责人</view><uv-input class="field-input" :modelValue="current.leader" border="none" @input="setField('leader', $event)" /></view>
<view class="field-item"><view class="field-label">学院、年级、班别</view><uv-input class="field-input" :modelValue="current.collegeGradeClass" border="none" @input="setField('collegeGradeClass', $event)" /></view>
<view class="field-item"><view class="field-label">联系电话</view><uv-input class="field-input" :modelValue="current.phone" border="none" @input="setField('phone', $event)" /></view>
<view class="field-item"><view class="field-label">指导老师</view><uv-input class="field-input" :modelValue="current.advisor" border="none" @input="setField('advisor', $event)" /></view>
<view class="field-item"><view class="field-label">课题类型</view><uv-input class="field-input" :modelValue="current.topicType" border="none" @input="setField('topicType', $event)" placeholder="自然科学 / 人文科学" /></view>
<view class="field-item"><view class="field-label">年份</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.year" border="none" @input="setField('year', $event)" /></view></view>
<view class="field-item"><view class="field-label">课题名称</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.topicName" border="none" @input="setField('topicName', $event)" /></view></view>
<view class="field-item"><view class="field-label">课题负责人</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.leader" border="none" @input="setField('leader', $event)" /></view></view>
<view class="field-item"><view class="field-label">学院、年级、班别</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.collegeGradeClass" border="none" @input="setField('collegeGradeClass', $event)" /></view></view>
<view class="field-item"><view class="field-label">联系电话</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.phone" border="none" @input="setField('phone', $event)" /></view></view>
<view class="field-item"><view class="field-label">指导老师</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.advisor" border="none" @input="setField('advisor', $event)" /></view></view>
<view class="field-item"><view class="field-label">课题类型</view><view class="field-input-wrap"><uv-input class="field-input" :modelValue="current.topicType" border="none" @input="setField('topicType', $event)" placeholder="自然科学 / 人文科学" /></view></view>
<view class="field-item"><view class="field-label">立论依据</view><textarea class="field-textarea" :value="current.rationale" @input="setField('rationale', $event)" /></view>
<!-- <view class="field-item"><view class="field-label">指导老师意见</view><textarea class="field-textarea" :value="current.teacherOpinion" @input="setField('teacherOpinion', $event)" /></view>-->
<!-- <view class="field-item"><view class="field-label">指导老师签名</view><uv-input class="field-input" :modelValue="current.teacherSign" border="none" @input="setField('teacherSign', $event)" /></view>-->
@@ -181,8 +181,10 @@
.form-section-title { font-size: 28rpx; font-weight: 700; color: #1f2329; margin-bottom: 16rpx; }
.field-item + .field-item { margin-top: 16rpx; }
.field-label { margin-bottom: 10rpx; font-size: 24rpx; color: #5f6b7a; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; }
:deep(.field-input.uv-input) { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1rpx solid #dce4ec !important; background: #fff !important; padding: 20rpx !important; }
.field-textarea { width: 100%; box-sizing: border-box; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; padding: 20rpx; font-size: 24rpx; color: #1f2329; }
/* 边框画在外层 view 上:小程序里 :deep 穿透不到 uv-input 宿主节点,边框会不显示 */
.field-input-wrap { width: 100%; box-sizing: border-box; display: flex; align-items: center; min-height: 88rpx; padding: 0 20rpx; border-radius: 20rpx; border: 1px solid #c9d4e1; background: #fff; }
:deep(.field-input.uv-input) { width: 100%; border: none !important; background: transparent !important; padding: 0 !important; }
:deep(.field-input.uv-input .uv-input__content__field-wrapper__field) { font-size: 24rpx; color: #1f2329; min-height: 40rpx; }
.field-textarea { min-height: 180rpx; }
.modal-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16rpx; padding: 24rpx; border-top: 1rpx solid #eef1f4; }