From 5c013ce5c1ae5a1c781aa32afe24577b57a2dcd4 Mon Sep 17 00:00:00 2001 From: liyi Date: Tue, 14 Oct 2025 15:46:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/response/depart_list_reponse.dart | 66 +------------ .../team/response/person_list_response.dart | 23 ++++- .../team/response/role_list_response.dart | 1 + .../add_organization_controller.dart | 1 + .../add_organization_view.dart | 1 + .../selectRole/select_role_controller.dart | 1 + .../editPerson/edit_person_controller.dart | 1 + .../team/editPerson/edit_person_view.dart | 98 ++++++++++--------- .../team/enterFace/enter_face_controller.dart | 3 + lib/views/team/enterFace/enter_face_view.dart | 8 +- .../personnel_manage_controller.dart | 1 + .../personnel_manage_view.dart | 1 + .../team/roleManage/role_manage_view.dart | 2 +- .../select_organization_view.dart | 2 +- .../select_person_controller.dart | 1 + .../team/selectPerson/select_person_view.dart | 1 + 16 files changed, 97 insertions(+), 114 deletions(-) diff --git a/lib/api/model/team/response/depart_list_reponse.dart b/lib/api/model/team/response/depart_list_reponse.dart index 4a5112d..87396b4 100644 --- a/lib/api/model/team/response/depart_list_reponse.dart +++ b/lib/api/model/team/response/depart_list_reponse.dart @@ -1,3 +1,4 @@ +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/model/team/response/role_list_response.dart'; class DepartListResponse { @@ -31,8 +32,8 @@ class DepartListResponse { class DepartItem { final int? id; final String? teamNo; - String? departNo; - String? departName; + String? departNo; + String? departName; final int? parentId; final PersonItem? leader; final int? level; @@ -107,64 +108,3 @@ class DepartItem { return 'DepartItem{id: $id, teamNo: $teamNo, departNo: $departNo, departName: $departName, parentId: $parentId, leader: $leader, level: $level, sort: $sort, hasLeaf: $hasLeaf, personNum: $personNum, persons: $persons}'; } } - -// 新增 PersonItem 类 -class PersonItem { - final int? id; - final String? personName; - final int? userId; - final int? jobNumber; - final int? sex; - final String? personNo; - final String? phone; - final List? roles; - - PersonItem({ - this.id, - this.personName, - this.userId, - this.jobNumber, - this.sex, - this.personNo, - this.phone, - this.roles, - }); - - factory PersonItem.fromJson(Map json) { - List? rolesList; - if (json['roles'] != null && json['roles'] is List) { - rolesList = (json['roles'] as List) - .map((item) => RoleListResponse.fromJson(item as Map)) - .toList(); - } - - return PersonItem( - id: json['id'] as int?, - personName: json['personName'] as String?, - userId: json['userId'] as int?, - jobNumber: json['jobNumber'] as int?, - sex: json['sex'] as int?, - personNo: json['personNo'] as String?, - phone: json['phone'] as String?, - roles: rolesList, - ); - } - - Map toJson() { - return { - 'id': id, - 'personName': personName, - 'userId': userId, - 'jobNumber': jobNumber, - 'sex': sex, - 'personNo': personNo, - 'phone': phone, - 'roles': roles?.map((item) => item.toJson()).toList(), - }; - } - - @override - String toString() { - return 'PersonItem{id: $id, personName: $personName, userId: $userId, jobNumber: $jobNumber, sex: $sex, personNo: $personNo, phone: $phone, roles: $roles}'; - } -} diff --git a/lib/api/model/team/response/person_list_response.dart b/lib/api/model/team/response/person_list_response.dart index d82606b..e588986 100644 --- a/lib/api/model/team/response/person_list_response.dart +++ b/lib/api/model/team/response/person_list_response.dart @@ -1,3 +1,5 @@ +import 'package:starwork_flutter/api/model/team/response/role_list_response.dart'; + class PersonListResponse { int? pageNo; int? pageSize; @@ -65,8 +67,10 @@ class PersonItem { int? faceCount; int? fingerprintCount; int? cardCount; + int? userId; bool? isSuper; bool? isOperationUser; + List? roles; PersonItem({ this.id, @@ -85,12 +89,15 @@ class PersonItem { this.faceCount, this.fingerprintCount, this.cardCount, + this.userId, this.isSuper, this.isOperationUser, + this.roles, }); PersonItem.fromJson(Map json) { id = json['id'] as int?; + userId = json['userId'] as int?; teamNo = json['teamNo'] as String?; departNo = json['departNo'] as String?; departName = json['departName'] as String?; @@ -108,11 +115,20 @@ class PersonItem { cardCount = json['cardCount'] as int?; isSuper = json['isSuper'] as bool?; isOperationUser = json['isOperationUser'] as bool?; + + + if (json['roles'] != null) { + roles = []; + json['roles'].forEach((v) { + roles!.add(RoleListResponse.fromJson(v as Map)); + }); + } } Map toJson() { final Map data = {}; data['id'] = id; + data['userId'] = userId; data['teamNo'] = teamNo; data['departNo'] = departNo; data['departName'] = departName; @@ -130,11 +146,16 @@ class PersonItem { data['cardCount'] = cardCount; data['isSuper'] = isSuper; data['isOperationUser'] = isOperationUser; + + if (roles != null) { + data['roles'] = roles!.map((v) => v.toJson()).toList(); + } return data; } + @override String toString() { - return 'PersonItem{id: $id, teamNo: $teamNo, departNo: $departNo, departName: $departName, personNo: $personNo, personName: $personName, jobNumber: $jobNumber, phone: $phone, sex: $sex, sexName: $sexName, pathName: $pathName, state: $state, userState: $userState, faceCount: $faceCount, fingerprintCount: $fingerprintCount, cardCount: $cardCount, isSuper: $isSuper, isOperationUser: $isOperationUser}'; + return 'PersonItem{id: $id, teamNo: $teamNo, departNo: $departNo, departName: $departName, personNo: $personNo, personName: $personName, jobNumber: $jobNumber, phone: $phone, sex: $sex, sexName: $sexName, pathName: $pathName, state: $state, userState: $userState, faceCount: $faceCount, fingerprintCount: $fingerprintCount, cardCount: $cardCount, isSuper: $isSuper, isOperationUser: $isOperationUser, roles: $roles}'; } } diff --git a/lib/api/model/team/response/role_list_response.dart b/lib/api/model/team/response/role_list_response.dart index 9ee5b56..d5494b3 100644 --- a/lib/api/model/team/response/role_list_response.dart +++ b/lib/api/model/team/response/role_list_response.dart @@ -1,6 +1,7 @@ import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; class RoleListResponse { int? id; diff --git a/lib/views/team/addOrganization/add_organization_controller.dart b/lib/views/team/addOrganization/add_organization_controller.dart index 0f67d10..1451ad3 100644 --- a/lib/views/team/addOrganization/add_organization_controller.dart +++ b/lib/views/team/addOrganization/add_organization_controller.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/request/create_new_depart_request.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/base_controller.dart'; import 'package:starwork_flutter/common/constant/app_view_parameter_keys.dart'; diff --git a/lib/views/team/addOrganization/add_organization_view.dart b/lib/views/team/addOrganization/add_organization_view.dart index 6379c0d..f07caab 100644 --- a/lib/views/team/addOrganization/add_organization_view.dart +++ b/lib/views/team/addOrganization/add_organization_view.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/base/app_logger.dart'; import 'package:starwork_flutter/common/constant/app_colors.dart'; import 'package:starwork_flutter/common/widgets/custom_cell_list_widget.dart'; diff --git a/lib/views/team/addPerson/selectRole/select_role_controller.dart b/lib/views/team/addPerson/selectRole/select_role_controller.dart index 57030a2..4f293a5 100644 --- a/lib/views/team/addPerson/selectRole/select_role_controller.dart +++ b/lib/views/team/addPerson/selectRole/select_role_controller.dart @@ -1,6 +1,7 @@ import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/request/edit_person_info_request.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/model/team/response/role_list_response.dart'; import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/app_logger.dart'; diff --git a/lib/views/team/editPerson/edit_person_controller.dart b/lib/views/team/editPerson/edit_person_controller.dart index a64e552..2474a05 100644 --- a/lib/views/team/editPerson/edit_person_controller.dart +++ b/lib/views/team/editPerson/edit_person_controller.dart @@ -3,6 +3,7 @@ import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/request/edit_person_info_request.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; import 'package:starwork_flutter/api/model/team/response/person_details_response.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/model/team/response/role_list_response.dart'; import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/app_logger.dart'; diff --git a/lib/views/team/editPerson/edit_person_view.dart b/lib/views/team/editPerson/edit_person_view.dart index 5316ee5..e96e194 100644 --- a/lib/views/team/editPerson/edit_person_view.dart +++ b/lib/views/team/editPerson/edit_person_view.dart @@ -237,13 +237,19 @@ class EditPersonView extends GetView { child: ListView( scrollDirection: Axis.horizontal, children: [ - _buildHorizontalItem(title: '人脸', count: 0), + _buildHorizontalItem( + title: '人脸', + count: 0, + onTap: () { + Get.toNamed(AppRoutes.teamEnterFace, arguments: controller.selectedPersonItem.value); + }, + ), SizedBox(width: 5.w), // 添加间距 - _buildHorizontalItem(title: '指纹', count: 0), + _buildHorizontalItem(title: '指纹', count: 0, onTap: () {}), SizedBox(width: 5.w), // 添加间距 - _buildHorizontalItem(title: '卡片', count: 0), + _buildHorizontalItem(title: '卡片', count: 0, onTap: () {}), SizedBox(width: 5.w), // 添加间距 - _buildHorizontalItem(title: '密码', count: 0), + _buildHorizontalItem(title: '密码', count: 0, onTap: () {}), ], ), ), @@ -604,48 +610,52 @@ class EditPersonView extends GetView { _buildHorizontalItem({ required String title, required int count, + required GestureTapCallback? onTap, }) { - return Container( - width: 88.w, - height: 44.w, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(8.r), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - count.toString(), - style: TextStyle( - fontSize: 22.sp, - fontWeight: FontWeight.w600, - ), - ), - SizedBox( - height: 2.h, - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - title, - style: TextStyle( - fontSize: 12.sp, - color: Colors.black54, - fontWeight: FontWeight.w400, - ), + return GestureDetector( + onTap: onTap, + child: Container( + width: 88.w, + height: 44.w, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8.r), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + count.toString(), + style: TextStyle( + fontSize: 22.sp, + fontWeight: FontWeight.w600, ), - Icon( - Icons.arrow_forward_ios_rounded, - size: 12.sp, - color: Colors.black54, - ) - ], - ), - ], + ), + SizedBox( + height: 2.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + title, + style: TextStyle( + fontSize: 12.sp, + color: Colors.black54, + fontWeight: FontWeight.w400, + ), + ), + Icon( + Icons.arrow_forward_ios_rounded, + size: 12.sp, + color: Colors.black54, + ) + ], + ), + ], + ), ), ); } diff --git a/lib/views/team/enterFace/enter_face_controller.dart b/lib/views/team/enterFace/enter_face_controller.dart index 9435a0e..85a4159 100644 --- a/lib/views/team/enterFace/enter_face_controller.dart +++ b/lib/views/team/enterFace/enter_face_controller.dart @@ -1,5 +1,6 @@ import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; + import 'package:starwork_flutter/base/base_controller.dart'; class EnterFaceController extends BaseController { @@ -9,7 +10,9 @@ class EnterFaceController extends BaseController { void onInit() { super.onInit(); final args = Get.arguments; + if (args != null && args is PersonItem) { + print('args: $args'); selectedPersonItem.value = args; } } diff --git a/lib/views/team/enterFace/enter_face_view.dart b/lib/views/team/enterFace/enter_face_view.dart index 7213863..d449bd5 100644 --- a/lib/views/team/enterFace/enter_face_view.dart +++ b/lib/views/team/enterFace/enter_face_view.dart @@ -59,7 +59,9 @@ class EnterFaceView extends GetView { ), ), ), - Text(controller.selectedPersonItem.value?.personName ?? ''), + Obx( + () => Text(controller.selectedPersonItem.value?.personName ?? ''), + ), const Spacer(), Text( '未录入'.tr, @@ -324,9 +326,7 @@ class EnterFaceView extends GetView { children: [ Expanded( child: ElevatedButton( - onPressed: () { - - }.debounce(), + onPressed: () {}.debounce(), style: ElevatedButton.styleFrom( backgroundColor: Colors.grey[50], padding: EdgeInsets.symmetric(vertical: 10.h), diff --git a/lib/views/team/personnelManage/personnel_manage_controller.dart b/lib/views/team/personnelManage/personnel_manage_controller.dart index e9ab615..9a9cc7c 100644 --- a/lib/views/team/personnelManage/personnel_manage_controller.dart +++ b/lib/views/team/personnelManage/personnel_manage_controller.dart @@ -6,6 +6,7 @@ import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/request/create_new_depart_request.dart'; import 'package:starwork_flutter/api/model/team/request/get_depart_list_request.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/model/user/response/user_info_response.dart'; import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/app_logger.dart'; diff --git a/lib/views/team/personnelManage/personnel_manage_view.dart b/lib/views/team/personnelManage/personnel_manage_view.dart index cdce860..086472e 100644 --- a/lib/views/team/personnelManage/personnel_manage_view.dart +++ b/lib/views/team/personnelManage/personnel_manage_view.dart @@ -6,6 +6,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/base/app_logger.dart'; import 'package:starwork_flutter/common/constant/app_colors.dart'; import 'package:starwork_flutter/common/constant/app_images.dart'; diff --git a/lib/views/team/roleManage/role_manage_view.dart b/lib/views/team/roleManage/role_manage_view.dart index 50c31f1..1fd430b 100644 --- a/lib/views/team/roleManage/role_manage_view.dart +++ b/lib/views/team/roleManage/role_manage_view.dart @@ -222,7 +222,7 @@ class RoleManageView extends GetView { // 示例:如果 role.personList 存在且不为空 if (role.personList != null && role.personList!.isNotEmpty) { // 提取所有 personName 并用逗号连接 - personNames = role.personList!.map((person) => person.personName ?? '').join(','); // 使用顿号或逗号分隔 + personNames = role.personList!.map((person) => person?.personName ?? '').join(','); // 使用顿号或逗号分隔 } else { // 默认值或空值处理 personNames = '暂无用户'; diff --git a/lib/views/team/selectOrganization/select_organization_view.dart b/lib/views/team/selectOrganization/select_organization_view.dart index 7a5699a..6c141e0 100644 --- a/lib/views/team/selectOrganization/select_organization_view.dart +++ b/lib/views/team/selectOrganization/select_organization_view.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; -import 'package:starwork_flutter/base/app_logger.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/common/constant/app_colors.dart'; import 'package:starwork_flutter/common/constant/app_images.dart'; import 'package:starwork_flutter/common/widgets/custome_app_bar_wdiget.dart'; diff --git a/lib/views/team/selectPerson/select_person_controller.dart b/lib/views/team/selectPerson/select_person_controller.dart index 513ba21..dc7df30 100644 --- a/lib/views/team/selectPerson/select_person_controller.dart +++ b/lib/views/team/selectPerson/select_person_controller.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/request/get_depart_list_request.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/base_controller.dart'; diff --git a/lib/views/team/selectPerson/select_person_view.dart b/lib/views/team/selectPerson/select_person_view.dart index 6a1b414..f5c666d 100644 --- a/lib/views/team/selectPerson/select_person_view.dart +++ b/lib/views/team/selectPerson/select_person_view.dart @@ -5,6 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:starwork_flutter/api/model/team/response/depart_list_reponse.dart'; +import 'package:starwork_flutter/api/model/team/response/person_list_response.dart'; import 'package:starwork_flutter/base/app_logger.dart'; import 'package:starwork_flutter/common/constant/app_colors.dart'; import 'package:starwork_flutter/common/constant/app_images.dart';