diff --git a/lib/model/manager/fixed_detail_model.dart b/lib/model/manager/fixed_detail_model.dart new file mode 100644 index 00000000..3f2a14f7 --- /dev/null +++ b/lib/model/manager/fixed_detail_model.dart @@ -0,0 +1,88 @@ +class FixedDetailModel { + AppReportRepairVo appReportRepairVo; + List appProcessRecordVo; + List appMaintenanceResultVo; //暂无用 待修改 + List appDispatchListVo; //暂无用 待修改 + + FixedDetailModel( + {this.appReportRepairVo, + this.appProcessRecordVo, + this.appMaintenanceResultVo, + this.appDispatchListVo}); + + FixedDetailModel.fromJson(Map json) { + appReportRepairVo = json['appReportRepairVo'] != null + ? new AppReportRepairVo.fromJson(json['appReportRepairVo']) + : null; + if (json['appProcessRecordVo'] != null) { + appProcessRecordVo = new List(); + json['appProcessRecordVo'].forEach((v) { + appProcessRecordVo.add(new AppProcessRecordVo.fromJson(v)); + }); + } + appMaintenanceResultVo = json['appMaintenanceResultVo'].cast(); + appDispatchListVo = json['appDispatchListVo'].cast(); + } + + Map toJson() { + final Map data = new Map(); + if (this.appReportRepairVo != null) { + data['appReportRepairVo'] = this.appReportRepairVo.toJson(); + } + if (this.appProcessRecordVo != null) { + data['appProcessRecordVo'] = + this.appProcessRecordVo.map((v) => v.toJson()).toList(); + } + data['appMaintenanceResultVo'] = this.appMaintenanceResultVo; + data['appDispatchListVo'] = this.appDispatchListVo; + return data; + } +} + +class AppReportRepairVo { + int id; + int type; + int status; + String reportDetail; + List imgUrls; + + AppReportRepairVo( + {this.id, this.type, this.status, this.reportDetail, this.imgUrls}); + + AppReportRepairVo.fromJson(Map json) { + id = json['id']; + type = json['type']; + status = json['status']; + reportDetail = json['reportDetail']; + imgUrls = json['imgUrls'].cast(); + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['type'] = this.type; + data['status'] = this.status; + data['reportDetail'] = this.reportDetail; + data['imgUrls'] = this.imgUrls; + return data; + } +} + +class AppProcessRecordVo { + String operationDate; + int operationType; + + AppProcessRecordVo({this.operationDate, this.operationType}); + + AppProcessRecordVo.fromJson(Map json) { + operationDate = json['operationDate']; + operationType = json['operationType']; + } + + Map toJson() { + final Map data = new Map(); + data['operationDate'] = this.operationDate; + data['operationType'] = this.operationType; + return data; + } +} diff --git a/lib/pages/manager_func.dart b/lib/pages/manager_func.dart index 08ba4b5c..9a7754b6 100644 --- a/lib/pages/manager_func.dart +++ b/lib/pages/manager_func.dart @@ -1,5 +1,6 @@ import 'package:akuCommunity/constants/api.dart'; +import 'package:akuCommunity/model/manager/fixed_detail_model.dart'; import 'package:akuCommunity/utils/network/base_model.dart'; import 'package:akuCommunity/utils/network/net_util.dart'; import 'package:flustars/flustars.dart'; @@ -44,4 +45,15 @@ class ManagerFunc { ); return baseModel; } + + static Future reportRepairFindBYLD(int id) async{ + BaseModel baseModel = await NetUtil().post( + API.manager.reportRepairFindBYLD, + params: { + 'repairId':id, + }, + showMessage: false, + ); + return FixedDetailModel.fromJson(baseModel.data); + } } diff --git a/lib/pages/things_page/fixed_submit_page.dart b/lib/pages/things_page/fixed_submit_page.dart index cac0cd42..f10d26d2 100644 --- a/lib/pages/things_page/fixed_submit_page.dart +++ b/lib/pages/things_page/fixed_submit_page.dart @@ -5,6 +5,7 @@ import 'package:akuCommunity/pages/manager_func.dart'; import 'package:akuCommunity/pages/things_page/widget/add_fixed_submit_page.dart'; import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart'; import 'package:akuCommunity/pages/things_page/widget/fixed_check_box.dart'; +import 'package:akuCommunity/pages/things_page/widget/fixed_detail_page.dart'; import 'package:akuCommunity/provider/user_provider.dart'; import 'package:akuCommunity/utils/bee_map.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; @@ -82,64 +83,70 @@ class _FixedSubmitPageState extends State { bottom: 0, duration: Duration(milliseconds: 300), curve: Curves.easeInOutCubic, - child: Container( - width: 686.w, - decoration: BoxDecoration( - color: kForeGroundColor, borderRadius: BorderRadius.circular(8.w)), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.fromLTRB(24.w, 24.w, 24.w, 0), - child: Row( - children: [ - BeeMap() - .fixTag[model.type] - .text - .color(ktextPrimary) - .bold - .size(32.sp) - .make(), - Spacer(), - BeeMap() - .fixState[model.status] - .text - .color(_getColor(model.status)) - .size(24.sp) - .make(), - ], + child: GestureDetector( + onTap: () { + FixedDetailPage(model.id).to(); + }, + child: Container( + width: 686.w, + decoration: BoxDecoration( + color: kForeGroundColor, + borderRadius: BorderRadius.circular(8.w)), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.fromLTRB(24.w, 24.w, 24.w, 0), + child: Row( + children: [ + BeeMap() + .fixTag[model.type] + .text + .color(ktextPrimary) + .bold + .size(32.sp) + .make(), + Spacer(), + BeeMap() + .fixState[model.status] + .text + .color(_getColor(model.status)) + .size(24.sp) + .make(), + ], + ), ), - ), - 24.hb, - Padding( - padding: EdgeInsets.symmetric( - horizontal: 24.w, + 24.hb, + Padding( + padding: EdgeInsets.symmetric( + horizontal: 24.w, + ), + child: Divider( + thickness: 1.w, + height: 0, + ), ), - child: Divider( - thickness: 1.w, - height: 0, + 24.hb, + Padding( + padding: EdgeInsets.symmetric( + horizontal: 24.w, + ), + child: model.reportDetail.text + .color(ktextSubColor) + .size(28.sp) + .ellipsis + .make(), ), - ), - 24.hb, - Padding( - padding: EdgeInsets.symmetric( - horizontal: 24.w, + // 16.hb, + Padding( + padding: EdgeInsets.only(left: 8.w), + child: model.imgUrls.length != 0 + ? HorizontalImageView(List.generate(model.imgUrls.length, + (index) => model.imgUrls[index].url)) + : SizedBox(), ), - child: model.reportDetail.text - .color(ktextSubColor) - .size(28.sp) - .ellipsis - .make(), - ), - // 16.hb, - Padding( - padding: EdgeInsets.only(left: 8.w), - child: model.imgUrls.length != 0 - ? HorizontalImageView(List.generate(model.imgUrls.length, - (index) => model.imgUrls[index].url)) - : SizedBox(), - ), - ], + ], + ), ), ), ); @@ -179,8 +186,8 @@ class _FixedSubmitPageState extends State { .bold .isIntrinsic .make(), - onPressed: () async{ - await ManagerFunc.reportRepairDelete(_selected); + onPressed: () async { + await ManagerFunc.reportRepairDelete(_selected); Get.back(); _selected.clear(); _easyRefreshController.callRefresh(); diff --git a/lib/pages/things_page/widget/fixed_detail_page.dart b/lib/pages/things_page/widget/fixed_detail_page.dart new file mode 100644 index 00000000..d77f1d34 --- /dev/null +++ b/lib/pages/things_page/widget/fixed_detail_page.dart @@ -0,0 +1,142 @@ +import 'package:akuCommunity/base/base_style.dart'; +import 'package:akuCommunity/model/manager/fixed_detail_model.dart'; +import 'package:akuCommunity/pages/manager_func.dart'; +import 'package:akuCommunity/utils/bee_map.dart'; +import 'package:akuCommunity/widget/bee_divider.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:akuCommunity/widget/horizontal_image_view.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:velocity_x/velocity_x.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:akuCommunity/utils/headers.dart'; + +class FixedDetailPage extends StatefulWidget { + final int id; + FixedDetailPage( + this.id, { + Key key, + }) : super(key: key); + + @override + _FixedDetailPageState createState() => _FixedDetailPageState(); +} + +class _FixedDetailPageState extends State { + EasyRefreshController _easyRefreshController; + FixedDetailModel _model; + Color _getColor(int state) { + switch (state) { + case 1: + case 2: + case 3: + return kDarkPrimaryColor; + case 4: + case 5: + case 6: + case 7: + return ktextSubColor; + default: + return kDangerColor; + } + } + + Widget _buildHead(FixedDetailModel model) { + return Container( + child: Column( + children: [ + Padding( + padding: EdgeInsets.fromLTRB(28.w, 20.w, 20.w, 24.w), + child: Row( + children: [ + '报修信息'.text.black.size(32.sp).bold.make(), + 8.widthBox, + Container( + padding: + EdgeInsets.symmetric(horizontal: 20.w, vertical: 4.w), + decoration: BoxDecoration( + border: Border.all( + color: kPrimaryColor, + width: 2.w, + ), + borderRadius: BorderRadius.circular(36.w), + color: Colors.transparent, + ), + child: BeeMap() + .fixTag[model.appReportRepairVo.type] + .text + .black + .size(20.sp) + .make(), + ), + Spacer(), + BeeMap() + .fixState[model.appReportRepairVo.status] + .text + .color(_getColor(_model.appReportRepairVo.status)) + .size(24.sp) + .bold + .make() + ], + ), + ), + BeeDivider.horizontal( + indent: 24.w, + endIndent: 20.w, + ), + 24.heightBox, + Padding( + padding: EdgeInsets.symmetric(horizontal: 28.w), + child: model.appReportRepairVo.reportDetail.text.black + .size(28.sp) + .maxLines(8) + .overflow(TextOverflow.ellipsis) + .make(), + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 8.w), + child: HorizontalImageView(model.appReportRepairVo.imgUrls), + ) + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '报事报修', + body: Column( + children: [ + EasyRefresh( + firstRefresh: true, + controller: _easyRefreshController, + onRefresh: () async { + _model = await ManagerFunc.reportRepairFindBYLD(widget.id); + }, + child: ListView( + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 36.w), + children: [ + _buildHead(_model), + ].sepWidget(separate: 16.heightBox), + ), + ).expand(), + Padding( + padding: EdgeInsets.only( + bottom: MediaQuery.of(context).padding.bottom + 39.w), + child: MaterialButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(48.w)), + color: kPrimaryColor, + padding: EdgeInsets.symmetric(horizontal: 278.w, vertical: 26.w), + elevation: 0, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + onPressed: () {}, + child: '确认完成'.text.black.size(32.sp).bold.make(), + ), + ) + ], + ), + ); + } +} diff --git a/lib/widget/bee_divider.dart b/lib/widget/bee_divider.dart index 29aa5236..db072e2c 100644 --- a/lib/widget/bee_divider.dart +++ b/lib/widget/bee_divider.dart @@ -16,17 +16,15 @@ class BeeDivider extends StatelessWidget { this.isHorizontal}) : super(key: key); BeeDivider.horizontal({ - Key key, - }) : indent = 0, - endIndent = 0, + Key key, this.indent, this.endIndent, + }) : thickness = 1.w, color = Color(0xFFE8E8E8), isHorizontal = true, super(key: key); BeeDivider.vertical({ - Key key, - }) : indent = 0, - endIndent = 0, + Key key, this.indent, this.endIndent, + }) : thickness = 1.w, color = Color(0xFFE8E8E8), isHorizontal = false,