* 'master' of http://159.75.73.143:8080/laiiihz/akuCommunity:
  替换点赞类型的评论通知样式
  修复 评论通知全部已读
  修复 活动投票百分比显示不正确的问题 修复 活动投票 总数为0时显示溢出的问题
  添加:生活缴费记录页 对接:缴费记录
  修改 生活缴费
hmxc
小赖 4 years ago
commit 6816f889c6

@ -183,6 +183,9 @@ class _Manager {
///app
String get questionnaireSubmit => '/user/questionnaire/submit';
///
String get paymentRecord => '/user/dailyPayment/paymentRecord';
}
class _Community {

@ -0,0 +1,44 @@
class LifePayRecordModel {
int id;
String chargesTemplateDetailName;
String roomName;
String years;
int paidPrice;
String createDate;
int payType;
String code;
LifePayRecordModel(
{this.id,
this.chargesTemplateDetailName,
this.roomName,
this.years,
this.paidPrice,
this.createDate,
this.payType,
this.code});
LifePayRecordModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
chargesTemplateDetailName = json['chargesTemplateDetailName'];
roomName = json['roomName'];
years = json['years'];
paidPrice = json['paidPrice'];
createDate = json['createDate'];
payType = json['payType'];
code = json['code'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['chargesTemplateDetailName'] = this.chargesTemplateDetailName;
data['roomName'] = this.roomName;
data['years'] = this.years;
data['paidPrice'] = this.paidPrice;
data['createDate'] = this.createDate;
data['payType'] = this.payType;
data['code'] = this.code;
return data;
}
}

@ -16,6 +16,7 @@ import 'package:akuCommunity/widget/bee_divider.dart';
import 'package:akuCommunity/widget/bee_scaffold.dart';
import 'package:akuCommunity/widget/buttons/bee_single_check.dart';
import 'package:akuCommunity/widget/buttons/bottom_button.dart';
import 'package:velocity_x/velocity_x.dart';
class VotingDetailPage extends StatefulWidget {
final int id;
@ -33,8 +34,8 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
// List<int> _select = [];
int _selectId;
bool _hasVoted = false;
bool get isVoted {
if ((_model.status == 4) || _hasVoted) {
bool get finishVoted {
if ((_model.status == 4) || _hasVoted || (_model.status == 3)) {
return true;
}
return false;
@ -76,16 +77,24 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
);
}
double _getPercent(num numerator, num denominator) {
if (denominator == 0) {
return 0;
} else {
return (numerator / denominator) * 100;
}
}
Widget _buildVoteCard(AppVoteCandidateVos model) {
double _percent = (model.total.toDouble()) / (_model.totals.toDouble());
double _percent = _getPercent(model.total, _model.totals);
return Container(
padding: EdgeInsets.symmetric(vertical: 40.w),
constraints: BoxConstraints(maxHeight: 230.w),
// constraints: BoxConstraints(maxHeight: 230.w),
child: Row(
children: [
Container(
alignment: Alignment.center,
width: 88.w,
width: 58.w,
height: 150.w,
//
// child: BeeCheckBox(
@ -104,7 +113,7 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
//
//
//
child: _model.status == 3 || _model.status == 1
child: finishVoted
? _unCheck()
: GestureDetector(
onTap: () {
@ -139,21 +148,22 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
// 10.w.heightBox,
model.name.text.black.size(32.sp).make(),
33.w.heightBox,
isVoted && _model.status != 3
finishVoted
? Row(
children: [
SizedBox(
width: 280.w,
width: 290.w,
child: LinearProgressIndicator(
value: _percent,
),
),
8.w.widthBox,
'$_percent%'
'${_percent.toStringAsFixed(2)}%'
.text
.color(ktextSubColor)
.size(24.sp)
.make(),
.make()
.expand(),
],
)
: SizedBox()
@ -198,6 +208,7 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
Widget build(BuildContext context) {
return BeeScaffold(
title: '活动详情',
bodyColor: Colors.white,
body: EasyRefresh(
firstRefresh: true,
controller: _refreshController,
@ -231,8 +242,11 @@ class _VotingDetailPageState extends State<VotingDetailPage> {
Container(
padding: EdgeInsets.fromLTRB(32.w, 50.w, 32.w, 0),
decoration: BoxDecoration(
color: Color(0xFFD9D9D9),
color: Color(0xFFFAFAFA),
borderRadius: BorderRadius.circular(8.w),
border: Border.all(
color: Color(0xFFD9D9D9),
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,

@ -1,4 +1,5 @@
import 'package:akuCommunity/constants/app_values.dart';
import 'package:akuCommunity/pages/life_pay/life_pay_record_page.dart';
import 'package:akuCommunity/provider/app_provider.dart';
import 'package:akuCommunity/ui/profile/house/pick_my_house_page.dart';
import 'package:flutter/cupertino.dart';
@ -221,24 +222,24 @@ class _LifePayPageState extends State<LifePayPage> {
return BeeScaffold(
title: '生活缴费',
actions: [
//TODO
// InkWell(
// onTap: () {
// LifePayRecordPage().to();
// },
// child: Container(
// padding: EdgeInsets.fromLTRB(32.w, 28.w, 32.w, 20.w),
// alignment: Alignment.center,
// child: '缴费记录'.text.black.size(28.sp).make(),
// ),
// ),
InkWell(
onTap: () {
Get.to(() => LifePayRecordPage());
},
child: Container(
padding: EdgeInsets.fromLTRB(32.w, 28.w, 32.w, 20.w),
alignment: Alignment.center,
child: '缴费记录'.text.black.size(28.sp).make(),
),
),
],
body: BeeListView(
path: API.manager.dailyPaymentList,
controller: _controller,
extraParams: {'estateId': appProvider.selectedHouse.estateId},
convert: (model) {
_selectPay = List.generate(model.tableList.length,
_selectPay = List.generate(
(_selectPay.length ?? 0) + model.tableList.length,
(index) => SelectPay(payCount: 0, payTotal: 0.0));
return model.tableList
.map((e) => LifePayModel.fromJson(e))

@ -0,0 +1,140 @@
import 'package:akuCommunity/base/base_style.dart';
import 'package:akuCommunity/constants/api.dart';
import 'package:akuCommunity/model/manager/life_pay_record_model.dart';
import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart';
import 'package:akuCommunity/widget/bee_scaffold.dart';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:velocity_x/velocity_x.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class LifePayRecordPage extends StatefulWidget {
LifePayRecordPage({Key key}) : super(key: key);
@override
_LifePayRecordPageState createState() => _LifePayRecordPageState();
}
class _LifePayRecordPageState extends State<LifePayRecordPage> {
EasyRefreshController _refreshController;
Map<int, String> getPayType = {1: '支付宝', 2: '微信', 3: '现金', 4: 'pos'};
@override
void initState() {
super.initState();
_refreshController = EasyRefreshController();
}
@override
void dispose() {
_refreshController?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return BeeScaffold(
title: '生活缴费',
body: BeeListView(
path: API.manager.paymentRecord,
controller: _refreshController,
convert: (models) {
return models.tableList
.map((e) => LifePayRecordModel.fromJson(e))
.toList();
},
builder: (items) {
return ListView(
padding: EdgeInsets.symmetric(vertical: 32.w, horizontal: 32.w),
children: [
'如果有疑问,请联系物业客服 '
.richText
.withTextSpanChildren([
'400-6754322'
.textSpan
.color(Color(0xFFFF8200))
.size(24.sp)
.bold
.make()
])
.size(24.sp)
.color(ktextSubColor)
.make(),
32.w.heightBox,
...items.map((e) => _buildRecordCard(e)).toList()
],
);
},
),
);
}
Widget _buildRecordCard(LifePayRecordModel model) {
return Column(
children: [
Row(
children: [
model.chargesTemplateDetailName.text
.size(30.sp)
.color(ktextPrimary)
.bold
.make(),
Spacer(),
'${S.of(context).tempPlotName} ${model.roomName}'
.text
.size(24.sp)
.color(Color(0xFF999999))
.make()
],
),
50.w.heightBox,
Row(
children: [
'${model.years}'.text.color(ktextSubColor).size(24.sp).make(),
Spacer(),
'${model.paidPrice}'
.text
.color(Color(0xFFFC361D))
.size(28.sp)
.bold
.make()
],
),
Row(
children: [
'创建时间'.text.color(ktextSubColor).size(28.sp).make(),
Spacer(),
'${DateUtil.formatDateStr(model.createDate, format: "yyyy/MM/dd HH:mm")}'
.text
.color(ktextPrimary)
.size(28.sp)
.make(),
],
),
Row(
children: [
'付款方式'.text.color(ktextSubColor).size(28.sp).make(),
Spacer(),
'${getPayType[model.payType]}'
.text
.color(ktextPrimary)
.size(28.sp)
.make(),
],
),
Row(
children: [
'订单号'.text.color(ktextSubColor).size(28.sp).make(),
Spacer(),
'${model.code}'.text.color(ktextPrimary).size(28.sp).make(),
],
),
],
)
.box
.color(Colors.white)
.padding(EdgeInsets.symmetric(vertical: 32.w, horizontal: 20.w))
.make();
}
}

@ -43,6 +43,27 @@ class _LifePayDetailPageState extends State<LifePayDetailPage> {
return listLength == _selectItems.length;
}
@override
void initState() {
super.initState();
for (var i = 0; i < widget.model.dailyPaymentTypeVos.length; i++) {
for (var j = 0;
j < widget.model.dailyPaymentTypeVos[i].detailedVoList.length;
j++) {
String id = widget.model.dailyPaymentTypeVos[i].id.toString() +
widget.model.dailyPaymentTypeVos[i].detailedVoList[j].groupId
.toString();
if (!_selectItems.contains(id)) {
_selectItems.add(id);
_payNum += 1;
_payTotal += widget
.model.dailyPaymentTypeVos[i].detailedVoList[j].paymentPrice
.toDouble();
}
}
}
}
Widget _buildTile(int groupId, int id, int years, double price) {
return GestureDetector(
onTap: () {
@ -76,10 +97,6 @@ class _LifePayDetailPageState extends State<LifePayDetailPage> {
.bold
.make(),
24.w.widthBox,
Icon(
CupertinoIcons.chevron_forward,
size: 40.w,
),
],
).material(color: Colors.transparent),
);
@ -133,36 +150,35 @@ class _LifePayDetailPageState extends State<LifePayDetailPage> {
children: [
GestureDetector(
onTap: () {
setState(() {
if (isAllSelect) {
_selectItems.clear();
_payNum = 0;
_payTotal = 0;
} else {
for (var i = 0;
i < widget.model.dailyPaymentTypeVos.length;
i++) {
for (var j = 0;
i <
widget.model.dailyPaymentTypeVos[i].detailedVoList
.length;
i++) {
String id =
widget.model.dailyPaymentTypeVos[i].id.toString() +
widget.model.dailyPaymentTypeVos[i]
.detailedVoList[j].groupId
.toString();
if (!_selectItems.contains(id)) {
_selectItems.add(id);
_payNum += 1;
_payTotal += widget.model.dailyPaymentTypeVos[i]
.detailedVoList[j].paymentPrice
.toDouble();
}
if (isAllSelect) {
_selectItems.clear();
_payNum = 0;
_payTotal = 0;
} else {
for (var i = 0;
i < widget.model.dailyPaymentTypeVos.length;
i++) {
for (var j = 0;
j <
widget.model.dailyPaymentTypeVos[i].detailedVoList
.length;
j++) {
String id =
widget.model.dailyPaymentTypeVos[i].id.toString() +
widget.model.dailyPaymentTypeVos[i]
.detailedVoList[j].groupId
.toString();
if (!_selectItems.contains(id)) {
_selectItems.add(id);
_payNum += 1;
_payTotal += widget.model.dailyPaymentTypeVos[i]
.detailedVoList[j].paymentPrice
.toDouble();
}
}
}
});
}
setState(() {});
},
child: AnimatedContainer(
duration: Duration(milliseconds: 300),
@ -207,6 +223,7 @@ class _LifePayDetailPageState extends State<LifePayDetailPage> {
'已选$_payNum'.text.color(ktextSubColor).size(20.sp).make(),
],
),
8.w.widthBox,
MaterialButton(
elevation: 0,
shape: RoundedRectangleBorder(

@ -1,4 +1,5 @@
import 'package:akuCommunity/model/common/img_model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flustars/flustars.dart';
@ -41,6 +42,24 @@ class _CommentMessagePageState extends State<CommentMessagePage> {
return BeeDateUtil(DateUtil.getDateTime(time)).timeAgo;
}
Widget _messageContent(CommentMessageModel model) {
if (model.type == 2) {
return Icon(
CupertinoIcons.heart,
size: 32.w,
);
} else {
return ((model.respondentName?.isEmptyOrNull ?? true)
? model.content
: '回复了${model.respondentName}:${model.content}')
.text
.black
.size(28.sp)
.isIntrinsic
.make();
}
}
Widget buildCard(CommentMessageModel model) {
return Container(
width: double.infinity,
@ -66,14 +85,9 @@ class _CommentMessagePageState extends State<CommentMessagePage> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
model.createName.text.black.size(36.sp).make(),
((model.respondentName?.isEmptyOrNull ?? true)
? model.content
: '回复了${model.respondentName}:${model.content}')
.text
.black
.size(28.sp)
.isIntrinsic
.make(),
10.w.heightBox,
_messageContent(model),
16.w.heightBox,
getTime(model.createDate)
.text
.color(Color(0xFF999999))

@ -109,8 +109,9 @@ class _MessageCenterPageState extends State<MessageCenterPage> {
appProvider.messageCenterModel.commentTitle ?? '无评论通知消息',
count: appProvider.messageCenterModel.commentCount ?? 0,
onTap: () async {
// await NetUtil().dio.get(API.message.allReadComment);
await NetUtil().dio.get(API.message.allReadComment);
Get.to(() => CommentMessagePage());
setState(() {});
},
),
// _buildCard(

Loading…
Cancel
Save