feat(userManagement): 用户列表按本人/员工/家庭用户分组展示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
97dffd9893
commit
48ac39f0e0
@@ -13,13 +13,12 @@
|
||||
|
||||
.device-card {
|
||||
width: 100%;
|
||||
padding: 32rpx;
|
||||
padding: 30rpx;
|
||||
display: flex;
|
||||
border-radius: 24rpx;
|
||||
background-color: #FFFFFF;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 24rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.device-icon {
|
||||
width: 88rpx;
|
||||
@@ -28,7 +27,6 @@
|
||||
margin-right: 24rpx;
|
||||
border-radius: 24rpx;
|
||||
background-color: #1385FA;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.device-info {
|
||||
@@ -36,6 +34,7 @@
|
||||
|
||||
.device-name-row {
|
||||
width: 100%;
|
||||
height: 40rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
@@ -45,13 +44,17 @@
|
||||
color: #252535;
|
||||
height: 32rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 32rpx;
|
||||
}
|
||||
|
||||
.device-status {
|
||||
height: 22rpx;
|
||||
height: 40rpx;
|
||||
display: flex;
|
||||
padding: 0 16rpx;
|
||||
border-radius: 20rpx;
|
||||
align-items: center;
|
||||
background-color: #EAFAF6;
|
||||
|
||||
.status-dot {
|
||||
width: 12rpx;
|
||||
@@ -75,13 +78,13 @@
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.section-header {
|
||||
width: 100%;
|
||||
height: 48rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
@@ -91,17 +94,18 @@
|
||||
color: #252535;
|
||||
height: 32rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 32rpx;
|
||||
}
|
||||
|
||||
.sync-btn {
|
||||
height: 48rpx;
|
||||
padding: 0 20rpx;
|
||||
border-radius: 24rpx;
|
||||
background-color: #1385FA;
|
||||
color: #FFFFFF;
|
||||
height: 48rpx;
|
||||
font-size: 24rpx;
|
||||
line-height: 48rpx;
|
||||
padding: 0 20rpx;
|
||||
border-radius: 8rpx;
|
||||
background-color: #1385FA;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,124 +146,166 @@
|
||||
|
||||
.scrollViewContent {
|
||||
width: 100%;
|
||||
padding: 0 30rpx;
|
||||
padding: 0 30rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
|
||||
|
||||
.group-title {
|
||||
color: #252535;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
.member-card {
|
||||
width: 100%;
|
||||
padding: 32rpx;
|
||||
padding: 30rpx;
|
||||
border-radius: 24rpx;
|
||||
background-color: #FFFFFF;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 24rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.member-avatar {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
border-radius: 24rpx;
|
||||
margin-right: 24rpx;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.member-avatar--male {
|
||||
background-color: #C6E6FF;
|
||||
}
|
||||
|
||||
.member-avatar--female {
|
||||
background-color: #FFD5E3;
|
||||
}
|
||||
|
||||
.member-info {
|
||||
flex: 1;
|
||||
|
||||
.member-name-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 16rpx;
|
||||
|
||||
.member-name {
|
||||
color: #252535;
|
||||
height: 32rpx;
|
||||
font-size: 32rpx;
|
||||
line-height: 32rpx;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
|
||||
.member-type-tag {
|
||||
height: 40rpx;
|
||||
padding: 0 10rpx;
|
||||
font-size: 24rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: 8rpx;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.member-type-tag--self {
|
||||
background-color: #1385FA;
|
||||
}
|
||||
|
||||
.member-type-tag--employee {
|
||||
background-color: #10B981;
|
||||
}
|
||||
|
||||
.member-type-tag--family {
|
||||
background-color: #F59E0B;
|
||||
}
|
||||
}
|
||||
|
||||
.member-sub {
|
||||
color: #808080;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.member-right {
|
||||
.member-top {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
align-items: center;
|
||||
|
||||
.member-avatar {
|
||||
width: 88rpx;
|
||||
height: 88rpx;
|
||||
overflow: hidden;
|
||||
border-radius: 24rpx;
|
||||
margin-right: 24rpx;
|
||||
|
||||
&.member-avatar--male {
|
||||
background-color: #C6E6FF;
|
||||
}
|
||||
|
||||
&.member-avatar--female {
|
||||
background-color: #FFD5E3;
|
||||
}
|
||||
}
|
||||
|
||||
.member-info {
|
||||
width: 0;
|
||||
flex: 1;
|
||||
|
||||
.member-name-row {
|
||||
width: 100%;
|
||||
height: 36rpx;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
margin-bottom: 14rpx;
|
||||
|
||||
.member-name {
|
||||
color: #252535;
|
||||
height: 36rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 36rpx;
|
||||
margin-right: 16rpx;
|
||||
|
||||
text {
|
||||
color: #808080;
|
||||
font-weight: normal;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.member-type-tag {
|
||||
color: #FFFFFF;
|
||||
height: 36rpx;
|
||||
padding: 0 10rpx;
|
||||
font-size: 24rpx;
|
||||
line-height: 36rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
|
||||
.member-type-tag--self {
|
||||
background-color: #1385FA;
|
||||
}
|
||||
}
|
||||
|
||||
> .member-name {
|
||||
color: #252535;
|
||||
height: 40rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bolder;
|
||||
line-height: 40rpx;
|
||||
margin-bottom: 10rpx;
|
||||
}
|
||||
|
||||
.member-sub {
|
||||
color: #808080;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.member-sync {
|
||||
height: 22rpx;
|
||||
font-size: 22rpx;
|
||||
line-height: 22rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.member-sync--done {
|
||||
color: #2AC79F;
|
||||
}
|
||||
|
||||
.member-sync--pending {
|
||||
color: #F2994A;
|
||||
}
|
||||
|
||||
.member-sync--deleted {
|
||||
color: #F24439;
|
||||
}
|
||||
|
||||
.member-ops {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.op-edit {
|
||||
color: #77849E;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
margin-right: 24rpx;
|
||||
> view:nth-of-type(1) {
|
||||
width: 12rpx;
|
||||
height: 12rpx;
|
||||
border-radius: 50%;
|
||||
margin-right: 8rpx;
|
||||
}
|
||||
|
||||
.op-delete {
|
||||
color: #F24439;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
> view:nth-of-type(2) {
|
||||
height: 22rpx;
|
||||
font-size: 22rpx;
|
||||
line-height: 22rpx;
|
||||
}
|
||||
|
||||
&.member-sync--done {
|
||||
color: #2AC79F;
|
||||
|
||||
> view:nth-of-type(1) {
|
||||
background-color: #2AC79F;
|
||||
}
|
||||
}
|
||||
|
||||
&.member-sync--pending {
|
||||
color: #F2994A;
|
||||
|
||||
> view:nth-of-type(1) {
|
||||
background-color: #F2994A;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.member-divider {
|
||||
width: 100%;
|
||||
height: 2rpx;
|
||||
background-color: #EAECF1;
|
||||
margin: 24rpx 0;
|
||||
}
|
||||
|
||||
.member-ops {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
|
||||
.op-edit {
|
||||
color: #77849E;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
margin-right: 60rpx;
|
||||
}
|
||||
|
||||
.op-delete {
|
||||
color: #F24439;
|
||||
height: 26rpx;
|
||||
font-size: 26rpx;
|
||||
line-height: 26rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,31 @@ Page({
|
||||
model: 'BS-A100',
|
||||
serial: 'BL2024B00321'
|
||||
},
|
||||
memberCount: 4,
|
||||
members: [
|
||||
{ id: 1, name: '张晓敏', gender: '男', age: 36, height: 172, type: '本人', typeClass: 'self', sync: '已同步', syncClass: 'done' },
|
||||
{ id: 2, name: '李建国', gender: '男', age: 36, height: 182, type: '员工', typeClass: 'employee', sync: '已同步', syncClass: 'done' },
|
||||
{ id: 3, name: '吉夏', gender: '女', age: 28, height: 165, type: '家庭用户', typeClass: 'family', sync: '未同步', syncClass: 'pending' },
|
||||
{ id: 4, name: '张雪(他人添加)', gender: '女', age: 32, height: 158, type: '家庭用户', typeClass: 'family', sync: '已同步', syncClass: 'done' },
|
||||
{ id: 5, name: '赵明亮', gender: '男', age: 32, height: 172, type: '员工', typeClass: 'employee', sync: '已删除未同步', syncClass: 'deleted' }
|
||||
memberCount: 5,
|
||||
hasData: true,
|
||||
self: {
|
||||
name: '张晓敏',
|
||||
gender: '男',
|
||||
age: 36,
|
||||
height: 172,
|
||||
sync: '已同步',
|
||||
syncClass: 'done'
|
||||
},
|
||||
groups: [
|
||||
{
|
||||
title: '员工',
|
||||
members: [
|
||||
{ id: 2, name: '李建国', gender: '男', age: 36, height: 182, sync: '已同步', syncClass: 'done' },
|
||||
{ id: 5, name: '赵明亮', gender: '男', age: 32, height: 172, sync: '已同步', syncClass: 'done' }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '家庭用户',
|
||||
members: [
|
||||
{ id: 3, name: '吉夏', gender: '女', age: 28, height: 165, sync: '已同步', syncClass: 'done' },
|
||||
{ id: 4, name: '张雪', gender: '女', age: 32, height: 158, sync: '未同步', syncClass: 'pending' }
|
||||
]
|
||||
}
|
||||
],
|
||||
syncShow: false,
|
||||
syncPercent: 0,
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<view class="status-text">{{ device.connected ? '已连接' : '未连接' }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="device-meta">型号:{{ device.model }}</view>
|
||||
<view class="device-meta" style="margin-bottom: 20rpx">型号:{{ device.model }}</view>
|
||||
<view class="device-meta">设备编号:{{ device.serial }}</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -29,26 +29,55 @@
|
||||
|
||||
<!-- 用户列表滚动区 -->
|
||||
<view class="body">
|
||||
<scroll-view scroll-y class="scrollView" wx:if="{{ members.length }}">
|
||||
<scroll-view scroll-y class="scrollView" wx:if="{{ hasData }}">
|
||||
<view class="scrollViewContent">
|
||||
<block wx:for="{{ members }}" wx:key="id">
|
||||
<view class="member-card">
|
||||
<view class="member-avatar {{ item.gender === '女' ? 'member-avatar--female' : 'member-avatar--male' }}"></view>
|
||||
<!-- 本人 -->
|
||||
<view class="member-card">
|
||||
<view class="member-top">
|
||||
<view class="member-avatar member-avatar--male"></view>
|
||||
<view class="member-info">
|
||||
<view class="member-name-row">
|
||||
<view class="member-name">{{ item.name }}</view>
|
||||
<view class="member-type-tag member-type-tag--{{ item.typeClass }}">{{ item.type }}</view>
|
||||
<view class="member-name">{{ self.name }}</view>
|
||||
<view class="member-type-tag member-type-tag--self">本人</view>
|
||||
</view>
|
||||
<view class="member-sub">{{ item.gender }}·{{ item.age }}岁 丨 {{ item.height }}cm</view>
|
||||
<view class="member-sub">{{ self.gender }}·{{ self.age }}岁 丨 {{ self.height }}cm</view>
|
||||
</view>
|
||||
<view class="member-right">
|
||||
<view class="member-sync member-sync--{{ item.syncClass }}">{{ item.sync }}</view>
|
||||
<view class="member-sync member-sync--{{ self.syncClass }}">
|
||||
<view></view>
|
||||
<view>{{ self.sync }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="member-divider"></view>
|
||||
<view class="member-ops">
|
||||
<view class="op-delete">删除</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 分组 -->
|
||||
<block wx:for="{{ groups }}" wx:key="title" wx:for-item="group">
|
||||
<view class="group-title">{{ group.title }}</view>
|
||||
<block wx:for="{{ group.members }}" wx:key="id" wx:for-item="member">
|
||||
<view class="member-card">
|
||||
<view class="member-top">
|
||||
<view class="member-avatar {{ member.gender === '女' ? 'member-avatar--female' : 'member-avatar--male' }}"></view>
|
||||
<view class="member-info">
|
||||
<view class="member-name-row">
|
||||
<view class="member-name">{{ member.name }} <text>(他人添加)</text></view>
|
||||
</view>
|
||||
<view class="member-sub">{{ member.gender }}·{{ member.age }}岁 丨 {{ member.height }}cm</view>
|
||||
</view>
|
||||
<view class="member-sync member-sync--{{ member.syncClass }}">
|
||||
<view></view>
|
||||
<view>{{ member.sync }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="member-divider"></view>
|
||||
<view class="member-ops">
|
||||
<view class="op-edit">编辑</view>
|
||||
<view class="op-delete">删除</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</block>
|
||||
</block>
|
||||
</view>
|
||||
</scroll-view>
|
||||
|
||||
Reference in New Issue
Block a user