repair_order_page.dart 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. import 'dart:io';
  2. import 'package:flutter/cupertino.dart';
  3. import 'package:flutter/foundation.dart';
  4. import 'package:flutter/material.dart';
  5. import 'package:keyboard_actions/keyboard_actions.dart';
  6. import 'package:liftmanager/internal/maintenance/maintenance_router.dart';
  7. import 'package:liftmanager/internal/repair/model/repair_fault_entity.dart';
  8. import 'package:liftmanager/internal/repair/model/repair_list_entity.dart';
  9. import 'package:liftmanager/res/resources.dart';
  10. import 'package:liftmanager/routers/fluro_navigator.dart';
  11. import 'package:liftmanager/utils/theme_utils.dart';
  12. import 'package:liftmanager/widgets/app_bar.dart';
  13. import 'package:liftmanager/widgets/click_item.dart';
  14. import 'package:liftmanager/widgets/load_image.dart';
  15. class RepairOrderPage extends StatefulWidget {
  16. RepairOrderPage(this.item);
  17. final RepairItem item;
  18. @override
  19. State<StatefulWidget> createState() {
  20. return RepairOrderPageState();
  21. }
  22. }
  23. class RepairOrderPageState extends State<RepairOrderPage> {
  24. List<String> images = [];
  25. List<String> signImage = [];
  26. List<RepairFaultEntity> repairList = [];
  27. TextEditingController _controller = TextEditingController();
  28. String faultPart = "";
  29. String faultReason = "";
  30. String faultHandle = "";
  31. String faultNature = "";
  32. String faultDuty = "";
  33. String erRecordImg = "";
  34. String recoveryDate = "";
  35. var mainSignImgByte;
  36. var mainSignImgByte2;
  37. @override
  38. void initState() {
  39. super.initState();
  40. initData();
  41. }
  42. initData() {
  43. for (var i = 0; i < widget.item.faultParts.length; ++i) {
  44. var item = widget.item.faultParts[i];
  45. if (faultPart.length == 0) {
  46. faultPart = item.faultDesc;
  47. } else {
  48. faultPart = faultPart + item.faultDesc;
  49. }
  50. }
  51. for (var i = 0; i < widget.item.faultReasons.length; ++i) {
  52. var item = widget.item.faultReasons[i];
  53. if (faultReason.length == 0) {
  54. faultReason = item.faultDesc;
  55. } else {
  56. faultReason = faultReason + "、" + item.faultDesc;
  57. }
  58. }
  59. for (var i = 0; i < widget.item.faultHandles.length; ++i) {
  60. var item = widget.item.faultHandles[i];
  61. if (faultHandle.length == 0) {
  62. faultHandle = item.faultType;
  63. } else {
  64. faultHandle = faultHandle + "、" + item.faultType;
  65. }
  66. }
  67. for (var i = 0; i < widget.item.faultNatures.length; ++i) {
  68. var item = widget.item.faultNatures[i];
  69. if (faultNature.length == 0) {
  70. faultNature = item.faultType;
  71. } else {
  72. faultNature = faultNature + "、" + item.faultType;
  73. }
  74. }
  75. for (var i = 0; i < widget.item.faultDuties.length; ++i) {
  76. var item = widget.item.faultDuties[i];
  77. if (faultDuty.length == 0) {
  78. faultDuty = item.faultType;
  79. } else {
  80. faultDuty = faultDuty + "、" + item.faultType;
  81. }
  82. }
  83. _controller.text = widget.item.fieldDescription;
  84. recoveryDate = widget.item.recoveryDate;
  85. for (var i = 0; i < widget.item.erRecordImgs.length; ++i) {
  86. ErRecordImgs item = widget.item.erRecordImgs[i];
  87. images.add(item.imgUrl);
  88. }
  89. if (widget.item.mainSign.length > 0) {
  90. signImage.add(widget.item.mainSign);
  91. }
  92. if (widget.item.secondSign.length > 0) {
  93. signImage.add(widget.item.secondSign);
  94. }
  95. print(widget.item.erRecordImgs.length);
  96. }
  97. @override
  98. Widget build(BuildContext context) {
  99. return Scaffold(
  100. //resizeToAvoidBottomPadding: false,
  101. appBar: MyAppBar(centerTitle: "急修单"),
  102. body: SafeArea(
  103. child: Container(
  104. color: ThemeUtils.getBackgroundColor(context),
  105. child: Column(
  106. children: <Widget>[
  107. Expanded(
  108. flex: 1,
  109. child: defaultTargetPlatform == TargetPlatform.iOS
  110. ? FormKeyboardActions(child: _buildBody())
  111. : SingleChildScrollView(child: _buildBody()),
  112. ),
  113. ],
  114. ),
  115. ),
  116. ));
  117. }
  118. _buildBody() {
  119. return Padding(
  120. padding: EdgeInsets.only(bottom: 30),
  121. child: Column(
  122. crossAxisAlignment: CrossAxisAlignment.start,
  123. children: <Widget>[
  124. ClickItem(
  125. title: "故障部位",
  126. hintText: "请选择",
  127. maxLines: 10,
  128. content: "${faultPart}",
  129. ),
  130. ClickItem(
  131. title: "故障原因",
  132. hintText: "请选择",
  133. maxLines: 10,
  134. content: "${faultReason}"),
  135. ClickItem(
  136. title: "故障处理",
  137. hintText: "请选择",
  138. maxLines: 10,
  139. content: "${faultHandle}"),
  140. ClickItem(
  141. title: "故障性质",
  142. hintText: "请选择",
  143. maxLines: 10,
  144. content: "${faultNature}"),
  145. ClickItem(
  146. title: "故障责任",
  147. hintText: "请选择",
  148. maxLines: 10,
  149. content: "${faultDuty}"),
  150. SizedBox(
  151. height: 8,
  152. ),
  153. ClickItem(
  154. title: "现场情况描述",
  155. hintText: "",
  156. ),
  157. Container(
  158. color: ThemeUtils.getTabsBg(context),
  159. child: Padding(
  160. padding: const EdgeInsets.only(
  161. top: 5, left: 15.0, right: 15.0, bottom: 8.0),
  162. child: TextField(
  163. maxLength: 30,
  164. maxLines: 3,
  165. // autofocus: false,
  166. controller: _controller,
  167. enabled: false,
  168. // keyboardType: widget.keyboardType,
  169. //style: TextStyles.textDark14,
  170. decoration: InputDecoration(
  171. hintText: "填写现场情况描述",
  172. border: InputBorder.none,
  173. hintStyle: TextStyles.textGray14)),
  174. ),
  175. ),
  176. SizedBox(
  177. height: 8,
  178. ),
  179. ClickItem(title: "恢复时间", hintText: "请选择", content: recoveryDate),
  180. SizedBox(
  181. height: 8,
  182. ),
  183. ClickItem(
  184. title: "修理图片",
  185. hintText: "",
  186. ),
  187. Container(
  188. color: ThemeUtils.getTabsBg(context),
  189. child: GridView.builder(
  190. shrinkWrap: true,
  191. padding: const EdgeInsets.fromLTRB(8.0, 12, 8.0, 12.0),
  192. physics: NeverScrollableScrollPhysics(),
  193. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  194. crossAxisCount: 3, childAspectRatio: 1.18),
  195. itemCount: images.length,
  196. itemBuilder: (_, index) {
  197. return Stack(
  198. children: <Widget>[
  199. Center(
  200. child: GestureDetector(
  201. onTap: () {
  202. NavigatorUtils.push(
  203. context,
  204. "${MaintenanceRouter.viewImage}?edit=0&img=" +
  205. Uri.encodeComponent(
  206. images[index]));
  207. },
  208. child: LoadImage(
  209. images[index],
  210. width: 80,
  211. height: 80,
  212. )),
  213. )
  214. ],
  215. );
  216. },
  217. )),
  218. SizedBox(
  219. height: 8,
  220. ),
  221. ClickItem(
  222. title: "负责人签名",
  223. hintText: "",
  224. ),
  225. Container(
  226. color: ThemeUtils.getTabsBg(context),
  227. child: GridView.builder(
  228. shrinkWrap: true,
  229. padding: const EdgeInsets.fromLTRB(8.0, 12, 8.0, 12.0),
  230. physics: NeverScrollableScrollPhysics(),
  231. gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
  232. crossAxisCount: 3, childAspectRatio: 1.18),
  233. itemCount: signImage.length,
  234. itemBuilder: (_, index) {
  235. return Stack(
  236. children: <Widget>[
  237. Center(
  238. child: LoadImage(
  239. signImage[index],
  240. width: 80,
  241. height: 80,
  242. ),
  243. )
  244. ],
  245. );
  246. },
  247. )),
  248. ]));
  249. }
  250. }