piao_order.dart 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597
  1. import 'package:flutter/cupertino.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:flutter_screenutil/flutter_screenutil.dart';
  4. import 'package:liftmanager/internal/search/presenter/base_list_provider.dart';
  5. import 'package:liftmanager/internal/wode/model/piao_order_model.dart';
  6. import 'package:liftmanager/internal/wode/presenter/piao_order_list_presenter.dart';
  7. import 'package:liftmanager/mvp/base_page_state.dart';
  8. import 'package:liftmanager/res/resources.dart';
  9. import 'package:liftmanager/utils/time_format.dart';
  10. import 'package:liftmanager/widgets/app_bar.dart';
  11. import 'package:liftmanager/widgets/load_image.dart';
  12. import 'package:liftmanager/widgets/my_refresh_list.dart';
  13. import 'package:liftmanager/widgets/state_layout.dart';
  14. import 'package:provider/provider.dart';
  15. class PiaoOrder extends StatefulWidget {
  16. PiaoOrder(this.id);
  17. final String id;
  18. @override
  19. PiaoOrderState createState() => PiaoOrderState();
  20. }
  21. class PiaoOrderState extends BasePageState<PiaoOrder, PiaoOrderListPresenter> {
  22. BaseListProvider<Records> provider = BaseListProvider<Records>();
  23. List<dynamic> paramsList = [
  24. {
  25. "pic": "temporary/avator1",
  26. "name": "张涛",
  27. "serviceType": "出诊服务",
  28. "time": "01月05日",
  29. "brand": "奥的斯",
  30. "desc": "电梯故障紧急维修、电梯保养、电梯短路处理、电梯闸门故障维修",
  31. "price": "20",
  32. },
  33. {
  34. "pic": "temporary/avator2",
  35. "name": "张涛",
  36. "serviceType": "出诊服务",
  37. "time": "01月05日",
  38. "brand": "奥的斯",
  39. "desc": "电梯故障紧急维修、电梯保养、电梯短路处理、电梯闸门故障维修",
  40. "price": "20",
  41. },
  42. {
  43. "pic": "temporary/avator2",
  44. "name": "张涛",
  45. "serviceType": "出诊服务",
  46. "time": "01月05日",
  47. "brand": "奥的斯",
  48. "desc": "电梯故障紧急维修、电梯保养、电梯短路处理、电梯闸门故障维修",
  49. "price": "20",
  50. },
  51. ];
  52. int _page = 1;
  53. @override
  54. void initState() {
  55. provider.setStateTypeNotNotify(StateType.loading);
  56. super.initState();
  57. _onRefresh();
  58. print(66666);
  59. }
  60. @override
  61. Widget build(BuildContext context) {
  62. double width = MediaQuery.of(context).size.width;
  63. double height = MediaQuery.of(context).size.height;
  64. return ChangeNotifierProvider<BaseListProvider<Records>>(
  65. create: (_) => provider,
  66. child: Scaffold(
  67. appBar: MyAppBar(
  68. centerTitle: "发票订单",
  69. ),
  70. body: Container(
  71. color: Color(0xFFF6F6F6),
  72. // color: Color(0xFFF1F4FC),
  73. child: Column(
  74. crossAxisAlignment: CrossAxisAlignment.start,
  75. children: <Widget>[
  76. Expanded(
  77. flex: 1,
  78. child: Consumer<BaseListProvider<Records>>(
  79. builder: (_, provider, __) {
  80. return MyListView(
  81. key: Key('piao_order_list'),
  82. itemCount: provider.list.length,
  83. stateType: provider.stateType,
  84. onRefresh: _onRefresh,
  85. loadMore: _loadMore,
  86. pageSize: 6,
  87. hasMore: provider.hasMore,
  88. itemBuilder: (_, index) {
  89. return Container(
  90. // height: 20,
  91. padding: EdgeInsets.only(
  92. bottom: ScreenUtil().setWidth(15),
  93. left: ScreenUtil().setWidth(10),
  94. right: ScreenUtil().setWidth(10),
  95. top: ScreenUtil().setWidth(15)),
  96. // : EdgeInsets.only(
  97. // left: ScreenUtil().setWidth(10),
  98. // right: ScreenUtil().setWidth(10),
  99. // top: ScreenUtil().setWidth(15)),
  100. margin: EdgeInsets.fromLTRB(10, 10, 10, 0),
  101. decoration: new BoxDecoration(
  102. //背景
  103. color: Colors.white,
  104. //设置四周圆角 角度
  105. borderRadius:
  106. BorderRadius.all(Radius.circular(5.0)),
  107. ),
  108. child: Row(
  109. crossAxisAlignment: CrossAxisAlignment.start,
  110. children: <Widget>[
  111. Expanded(
  112. child: GestureDetector(
  113. onTap: () {
  114. // NavigatorUtils.push(
  115. // context, "${WodeRouter.orderDetail}?id=${lists[i].id}");
  116. // NavigatorUtils.push(context,
  117. // "${BbsRouter.recommendAsk}?id=${detailObj.id}&type=3");
  118. },
  119. child: Row(
  120. crossAxisAlignment:
  121. CrossAxisAlignment.start,
  122. children: <Widget>[
  123. SizedBox(
  124. width: 10,
  125. ),
  126. ClipRRect(
  127. borderRadius:
  128. BorderRadius.circular(20),
  129. child: LoadNetworkImage(
  130. provider.list[index].avatarUrl,
  131. width: ScreenUtil().setWidth(43),
  132. height: ScreenUtil().setWidth(43),
  133. // alignment: Alignment.centerLeft,
  134. ),
  135. ),
  136. SizedBox(
  137. width: 10,
  138. ),
  139. Expanded(
  140. child: Container(
  141. padding: EdgeInsets.only(right: 10),
  142. child: Column(
  143. children: <Widget>[
  144. Container(
  145. child: Row(
  146. mainAxisAlignment:
  147. MainAxisAlignment.start,
  148. children: <Widget>[
  149. Row(
  150. crossAxisAlignment:
  151. CrossAxisAlignment
  152. .center,
  153. children: <Widget>[
  154. Text(
  155. provider.list[index]
  156. .name ??
  157. '',
  158. style: TextStyle(
  159. fontSize:
  160. ScreenUtil()
  161. .setSp(
  162. 17),
  163. ),
  164. textAlign:
  165. TextAlign.start,
  166. ),
  167. Container(
  168. decoration:
  169. BoxDecoration(
  170. //背景
  171. color: provider
  172. .list[
  173. index]
  174. .dataTable ==
  175. 1
  176. ? Colours
  177. .blue_app_main
  178. : Color(
  179. 0xffFDAF2C),
  180. //设置四周圆角 角度
  181. borderRadius: BorderRadius
  182. .all(Radius
  183. .circular(
  184. 4.0)),
  185. ),
  186. margin:
  187. EdgeInsets.only(
  188. left: 5),
  189. padding:
  190. EdgeInsets.only(
  191. left: 5,
  192. right: 5,
  193. top: 2,
  194. bottom: 2),
  195. child: Text(
  196. provider.list[index]
  197. .dataTable ==
  198. 1
  199. ? '问诊服务'
  200. : '出诊服务',
  201. style: TextStyle(
  202. color: Colors
  203. .white,
  204. fontSize:
  205. ScreenUtil()
  206. .setSp(
  207. 14),
  208. ),
  209. textAlign:
  210. TextAlign
  211. .start,
  212. ),
  213. ),
  214. ],
  215. ),
  216. ],
  217. ),
  218. ),
  219. Container(
  220. child: Row(
  221. mainAxisAlignment:
  222. MainAxisAlignment
  223. .spaceBetween,
  224. children: <Widget>[
  225. Row(
  226. crossAxisAlignment:
  227. CrossAxisAlignment
  228. .center,
  229. children: <Widget>[
  230. Text(
  231. provider.list[index]
  232. .createTime !=
  233. null
  234. ? DateUtils
  235. .instance
  236. .getFormartData(
  237. timeSamp: provider
  238. .list[
  239. index]
  240. .createTime,
  241. format:
  242. "MM月dd日")
  243. : '',
  244. style: TextStyle(
  245. color: Color(
  246. 0xff999999),
  247. fontSize:
  248. ScreenUtil()
  249. .setSp(
  250. 13),
  251. ),
  252. textAlign:
  253. TextAlign.start,
  254. ),
  255. Container(
  256. padding:
  257. EdgeInsets.only(
  258. left: 5),
  259. child: Text(
  260. provider
  261. .list[
  262. index]
  263. .brandName ??
  264. '',
  265. style: TextStyle(
  266. color: Colours
  267. .blue_app_main,
  268. fontSize:
  269. ScreenUtil()
  270. .setSp(
  271. 13),
  272. ),
  273. textAlign:
  274. TextAlign
  275. .start,
  276. ),
  277. )
  278. ],
  279. ),
  280. ],
  281. ),
  282. ),
  283. provider.list[index]
  284. .dataTable !=
  285. 1
  286. ? Container(
  287. child: Row(
  288. mainAxisAlignment:
  289. MainAxisAlignment
  290. .spaceBetween,
  291. children: <Widget>[
  292. Row(
  293. crossAxisAlignment:
  294. CrossAxisAlignment
  295. .start,
  296. children: <
  297. Widget>[
  298. Container(
  299. // padding: EdgeInsets.only(left: 5),
  300. child: Text(
  301. '出诊时间:',
  302. style:
  303. TextStyle(
  304. color: Color(
  305. 0xff999999),
  306. fontSize:
  307. ScreenUtil()
  308. .setSp(13),
  309. ),
  310. textAlign:
  311. TextAlign
  312. .start,
  313. ),
  314. ),
  315. Text(
  316. provider.list[index].createTime !=
  317. null
  318. ? DateUtils.instance.getFormartData(
  319. timeSamp: provider
  320. .list[
  321. index]
  322. .createTime,
  323. format:
  324. "MM月dd日 HH:mm")
  325. : '',
  326. style:
  327. TextStyle(
  328. color: Color(
  329. 0xff666666),
  330. fontSize: ScreenUtil()
  331. .setSp(
  332. 13),
  333. ),
  334. textAlign:
  335. TextAlign
  336. .start,
  337. ),
  338. ],
  339. ),
  340. ],
  341. ),
  342. )
  343. : Container(),
  344. provider.list[index]
  345. .dataTable !=
  346. 1
  347. ? Container(
  348. // margin: EdgeInsets.only(top: 6),
  349. child: Row(
  350. children: <Widget>[
  351. Container(
  352. // padding: EdgeInsets.only(left: 5),
  353. child: Text(
  354. '出诊地点:',
  355. style:
  356. TextStyle(
  357. color: Color(
  358. 0xff999999),
  359. fontSize:
  360. ScreenUtil()
  361. .setSp(
  362. 13),
  363. ),
  364. textAlign:
  365. TextAlign
  366. .start,
  367. ),
  368. ),
  369. Container(
  370. width:
  371. ScreenUtil()
  372. .setWidth(
  373. 200),
  374. child: Text(
  375. '${provider.list[index].address ?? ''}',
  376. style:
  377. TextStyle(
  378. color: Color(
  379. 0xff666666),
  380. fontSize:
  381. ScreenUtil()
  382. .setSp(
  383. 13),
  384. // color: Color(0xff666666),
  385. // fontSize: ScreenUtil().setSp(15),
  386. ),
  387. textAlign:
  388. TextAlign
  389. .start,
  390. maxLines: 1,
  391. overflow:
  392. TextOverflow
  393. .ellipsis,
  394. ),
  395. ),
  396. ],
  397. ),
  398. )
  399. : Container(),
  400. Container(
  401. // margin: EdgeInsets.only(top: 6),
  402. child: Row(
  403. children: <Widget>[
  404. Container(
  405. // padding: EdgeInsets.only(left: 5),
  406. child: Text(
  407. '问题描述:',
  408. style: TextStyle(
  409. color: Color(
  410. 0xff999999),
  411. fontSize:
  412. ScreenUtil()
  413. .setSp(13),
  414. ),
  415. textAlign:
  416. TextAlign.start,
  417. ),
  418. ),
  419. Container(
  420. width: ScreenUtil()
  421. .setWidth(200),
  422. child: Text(
  423. '${provider.list[index].expression ?? ''}',
  424. style: TextStyle(
  425. color: Color(
  426. 0xff666666),
  427. fontSize:
  428. ScreenUtil()
  429. .setSp(13),
  430. // color: Color(0xff666666),
  431. // fontSize: ScreenUtil().setSp(15),
  432. ),
  433. textAlign:
  434. TextAlign.start,
  435. maxLines: 1,
  436. overflow: TextOverflow
  437. .ellipsis,
  438. ),
  439. ),
  440. ],
  441. ),
  442. ),
  443. Container(
  444. margin:
  445. EdgeInsets.only(top: 6),
  446. child: Row(
  447. children: <Widget>[
  448. Container(
  449. padding:
  450. EdgeInsets.only(
  451. right: 5),
  452. child: Text(
  453. provider.list[index]
  454. .payCost !=
  455. null
  456. ? "¥${provider.list[index].payCost.toString()}"
  457. : '',
  458. style: TextStyle(
  459. color: Color(
  460. 0xffFD0808),
  461. fontSize:
  462. ScreenUtil()
  463. .setSp(15),
  464. ),
  465. textAlign:
  466. TextAlign.start,
  467. ),
  468. ),
  469. ],
  470. ),
  471. )
  472. // Container(
  473. // child: Row(
  474. // mainAxisAlignment:
  475. // MainAxisAlignment.start,
  476. // children: <Widget>[
  477. // Row(
  478. // crossAxisAlignment:
  479. // CrossAxisAlignment
  480. // .center,
  481. // children: <Widget>[
  482. // Text(
  483. // detailObj.createTime !=
  484. // null
  485. // ? DateUtils
  486. // .instance
  487. // .getFormartData(
  488. // timeSamp:
  489. // detailObj
  490. // .createTime,
  491. // format:
  492. // "MM月dd日",
  493. // )
  494. // : '',
  495. // style: TextStyle(
  496. // color: Color(
  497. // 0xff999999),
  498. // fontSize:
  499. // ScreenUtil()
  500. // .setSp(
  501. // 13),
  502. // ),
  503. // textAlign:
  504. // TextAlign.left,
  505. // ),
  506. // Container(
  507. // padding:
  508. // EdgeInsets.only(
  509. // left: 5),
  510. // child: Text(
  511. // detailObj
  512. // .brandName ??
  513. // '',
  514. // style: TextStyle(
  515. // color: Color(
  516. // 0xff999999),
  517. // fontSize:
  518. // ScreenUtil()
  519. // .setSp(
  520. // 13),
  521. // ),
  522. // textAlign:
  523. // TextAlign
  524. // .left,
  525. // ),
  526. // )
  527. // ],
  528. // ),
  529. // ],
  530. // ),
  531. // ),
  532. // Row(
  533. // mainAxisAlignment:
  534. // MainAxisAlignment.start,
  535. // children: <Widget>[
  536. // Container(
  537. // width: 260,
  538. // child: Text(
  539. // detailObj.expression ??
  540. // '',
  541. // style: TextStyle(
  542. // color:
  543. // Color(0xff0288FF),
  544. // fontSize: ScreenUtil()
  545. // .setSp(15),
  546. // ),
  547. // textAlign:
  548. // TextAlign.left,
  549. // maxLines: 1,
  550. // overflow: TextOverflow
  551. // .ellipsis,
  552. // ),
  553. // ),
  554. // ],
  555. // ),
  556. ],
  557. ),
  558. ),
  559. )
  560. ],
  561. ),
  562. ),
  563. ),
  564. ],
  565. ),
  566. );
  567. },
  568. );
  569. }))
  570. ],
  571. ),
  572. ),
  573. ));
  574. }
  575. Future _onRefresh() async {
  576. _page = 1;
  577. await presenter.getOrderList(_page, int.parse(widget.id));
  578. }
  579. Future _loadMore() async {
  580. _page++;
  581. await presenter.getOrderList(_page, int.parse(widget.id));
  582. }
  583. @override
  584. PiaoOrderListPresenter createPresenter() {
  585. return PiaoOrderListPresenter();
  586. }
  587. }