对接:巡检管理:提交巡检点信息

hmxc
张萌 4 years ago
parent d06397726a
commit a598809359

@ -157,6 +157,9 @@ class _Manage {
/// ///
String get inspectionFindCheckDetailByQR => String get inspectionFindCheckDetailByQR =>
'/user/inspection/findCheckDetailByQR'; '/user/inspection/findCheckDetailByQR';
///
String get submitPointDetail => '/user/inspection/submitPointDetail';
} }
class _Upload { class _Upload {

@ -0,0 +1,16 @@
import 'dart:io';
class InspectionPointSubmitModel {
int executePointId;
List<ExecuteCheckList> executeCheckList;
File inspectionFaceImg;
File inspectionSpaceImg;
InspectionPointSubmitModel();
}
class ExecuteCheckList {
int id;
int status;
String remarks;
ExecuteCheckList();
}

@ -0,0 +1,54 @@
class InspectionQRCodeModel {
int id;
String code;
String name;
int type;
List<CheckVoList> checkVoList;
InspectionQRCodeModel(
{this.id, this.code, this.name, this.type, this.checkVoList});
InspectionQRCodeModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
code = json['code'];
name = json['name'];
type = json['type'];
if (json['checkVoList'] != null) {
checkVoList = new List<CheckVoList>();
json['checkVoList'].forEach((v) {
checkVoList.add(new CheckVoList.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['code'] = this.code;
data['name'] = this.name;
data['type'] = this.type;
if (this.checkVoList != null) {
data['checkVoList'] = this.checkVoList.map((v) => v.toJson()).toList();
}
return data;
}
}
class CheckVoList {
int id;
String name;
CheckVoList({this.id, this.name});
CheckVoList.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}

@ -2,6 +2,7 @@
import 'package:aku_community_manager/const/api.dart'; import 'package:aku_community_manager/const/api.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_detail_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_detail_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_point_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_point_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_qrcode_model.dart';
import 'package:aku_community_manager/ui/manage_pages/inspection_manage/inspection_point_input_page.dart'; import 'package:aku_community_manager/ui/manage_pages/inspection_manage/inspection_point_input_page.dart';
import 'package:aku_community_manager/ui/manage_pages/inspection_manage/qr_code_parase.dart'; import 'package:aku_community_manager/ui/manage_pages/inspection_manage/qr_code_parase.dart';
import 'package:aku_community_manager/ui/manage_pages/inspection_manage/qr_scanner_page.dart'; import 'package:aku_community_manager/ui/manage_pages/inspection_manage/qr_scanner_page.dart';
@ -149,7 +150,12 @@ class _InspectionManageDetailsPageState
_detailModel.id, _detailModel.id,
QRCodeParase.getExecutePointId(result.code)); QRCodeParase.getExecutePointId(result.code));
if (baseModel.status) { if (baseModel.status) {
Get.to(() => InspectionPointInputPage()); Get.to(() => InspectionPointInputPage(
hasScan: true,
inspectionName: _detailModel.name,
qrModel: InspectionQRCodeModel.fromJson(
baseModel.data),
));
} else { } else {
showCupertinoDialog( showCupertinoDialog(
context: context, context: context,

@ -1,29 +1,23 @@
import 'dart:io'; import 'dart:io';
import 'package:aku_community_manager/models/manager/inspection/inspection_detail_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_point_submit_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_point_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_qrcode_model.dart';
import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/style/app_style.dart';
import 'package:aku_community_manager/ui/manage_pages/inspection_manage/inspection_utils.dart'; import 'package:aku_community_manager/ui/manage_pages/inspection_manage/inspection_utils.dart';
import 'package:aku_community_manager/ui/widgets/app_widgets/aku_pick_image_widget.dart'; import 'package:aku_community_manager/ui/widgets/app_widgets/aku_pick_image_widget.dart';
import 'package:aku_community_manager/ui/widgets/app_widgets/aku_single_check_button.dart'; import 'package:aku_community_manager/ui/widgets/app_widgets/aku_single_check_button.dart';
import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart';
import 'package:common_utils/common_utils.dart'; import 'package:aku_ui/aku_ui.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:velocity_x/velocity_x.dart'; import 'package:velocity_x/velocity_x.dart';
class InspectionPointInputPage extends StatefulWidget { class InspectionPointInputPage extends StatefulWidget {
final bool hasScan; final bool hasScan;
final InspectionDetailModel detailModel; final InspectionQRCodeModel qrModel;
final int inspectionStatus; final String inspectionName;
final InspectionPointModel pointModel;
InspectionPointInputPage( InspectionPointInputPage(
{Key key, {Key key, this.hasScan = true, this.qrModel, this.inspectionName})
this.hasScan,
this.detailModel,
this.inspectionStatus,
this.pointModel})
: super(key: key); : super(key: key);
@override @override
@ -32,26 +26,16 @@ class InspectionPointInputPage extends StatefulWidget {
} }
class _InspectionPointInputPageState extends State<InspectionPointInputPage> { class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
TextEditingController _cleaningExtraController; InspectionPointSubmitModel _submitModel;
TextEditingController _meterExtraController; InspectionQRCodeModel _model;
TextEditingController _meterCountContrlller;
int _cleaningStatus;
int _meterStatus;
File _selfPhoto;
File _scenePhoto;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_cleaningExtraController = TextEditingController(); _model = widget.qrModel;
_meterExtraController = TextEditingController();
_meterCountContrlller = TextEditingController();
} }
@override @override
void dispose() { void dispose() {
_cleaningExtraController?.dispose();
_meterExtraController?.dispose();
_meterCountContrlller?.dispose();
super.dispose(); super.dispose();
} }
@ -64,12 +48,25 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
16.w.heightBox, 16.w.heightBox,
_inspectionHeadCard(), _inspectionHeadCard(),
16.w.heightBox, 16.w.heightBox,
_cleaningCard(), ...widget.hasScan
_meterCard(), ? [
_selfPhotoCard(), ..._model.checkVoList
_scenePhotoCard(), .map((e) =>
_meterCard(e.name, _model.checkVoList.indexOf(e)))
.toList(),
_selfPhotoCard(),
_scenePhotoCard(),
]
: []
], ],
), ),
bottom: AkuButton(
width: double.infinity,
height: 100.w,
child: '立即提交'.text.color(kTextPrimaryColor).bold.size(32.sp).make(),
color: kPrimaryColor,
padding: EdgeInsets.symmetric(vertical: 26.w),
).pOnly(bottom: MediaQuery.of(context).padding.bottom),
); );
} }
@ -84,7 +81,7 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
32.w.heightBox, 32.w.heightBox,
AkuPickImageWidget( AkuPickImageWidget(
onChanged: (file) { onChanged: (file) {
_scenePhoto = file; _submitModel.inspectionFaceImg = file;
}, },
), ),
], ],
@ -102,19 +99,22 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
32.w.heightBox, 32.w.heightBox,
AkuPickImageWidget( AkuPickImageWidget(
onChanged: (file) { onChanged: (file) {
_selfPhoto = file; _submitModel.inspectionSpaceImg = file;
}, },
), ),
], ],
).box.color(Colors.white).make(); ).box.color(Colors.white).make();
} }
Widget _meterCard() { Widget _meterCard(
String title,
int index,
) {
return Column( return Column(
children: [ children: [
Row( Row(
children: [ children: [
'2.检查小区南门抄表数据'.text.color(kTextPrimaryColor).size(32.sp).make() '2.$title'.text.color(kTextPrimaryColor).size(32.sp).make()
], ],
), ),
32.w.heightBox, 32.w.heightBox,
@ -123,48 +123,48 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
AkuSingleCheckButton( AkuSingleCheckButton(
text: '正常', text: '正常',
value: 0, value: 0,
gropValue: _meterStatus, gropValue: _submitModel.executeCheckList[index].status,
onPressed: () { onPressed: () {
_cleaningStatus = 0; _submitModel.executeCheckList[index].status = 0;
}, },
), ),
80.w.widthBox, 80.w.widthBox,
AkuSingleCheckButton( AkuSingleCheckButton(
text: '异常', text: '异常',
value: 0, value: 0,
gropValue: _meterStatus, gropValue: _submitModel.executeCheckList[index].status,
onPressed: () { onPressed: () {
_cleaningStatus = 1; _submitModel.executeCheckList[index].status = 1;
}, },
), ),
], ],
), ),
36.w.heightBox, 36.w.heightBox,
Row( // Row(
children: [ // children: [
'抄表值'.text.color(kTextPrimaryColor).size(28.sp).make(), // '抄表值'.text.color(kTextPrimaryColor).size(28.sp).make(),
Spacer(), // Spacer(),
TextField( // TextField(
controller: _meterCountContrlller, // controller: _meterCountContrlller,
textAlign: TextAlign.end, // textAlign: TextAlign.end,
inputFormatters: [ // inputFormatters: [
FilteringTextInputFormatter.allow(RegExp('[0-9]*')) // FilteringTextInputFormatter.allow(RegExp('[0-9]*'))
], // ],
decoration: InputDecoration( // decoration: InputDecoration(
border: InputBorder.none, // border: InputBorder.none,
hintText: '请输入抄表值', // hintText: '请输入抄表值',
hintStyle: TextStyle( // hintStyle: TextStyle(
fontSize: 28.sp, // fontSize: 28.sp,
color: kTextSubColor, // color: kTextSubColor,
), // ),
contentPadding: EdgeInsets.zero, // contentPadding: EdgeInsets.zero,
isDense: true, // isDense: true,
), // ),
) // )
], // ],
), // ),
28.w.heightBox, // 28.w.heightBox,
Divider(), // Divider(),
Container( Container(
width: 686.w, width: 686.w,
height: 120.w, height: 120.w,
@ -177,7 +177,9 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
), ),
child: TextField( child: TextField(
minLines: 5, minLines: 5,
controller: _meterExtraController, onChanged: (value) {
_submitModel.executeCheckList[index].remarks = value;
},
decoration: InputDecoration( decoration: InputDecoration(
hintText: '请输入备注信息', hintText: '请输入备注信息',
hintStyle: TextStyle( hintStyle: TextStyle(
@ -198,71 +200,6 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
.make(); .make();
} }
Widget _cleaningCard() {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
'1.${widget.pointModel.name}'.text.black.size(32.sp).bold.make()
],
),
32.w.heightBox,
Row(
children: [
AkuSingleCheckButton(
text: '正常',
value: 0,
gropValue: _cleaningStatus,
onPressed: () {
_cleaningStatus = 0;
},
),
80.w.widthBox,
AkuSingleCheckButton(
text: '异常',
value: 0,
gropValue: _cleaningStatus,
onPressed: () {
_cleaningStatus = 1;
},
),
],
),
32.w.heightBox,
Container(
width: 686.w,
height: 120.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.w),
border: Border.all(
width: 2.w,
color: Color(0xFFE8E8E8),
),
),
child: TextField(
minLines: 5,
controller: _cleaningExtraController,
decoration: InputDecoration(
hintText: '请输入备注信息',
hintStyle: TextStyle(
fontSize: 28.sp,
color: kTextSubColor,
),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
isDense: true,
),
),
),
],
)
.box
.color(Colors.white)
.padding(EdgeInsets.symmetric(vertical: 24.w, horizontal: 32.w))
.make();
}
Widget _inspectionHeadCard() { Widget _inspectionHeadCard() {
return Column( return Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
@ -283,18 +220,18 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
child: Row( child: Row(
children: [ children: [
Text( Text(
'${widget.detailModel.name}', '巡检点信息',
style: TextStyle( style: TextStyle(
color: AppStyle.primaryTextColor, color: AppStyle.primaryTextColor,
fontSize: 36.sp, fontSize: 36.sp,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
), ),
Spacer(), // Spacer(),
InspectionUtils.status[widget.inspectionStatus].text // InspectionUtils.status[widget.detailModel.status].text
.color(InspectionUtils.color(widget.inspectionStatus)) // .color(InspectionUtils.color(widget.detailModel.status))
.bold // .bold
.size(28.sp) // .size(28.sp)
.make() // .make()
], ],
), ),
), ),
@ -318,7 +255,7 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
), ),
36.w.widthBox, 36.w.widthBox,
Text( Text(
widget.detailModel.name, widget.inspectionName,
maxLines: 2, maxLines: 2,
textAlign: TextAlign.right, textAlign: TextAlign.right,
style: AppStyle().primaryStyle, style: AppStyle().primaryStyle,
@ -335,12 +272,12 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
), ),
4.w.widthBox, 4.w.widthBox,
Text( Text(
'巡检编号', '巡检编号',
style: InspectionUtils.textstyle, style: InspectionUtils.textstyle,
), ),
Spacer(), Spacer(),
Text( Text(
widget.detailModel.code, widget.qrModel.code,
style: AppStyle().primaryStyle, style: AppStyle().primaryStyle,
) )
], ],
@ -355,62 +292,36 @@ class _InspectionPointInputPageState extends State<InspectionPointInputPage> {
), ),
4.w.widthBox, 4.w.widthBox,
Text( Text(
'规定巡检时间', '巡检点名称',
style: InspectionUtils.textstyle, style: InspectionUtils.textstyle,
), ),
Spacer(), Spacer(),
Text( Text(
'${DateUtil.formatDateStr(widget.detailModel.beginDate, format: "yyyy-MM-dd HH:mm")}${widget.detailModel?.endDate == null ? '' : DateUtil.formatDateStr(widget.detailModel.endDate, format: "HH:mm")}', '${widget.qrModel.name}',
style: AppStyle().primaryStyle, style: AppStyle().primaryStyle,
), ),
], ],
), ),
12.w.heightBox, 12.w.heightBox,
...widget.detailModel?.actualBeginDate == null Row(
? <Widget>[SizedBox()] children: [
: [ Image.asset(
Row( R.ASSETS_MESSAGE_IC_PEOPLE_PNG,
children: [ width: 40.w,
Image.asset( height: 40.w,
R.ASSETS_MANAGE_IC_TIME_PNG, ),
width: 40.w, 4.w.widthBox,
height: 40.w, Text(
), '巡检模式',
4.w.widthBox, style: InspectionUtils.textstyle,
Text( ),
'开始巡检时间', Spacer(),
style: InspectionUtils.textstyle, Text(
), '${widget.qrModel.type}',
Spacer(), style: AppStyle().primaryStyle,
Text( ),
'${DateUtil.formatDateStr(widget.detailModel.actualBeginDate, format: "yyyy-MM-dd HH:mm")}', ],
style: AppStyle().primaryStyle, )
),
],
),
12.w.heightBox,
],
widget.detailModel?.actualEndDate == null
? SizedBox()
: Row(
children: [
Image.asset(
R.ASSETS_MESSAGE_IC_PEOPLE_PNG,
width: 40.w,
height: 40.w,
),
4.w.widthBox,
Text(
'结束巡检时间',
style: InspectionUtils.textstyle,
),
Spacer(),
Text(
'${DateUtil.formatDateStr(widget.detailModel.actualEndDate, format: "yyyy-MM-dd HH:mm")}',
style: AppStyle().primaryStyle,
),
],
)
]), ]),
), ),
], ],

@ -2,6 +2,7 @@ import 'package:aku_community_manager/const/api.dart';
import 'package:aku_community_manager/models/manager/decoration/decoration_detail_model.dart'; import 'package:aku_community_manager/models/manager/decoration/decoration_detail_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_detail_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_detail_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_point_model.dart'; import 'package:aku_community_manager/models/manager/inspection/inspection_point_model.dart';
import 'package:aku_community_manager/models/manager/inspection/inspection_point_submit_model.dart';
import 'package:aku_community_manager/utils/network/base_model.dart'; import 'package:aku_community_manager/utils/network/base_model.dart';
import 'package:aku_community_manager/utils/network/net_util.dart'; import 'package:aku_community_manager/utils/network/net_util.dart';
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
@ -65,4 +66,17 @@ class ManageFunc {
params: {"executeId": executeId, "executePointId": excutePointId}); params: {"executeId": executeId, "executePointId": excutePointId});
return baseModel; return baseModel;
} }
static Future getSubmitPoint(InspectionPointSubmitModel model) async {
Response response = await NetUtil()
.dio
.post(API.manage.submitPointDetail, queryParameters: {
"executePointId": model.executePointId,
"executeCheckList": model.executeCheckList,
"inspectionFaceImg": [],
"inspectionSpaceImg": []
});
return response.data;
}
} }

Loading…
Cancel
Save