yearly_detail_page.dart 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:keyboard_actions/keyboard_actions.dart';
  5. import 'package:liftmanager/internal/yearly/model/yearly_list_entity.dart';
  6. import 'package:liftmanager/internal/yearly/yearly_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/theme_utils.dart';
  11. import 'package:liftmanager/utils/toast.dart';
  12. import 'package:liftmanager/widgets/app_bar.dart';
  13. import 'package:liftmanager/widgets/click_item.dart';
  14. import 'package:liftmanager/widgets/my_button.dart';
  15. class YearlyDetailPage extends StatefulWidget {
  16. YearlyDetailPage(this.item);
  17. YearlyListItem item;
  18. @override
  19. State<StatefulWidget> createState() {
  20. return YearlyDetailState(item);
  21. }
  22. }
  23. class YearlyDetailState extends State<YearlyDetailPage> {
  24. YearlyListItem item;
  25. YearlyDetailState(this.item);
  26. @override
  27. void initState() {
  28. super.initState();
  29. }
  30. _uploadBaoGao() {
  31. if(item.stepStatus == 0){
  32. showLoading(context, "确认中");
  33. ApiService(context: context).yearlyConfirm(item.liftId,item.isCheckGoverner,item.loadInspectionSetting,item.planDate, onSuccess: (data) {
  34. dismissLoading(context);
  35. if (data != null) {
  36. toasts("确认成功");
  37. item.stepStatus = 1;
  38. item.id = data;
  39. setState(() {});
  40. } else {
  41. toasts("失败");
  42. }
  43. }, onError: (code, msg) {
  44. toasts(msg);
  45. dismissLoading(context);
  46. });
  47. }else if(item.stepStatus == 1){
  48. NavigatorUtils.pushResult(
  49. context, "${YearlyRouter.yearlyUploadPage}?type=0&id=${item.id}",
  50. (result) {
  51. if(result != null){
  52. var res = result as Map<String, String>;
  53. item.selfcheckDate = res["time"];
  54. item.selfcheckReportImg = res["img"];
  55. item.stepStatus = 4;
  56. setState(() {});
  57. }
  58. });
  59. }else if(item.stepStatus ==3){
  60. NavigatorUtils.pushResult(
  61. context, "${YearlyRouter.yearlyUploadPage}?type=1&id=${item.id}",
  62. (result) {
  63. if(result != null) {
  64. var res = result as Map<String, String>;
  65. item.checkDate = res["time"];
  66. item.checkResultImg = res["img"];
  67. item.stepStatus = 4;
  68. setState(() {});
  69. }
  70. });
  71. }else if(item.stepStatus ==5||item.stepStatus ==6||item.stepStatus ==7){
  72. NavigatorUtils.pushResult(
  73. context, "${YearlyRouter.yearlyUploadPage}?type=2&id=${item.id}",
  74. (result) {
  75. if(result != null) {
  76. var res = result as Map<String, String>;
  77. item.annualInspectionImg = res["img1"];
  78. item.certificateImgUrl = res["img2"];
  79. item.stepStatus = 8;
  80. setState(() {});
  81. }
  82. });
  83. }
  84. }
  85. @override
  86. Widget build(BuildContext context) {
  87. return Scaffold(
  88. //resizeToAvoidBottomPadding: false,
  89. appBar: const MyAppBar(
  90. centerTitle: "年检详情",
  91. ),
  92. body: SafeArea(
  93. child: Column(
  94. children: <Widget>[
  95. Expanded(
  96. flex: 1,
  97. child: defaultTargetPlatform == TargetPlatform.iOS
  98. ? FormKeyboardActions(child: _buildBody())
  99. : SingleChildScrollView(child: _buildBody()),
  100. ),
  101. Offstage(
  102. offstage: isShowBtn(),
  103. child: Container(
  104. child: Padding(
  105. padding: const EdgeInsets.all(16),
  106. child: MyButton(
  107. // textColor: Colors.white,
  108. fontSize: 14,
  109. onPressed: () {
  110. _uploadBaoGao();
  111. },
  112. text: btnStr(),
  113. ),
  114. )))
  115. ],
  116. ),
  117. ),
  118. );
  119. }
  120. bool isShowBtn() {
  121. bool isHide = false;
  122. switch (item.stepStatus) {
  123. case 0:
  124. case 1:
  125. isHide = false;
  126. break;
  127. case 2:
  128. isHide = true;
  129. break;
  130. case 3:
  131. isHide = false;
  132. break;
  133. case 4:
  134. isHide = true;
  135. break;
  136. case 5:
  137. case 6:
  138. case 7:
  139. isHide = false;
  140. break;
  141. case 8:
  142. case 9:
  143. case 10:
  144. isHide = true;
  145. break;
  146. }
  147. return isHide;
  148. }
  149. String btnStr() {
  150. String str = "";
  151. switch (item.stepStatus) {
  152. case 0:
  153. str = "确认年检计划";
  154. break;
  155. case 1:
  156. str = "上传自检报告";
  157. break;
  158. case 2:
  159. break;
  160. case 3:
  161. str = "上传检验报告";
  162. break;
  163. case 4:
  164. case 5:
  165. case 6:
  166. case 7:
  167. str = "上传年检报告";
  168. break;
  169. case 8:
  170. case 9:
  171. case 10:
  172. break;
  173. }
  174. return str;
  175. }
  176. _buildBody() {
  177. return Padding(
  178. padding: const EdgeInsets.symmetric(vertical: 0),
  179. child: Column(
  180. crossAxisAlignment: CrossAxisAlignment.start,
  181. children: <Widget>[
  182. ClickItem(
  183. title: "区域",
  184. content: "${item.areaName}",
  185. ),
  186. ClickItem(
  187. title: "项目名称",
  188. content: "${item.projectName}",
  189. ),
  190. ClickItem(
  191. title: "设备内部编号",
  192. content: "${item.useCompanyCode}",
  193. ),
  194. ClickItem(
  195. title: "注册代码",
  196. content: "${item.registrationCode}",
  197. ),
  198. ClickItem(
  199. title: "电梯位置",
  200. content: "${item.devicePosition}",
  201. ),
  202. ClickItem(
  203. title: "区域主管",
  204. content: "${item.directorName}",
  205. ),
  206. ClickItem(
  207. title: "维保工",
  208. content: "${item.workerName}",
  209. ),
  210. ClickItem(
  211. title: "计划时间",
  212. content: "${item.planDate}",
  213. ),
  214. ClickItem(
  215. title: "是否检查限速器",
  216. content: "${item.isCheckGoverner == 1 ? "是" : "否"}"),
  217. ClickItem(
  218. title: "荷载年检设置",
  219. content: "${item.loadInspectionSetting == 1 ? "是" : "否"}"),
  220. ClickItem(
  221. title: "政府质检人员",
  222. content: "${item.inspector}",
  223. ),
  224. ClickItem(
  225. title: "公司年检人员",
  226. content: "${item.operator}",
  227. ),
  228. Column(children: timeWidget()),
  229. Column(
  230. children: imgWidget(),
  231. )
  232. ]));
  233. }
  234. List<Widget> timeWidget() {
  235. List<Widget> list = [];
  236. if (item.selfcheckDate.length == 0) return list;
  237. list.add(ClickItem(
  238. title: "自检时间",
  239. content: "${item.selfcheckDate}",
  240. ));
  241. if (item.checkDate.length == 0) return list;
  242. list.add(ClickItem(
  243. title: "检验时间",
  244. content: "${item.checkDate}",
  245. ));
  246. if (item.finishTime.length == 0) return list;
  247. list.add(ClickItem(
  248. title: "完成时间",
  249. content: "${item.finishTime}",
  250. ));
  251. return list;
  252. }
  253. List<Widget> imgWidget() {
  254. List<Widget> list = [];
  255. if (item.selfcheckReportImg.length == 0) return list;
  256. print(item.selfcheckReportImg);
  257. List<String> selfArr = item.selfcheckReportImg.split(",");
  258. print(selfArr.length);
  259. for (var i = 0; i < selfArr.length; ++i) {
  260. String img = selfArr[i];
  261. list.add(Container(
  262. color: ThemeUtils.getTabsBg(context),
  263. padding: EdgeInsets.all(10),
  264. child: Row(
  265. children: <Widget>[
  266. Gaps.hGap15,
  267. Container(
  268. width: 80,
  269. child: Text(i==0?"自检图片":""),
  270. ),
  271. Gaps.hGap15,
  272. Image.network(
  273. img.trim(),
  274. width: 150,
  275. height: 150,
  276. fit: BoxFit.fill,
  277. )
  278. ],
  279. ),
  280. ));
  281. }
  282. if (item.checkResultImg.length == 0) return list;
  283. list.add(Container(
  284. color: ThemeUtils.getTabsBg(context),
  285. padding: EdgeInsets.all(10),
  286. child: Row(
  287. children: <Widget>[
  288. Gaps.hGap15,
  289. Container(
  290. width: 80,
  291. child: Text("检验图片"),
  292. ),
  293. Gaps.hGap15,
  294. Image.network(
  295. "${item.checkResultImg}",
  296. width: 150,
  297. height: 150,
  298. fit: BoxFit.fill,
  299. )
  300. ],
  301. )));
  302. if (item.annualInspectionImg.length == 0) return list;
  303. list.add(Container(
  304. color: ThemeUtils.getTabsBg(context),
  305. padding: EdgeInsets.all(10),
  306. child: Row(
  307. children: <Widget>[
  308. Gaps.hGap15,
  309. Container(
  310. width: 80,
  311. child: Text("年检图片"),
  312. ),
  313. Gaps.hGap15,
  314. Image.network(
  315. "${item.annualInspectionImg}",
  316. width: 150,
  317. height: 150,
  318. fit: BoxFit.fill,
  319. )
  320. ],
  321. )));
  322. if (item.certificateImgUrl.length == 0) return list;
  323. list.add(Container(
  324. color: ThemeUtils.getTabsBg(context),
  325. padding: EdgeInsets.all(10),
  326. child: Row(
  327. children: <Widget>[
  328. Gaps.hGap15,
  329. Container(
  330. width: 80,
  331. child: Text("合格证图片"),
  332. ),
  333. Gaps.hGap15,
  334. Image.network(
  335. "${item.certificateImgUrl}",
  336. width: 150,
  337. height: 150,
  338. fit: BoxFit.fill,
  339. )
  340. ],
  341. )));
  342. return list;
  343. }
  344. }