- 新增 miniapp/constants/profileLabels.js 作为「枚举码→中文简体」唯一字典 (婚姻/子女/学历/职业/吸烟饮酒/择偶子女/红娘状态),覆盖表单值与种子 实际值两套并集,保证详情页无论后端返回哪种码都显示中文 - 修复「择偶条件-子女」下拉英文选项(any/accept/reject→不限/可接受/不接受), 改用 value/label 数组 + range-key="label" - 修复 recommend-card / user-card / profile-detail / profile-confirm 直接渲染 后端枚举码(educationCode/maritalStatus/occupationCode…)的问题,改由 observers 派生中文 label 上屏 - 清理残留英文文案:Required 条件→必须符合的条件、喜欢TA/向Ta→喜欢对方/向对方、 U51 服务预约→服务预约、U64 公益服务记录→公益服务记录 - 修复 7 个英文窗口标题与 3 个英文占位页正文 - matchmaker 历史服务状态消除原始码兜底,统一走字典 - 加固 scripts/audit-miniapp-language.mjs(A 整行先剥离 mustache、B 排除 bind:action 处理器、F 窗口标题、JPG/PNG 入白名单) - 新增 ui-tests/miniapp-language-contracts.mjs 语种守卫(复用审计脚本,断言 0 命中), UI 契约门禁 MIN_GUARDS 21→22;已做负向注入验证判别力
125 lines
3.4 KiB
Plaintext
125 lines
3.4 KiB
Plaintext
<view class="ui-pref" wx:if="{{preference}}">
|
|
<view class="ui-pref__hint">
|
|
标记为"必须符合"的条件将作为硬约束,不会自动放宽;
|
|
"最好符合"为软偏好,可能匹配到略不满足的对象。
|
|
</view>
|
|
|
|
<!-- 年龄 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">年龄</view>
|
|
<view class="ui-pref__range">
|
|
<input
|
|
class="ui-pref__num"
|
|
type="number"
|
|
value="{{preference.ageMin}}"
|
|
placeholder="不限"
|
|
data-bound="min"
|
|
bindinput="onAgeChange"
|
|
/>
|
|
<text class="ui-pref__dash">~</text>
|
|
<input
|
|
class="ui-pref__num"
|
|
type="number"
|
|
value="{{preference.ageMax}}"
|
|
placeholder="不限"
|
|
data-bound="max"
|
|
bindinput="onAgeChange"
|
|
/>
|
|
</view>
|
|
<view
|
|
class="ui-pref__importance ui-pref__importance--{{preference.ageImportance}}"
|
|
data-field="ageImportance"
|
|
bindtap="onToggleImportance"
|
|
>{{importanceLabelMap[preference.ageImportance]}}</view>
|
|
</view>
|
|
|
|
<!-- 身高 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">身高</view>
|
|
<view class="ui-pref__range">
|
|
<input
|
|
class="ui-pref__num"
|
|
type="number"
|
|
value="{{preference.heightMin}}"
|
|
placeholder="不限"
|
|
data-bound="min"
|
|
bindinput="onHeightChange"
|
|
/>
|
|
<text class="ui-pref__dash">~</text>
|
|
<input
|
|
class="ui-pref__num"
|
|
type="number"
|
|
value="{{preference.heightMax}}"
|
|
placeholder="不限"
|
|
data-bound="max"
|
|
bindinput="onHeightChange"
|
|
/>
|
|
</view>
|
|
<view
|
|
class="ui-pref__importance ui-pref__importance--{{preference.heightImportance}}"
|
|
data-field="heightImportance"
|
|
bindtap="onToggleImportance"
|
|
>{{importanceLabelMap[preference.heightImportance]}}</view>
|
|
</view>
|
|
|
|
<!-- 地区 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">地区</view>
|
|
<view class="ui-pref__tags">
|
|
<ui-tag
|
|
wx:for="{{preference.region}}"
|
|
wx:key="*this"
|
|
label="{{item}}"
|
|
variant="primary"
|
|
/>
|
|
</view>
|
|
<view
|
|
class="ui-pref__importance ui-pref__importance--{{preference.regionImportance}}"
|
|
data-field="regionImportance"
|
|
bindtap="onToggleImportance"
|
|
>{{importanceLabelMap[preference.regionImportance]}}</view>
|
|
</view>
|
|
|
|
<!-- 婚姻状况 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">婚姻状况</view>
|
|
<view class="ui-pref__tags">
|
|
<ui-tag
|
|
wx:for="{{preference.maritalStatusAccepted}}"
|
|
wx:key="*this"
|
|
label="{{item}}"
|
|
variant="primary"
|
|
/>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 学历 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">学历</view>
|
|
<view class="ui-pref__tags">
|
|
<ui-tag
|
|
wx:for="{{preference.educationAccepted}}"
|
|
wx:key="*this"
|
|
label="{{item}}"
|
|
variant="primary"
|
|
/>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- 是否接受有孩 -->
|
|
<view class="ui-pref__row">
|
|
<view class="ui-pref__label">子女</view>
|
|
<picker
|
|
class="ui-pref__picker"
|
|
value="{{childrenIndex < 0 ? 0 : childrenIndex}}"
|
|
range="{{childrenOptions}}"
|
|
range-key="label"
|
|
bindchange="onAcceptChildrenChange"
|
|
>
|
|
<view class="ui-pref__picker-value">
|
|
{{childrenLabelMap[preference.acceptChildren] || '不限'}}
|
|
</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|