|
...
|
...
|
@@ -20,6 +20,7 @@ import 'package:one_key/widgets/v_empty_view.dart'; |
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
import '../../../../models/message_menu_model.dart';
|
|
|
|
import '../../../../models/seller_counts_list.dart';
|
|
|
|
import '../../../../utils/screen_util.dart';
|
|
|
|
import '../../../../widgets/MyDivider.dart';
|
|
|
|
import '../month_item.dart';
|
|
...
|
...
|
@@ -29,7 +30,9 @@ import '../store_customer/bar_chart_page.dart'; |
|
|
|
*
|
|
|
|
*/
|
|
|
|
class StoreCustomerHomeRightPage extends StatefulWidget {
|
|
|
|
StoreCustomerHomeRightPage({Key key}) : super(key: key);
|
|
|
|
final CustomerProvider customerProvider;
|
|
|
|
StoreCustomerHomeRightPage({Key key, this.customerProvider})
|
|
|
|
: super(key: key);
|
|
|
|
|
|
|
|
@override
|
|
|
|
_StoreCustomerHomeRightPageState createState() =>
|
|
...
|
...
|
@@ -39,45 +42,42 @@ class StoreCustomerHomeRightPage extends StatefulWidget { |
|
|
|
class _StoreCustomerHomeRightPageState
|
|
|
|
extends State<StoreCustomerHomeRightPage> {
|
|
|
|
ScrollController _controller = ScrollController();
|
|
|
|
CustomerProvider customerProvider;
|
|
|
|
// widget.customerProvider widget.customerProvider;
|
|
|
|
bool showWarning = false;
|
|
|
|
|
|
|
|
int year;
|
|
|
|
|
|
|
|
List<BarData> dataList = [
|
|
|
|
BarData(MyColours.color_8EBBBE, 200),
|
|
|
|
BarData(MyColours.color_8EBBBE, 8),
|
|
|
|
BarData(MyColours.color_8EBBBE, 15),
|
|
|
|
BarData(MyColours.color_8EBBBE, 5),
|
|
|
|
BarData(MyColours.color_8EBBBE, 2),
|
|
|
|
BarData(MyColours.color_8EBBBE, 2),
|
|
|
|
BarData(MyColours.color_8EBBBE, 18),
|
|
|
|
BarData(MyColours.color_8EBBBE, 168),
|
|
|
|
BarData(MyColours.color_8EBBBE, 15),
|
|
|
|
BarData(MyColours.color_8EBBBE, 5),
|
|
|
|
BarData(MyColours.color_8EBBBE, null ?? 0),
|
|
|
|
BarData(MyColours.color_8EBBBE, 0),
|
|
|
|
];
|
|
|
|
|
|
|
|
List<MessageMenuModel> menuTitle = [];
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
year = DateTime.now().year;
|
|
|
|
for (int i = 0; i < 15; i++) {
|
|
|
|
widget.customerProvider.storeSunmodel.sellerUser.forEach((element) {
|
|
|
|
MessageMenuModel messageMenuModel = MessageMenuModel();
|
|
|
|
messageMenuModel.title = '${i}经理';
|
|
|
|
messageMenuModel.select = i == 0 ? true : false;
|
|
|
|
messageMenuModel.uid = element.uid;
|
|
|
|
messageMenuModel.title = element.nickName ?? element.account;
|
|
|
|
messageMenuModel.select = false;
|
|
|
|
menuTitle.add(messageMenuModel);
|
|
|
|
});
|
|
|
|
if (menuTitle.length > 0) {
|
|
|
|
menuTitle[0].select = true;
|
|
|
|
}
|
|
|
|
// for (int i = 0; i < 15; i++) {
|
|
|
|
// MessageMenuModel messageMenuModel = MessageMenuModel();
|
|
|
|
// messageMenuModel.title = '${i}经理';
|
|
|
|
// messageMenuModel.select = i == 0 ? true : false;
|
|
|
|
// menuTitle.add(messageMenuModel);
|
|
|
|
// }
|
|
|
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
|
|
_couponNetworkData();
|
|
|
|
|
|
|
|
_getMarketingByUid();
|
|
|
|
_getSellerCountsList();
|
|
|
|
});
|
|
|
|
bus.on("refresh_my_customer_home", (arg) {
|
|
|
|
_getGuestManageData(isShowLoading: false);
|
|
|
|
// _getGuestManageData(isShowLoading: false);
|
|
|
|
_getMarketingByUid();
|
|
|
|
_getSellerCountsList();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -88,9 +88,30 @@ class _StoreCustomerHomeRightPageState |
|
|
|
super.dispose();
|
|
|
|
}
|
|
|
|
|
|
|
|
_getSellerCountsList({isShowLoading = false, VoidCallback callback}) async {
|
|
|
|
String uid = '';
|
|
|
|
menuTitle.forEach((element) {
|
|
|
|
if (element.select) {
|
|
|
|
uid = element.uid;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
Map<String, String> params = {
|
|
|
|
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid,
|
|
|
|
'year': year.toString(),
|
|
|
|
'uid': uid
|
|
|
|
};
|
|
|
|
await widget.customerProvider
|
|
|
|
.getSellerCountsList(context, params, isShowLoading: isShowLoading);
|
|
|
|
if ((widget.customerProvider.managerStatisticsList == null ||
|
|
|
|
widget.customerProvider.managerStatisticsList.length == 0) &&
|
|
|
|
callback != null) {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///我的客户首页
|
|
|
|
_getGuestManageData({bool isShowLoading = true}) async {
|
|
|
|
GuestManageSunModel model = await customerProvider
|
|
|
|
GuestManageSunModel model = await widget.customerProvider
|
|
|
|
.getGuestManageData(context, isShowLoading: isShowLoading);
|
|
|
|
// setState(() {});
|
|
|
|
}
|
|
...
|
...
|
@@ -101,16 +122,16 @@ class _StoreCustomerHomeRightPageState |
|
|
|
Map<String, String> params = {
|
|
|
|
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
|
|
|
|
};
|
|
|
|
await customerProvider.getCustomerSelectActivityNew(context, params,
|
|
|
|
await widget.customerProvider.getCustomerSelectActivityNew(context, params,
|
|
|
|
isShowLoading: isShowLoading);
|
|
|
|
//此人已经新建好券
|
|
|
|
// if (customerProvider.couponListSelect.length > 0) {
|
|
|
|
// for (int i = 0; i < customerProvider.couponListSelect.length; i++) {
|
|
|
|
// if (widget.sellerList.aid == customerProvider.couponListSelect[i].id) {
|
|
|
|
// aidStr = customerProvider.couponListSelect[i].aname;
|
|
|
|
// if (widget.customerProvider.couponListSelect.length > 0) {
|
|
|
|
// for (int i = 0; i < widget.customerProvider.couponListSelect.length; i++) {
|
|
|
|
// if (widget.sellerList.aid == widget.customerProvider.couponListSelect[i].id) {
|
|
|
|
// aidStr = widget.customerProvider.couponListSelect[i].aname;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// customerProvider.notifyListeners();
|
|
|
|
// widget.customerProvider.notifyListeners();
|
|
|
|
// } else {
|
|
|
|
// //没有新建的优惠券
|
|
|
|
// }
|
|
...
|
...
|
@@ -121,10 +142,10 @@ class _StoreCustomerHomeRightPageState |
|
|
|
Map<String, String> params = {
|
|
|
|
"uid": Provider.of<UserModel>(context, listen: false).user.openid
|
|
|
|
};
|
|
|
|
// await customerProvider.getMarketingByUid(context, params);
|
|
|
|
// await widget.customerProvider.getMarketingByUid(context, params);
|
|
|
|
|
|
|
|
MarketingByUidsSunModel myRecordData =
|
|
|
|
await customerProvider.getMarketingByUid(context, params);
|
|
|
|
await widget.customerProvider.getMarketingByUid(context, params);
|
|
|
|
if (myRecordData != null && myRecordData.sellerList.length > 0) {
|
|
|
|
bool temp = myRecordData.sellerList.any((value) {
|
|
|
|
return value.finishedStatus == '0';
|
|
...
|
...
|
@@ -133,7 +154,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
showWarning = temp;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// await customerProvider.searchData(customerProvider.controller.text);
|
|
|
|
// await widget.customerProvider.searchData(widget.customerProvider.controller.text);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget _chart() {
|
|
...
|
...
|
@@ -151,16 +172,27 @@ class _StoreCustomerHomeRightPageState |
|
|
|
children: [
|
|
|
|
InkWell(
|
|
|
|
onTap: () {
|
|
|
|
if (year == 2018) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
setState(() {
|
|
|
|
year--;
|
|
|
|
});
|
|
|
|
// _getGuestReserve(showLoading: true);
|
|
|
|
_getSellerCountsList(
|
|
|
|
isShowLoading: true,
|
|
|
|
callback: () {
|
|
|
|
setState(() {
|
|
|
|
year++;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Padding(
|
|
|
|
padding:
|
|
|
|
EdgeInsets.only(right: ScreenUtil().setWidth(20)),
|
|
|
|
child: Image.asset(
|
|
|
|
Utils.getImgPath('c_arrow_left'),
|
|
|
|
Utils.getImgPath(year == 2018
|
|
|
|
? 'c_arrow_left_gray'
|
|
|
|
: 'c_arrow_left'),
|
|
|
|
width: ScreenUtil().setWidth(24),
|
|
|
|
))),
|
|
|
|
Text(
|
|
...
|
...
|
@@ -177,7 +209,13 @@ class _StoreCustomerHomeRightPageState |
|
|
|
setState(() {
|
|
|
|
year++;
|
|
|
|
});
|
|
|
|
// _getGuestReserve(showLoading: true);
|
|
|
|
_getSellerCountsList(
|
|
|
|
isShowLoading: true,
|
|
|
|
callback: () {
|
|
|
|
setState(() {
|
|
|
|
year--;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.only(
|
|
...
|
...
|
@@ -197,8 +235,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
height: w(177),
|
|
|
|
child: LayoutBuilder(builder: (context, constraints) {
|
|
|
|
return BarChartWidget(
|
|
|
|
dataList: dataList,
|
|
|
|
);
|
|
|
|
dataList: widget.customerProvider.chartManagerDataList);
|
|
|
|
}))
|
|
|
|
],
|
|
|
|
),
|
|
...
|
...
|
@@ -292,7 +329,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
customerProvider = Provider.of<CustomerProvider>(context, listen: false);
|
|
|
|
// widget.customerProvider = Provider.of<widget.customerProvider>(context, listen: true);
|
|
|
|
return Scaffold(
|
|
|
|
// backgroundColor: MyColours.color_f3f3f3,
|
|
|
|
// appBar: SystemAppBar('我的客情', onTap: () {
|
|
...
|
...
|
@@ -332,6 +369,9 @@ class _StoreCustomerHomeRightPageState |
|
|
|
}
|
|
|
|
menuTitle[index].select = true;
|
|
|
|
setState(() {});
|
|
|
|
_getSellerCountsList(
|
|
|
|
isShowLoading: true,
|
|
|
|
callback: () {});
|
|
|
|
// offset = 0;
|
|
|
|
// 1提前点餐/2内部预订/10在线预订/15店内消息传/12在线买单
|
|
|
|
|
|
...
|
...
|
@@ -437,7 +477,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
// fontSize: ScreenUtil().setSp(32)),
|
|
|
|
// ),
|
|
|
|
Text(
|
|
|
|
'${customerProvider.guestSunmodel.myCustomer}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.myCustomer}',
|
|
|
|
style: TextStyle(
|
|
|
|
color: MyColours.color_199095,
|
|
|
|
fontSize: ScreenUtil().setSp(64),
|
|
...
|
...
|
@@ -467,44 +507,44 @@ class _StoreCustomerHomeRightPageState |
|
|
|
// itemBuilder: (BuildContext context, int index) {
|
|
|
|
// // locationState = state;
|
|
|
|
// return _percentWidget(
|
|
|
|
// '${customerProvider.guestSunmodel.active.count}',
|
|
|
|
// '${widget.customerProvider.guestSunmodel.active.count}',
|
|
|
|
// '活跃客户',
|
|
|
|
// '${customerProvider.guestSunmodel.active.scale}');
|
|
|
|
// '${widget.customerProvider.guestSunmodel.active.scale}');
|
|
|
|
// }),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
_percentWidget(
|
|
|
|
'${customerProvider.guestSunmodel.active.count}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.active.count}',
|
|
|
|
'活跃',
|
|
|
|
'${customerProvider.guestSunmodel.active.scale}'),
|
|
|
|
'${widget.customerProvider.guestSunmodel.active.scale}'),
|
|
|
|
HEmptyView(10),
|
|
|
|
_percentWidget(
|
|
|
|
'${customerProvider.guestSunmodel.sleep.count}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.sleep.count}',
|
|
|
|
'60天未到店',
|
|
|
|
'${customerProvider.guestSunmodel.sleep.scale}'),
|
|
|
|
'${widget.customerProvider.guestSunmodel.sleep.scale}'),
|
|
|
|
HEmptyView(10),
|
|
|
|
_percentWidget(
|
|
|
|
'${customerProvider.guestSunmodel.drain.count}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.drain.count}',
|
|
|
|
'120天未到店',
|
|
|
|
'${customerProvider.guestSunmodel.drain.scale}'),
|
|
|
|
'${widget.customerProvider.guestSunmodel.drain.scale}'),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
ListView.builder(
|
|
|
|
controller: _controller,
|
|
|
|
shrinkWrap: true,
|
|
|
|
cacheExtent: ScreenUtil().setWidth(0),
|
|
|
|
itemCount:
|
|
|
|
customerProvider.guestSunmodel.tips.task ==
|
|
|
|
null ||
|
|
|
|
customerProvider.guestSunmodel.tips
|
|
|
|
.task.length ==
|
|
|
|
0
|
|
|
|
? 0
|
|
|
|
: customerProvider
|
|
|
|
.guestSunmodel.tips.task.length,
|
|
|
|
itemCount: widget.customerProvider.guestSunmodel
|
|
|
|
.tips.task ==
|
|
|
|
null ||
|
|
|
|
widget.customerProvider.guestSunmodel
|
|
|
|
.tips.task.length ==
|
|
|
|
0
|
|
|
|
? 0
|
|
|
|
: widget.customerProvider.guestSunmodel.tips
|
|
|
|
.task.length,
|
|
|
|
itemBuilder: (BuildContext context, int index) {
|
|
|
|
// locationState = state;
|
|
|
|
Task data = customerProvider
|
|
|
|
Task data = widget.customerProvider
|
|
|
|
.guestSunmodel.tips.task[index];
|
|
|
|
return Column(
|
|
|
|
children: [
|
|
...
|
...
|
@@ -638,11 +678,11 @@ class _StoreCustomerHomeRightPageState |
|
|
|
controller: _controller,
|
|
|
|
shrinkWrap: true,
|
|
|
|
cacheExtent: ScreenUtil().setWidth(0),
|
|
|
|
itemCount: customerProvider
|
|
|
|
.guestSunmodel.tips.recover ==
|
|
|
|
itemCount: widget.customerProvider.guestSunmodel
|
|
|
|
.tips.recover ==
|
|
|
|
null ||
|
|
|
|
customerProvider.guestSunmodel.tips
|
|
|
|
.recover.length ==
|
|
|
|
widget.customerProvider.guestSunmodel
|
|
|
|
.tips.recover.length ==
|
|
|
|
0
|
|
|
|
? 0
|
|
|
|
: 1,
|
|
...
|
...
|
@@ -668,7 +708,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
HEmptyView(15),
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
'${customerProvider.guestSunmodel.tips.recover[0]}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.tips.recover[0]}',
|
|
|
|
maxLines: 10,
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
...
|
...
|
@@ -699,7 +739,8 @@ class _StoreCustomerHomeRightPageState |
|
|
|
.FromPageMyCustomer,
|
|
|
|
homeGid: Utils
|
|
|
|
.listToStringEnglish1(
|
|
|
|
customerProvider
|
|
|
|
widget
|
|
|
|
.customerProvider
|
|
|
|
.guestSunmodel
|
|
|
|
.tips
|
|
|
|
.recover[1]));
|
|
...
|
...
|
@@ -715,11 +756,11 @@ class _StoreCustomerHomeRightPageState |
|
|
|
controller: _controller,
|
|
|
|
shrinkWrap: true,
|
|
|
|
cacheExtent: ScreenUtil().setWidth(0),
|
|
|
|
itemCount: customerProvider
|
|
|
|
.guestSunmodel.tips.awaken ==
|
|
|
|
itemCount: widget.customerProvider.guestSunmodel
|
|
|
|
.tips.awaken ==
|
|
|
|
null ||
|
|
|
|
customerProvider.guestSunmodel.tips
|
|
|
|
.awaken.length ==
|
|
|
|
widget.customerProvider.guestSunmodel
|
|
|
|
.tips.awaken.length ==
|
|
|
|
0
|
|
|
|
? 0
|
|
|
|
: 1,
|
|
...
|
...
|
@@ -745,7 +786,7 @@ class _StoreCustomerHomeRightPageState |
|
|
|
HEmptyView(15),
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
'${customerProvider.guestSunmodel.tips.awaken[0]}',
|
|
|
|
'${widget.customerProvider.guestSunmodel.tips.awaken[0]}',
|
|
|
|
maxLines: 10,
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
style: TextStyle(
|
|
...
|
...
|
@@ -776,7 +817,8 @@ class _StoreCustomerHomeRightPageState |
|
|
|
.FromPageMyCustomer,
|
|
|
|
homeGid: Utils
|
|
|
|
.listToStringEnglish1(
|
|
|
|
customerProvider
|
|
|
|
widget
|
|
|
|
.customerProvider
|
|
|
|
.guestSunmodel
|
|
|
|
.tips
|
|
|
|
.awaken[1]));
|
|
...
|
...
|
@@ -790,13 +832,18 @@ class _StoreCustomerHomeRightPageState |
|
|
|
}),
|
|
|
|
_chart(),
|
|
|
|
ListView.builder(
|
|
|
|
itemCount: 10,
|
|
|
|
itemCount: widget.customerProvider
|
|
|
|
.managerStatisticsList.length,
|
|
|
|
shrinkWrap: true,
|
|
|
|
controller: _controller,
|
|
|
|
padding:
|
|
|
|
EdgeInsets.symmetric(horizontal: w(10)),
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
return MonthItem();
|
|
|
|
SellerCountsListSunModel countsListSunModel =
|
|
|
|
widget.customerProvider
|
|
|
|
.managerStatisticsList[index];
|
|
|
|
return MonthItem(
|
|
|
|
countsListSunModel: countsListSunModel);
|
|
|
|
})
|
|
|
|
],
|
|
|
|
),
|
...
|
...
|
|