patrol_job_page.dart 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. //巡检任务列表
  2. import 'package:deus_app/common/style/TitleBar.dart';
  3. import 'package:deus_app/page/patrol/patrol_job_detail.dart';
  4. import 'package:flutter/material.dart';
  5. import '../../common/style/gsy_style.dart';
  6. import '../../common/utils/ConstantString.dart';
  7. import '../../common/utils/DioUtil.dart';
  8. import '../../common/utils/ToastUtils.dart';
  9. import '../../model/patrol_response_entity.dart';
  10. import '../../widget/PatrolJobDrawer.dart';
  11. class PatrolJobPage extends StatefulWidget {
  12. const PatrolJobPage({super.key});
  13. static var routeName = '/PatrolJobPage';
  14. @override
  15. State createState() {
  16. return _PatrolJobPage();
  17. }
  18. }
  19. List<PatrolJobData> patrol_job_list = [];
  20. PatrolJobData query = PatrolJobData();
  21. class _PatrolJobPage extends State<PatrolJobPage> {
  22. final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
  23. _load() async {
  24. var result = await DioUtil().request('patrolJob/appPatrolJobList',
  25. method: DioMethod.post, data: {'query': query, 'index': 1, 'size': 5});
  26. PatrolJobResponse patrolJobResponse = PatrolJobResponse.fromJson(result);
  27. print(patrolJobResponse);
  28. patrol_job_list = patrolJobResponse.data!.patrolJobVOS!;
  29. //var patrolJobResponse = PatrolJobResponse.fromJson(result);
  30. //print(patrolJobResponse);
  31. }
  32. @override
  33. void initState() {
  34. // TODO: implement initState
  35. super.initState();
  36. Future.delayed(
  37. Duration.zero,
  38. () => setState(() {
  39. _load();
  40. }));
  41. }
  42. @override
  43. Widget build(BuildContext context) {
  44. return Scaffold(
  45. key: _scaffoldKey,
  46. appBar: TitleBar().drawAppBar(ConstantString.patrolJobText, () {
  47. _scaffoldKey.currentState?.openEndDrawer();
  48. }),
  49. endDrawer: PatrolJobDrawer(
  50. callback: (index, str) {
  51. showToast(str);
  52. },
  53. ),
  54. //抽屉
  55. backgroundColor: const Color(0xfff2f2f2),
  56. body: Column(
  57. children: [
  58. SizedBox(
  59. height: 10,
  60. ),
  61. Row(
  62. mainAxisAlignment: MainAxisAlignment.start,
  63. children: [
  64. SizedBox(
  65. width: 15,
  66. ),
  67. Text(ConstantString.patrolJobTitle,
  68. style: GSYConstant.smallActionLightText),
  69. ],
  70. ),
  71. Expanded(
  72. child: Container(
  73. child: ListView.builder(
  74. itemCount: patrol_job_list.length,
  75. itemBuilder: (context, index) {
  76. PatrolJobData patrolJobData = patrol_job_list[index];
  77. return _patrol_job_list(patrolJobData);
  78. },
  79. )))
  80. ],
  81. ));
  82. }
  83. Widget _patrol_job_list(PatrolJobData patrolJobData) {
  84. return Container(
  85. margin: EdgeInsets.only(top: 12, left: 10, right: 10),
  86. padding: EdgeInsets.only(top: 12, bottom: 10),
  87. color: Colors.white,
  88. child: ListTile(
  89. title: Column(
  90. children: [
  91. Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
  92. Container(
  93. child: Text(
  94. patrolJobData.name!,
  95. style: TextStyle(
  96. color: Colors.black,
  97. fontSize: GSYConstant.middleTextWhiteSize,
  98. fontWeight: FontWeight.bold,
  99. ),
  100. ),
  101. ),
  102. Container(
  103. padding:
  104. EdgeInsets.only(top: 3, bottom: 3, left: 5, right: 5),
  105. child: Text(
  106. patrolJobData.status == 0
  107. ? '已关闭'
  108. : patrolJobData.status == 1
  109. ? '执行中'
  110. : patrolJobData.status == 2
  111. ? '已完成'
  112. : patrolJobData.status == 3
  113. ? '待执行'
  114. : patrolJobData.status == 4
  115. ? '已逾期'
  116. : '未知',
  117. textAlign: TextAlign.right,
  118. style: TextStyle(
  119. color:
  120. patrolJobData.status == 0 || patrolJobData.status == 4
  121. ? Colors.red
  122. : patrolJobData.status == 1
  123. ? Colors.orange
  124. : patrolJobData.status == 2
  125. ? Colors.green
  126. : Colors.black, //边框颜色
  127. fontSize: GSYConstant.minTextSize,
  128. ),
  129. ),
  130. decoration: BoxDecoration(
  131. border: new Border.all(
  132. color:
  133. patrolJobData.status == 0 || patrolJobData.status == 4
  134. ? Colors.red
  135. : patrolJobData.status == 1
  136. ? Colors.orange
  137. : patrolJobData.status == 2
  138. ? Colors.green
  139. : Colors.black, //边框颜色
  140. width: 1.0, //边框粗细
  141. ),
  142. borderRadius: const BorderRadius.all(
  143. const Radius.circular(3.0)), //边框的弧度
  144. ),
  145. )
  146. ]),
  147. SizedBox(
  148. height: 12,
  149. ),
  150. Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
  151. Container(
  152. child: Text(
  153. '任务编号:',
  154. style: TextStyle(
  155. color: GSYColors.primaryLightValue,
  156. fontSize: GSYConstant.middleTextWhiteSize,
  157. ),
  158. ),
  159. ),
  160. Container(
  161. child: Text(
  162. patrolJobData.number!,
  163. textAlign: TextAlign.right,
  164. style: TextStyle(
  165. color: GSYColors.primaryLightValue,
  166. fontSize: GSYConstant.middleTextWhiteSize,
  167. ),
  168. ),
  169. ),
  170. ]),
  171. SizedBox(
  172. height: 10,
  173. ),
  174. Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
  175. Container(
  176. child: Text(
  177. '任务开始时间:',
  178. style: TextStyle(
  179. color: GSYColors.primaryLightValue,
  180. fontSize: GSYConstant.middleTextWhiteSize,
  181. ),
  182. ),
  183. ),
  184. Container(
  185. child: Text(
  186. patrolJobData.startDate!,
  187. textAlign: TextAlign.right,
  188. style: TextStyle(
  189. color: GSYColors.primaryLightValue,
  190. fontSize: GSYConstant.middleTextWhiteSize,
  191. ),
  192. ),
  193. ),
  194. ]),
  195. SizedBox(
  196. height: 10,
  197. ),
  198. Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
  199. Container(
  200. child: Text(
  201. '任务结束时间:',
  202. style: TextStyle(
  203. color: GSYColors.primaryLightValue,
  204. fontSize: GSYConstant.middleTextWhiteSize,
  205. ),
  206. ),
  207. ),
  208. Container(
  209. child: Text(
  210. patrolJobData.endDate!,
  211. textAlign: TextAlign.right,
  212. style: TextStyle(
  213. color: GSYColors.primaryLightValue,
  214. fontSize: GSYConstant.middleTextWhiteSize,
  215. ),
  216. ),
  217. ),
  218. ]),
  219. SizedBox(
  220. height: 5,
  221. ),
  222. ],
  223. ),
  224. onTap: () {
  225. Navigator.push(
  226. context,
  227. MaterialPageRoute(
  228. builder: (context) => new PatrolJobDetail(id:patrolJobData.id)));
  229. },
  230. ));
  231. }
  232. }