feat: 增加团队管理页
This commit is contained in:
parent
90b95cb1d7
commit
c1a6830614
@ -18,6 +18,8 @@ import 'package:starwork_flutter/views/main/main_binding.dart';
|
|||||||
import 'package:starwork_flutter/views/main/main_view.dart';
|
import 'package:starwork_flutter/views/main/main_view.dart';
|
||||||
import 'package:starwork_flutter/views/team/joinTeam/join_team_binding.dart';
|
import 'package:starwork_flutter/views/team/joinTeam/join_team_binding.dart';
|
||||||
import 'package:starwork_flutter/views/team/joinTeam/join_team_view.dart';
|
import 'package:starwork_flutter/views/team/joinTeam/join_team_view.dart';
|
||||||
|
import 'package:starwork_flutter/views/team/teamManage/team_manage_binding.dart';
|
||||||
|
import 'package:starwork_flutter/views/team/teamManage/team_manage_view.dart';
|
||||||
import 'package:starwork_flutter/views/team/teamNotice/teamNoticeDetails/team_notice_details_binding.dart';
|
import 'package:starwork_flutter/views/team/teamNotice/teamNoticeDetails/team_notice_details_binding.dart';
|
||||||
import 'package:starwork_flutter/views/messages/messages_binding.dart';
|
import 'package:starwork_flutter/views/messages/messages_binding.dart';
|
||||||
import 'package:starwork_flutter/views/messages/messages_view.dart';
|
import 'package:starwork_flutter/views/messages/messages_view.dart';
|
||||||
@ -109,5 +111,10 @@ class AppPages {
|
|||||||
page: () => JoinTeamView(),
|
page: () => JoinTeamView(),
|
||||||
binding: JoinTeamBinding(),
|
binding: JoinTeamBinding(),
|
||||||
),
|
),
|
||||||
|
GetPage(
|
||||||
|
name: AppRoutes.teamManage,
|
||||||
|
page: () => TeamManageView(),
|
||||||
|
binding: TeamManageBinding(),
|
||||||
|
),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,4 +15,5 @@ class AppRoutes{
|
|||||||
static const String teamUseCaseSetting = '/team/useCaseSetting';
|
static const String teamUseCaseSetting = '/team/useCaseSetting';
|
||||||
static const String teamCreateTeam = '/team/createTeam';
|
static const String teamCreateTeam = '/team/createTeam';
|
||||||
static const String teamJoinTeam = '/team/joinTeam';
|
static const String teamJoinTeam = '/team/joinTeam';
|
||||||
|
static const String teamManage = '/team/teamManage';
|
||||||
}
|
}
|
||||||
@ -364,6 +364,7 @@ class HomeView extends GetView<HomeController> {
|
|||||||
Get.toNamed(AppRoutes.searchDevice);
|
Get.toNamed(AppRoutes.searchDevice);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
Get.toNamed(AppRoutes.teamJoinTeam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:starwork_flutter/routes/app_routes.dart';
|
||||||
|
|
||||||
class HomeNotDeviceArea extends StatefulWidget {
|
class HomeNotDeviceArea extends StatefulWidget {
|
||||||
const HomeNotDeviceArea({super.key});
|
const HomeNotDeviceArea({super.key});
|
||||||
@ -63,7 +64,9 @@ class _HomeNotDeviceAreaState extends State<HomeNotDeviceArea> {
|
|||||||
),
|
),
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
),
|
),
|
||||||
onPressed: () {},
|
onPressed: () {
|
||||||
|
Get.toNamed(AppRoutes.searchDevice);
|
||||||
|
},
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
@ -159,14 +160,19 @@ class _MainLeftDrawerWidgetState extends State<MainLeftDrawerWidget> {
|
|||||||
),
|
),
|
||||||
|
|
||||||
// 设置图标
|
// 设置图标
|
||||||
GestureDetector(
|
Visibility(
|
||||||
onTap: () {},
|
visible: team.isOwner ?? false,
|
||||||
child: Container(
|
child: GestureDetector(
|
||||||
padding: EdgeInsets.all(8.w),
|
onTap: () {
|
||||||
child: Icon(
|
Get.toNamed(AppRoutes.teamManage);
|
||||||
Icons.settings,
|
},
|
||||||
size: 20.sp,
|
child: Container(
|
||||||
color: isSelected ? const Color(0xFF2196F3) : Colors.grey[600],
|
padding: EdgeInsets.all(8.w),
|
||||||
|
child: Icon(
|
||||||
|
Icons.settings,
|
||||||
|
size: 20.sp,
|
||||||
|
color: isSelected ? const Color(0xFF2196F3) : Colors.grey[600],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
9
lib/views/team/teamManage/team_manage_binding.dart
Normal file
9
lib/views/team/teamManage/team_manage_binding.dart
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:starwork_flutter/views/team/teamManage/team_manage_controller.dart';
|
||||||
|
|
||||||
|
class TeamManageBinding extends Bindings {
|
||||||
|
@override
|
||||||
|
void dependencies() {
|
||||||
|
Get.lazyPut(() => TeamManageController());
|
||||||
|
}
|
||||||
|
}
|
||||||
5
lib/views/team/teamManage/team_manage_controller.dart
Normal file
5
lib/views/team/teamManage/team_manage_controller.dart
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import 'package:starwork_flutter/base/base_controller.dart';
|
||||||
|
|
||||||
|
class TeamManageController extends BaseController{
|
||||||
|
|
||||||
|
}
|
||||||
302
lib/views/team/teamManage/team_manage_view.dart
Normal file
302
lib/views/team/teamManage/team_manage_view.dart
Normal file
@ -0,0 +1,302 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:starwork_flutter/common/constant/app_colors.dart';
|
||||||
|
import 'package:starwork_flutter/common/widgets/custom_app_bar_widget.dart';
|
||||||
|
import 'package:starwork_flutter/extension/function_extension.dart';
|
||||||
|
import 'package:starwork_flutter/views/team/teamManage/team_manage_controller.dart';
|
||||||
|
|
||||||
|
class TeamManageView extends GetView<TeamManageController> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
backgroundColor: AppColors.scaffoldBackgroundColor,
|
||||||
|
appBar: CustomAppBarWidget(
|
||||||
|
title: '团队管理'.tr,
|
||||||
|
),
|
||||||
|
body: Padding(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
_buildHeadRow(),
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: _buildOther(),
|
||||||
|
),
|
||||||
|
// 分割线
|
||||||
|
Divider(
|
||||||
|
height: 1.h,
|
||||||
|
color: Colors.grey.withOpacity(0.2),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
|
||||||
|
SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: ElevatedButton(
|
||||||
|
onPressed: () {}.debounce(),
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Colors.grey[200],
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 12.h),
|
||||||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'解散团队'.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.blue,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10.w,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: ElevatedButton(
|
||||||
|
onPressed: () {}.debounce(),
|
||||||
|
style: ElevatedButton.styleFrom(
|
||||||
|
backgroundColor: Colors.blue,
|
||||||
|
padding: EdgeInsets.symmetric(vertical: 12.h),
|
||||||
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8.r)),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'转让团队'.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
color: Colors.white,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 20.h,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_buildHeadRow() {
|
||||||
|
return Container(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(8.r),
|
||||||
|
color: Colors.blue,
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.blue.withOpacity(0.2),
|
||||||
|
spreadRadius: 2,
|
||||||
|
blurRadius: 3,
|
||||||
|
offset: const Offset(0, 3), // changes position of shadow
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
children: [
|
||||||
|
Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'团队名称',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 16.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 8.h,
|
||||||
|
),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 4.w, vertical: 2.h),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(8.r),
|
||||||
|
color: Colors.white.withOpacity(0.3),
|
||||||
|
),
|
||||||
|
child: Text(
|
||||||
|
'小区/公寓'.tr,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 4.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'TD01022881',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 10.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const Icon(
|
||||||
|
Icons.arrow_forward_ios_rounded,
|
||||||
|
color: Colors.white,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
_buildOther() {
|
||||||
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
'其他',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.grey[400],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 10.h,
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
width: double.infinity,
|
||||||
|
padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 10.h),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(8.r),
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.assignment_outlined,
|
||||||
|
color: Colors.blue.withOpacity(0.8),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 8.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'运维服务',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.black87,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Icon(
|
||||||
|
Icons.arrow_forward_ios_rounded,
|
||||||
|
color: Colors.grey,
|
||||||
|
size: 14.sp,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
|
||||||
|
SizedBox(height: 10.h),
|
||||||
|
// 分割线
|
||||||
|
Divider(
|
||||||
|
height: 1.h,
|
||||||
|
color: Colors.grey.withOpacity(0.2),
|
||||||
|
),
|
||||||
|
SizedBox(height: 10.h),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.assignment_outlined,
|
||||||
|
color: Colors.blue.withOpacity(0.8),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 8.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'操作日志',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.black87,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Icon(
|
||||||
|
Icons.arrow_forward_ios_rounded,
|
||||||
|
color: Colors.grey,
|
||||||
|
size: 14.sp,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
SizedBox(height: 10.h),
|
||||||
|
Divider(
|
||||||
|
height: 1.h,
|
||||||
|
color: Colors.grey.withOpacity(0.2),
|
||||||
|
),
|
||||||
|
SizedBox(height: 10.h),
|
||||||
|
Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Row(
|
||||||
|
children: [
|
||||||
|
Icon(
|
||||||
|
Icons.assignment_outlined,
|
||||||
|
color: Colors.blue.withOpacity(0.8),
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 8.w,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'团队二维码',
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 14.sp,
|
||||||
|
fontWeight: FontWeight.w500,
|
||||||
|
color: Colors.black87,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
Icon(
|
||||||
|
Icons.arrow_forward_ios_rounded,
|
||||||
|
color: Colors.grey,
|
||||||
|
size: 14.sp,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user