feat(addMember): 选择已有成员补服务端校验;表单加scroll-view;上限10人限制
- onSelectMember 选中后调用 fetchUserInfoByIdCard 走服务端校验 - 表单区域包裹 scroll-view,适配小屏滚动 - equipmentMember 添加按钮超10人弹 toast 提示 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
dc5010350c
commit
77e768f6c7
@@ -41,8 +41,12 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 0 30rpx;
|
|
||||||
box-sizing: border-box;
|
.scrollViewContent {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0 30rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
/* 表单卡片 */
|
/* 表单卡片 */
|
||||||
.form-card {
|
.form-card {
|
||||||
|
|||||||
@@ -299,6 +299,9 @@ Page({
|
|||||||
'form.height': String(member.height),
|
'form.height': String(member.height),
|
||||||
'form.weight': String(member.weight),
|
'form.weight': String(member.weight),
|
||||||
})
|
})
|
||||||
|
if (member.name.trim() && this.isIdCardValid(member.idCard)) {
|
||||||
|
this.fetchUserInfoByIdCard(member.name.trim(), member.idCard)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/** 确认弹框 - 确认 */
|
/** 确认弹框 - 确认 */
|
||||||
|
|||||||
@@ -1,153 +1,157 @@
|
|||||||
<view class="add-member">
|
<view class="add-member">
|
||||||
|
|
||||||
<!-- 顶部浅蓝提示条 -->
|
<!-- 顶部浅蓝提示条 -->
|
||||||
<view class="tips">
|
<view class="tips">
|
||||||
<view class="tips-icon">!</view>
|
<view class="tips-icon">!</view>
|
||||||
<text class="tips-text">最多支持 10 位成员</text>
|
<text class="tips-text">最多支持 10 位成员</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="form">
|
<view class="form">
|
||||||
<!-- 白色圆角表单卡片 -->
|
<scroll-view class="scrollView">
|
||||||
<view class="form-card">
|
<view class="scrollViewContent">
|
||||||
|
<!-- 白色圆角表单卡片 -->
|
||||||
|
<view class="form-card">
|
||||||
|
|
||||||
<!-- 姓名 -->
|
<!-- 姓名 -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">姓名</text>
|
<text class="label-text">姓名</text>
|
||||||
<text class="label-star">*</text>
|
<text class="label-star">*</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<input class="form-input"
|
<input class="form-input"
|
||||||
type="text"
|
type="text"
|
||||||
maxlength="20"
|
maxlength="20"
|
||||||
placeholder="请填写真实姓名"
|
placeholder="请填写真实姓名"
|
||||||
placeholder-class="form-placeholder"
|
placeholder-class="form-placeholder"
|
||||||
value="{{ form.name }}"
|
value="{{ form.name }}"
|
||||||
disabled="{{ readonly }}"
|
disabled="{{ readonly }}"
|
||||||
bind:input="onNameInput" />
|
bind:input="onNameInput"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 身份证号 -->
|
<!-- 身份证号 -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">身份证号</text>
|
<text class="label-text">身份证号</text>
|
||||||
<text class="label-star">*</text>
|
<text class="label-star">*</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<input class="form-input"
|
<input class="form-input"
|
||||||
type="idcard"
|
type="idcard"
|
||||||
maxlength="18"
|
maxlength="18"
|
||||||
placeholder="请填写身份证号"
|
placeholder="请填写身份证号"
|
||||||
placeholder-class="form-placeholder"
|
placeholder-class="form-placeholder"
|
||||||
value="{{ form.idCard }}"
|
value="{{ form.idCard }}"
|
||||||
disabled="{{ readonly }}"
|
disabled="{{ readonly }}"
|
||||||
bind:input="onIdCardInput" />
|
bind:input="onIdCardInput"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 性别(由身份证自动生成) -->
|
<!-- 性别(由身份证自动生成) -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">性别</text>
|
<text class="label-text">性别</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<view class="form-readonly">
|
<view class="form-readonly">
|
||||||
<block wx:if="{{ form.gender }}">
|
<block wx:if="{{ form.gender }}">
|
||||||
<text class="readonly-text">{{ form.gender }}</text>
|
<text class="readonly-text">{{ form.gender }}</text>
|
||||||
</block>
|
</block>
|
||||||
<block wx:else>
|
<block wx:else>
|
||||||
<text class="readonly-placeholder">自动生成,无需填写</text>
|
<text class="readonly-placeholder">自动生成,无需填写</text>
|
||||||
</block>
|
</block>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 年龄(由身份证自动生成) -->
|
<!-- 年龄(由身份证自动生成) -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">年龄</text>
|
<text class="label-text">年龄</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<view class="form-readonly form-readonly-with-suffix">
|
<view class="form-readonly form-readonly-with-suffix">
|
||||||
<block wx:if="{{ form.age }}">
|
<block wx:if="{{ form.age }}">
|
||||||
<text class="readonly-text">{{ form.age }}</text>
|
<text class="readonly-text">{{ form.age }}</text>
|
||||||
</block>
|
</block>
|
||||||
<block wx:else>
|
<block wx:else>
|
||||||
<text class="readonly-placeholder">自动生成,无需填写</text>
|
<text class="readonly-placeholder">自动生成,无需填写</text>
|
||||||
</block>
|
</block>
|
||||||
<text class="form-suffix">岁</text>
|
<text class="form-suffix">岁</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 身高 -->
|
<!-- 身高 -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">身高</text>
|
<text class="label-text">身高</text>
|
||||||
<text class="label-star">*</text>
|
<text class="label-star">*</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<view class="form-input-wrap">
|
<view class="form-input-wrap">
|
||||||
<input class="form-input form-input-with-suffix"
|
<input class="form-input form-input-with-suffix"
|
||||||
type="digit"
|
type="digit"
|
||||||
maxlength="5"
|
maxlength="5"
|
||||||
placeholder="请填写身高"
|
placeholder="请填写身高"
|
||||||
placeholder-class="form-placeholder"
|
placeholder-class="form-placeholder"
|
||||||
value="{{ form.height }}"
|
value="{{ form.height }}"
|
||||||
disabled="{{ readonly }}"
|
disabled="{{ readonly }}"
|
||||||
bind:input="onHeightInput" />
|
bind:input="onHeightInput"/>
|
||||||
<text class="form-suffix form-suffix-inside">cm</text>
|
<text class="form-suffix form-suffix-inside">cm</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 体重 -->
|
<!-- 体重 -->
|
||||||
<view class="form-row">
|
<view class="form-row">
|
||||||
<view class="form-label">
|
<view class="form-label">
|
||||||
<text class="label-text">体重</text>
|
<text class="label-text">体重</text>
|
||||||
<text class="label-star">*</text>
|
<text class="label-star">*</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="form-control">
|
<view class="form-control">
|
||||||
<view class="form-input-wrap">
|
<view class="form-input-wrap">
|
||||||
<input class="form-input form-input-with-suffix"
|
<input class="form-input form-input-with-suffix"
|
||||||
type="digit"
|
type="digit"
|
||||||
maxlength="6"
|
maxlength="6"
|
||||||
placeholder="请填写体重"
|
placeholder="请填写体重"
|
||||||
placeholder-class="form-placeholder"
|
placeholder-class="form-placeholder"
|
||||||
value="{{ form.weight }}"
|
value="{{ form.weight }}"
|
||||||
disabled="{{ readonly }}"
|
disabled="{{ readonly }}"
|
||||||
bind:input="onWeightInput" />
|
bind:input="onWeightInput"/>
|
||||||
<text class="form-suffix form-suffix-inside">kg</text>
|
<text class="form-suffix form-suffix-inside">kg</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 从已有成员中选择(编辑模式隐藏) -->
|
<!-- 从已有成员中选择(编辑模式隐藏) -->
|
||||||
<block wx:if="{{ !isEdit }}">
|
<block wx:if="{{ !isEdit }}">
|
||||||
<view class="ghost-btn" bind:tap="onTapSelectExisting">从已有成员中选择</view>
|
<view class="ghost-btn" bind:tap="onTapSelectExisting">从已有成员中选择</view>
|
||||||
</block>
|
</block>
|
||||||
</view>
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<!-- 底部双按钮:取消 / 保存成员信息 -->
|
<!-- 底部双按钮:取消 / 保存成员信息 -->
|
||||||
<view class="actions">
|
<view class="actions">
|
||||||
<view class="btn-cancel" bind:tap="onCancel">取消</view>
|
<view class="btn-cancel" bind:tap="onCancel">取消</view>
|
||||||
<view class="btn-primary" bind:tap="onSubmit">保存成员信息</view>
|
<view class="btn-primary" bind:tap="onSubmit">保存成员信息</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 选择已有成员抽屉 -->
|
<!-- 选择已有成员抽屉 -->
|
||||||
<select-member-drawer
|
<select-member-drawer
|
||||||
show="{{ showSelectDrawer }}"
|
show="{{ showSelectDrawer }}"
|
||||||
bind:close="onSelectMemberClose"
|
bind:close="onSelectMemberClose"
|
||||||
bind:select="onSelectMember">
|
bind:select="onSelectMember">
|
||||||
</select-member-drawer>
|
</select-member-drawer>
|
||||||
|
|
||||||
<!-- 确认弹框 -->
|
<!-- 确认弹框 -->
|
||||||
<user-info-confirm-modal
|
<user-info-confirm-modal
|
||||||
show="{{ showConfirmModal }}"
|
show="{{ showConfirmModal }}"
|
||||||
userInfo="{{ serverResult }}"
|
userInfo="{{ serverResult }}"
|
||||||
bind:confirm="onConfirmModalConfirm"
|
bind:confirm="onConfirmModalConfirm"
|
||||||
bind:cancel="onConfirmModalCancel">
|
bind:cancel="onConfirmModalCancel">
|
||||||
</user-info-confirm-modal>
|
</user-info-confirm-modal>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -292,6 +292,10 @@ Page({
|
|||||||
/** 添加成员:未连接态禁用 */
|
/** 添加成员:未连接态禁用 */
|
||||||
onTapAddMember() {
|
onTapAddMember() {
|
||||||
if (!this.data.connected) return
|
if (!this.data.connected) return
|
||||||
|
if (this.data.memberList.length >= 10) {
|
||||||
|
wx.showToast({ title: '超过最大用户限制', icon: 'none' })
|
||||||
|
return
|
||||||
|
}
|
||||||
wx.navigateTo({ url: '/pages/addMember/addMember' })
|
wx.navigateTo({ url: '/pages/addMember/addMember' })
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user