team_user_page.dart 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import 'package:azlistview/azlistview.dart';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:liftmanager/internal/team/model/team_user_entity.dart';
  5. import 'package:liftmanager/internal/team/team_router.dart';
  6. import 'package:liftmanager/net/api_service.dart';
  7. import 'package:liftmanager/res/resources.dart';
  8. import 'package:liftmanager/routers/fluro_navigator.dart';
  9. import 'package:liftmanager/utils/image_utils.dart';
  10. import 'package:liftmanager/utils/theme_utils.dart';
  11. import 'package:liftmanager/utils/toast.dart';
  12. import 'package:liftmanager/widgets/app_bar.dart';
  13. class TeamUserPage extends StatefulWidget {
  14. @override
  15. State<StatefulWidget> createState() {
  16. return TeamUserPageState();
  17. }
  18. }
  19. class TeamUserPageState extends State<TeamUserPage> {
  20. int pageNum = 1;
  21. int pageSize = 1000;
  22. List<UserItem> _userList = [];
  23. @override
  24. void initState() {
  25. super.initState();
  26. _loadData();
  27. }
  28. ///获取团队用户列表
  29. _loadData() {
  30. ApiService(context: context).teamUserList(pageNum, pageSize,
  31. onSuccess: (res) {
  32. _userList = res.rows;
  33. _userList.sort(
  34. (a, b) => (a.getSuspensionTag()).compareTo(b.getSuspensionTag()));
  35. setState(() {});
  36. }, onError: (code, msg) {
  37. toasts(msg);
  38. });
  39. }
  40. @override
  41. Widget build(BuildContext context) {
  42. return WillPopScope(
  43. onWillPop: () {
  44. NavigatorUtils.goBackWithParams(context, true);
  45. return Future.value(false);
  46. },
  47. child: Scaffold(
  48. appBar: MyAppBar(
  49. centerTitle: "团队成员",
  50. ),
  51. body: SafeArea(
  52. child: AzListView(
  53. data: _userList,
  54. itemBuilder: (context, model) => _buildListItem(model),
  55. isUseRealIndex: true,
  56. itemHeight: 40,
  57. suspensionWidget: null,
  58. suspensionHeight: 0,
  59. indexBarBuilder: (context, list, onTouch) {
  60. return IndexBar(
  61. onTouch: onTouch,
  62. data: list,
  63. itemHeight: 18,
  64. touchDownColor: Colors.transparent,
  65. textStyle: Theme.of(context).textTheme.subtitle);
  66. },
  67. ),
  68. ),
  69. ));
  70. }
  71. Widget _buildListItem(UserItem model) {
  72. bool isDark = ThemeUtils.isDark(context);
  73. return InkWell(
  74. onTap: () {
  75. NavigatorUtils.push(context,
  76. "${TeamRouter.teamUserDetailPage}?name=${Uri.encodeComponent(model.userName)}&remark=${Uri.encodeComponent(model.userRemarks)}&role=${Uri.encodeComponent(model.userRoleName)}&logoImg=${Uri.encodeComponent(model.userAvatarUrl)}&isCertificated=${model.liftCertificate.status}&certificateType=${Uri.encodeComponent(model.liftCertificate.certificateType)}&expirationDate=${Uri.encodeComponent(model.liftCertificate.expirationDate)}&issuanceAgency=${Uri.encodeComponent(model.liftCertificate.issuanceAgency)}");
  77. },
  78. child: Container(
  79. color: ThemeUtils.getTabsBg(context),
  80. padding: const EdgeInsets.only(left: 16.0, right: 34.0),
  81. height: 67.0,
  82. child: Container(
  83. decoration: BoxDecoration(
  84. border: (model.isShowSuspension)
  85. ? Border(
  86. top: Divider.createBorderSide(context, width: 0.6),
  87. )
  88. : null),
  89. child: Row(
  90. children: <Widget>[
  91. CircleAvatar(
  92. radius: 21.5,
  93. backgroundColor: Colors.transparent,
  94. backgroundImage:
  95. ImageUtils.getImageProvider(model.userAvatarUrl)),
  96. Gaps.hGap10,
  97. Expanded(
  98. child: Column(
  99. mainAxisAlignment: MainAxisAlignment.center,
  100. crossAxisAlignment: CrossAxisAlignment.start,
  101. children: <Widget>[
  102. Row(
  103. children: <Widget>[
  104. Text(
  105. model.userName,
  106. style: TextStyle(
  107. fontSize: 15,
  108. color: isDark ? Colours.dark_text : Colours.text),
  109. ),
  110. Gaps.hGap10,
  111. Container(
  112. decoration: BoxDecoration(
  113. color: Colours.app_main,
  114. borderRadius: BorderRadius.circular(6.0),
  115. ),
  116. padding: EdgeInsets.fromLTRB(5, 0, 5, 0),
  117. child: Text(
  118. model.userRoleName,
  119. style: TextStyle(fontSize: 12, color: Colors.white),
  120. ),
  121. )
  122. ],
  123. ),
  124. Text(
  125. model.userMobile,
  126. style: TextStyles.textGray13,
  127. )
  128. ],
  129. ),
  130. ),
  131. Text(
  132. model.liftCertificate?.status == 1
  133. ? "待审核"
  134. : model.liftCertificate?.status == 2
  135. ? "审核未通过"
  136. : model.liftCertificate?.status == 3
  137. ? "审核通过"
  138. : model.liftCertificate?.status == 3 ? "超期" : "无证",
  139. style: TextStyle(
  140. fontSize: 15,
  141. color: model.liftCertificate?.status == 1
  142. ? Color(0xFF01AFFF)
  143. : model.liftCertificate?.status == 2
  144. ? Color(0xFF00A863)
  145. : model.liftCertificate?.status == 3
  146. ? Color(0xFF01AFFF)
  147. : model.liftCertificate?.status == 3
  148. ? Color(0xFFFF3B301)
  149. : Color(0xFF999999)),
  150. ),
  151. ],
  152. ),
  153. ),
  154. ),
  155. );
  156. }
  157. }