diff --git a/lib/constants/api.dart b/lib/constants/api.dart index 8ee04810..51a0dc45 100644 --- a/lib/constants/api.dart +++ b/lib/constants/api.dart @@ -84,6 +84,9 @@ class _Manager { ///报事报修:批量删除报事报修信息(业主端) String get reportRepairDelete => '/user/reportRepair/falseDelete'; + + ///咨询建议/投诉表扬:查询所有的app建议咨询/投诉表扬 信息(包含条件搜索 type 【类型(1.咨询,2.建议,3.投诉,4.表扬)】) + String get advice => '/user/advice/list'; } class _Upload { diff --git a/lib/model/manager/suggestion_or_complain_model.dart b/lib/model/manager/suggestion_or_complain_model.dart new file mode 100644 index 00000000..877edf23 --- /dev/null +++ b/lib/model/manager/suggestion_or_complain_model.dart @@ -0,0 +1,63 @@ +import 'package:common_utils/common_utils.dart'; + +class SuggestionOrComplainModel { + int id; + int type; + int status; + String content; + int score; + DateTime createDate; + List imgUrls; + + SuggestionOrComplainModel( + {this.id, + this.type, + this.status, + this.content, + this.score, + this.createDate, + this.imgUrls}); + + SuggestionOrComplainModel.fromJson(Map json) { + id = json['id']; + type = json['type']; + status = json['status']; + content = json['content']; + score = json['score']; + createDate = DateUtil.getDateTime(json['createDate']); + if (json['imgUrls'] != null) { + imgUrls = new List(); + json['imgUrls'].forEach((v) { + imgUrls.add(new ImgUrls.fromJson(v)); + }); + } + } +} + +class ImgUrls { + String url; + String size; + int longs; + int paragraph; + int sort; + + ImgUrls({this.url, this.size, this.longs, this.paragraph, this.sort}); + + ImgUrls.fromJson(Map json) { + url = json['url']; + size = json['size']; + longs = json['longs']; + paragraph = json['paragraph']; + sort = json['sort']; + } + + Map toJson() { + final Map data = new Map(); + data['url'] = this.url; + data['size'] = this.size; + data['longs'] = this.longs; + data['paragraph'] = this.paragraph; + data['sort'] = this.sort; + return data; + } +} diff --git a/lib/ui/manager/advice/advice_page.dart b/lib/ui/manager/advice/advice_page.dart new file mode 100644 index 00000000..0903b781 --- /dev/null +++ b/lib/ui/manager/advice/advice_page.dart @@ -0,0 +1,70 @@ +import 'package:akuCommunity/constants/api.dart'; +import 'package:akuCommunity/model/manager/suggestion_or_complain_model.dart'; +import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:akuCommunity/utils/headers.dart'; +import 'package:akuCommunity/widget/tab_bar/bee_tab_bar.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; + +enum AdviceType { + SUGGESTION, + COMPLAIN, +} + +class AdvicePage extends StatefulWidget { + final AdviceType type; + AdvicePage({Key key, @required this.type}) : super(key: key); + + @override + _AdvicePageState createState() => _AdvicePageState(); +} + +class _AdvicePageState extends State with TickerProviderStateMixin { + EasyRefreshController _refreshController = EasyRefreshController(); + TabController _tabController; + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + } + + @override + void dispose() { + _tabController?.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '建议咨询', + appBarBottom: BeeTabBar( + controller: _tabController, + tabs: ['您的建议', '您的咨询'], + ), + body: TabBarView( + controller: _tabController, + children: List.generate(2, (index) { + return BeeListView( + path: API.manager.advice, + extraParams: {'adviceType': index == 0 ? 2 : 1}, + controller: _refreshController, + convert: (model) => model.tableList + .map((e) => SuggestionOrComplainModel.fromJson(e)) + .toList(), + builder: (items) { + return ListView.separated( + itemBuilder: (context, index) { + return SizedBox(); + }, + separatorBuilder: (_, __) => 20.hb, + itemCount: items.length, + ); + }, + ); + }).toList(), + ), + ); + } +} diff --git a/lib/widget/tab_bar/bee_tab_bar.dart b/lib/widget/tab_bar/bee_tab_bar.dart new file mode 100644 index 00000000..1f5574f7 --- /dev/null +++ b/lib/widget/tab_bar/bee_tab_bar.dart @@ -0,0 +1,35 @@ +import 'package:akuCommunity/base/base_style.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +class BeeTabBar extends StatefulWidget with PreferredSizeWidget { + final TabController controller; + final List tabs; + BeeTabBar({Key key, @required this.controller, @required this.tabs}) + : super(key: key); + + @override + _BeeTabBarState createState() => _BeeTabBarState(); + + @override + Size get preferredSize => Size.fromHeight(96.w); +} + +class _BeeTabBarState extends State { + @override + Widget build(BuildContext context) { + return TabBar( + controller: widget.controller, + unselectedLabelStyle: TextStyle( + fontSize: BaseStyle.fontSize28, + ), + labelStyle: TextStyle( + fontWeight: FontWeight.w600, + fontSize: BaseStyle.fontSize28, + ), + indicatorColor: Color(0xffffc40c), + indicatorSize: TabBarIndicatorSize.label, + tabs: widget.tabs.map((e) => Tab(text: e)).toList(), + ); + } +}