diff --git a/miniprogram/pages/addMember/addMember.less b/miniprogram/pages/addMember/addMember.less
index e6f235a..a311686 100644
--- a/miniprogram/pages/addMember/addMember.less
+++ b/miniprogram/pages/addMember/addMember.less
@@ -46,16 +46,127 @@
width: 100%;
padding: 0 30rpx;
box-sizing: border-box;
- }
- /* 表单卡片 */
- .form-card {
- width: 100%;
- padding: 40rpx 30rpx;
- border-radius: 16rpx;
- box-sizing: border-box;
- margin-bottom: 40rpx;
- background-color: #FFFFFF;
+ /* 顶部 tabs - 圆角卡片样式 */
+ .tabsDom {
+ width: 100%;
+ box-sizing: border-box;
+ padding: 30rpx 30rpx 40rpx;
+ border-radius: 16rpx 16rpx 0 0;
+ background-color: #ffffff;
+
+ .tabs {
+ width: 100%;
+ height: 80rpx;
+ padding: 4rpx;
+ display: flex;
+ flex-wrap: nowrap;
+ box-sizing: border-box;
+ border-radius: 16rpx;
+ background-color: #F3F5F8;
+
+ .tab-item {
+ color: #808080;
+ flex: 1;
+ height: 72rpx;
+ font-size: 32rpx;
+ text-align: center;
+ line-height: 72rpx;
+ box-sizing: border-box;
+ border-radius: 16rpx;
+
+ &.active {
+ color: #1385FA;
+ font-weight: bold;
+ background-color: #FFFFFF;
+ }
+ }
+ }
+ }
+
+ .selectWorkNo {
+ width: 100%;
+ margin-bottom: 30rpx;
+ box-sizing: border-box;
+ padding: 0 30rpx 40rpx;
+ border-radius: 0 0 16rpx 16rpx;
+ background-color: #ffffff;
+
+ .selectWorkNoBtn {
+ color: #FFFFFF;
+ width: 580rpx;
+ height: 88rpx;
+ font-size: 32rpx;
+ font-weight: bold;
+ line-height: 88rpx;
+ border-radius: 44rpx;
+ text-align: center;
+ margin: 0 auto;
+ background-color: #1385FA;
+ }
+ }
+
+ .workNoDesc {
+ color: #B6B6B6;
+ width: 100%;
+ height: 24rpx;
+ font-size: 24rpx;
+ text-align: center;
+ line-height: 24rpx;
+ }
+
+ .workNoNull {
+ color: #F24439;
+ margin: 56rpx auto 0;
+ width: 640rpx;
+ height: 88rpx;
+ font-size: 28rpx;
+ line-height: 88rpx;
+ border-radius: 16rpx;
+ text-align: center;
+ background: rgba(242,68,57,0.12);
+ }
+
+ .workNoInfo {
+ width: 100%;
+ padding-bottom: 100rpx;
+
+ .workNoInfo_ {
+ width: 100%;
+ margin-bottom: 20rpx;
+
+ .workNoInfoTitle {
+ color: #808080;
+ width: 100%;
+ height: 64rpx;
+ font-size: 24rpx;
+ line-height: 64rpx;
+ }
+
+ .workNoInfoContent {
+ width: 100%;
+ border-radius: 16rpx;
+ box-sizing: border-box;
+ padding: 40rpx 30rpx 30rpx;
+ background-color: #FFFFFF;
+
+ > view {
+ width: 100%;
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: space-between;
+
+ .form-row {
+ width: 300rpx;
+ }
+ }
+ }
+ }
+ }
+
+ .familyInfo {
+
+ }
.form-row {
width: 100%;
@@ -113,10 +224,28 @@
font-size: 26rpx;
}
- /* 输入框 + 后缀容器(身高 cm) */
+ /* 日期选择器 */
+ .form-picker {
+ width: 100%;
+ height: 88rpx;
+ padding: 0 30rpx;
+ color: #252535;
+ font-size: 26rpx;
+ line-height: 88rpx;
+ border-radius: 16rpx;
+ box-sizing: border-box;
+ background-color: #FFFFFF;
+ border: 2rpx solid #E6E6EA;
+ }
+
+ .form-picker-placeholder {
+ color: #B6B6B6;
+ }
+
+ /* 输入框 + 后缀容器(身高 cm / 体重 kg) */
.form-input-wrap {
position: relative;
- width: 630rpx;
+ width: 100%;
.form-input-with-suffix {
padding-right: 80rpx;
@@ -133,9 +262,9 @@
}
}
- /* 只读区域(性别 / 年龄) */
+ /* 只读区域(单位 / 性别 / 年龄 / 出生年月) */
.form-readonly {
- width: 630rpx;
+ width: 100%;
height: 88rpx;
box-sizing: border-box;
padding: 0 24rpx;
@@ -143,16 +272,12 @@
border-radius: 16rpx;
display: flex;
align-items: center;
+ border: 2rpx solid #E6E6EA;
.readonly-text {
color: #252535;
font-size: 26rpx;
}
-
- .readonly-placeholder {
- color: #B6B6B6;
- font-size: 26rpx;
- }
}
.form-readonly-with-suffix {
@@ -165,22 +290,48 @@
line-height: 88rpx;
}
}
+
+ /* 性别切换按钮(家庭用户) */
+ .gender-toggle {
+ display: flex;
+ gap: 24rpx;
+
+ .gender-option {
+ width: 300rpx;
+ height: 88rpx;
+ font-size: 28rpx;
+ text-align: center;
+ line-height: 88rpx;
+ border-radius: 16rpx;
+ box-sizing: border-box;
+ color: #77849E;
+ background-color: #FFFFFF;
+ border: 2rpx solid #E6E6EA;
+ }
+
+ .gender-option-active {
+ color: #FFFFFF;
+ font-weight: bold;
+ background-color: #1385FA;
+ border-color: #1385FA;
+ }
+ }
}
/* 从已有用户中选择(蓝色描边幽灵按钮) */
- .ghost-btn {
- color: #1385FA;
- width: 580rpx;
- height: 88rpx;
- font-size: 32rpx;
- font-weight: bold;
- text-align: center;
- line-height: 84rpx;
- border-radius: 44rpx;
- box-sizing: border-box;
- border: 2rpx solid #1385FA;
- margin: 0 auto;
- }
+ // .ghost-btn {
+ // color: #1385FA;
+ // width: 580rpx;
+ // height: 88rpx;
+ // font-size: 32rpx;
+ // font-weight: bold;
+ // text-align: center;
+ // line-height: 84rpx;
+ // border-radius: 44rpx;
+ // box-sizing: border-box;
+ // border: 2rpx solid #1385FA;
+ // margin: 0 auto;
+ // }
}
/* 底部双按钮 */
diff --git a/miniprogram/pages/addMember/addMember.ts b/miniprogram/pages/addMember/addMember.ts
index 4808516..13302b0 100644
--- a/miniprogram/pages/addMember/addMember.ts
+++ b/miniprogram/pages/addMember/addMember.ts
@@ -42,6 +42,8 @@ interface UserInfoFromServer {
/** 表单数据模型 */
interface MemberForm {
+ /** 员工编号 */
+ workNo: string
/** 姓名 */
name: string
/** 身份证号 */
@@ -83,12 +85,15 @@ interface ExistingMember {
*/
Page({
data: {
+ /** tabs 当前选中:employee | family */
+ userType: 'employee' as 'employee' | 'family',
/** 编辑模式标记 */
isEdit: false,
/** 编辑时的用户 ID */
userId: '',
form: {
+ workNo: '',
name: '',
idCard: '',
gender: '',
@@ -122,6 +127,7 @@ Page({
if (!u) return
const parsed = this.parseIdCard(u.idCard ?? '')
this.setData({
+ 'form.workNo': u.workNo ?? '',
'form.name': u.realname ?? '',
'form.idCard': u.idCard ?? '',
'form.gender': parsed.gender,
@@ -135,6 +141,26 @@ Page({
})
},
+ /** tabs 切换 */
+ onTabTap(e: WechatMiniprogram.TouchEvent) {
+ const tab = e.currentTarget.dataset.value as string
+ this.setData({ userType: tab as 'employee' | 'family' })
+ },
+
+ onWorkNoInput(e: WechatMiniprogram.Input) {
+ this.setData({ 'form.workNo': e.detail.value })
+ },
+
+ onQueryEmployee() {
+ const workNo = this.data.form.workNo.trim()
+ if (!workNo) {
+ wx.showToast({ title: '请填写员工编号', icon: 'none' })
+ return
+ }
+ // TODO: 调用员工编号查询接口
+ wx.showToast({ title: '员工编号查询功能待实现', icon: 'none' })
+ },
+
onNameInput(e: WechatMiniprogram.Input) {
const name = e.detail.value
this.setData({
@@ -292,6 +318,7 @@ Page({
this.setData({
showSelectDrawer: false,
selectedMember: member,
+ 'form.workNo': member.workNo || '',
'form.name': member.name,
'form.idCard': member.idCard,
'form.gender': parsed.gender,
@@ -316,6 +343,7 @@ Page({
showConfirmModal: false,
readonly: false,
form: {
+ workNo: '',
name: '',
idCard: '',
gender: '',
@@ -372,6 +400,7 @@ Page({
parentUserId: userInfo?.userId ?? '',
sn: lefuService.deviceInfo?.serialNumber ?? '',
scaleDeviceId: lefuService.deviceInfo?.serialNumber ?? '',
+ workNo: this.data.form.workNo.trim(),
realname: name.trim(),
idCard,
sex: parsed.sex,
diff --git a/miniprogram/pages/addMember/addMember.wxml b/miniprogram/pages/addMember/addMember.wxml
index f397051..751719b 100644
--- a/miniprogram/pages/addMember/addMember.wxml
+++ b/miniprogram/pages/addMember/addMember.wxml
@@ -1,157 +1,134 @@
-
-
- !
- 最多支持 10 位用户
-
+
+
+ !
+ 最多支持 10 位用户
+
-
-
-
-
-
+
+
+
+
+
+ 员工
+ 家庭用户
+
+
+
+
+
+ 员工编号
+ *
+
+
+
+
+
+
+
-
-
-
- 姓名
- *
-
-
-
-
-
+ 确认查询
+
+
+
+
+ 用户信息
+
+
+
+
+ 姓名
+
+
+
+ {{ form.name }}
+
+
+
+
+
+ 单位
+
+
+
+ {{ form.name }}
+
+
+
+
+
+
+
+ 性别
+
+
+
+ {{ form.name }}
+
+
+
+
+
+ 年龄
+
+
+
+ {{ form.name }}
+
+
+
+
+
+
+
+ 补充信息
+
+
+
+
+ 身高
+ *
+
+
+
+
+ cm
+
+
+
+
+
+ 体重
+
+
+
+
+ kg
+
+
+
+
+
+
+
+
+
+
+
-
-
-
- 身份证号
- *
-
-
-
-
-
+
+
+ 取消
+ 保存用户信息
+
-
-
-
- 性别
-
-
-
-
- {{ form.gender }}
-
-
- 自动生成,无需填写
-
-
-
-
+
+
+
-
-
-
- 年龄
-
-
-
-
- {{ form.age }}
-
-
- 自动生成,无需填写
-
- 岁
-
-
-
-
-
-
-
- 身高
- *
-
-
-
-
- cm
-
-
-
-
-
-
-
- 体重
- *
-
-
-
-
- kg
-
-
-
-
-
-
-
- 从已有用户中选择
-
-
-
-
-
-
-
- 取消
- 保存用户信息
-
-
-
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/miniprogram/pages/editMember/editMember.less b/miniprogram/pages/editMember/editMember.less
index 4068476..86c84f5 100644
--- a/miniprogram/pages/editMember/editMember.less
+++ b/miniprogram/pages/editMember/editMember.less
@@ -134,7 +134,7 @@
/* 输入框 + 后缀容器(身高 cm / 体重 kg) */
.form-input-wrap {
position: relative;
- width: 630rpx;
+ width: 100%;
.form-input-with-suffix {
padding-right: 80rpx;
@@ -153,7 +153,7 @@
/* 只读区域(单位 / 性别 / 年龄 / 出生年月) */
.form-readonly {
- width: 630rpx;
+ width: 100%;
height: 88rpx;
box-sizing: border-box;
padding: 0 24rpx;