feat(selectMemberDrawer): 用户列表新增本人/员工/家庭用户标签展示

- ExistingMember 补充 dataType/relationType 字段
- API 映射层透传 dataType 与 relationType
- member-type 区域按类型展示对应颜色标签

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
17792275749
2026-06-10 17:16:22 +08:00
co-authored by Claude Opus 4.7
parent 0fab5259c9
commit 44659a6ae4
3 changed files with 274 additions and 244 deletions
@@ -64,6 +64,7 @@
}
/* 关闭按钮 */
.drawer-close {
width: 32rpx;
height: 32rpx;
@@ -127,6 +128,7 @@
margin-top: 24rpx;
/* 有图片头像 */
.member-avatar {
width: 90rpx;
height: 90rpx;
@@ -139,6 +141,7 @@
}
/* 纯色占位头像 */
.member-avatar-placeholder {
width: 90rpx;
height: 90rpx;
@@ -146,16 +149,19 @@
flex-shrink: 0;
/* 男:蓝色 */
&--male {
background-color: #C6E6FF;
}
/* 女:粉色 */
&--female {
background-color: #FFD5E3;
}
/* 选中男 */
&--selected-male {
border: 3rpx solid #50A6FF;
width: 96rpx;
@@ -164,6 +170,7 @@
}
/* 选中女 */
&--selected-female {
border: 3rpx solid #FF8FB5;
width: 96rpx;
@@ -173,6 +180,7 @@
}
/* 姓名 + 副标题 */
.member-info {
flex: 1;
height: 78rpx;
@@ -197,25 +205,32 @@
}
}
/* 竖向分隔线 */
.member-divider {
width: 2rpx;
height: 24rpx;
background-color: #EAEDF1;
border-radius: 1rpx;
margin-left: 17rpx;
.member-type {
height: 40rpx;
flex-shrink: 0;
.member-type-tag {
height: 40rpx;
padding: 0 14rpx;
font-size: 22rpx;
line-height: 40rpx;
border-radius: 6rpx;
}
/* 身高 */
.member-height {
color: #77849E;
font-size: 26rpx;
line-height: 34rpx;
white-space: nowrap;
margin-left: 19rpx;
width: 76rpx;
flex-shrink: 0;
.member-type-tag--self {
color: #1385FA;
background-color: rgba(19, 133, 250, 0.12);
}
.member-type-tag--employee {
color: #10B981;
background-color: rgba(16, 185, 129, 0.12);
}
.member-type-tag--family {
color: #F59E0B;
background-color: rgba(245, 158, 11, 0.12);
}
}
}
@@ -11,6 +11,8 @@ interface AddMemberApiItem {
weight: number
idCard: string | null
avatar: string | null
dataType?: number
relationType?: number | string | null
}
/** GET /weighingScale/v3/select/history/user 返回的单条结构 */
@@ -23,6 +25,7 @@ interface HistoryApiItem {
birthday: string
avatar: string | null
relationType: number | string | null
dataType?: number
}
/** 抽屉内部用户项(含回填所需全量字段) */
@@ -41,6 +44,8 @@ interface ExistingMember {
sex?: number
birthday?: string
relationType?: number | string | null
/** 0=员工 1=家庭成员 */
dataType?: number
}
/**
@@ -136,6 +141,7 @@ Component({
sex: item.sex,
birthday: item.birthday,
relationType: item.relationType,
dataType: item.dataType,
}))
this.setData({ members })
})
@@ -155,6 +161,8 @@ Component({
weight: item.weight,
idCard: item.idCard ?? '',
avatar: item.avatar ?? '',
relationType: item.relationType,
dataType: item.dataType,
}))
this.setData({ members })
})
@@ -27,7 +27,8 @@
<view class="member-item" bind:tap="onTapMember" data-member="{{ item }}">
<!-- 头像 -->
<block wx:if="{{ item.avatar }}">
<image class="member-avatar {{ item.selected ? 'member-avatar--selected' : '' }}" src="{{ item.avatar }}" mode="aspectFill"></image>
<image class="member-avatar {{ item.selected ? 'member-avatar--selected' : '' }}"
src="{{ item.avatar }}" mode="aspectFill"></image>
</block>
<block wx:else>
<view class="member-avatar-placeholder {{ item.gender === '女' ? 'member-avatar-placeholder--female' : 'member-avatar-placeholder--male' }} {{ item.selected ? 'member-avatar-placeholder--selected-male' : '' }} {{ item.selected && item.gender === '女' ? 'member-avatar-placeholder--selected-female' : '' }}"></view>
@@ -36,14 +37,20 @@
<!-- 姓名 + 性别·年龄 -->
<view class="member-info">
<text class="member-name">{{ item.name }}</text>
<text class="member-sub">{{ item.gender }}·{{ item.age }}岁</text>
<text class="member-sub">{{ item.gender }}·{{ item.age }}岁 丨 {{ item.height }}cm</text>
</view>
<!-- 竖向分隔线 -->
<view class="member-divider"></view>
<!-- 身高 -->
<text class="member-height">{{ item.height }}cm</text>
<view class="member-type">
<block wx:if="{{ item.relationType == 1 }}">
<view class="member-type-tag member-type-tag--self">本人</view>
</block>
<block wx:elif="{{ item.dataType === 0 }}">
<view class="member-type-tag member-type-tag--employee">员工</view>
</block>
<block wx:elif="{{ item.dataType === 1 }}">
<view class="member-type-tag member-type-tag--family">家庭用户</view>
</block>
</view>
</view>
<!-- 水平分隔线 -->