parent
32ffd97ee1
commit
cedd52d0e2
@ -0,0 +1,79 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
import 'package:aku_community_manager/models/common/img_model.dart';
|
||||
|
||||
part 'system_message_house_keeping_model.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class SystemMessageHouseKeepingModel extends Equatable {
|
||||
final int id;
|
||||
final String proposerName;
|
||||
final String proposerTel;
|
||||
final String roomName;
|
||||
final int type;
|
||||
final String content;
|
||||
final int status;
|
||||
final int? completion;
|
||||
final String? handlerName;
|
||||
final String? handlerTel;
|
||||
final String? processDescription;
|
||||
final String? handlingTime;
|
||||
final List<ImgModel> handlerImgList;
|
||||
final num? payFee;
|
||||
final int? evaluation;
|
||||
final String? evaluationContent;
|
||||
final String? evaluationTime;
|
||||
final List<ImgModel> evaluationImgList;
|
||||
final String createDate;
|
||||
final List<ImgModel> submitImgList;
|
||||
SystemMessageHouseKeepingModel({
|
||||
required this.id,
|
||||
required this.proposerName,
|
||||
required this.proposerTel,
|
||||
required this.roomName,
|
||||
required this.type,
|
||||
required this.content,
|
||||
required this.status,
|
||||
this.completion,
|
||||
this.handlerName,
|
||||
this.handlerTel,
|
||||
this.processDescription,
|
||||
this.handlingTime,
|
||||
required this.handlerImgList,
|
||||
this.payFee,
|
||||
this.evaluation,
|
||||
this.evaluationContent,
|
||||
this.evaluationTime,
|
||||
required this.evaluationImgList,
|
||||
required this.createDate,
|
||||
required this.submitImgList,
|
||||
});
|
||||
factory SystemMessageHouseKeepingModel.fromJson(Map<String, dynamic> json) =>
|
||||
_$SystemMessageHouseKeepingModelFromJson(json);
|
||||
@override
|
||||
List<Object?> get props {
|
||||
return [
|
||||
id,
|
||||
proposerName,
|
||||
proposerTel,
|
||||
roomName,
|
||||
type,
|
||||
content,
|
||||
status,
|
||||
completion,
|
||||
handlerName,
|
||||
handlerTel,
|
||||
processDescription,
|
||||
handlingTime,
|
||||
handlerImgList,
|
||||
payFee,
|
||||
evaluation,
|
||||
evaluationContent,
|
||||
evaluationTime,
|
||||
evaluationImgList,
|
||||
createDate,
|
||||
submitImgList,
|
||||
];
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'system_message_house_keeping_model.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
SystemMessageHouseKeepingModel _$SystemMessageHouseKeepingModelFromJson(
|
||||
Map<String, dynamic> json) {
|
||||
return SystemMessageHouseKeepingModel(
|
||||
id: json['id'] as int,
|
||||
proposerName: json['proposerName'] as String,
|
||||
proposerTel: json['proposerTel'] as String,
|
||||
roomName: json['roomName'] as String,
|
||||
type: json['type'] as int,
|
||||
content: json['content'] as String,
|
||||
status: json['status'] as int,
|
||||
completion: json['completion'] as int?,
|
||||
handlerName: json['handlerName'] as String?,
|
||||
handlerTel: json['handlerTel'] as String?,
|
||||
processDescription: json['processDescription'] as String?,
|
||||
handlingTime: json['handlingTime'] as String?,
|
||||
handlerImgList: (json['handlerImgList'] as List<dynamic>)
|
||||
.map((e) => ImgModel.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
payFee: json['payFee'] as num?,
|
||||
evaluation: json['evaluation'] as int?,
|
||||
evaluationContent: json['evaluationContent'] as String?,
|
||||
evaluationTime: json['evaluationTime'] as String?,
|
||||
evaluationImgList: (json['evaluationImgList'] as List<dynamic>)
|
||||
.map((e) => ImgModel.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
createDate: json['createDate'] as String,
|
||||
submitImgList: (json['submitImgList'] as List<dynamic>)
|
||||
.map((e) => ImgModel.fromJson(e as Map<String, dynamic>))
|
||||
.toList(),
|
||||
);
|
||||
}
|
@ -0,0 +1,318 @@
|
||||
import 'package:aku_community_manager/const/api.dart';
|
||||
import 'package:aku_community_manager/json_models/message/system_message_house_keeping_model.dart';
|
||||
import 'package:aku_community_manager/style/app_style.dart';
|
||||
import 'package:aku_community_manager/ui/home/messages/message_map.dart';
|
||||
import 'package:aku_community_manager/ui/manage_pages/house_keeping/house_keeping_page.dart';
|
||||
import 'package:aku_community_manager/ui/widgets/common/aku_button.dart';
|
||||
import 'package:aku_community_manager/utils/network/base_model.dart';
|
||||
import 'package:aku_community_manager/utils/network/net_util.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:shimmer/shimmer.dart';
|
||||
import 'package:velocity_x/velocity_x.dart';
|
||||
|
||||
class SystemMessageHouseKeepingCard extends StatefulWidget {
|
||||
final int relationId;
|
||||
final String? date;
|
||||
final int type;
|
||||
SystemMessageHouseKeepingCard(
|
||||
{Key? key, required this.relationId, this.date, required this.type})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
_SystemMessageHouseKeepingCardState createState() =>
|
||||
_SystemMessageHouseKeepingCardState();
|
||||
}
|
||||
|
||||
class _SystemMessageHouseKeepingCardState
|
||||
extends State<SystemMessageHouseKeepingCard> {
|
||||
SystemMessageHouseKeepingModel? _systemModel;
|
||||
bool _onLoad = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
Future.delayed(Duration(milliseconds: 300), () async {
|
||||
_systemModel = await getSystemMessage(widget.relationId);
|
||||
_onLoad = false;
|
||||
setState(() {});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return (_systemModel == null || _onLoad)
|
||||
? _loadingWidget()
|
||||
: _messageList(_systemModel!);
|
||||
}
|
||||
|
||||
Future getSystemMessage(int relationId) async {
|
||||
BaseModel baseModel =
|
||||
await NetUtil().get(API.message.getSysHygienceMessageById, params: {
|
||||
"housekeepingServiceId": relationId,
|
||||
});
|
||||
if (baseModel.status ?? false) {
|
||||
return SystemMessageHouseKeepingModel.fromJson(baseModel.data);
|
||||
}
|
||||
}
|
||||
|
||||
Widget _loadingWidget() {
|
||||
return Column(
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(top: 24.w, bottom: 24.w),
|
||||
alignment: Alignment.center,
|
||||
width: double.infinity,
|
||||
child: Shimmer.fromColors(
|
||||
baseColor: kPrimaryColor.withOpacity(0.3),
|
||||
highlightColor: kPrimaryColor.withOpacity(0.1),
|
||||
child: Text(
|
||||
'',
|
||||
style: TextStyle(color: AppStyle.minorTextColor, fontSize: 24.sp),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 24.w, left: 24.w, right: 24.w),
|
||||
color: Color(0xFFFFFFFF),
|
||||
child: Shimmer.fromColors(
|
||||
baseColor: kPrimaryColor.withOpacity(0.3),
|
||||
highlightColor: kPrimaryColor.withOpacity(0.1),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(children: [
|
||||
Container(
|
||||
width: 16.w,
|
||||
height: 16.w,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.w),
|
||||
color: Color(0xFFFF4501)),
|
||||
),
|
||||
SizedBox(
|
||||
width: 16.w,
|
||||
),
|
||||
Text(
|
||||
'',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor,
|
||||
fontSize: 32.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(height: 8.w),
|
||||
]),
|
||||
Text(
|
||||
'',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor,
|
||||
fontSize: 28.sp,
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
SizedBox(height: 24.w),
|
||||
Row(
|
||||
children: [
|
||||
Image.asset(
|
||||
R.ASSETS_MESSAGE_IC_PEOPLE_PNG,
|
||||
width: 40.w,
|
||||
height: 40.w,
|
||||
),
|
||||
SizedBox(
|
||||
width: 4.w,
|
||||
),
|
||||
Text(
|
||||
'',
|
||||
style: TextStyle(
|
||||
color: AppStyle.minorTextColor, fontSize: 28.sp),
|
||||
),
|
||||
Spacer(),
|
||||
Text(
|
||||
'',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor, fontSize: 28.sp),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16.w),
|
||||
Row(
|
||||
children: [
|
||||
Image.asset(
|
||||
R.ASSETS_MESSAGE_IC_STAR_PNG,
|
||||
width: 40.w,
|
||||
height: 40.w,
|
||||
),
|
||||
SizedBox(
|
||||
width: 4.w,
|
||||
),
|
||||
Text('',
|
||||
style: TextStyle(
|
||||
color: AppStyle.minorTextColor, fontSize: 28.sp)),
|
||||
Spacer(),
|
||||
Text('',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor, fontSize: 28.sp)),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16.w),
|
||||
Divider(height: 1.w),
|
||||
AkuButton(
|
||||
onPressed: () {},
|
||||
child: Container(
|
||||
height: 88.w,
|
||||
alignment: Alignment.center,
|
||||
padding: EdgeInsets.only(left: 24.w),
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
'',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor,
|
||||
fontSize: 28.sp),
|
||||
),
|
||||
Spacer(),
|
||||
Icon(Icons.arrow_forward_ios, size: 22.w),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget _messageList(SystemMessageHouseKeepingModel model) {
|
||||
return Column(
|
||||
children: [
|
||||
widget.date == null ? 16.w.heightBox : SizedBox(),
|
||||
widget.date == null
|
||||
? SizedBox()
|
||||
: Container(
|
||||
margin: EdgeInsets.only(top: 24.w, bottom: 24.w),
|
||||
alignment: Alignment.center,
|
||||
width: double.infinity,
|
||||
child: Text(
|
||||
widget.date!,
|
||||
style: TextStyle(
|
||||
color: AppStyle.minorTextColor, fontSize: 24.sp),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 24.w, left: 24.w, right: 24.w),
|
||||
color: Color(0xFFFFFFFF),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(children: [
|
||||
Text(
|
||||
'系统通知',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor,
|
||||
fontSize: 32.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
),
|
||||
SizedBox(height: 8.w),
|
||||
]),
|
||||
Text(
|
||||
'你有一条新的${MessageMap.sysType(widget.type)},请立即处理',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor,
|
||||
fontSize: 28.sp,
|
||||
fontWeight: FontWeight.bold),
|
||||
),
|
||||
SizedBox(height: 24.w),
|
||||
Row(
|
||||
children: [
|
||||
Image.asset(
|
||||
R.ASSETS_MESSAGE_IC_PEOPLE_PNG,
|
||||
width: 40.w,
|
||||
height: 40.w,
|
||||
),
|
||||
SizedBox(
|
||||
width: 4.w,
|
||||
),
|
||||
Text(
|
||||
'服务人员',
|
||||
style: TextStyle(
|
||||
color: AppStyle.minorTextColor, fontSize: 28.sp),
|
||||
),
|
||||
Spacer(),
|
||||
Text(
|
||||
model.handlerName ?? '',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor, fontSize: 28.sp),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16.w),
|
||||
Row(
|
||||
children: [
|
||||
Image.asset(
|
||||
R.ASSETS_MESSAGE_IC_PHONE_PNG,
|
||||
width: 40.w,
|
||||
height: 40.w,
|
||||
),
|
||||
SizedBox(
|
||||
width: 4.w,
|
||||
),
|
||||
Text('联系电话',
|
||||
style: TextStyle(
|
||||
color: AppStyle.minorTextColor, fontSize: 28.sp)),
|
||||
Spacer(),
|
||||
Text(model.handlerTel ?? '',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor, fontSize: 28.sp)),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 16.w),
|
||||
// Row(
|
||||
// children: [
|
||||
// Image.asset(
|
||||
// R.ASSETS_MESSAGE_IC_AREA_PNG,
|
||||
// width: 40.w,
|
||||
// height: 40.w,
|
||||
// ),
|
||||
// SizedBox(
|
||||
// width: 4.w,
|
||||
// ),
|
||||
// Text('报修区域',
|
||||
// style: TextStyle(
|
||||
// color: AppStyle.minorTextColor, fontSize: 28.sp)),
|
||||
// Spacer(),
|
||||
// Text('area',
|
||||
// style: TextStyle(
|
||||
// color: AppStyle.primaryTextColor, fontSize: 28.sp)),
|
||||
// ],
|
||||
// ),
|
||||
// SizedBox(height: 16.w),
|
||||
Divider(
|
||||
height: 1.w,
|
||||
),
|
||||
AkuButton(
|
||||
onPressed: () {
|
||||
Get.to(() => HouseKeepingPage());
|
||||
},
|
||||
child: Container(
|
||||
height: 88.w,
|
||||
alignment: Alignment.center,
|
||||
child: Row(
|
||||
children: [
|
||||
Text(
|
||||
'查看详情',
|
||||
style: TextStyle(
|
||||
color: AppStyle.primaryTextColor, fontSize: 28.sp),
|
||||
),
|
||||
Spacer(),
|
||||
Icon(Icons.arrow_forward_ios, size: 22.w),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in new issue