team_user_page.dart 6.1 KB

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