repair_order_page.dart 8.9 KB

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