Commit c59ff6b964f88f59b9e51dba6928397785ebbda7

Authored by wdn127929
1 parent 115eefbf

列表页、停用、历史券、券详情

... ... @@ -60,6 +60,13 @@ class CouponSunModel extends Object {
@JsonKey(name: 'use_num')
String useNum;
@JsonKey(name: 'uid_list')
String uidList;
@JsonKey(name: 'is_examine')
String isExamine;
@JsonKey(name: 'is_type')
String isType;
@JsonKey(name: 'is_open')
String isOpen;
... ... @@ -81,6 +88,9 @@ class CouponSunModel extends Object {
this.cdate,
this.receiveNum,
this.useNum,
this.uidList,
this.isExamine,
this.isType,
this.isOpen,
this.isOpenBool);
... ...
... ... @@ -37,6 +37,9 @@ CouponSunModel _$CouponSunModelFromJson(Map<String, dynamic> json) {
json['cdate'] as String,
json['receive_num'] as String,
json['use_num'] as String,
json['uid_list'] as String,
json['is_examine'] as String,
json['is_type'] as String,
json['is_open'] as String,
json['status'] == "1" ? true : false,
);
... ... @@ -55,6 +58,9 @@ Map<String, dynamic> _$CouponSunModelToJson(CouponSunModel instance) =>
'cdate': instance.cdate,
'receiveNum': instance.receiveNum,
'useNum': instance.useNum,
'uid_list': instance.uidList,
'is_examine': instance.isExamine,
'is_type': instance.isType,
'isOpen': instance.isOpen,
'isOpenBool': instance.isOpenBool
};
... ...
... ... @@ -41,6 +41,7 @@ class PersonnelManageModelData extends Object {
@JsonKey(name: 'manager')
Manager manager;
bool select = false;
PersonnelManageModelData(
this.admin,
... ... @@ -64,6 +65,7 @@ class Admin extends Object {
@JsonKey(name: 'role_id')
String roleId;
int hasWechatNum; //已绑定微信数量
bool select = false;
Admin(
this.listdata,
... ... @@ -110,7 +112,7 @@ class PersonnelManageSunModel extends Object {
@JsonKey(name: 'headimgurl')
String headimgurl;
bool select = false;
PersonnelManageSunModel(
this.id,
... ... @@ -140,6 +142,7 @@ class Shopowner extends Object {
@JsonKey(name: 'role_id')
String roleId;
int hasWechatNum; //已绑定微信数量
bool select = false;
Shopowner(
this.listdata,
... ... @@ -160,6 +163,7 @@ class Cashier extends Object {
@JsonKey(name: 'role_id')
String roleId;
int hasWechatNum; //已绑定微信数量
bool select = false;
Cashier(
this.listdata,
... ... @@ -180,6 +184,7 @@ class Waiter extends Object {
@JsonKey(name: 'role_id')
String roleId;
int hasWechatNum; //已绑定微信数量
bool select = false;
Waiter(
this.listdata,
... ... @@ -201,6 +206,7 @@ class Manager extends Object {
String roleId;
int hasWechatNum; //已绑定微信数量
bool select = false;
Manager(
this.listdata,
... ...
... ... @@ -3,6 +3,7 @@ import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
... ... @@ -179,9 +180,11 @@ class _CouponCreateSelectTypePageState
isMine: selectF);
print(needRefresh);
if (needRefresh != null && needRefresh) {
Navigator.pop(context);
//刷新页面数据
// _controller.callRefresh();
// _couponNetworkData();
bus.emit('refresh_coupon_list_f');
}
},
)
... ...
... ... @@ -39,10 +39,52 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
super.initState();
}
///时间选择
Widget _select(String title, String hintText, GestureTapCallback onTap) {
return InkWell(
onTap: onTap,
child: Container(
padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(28)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
// height: ScreenUtil().setWidth(40),
// color: Colors.red,
child: Text(
title,
style: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.9),
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32)),
),
),
HEmptyView(20),
Spacer(),
Text(hintText,
style: TextStyle(
color: hintText == '点击选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32),
)),
HEmptyView(20),
Image.asset(
Utils.getImgPath('arrow_right_new'),
width: ScreenUtil().setWidth(20),
),
HEmptyView(32),
],
),
),
);
}
///输入框
Widget _item(String title, String subTitle) {
return Container(
constraints: BoxConstraints(minHeight: heightCell),
padding: EdgeInsets.symmetric(vertical: ScreenUtil().setWidth(24)),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
... ... @@ -51,8 +93,9 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
child: Text(
title,
style: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.9),
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(30)),
fontSize: ScreenUtil().setSp(32)),
),
),
HEmptyView(60),
... ... @@ -63,8 +106,8 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
textAlign: TextAlign.right,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_333333,
fontSize: ScreenUtil().setSp(26),
color: Color.fromRGBO(0, 0, 0, 0.4),
fontSize: ScreenUtil().setSp(32),
),
))
],
... ... @@ -76,8 +119,9 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
Widget build(BuildContext context) {
couponProvider = Provider.of<CouponProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'券详情',
'优惠券详情',
onTap: () {
Navigator.pop(context);
},
... ... @@ -89,34 +133,103 @@ class _CouponDetailPageState extends State<CouponDetailPage> {
physics: BouncingScrollPhysics(),
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(40)),
horizontal: ScreenUtil().setWidth(32)),
child: Column(
children: [
VEmptyView(20),
VEmptyView(56),
_item(
'券类型',
widget.couponSunModel.isType == '1'
? widget.couponSunModel.isExamine == '1'
? '店铺优惠券(核销券)'
: '店铺优惠券'
: '我的优惠券'),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item('券名称', widget.couponSunModel.aname),
VEmptyView(5),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item('券要求', widget.couponSunModel.desc),
VEmptyView(5),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item(
'有效期从',
Utils.getDateStrFromJiekou(
widget.couponSunModel.stime)),
VEmptyView(5),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item(
'有效期至',
Utils.getDateStrFromJiekou(
widget.couponSunModel.etime)),
widget.couponSunModel.explain != null ||
widget.couponSunModel.isType == '1'
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item('创建人', widget.couponSunModel.uid),
],
)
: SizedBox(),
widget.couponSunModel.isType == '1'
? Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_select(
'谁可以发放',
'查看',
() async {
await NavigatorUtil.goCouponToPersonnalPage(
context, widget.couponSunModel.uidList,
onlyShow: true);
},
)
],
)
: SizedBox(),
widget.couponSunModel.explain != null &&
widget.couponSunModel.explain != ''
? Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
)
: SizedBox(),
widget.couponSunModel.explain != null &&
widget.couponSunModel.explain != ''
? VEmptyView(5)
: Container(),
? VEmptyView(24)
: SizedBox(),
widget.couponSunModel.explain != null &&
widget.couponSunModel.explain != ''
? _item('券说明', widget.couponSunModel.explain)
: Container(),
VEmptyView(5),
: SizedBox(),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
VEmptyView(24),
_item('券状态',
widget.couponSunModel.status == '1' ? '启用' : '停用')
widget.couponSunModel.status == '1' ? '发放中' : '停用')
],
))),
)
... ...
... ... @@ -44,6 +44,7 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
bool showDateSelWidget = false;
CouponProvider couponProvider;
bool swichHexiao = true; //默认启用 核销状态
String uids = '';
@override
void initState() {
... ... @@ -94,7 +95,7 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
};
if (!widget.isMine) {
params['is_examine'] = swichHexiao ? "1" : "0";
params['uid_list'] = '';
params['uid_list'] = uids;
}
bool isSuccess =
await couponProvider.createCustomerActivity(context, params);
... ... @@ -478,7 +479,13 @@ class _CouponEidtPageState extends State<CouponEidtPage> {
VEmptyView(24),
widget.isMine
? SizedBox()
: _select('谁可以发放', '编辑', () {}),
: _select('谁可以发放', '编辑', () async {
Map temp = await NavigatorUtil
.goCouponToPersonnalPage(context, uids);
if (temp != null && temp['object'] != null) {
uids = temp['object'];
}
}),
widget.isMine
? SizedBox()
: Container(
... ...
... ... @@ -88,7 +88,9 @@ class _CouponItemFState extends State<CouponItemF> {
horizontal: ScreenUtil().setWidth(24)),
decoration: BoxDecoration(
color: notSelect
? MyColours.color_438E93
? sunModel.isType == '1'
? MyColours.color_438E93
: MyColours.color_ED7B2F
: MyColours.color_999999,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(ScreenUtil().setWidth(16)),
... ... @@ -98,7 +100,11 @@ class _CouponItemFState extends State<CouponItemF> {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'店铺优惠券(核销)',
sunModel.isType == '1'
? sunModel.isExamine == '1'
? '店铺优惠券(核销)'
: '店铺优惠券'
: '我的优惠券',
style: TextStyle(
color: MyColours.color_ffffff,
fontSize: ScreenUtil().setSp(24)),
... ... @@ -106,7 +112,11 @@ class _CouponItemFState extends State<CouponItemF> {
InkWell(
onTap: widget.onPressedSwich,
child: Text(
'被领取:${sunModel.receiveNum}张 已使用:${sunModel.useNum}张',
sunModel.isType == '1'
? sunModel.isExamine == '1'
? '被领取:${sunModel.receiveNum}张 已核销:${sunModel.useNum}张'
: '创建人:${sunModel.uid} 被领取:${sunModel.receiveNum}张'
: '被领取:${sunModel.receiveNum}张',
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
... ...
... ... @@ -33,10 +33,11 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
TabController tabController;
///获取优惠券列表数据
_couponNetworkData({bool isShowLoading = true}) async {
_couponNetworkData(int index, {bool isShowLoading = true}) async {
Map<String, String> params = {
"uid": Provider.of<UserModel>(context, listen: false).user.openid,
// 'is_time': '0'
"is_type": index.toString()
};
await couponProvider.getCustomerActivity(context, params,
isShowLoading: isShowLoading);
... ... @@ -51,7 +52,7 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
bool isSuccess = await couponProvider.setCustomerActivity(context, params,
isShowLoading: false);
print(isSuccess);
_couponNetworkData(isShowLoading: false);
_couponNetworkData(tabController.index, isShowLoading: false);
// if (isSuccess) {
// couponProvider.notifyListeners();
// } else {
... ... @@ -67,25 +68,29 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
super.initState();
tabController = TabController(length: 3, vsync: this);
tabController.addListener(() {
//点击tab时或滑动tab回调一次
// if (tabController.index.toDouble() == tabController.animation.value) {
// getMessage(index: tabController.index);
// selectIndex = tabController.index;
couponProvider.couponList = [];
couponProvider.pageState = PageState.Loading;
setState(() {});
// }
//点击tab时或滑动tab回调一次
if (tabController.index.toDouble() == tabController.animation.value) {
// couponProvider.notifyListeners();
_couponNetworkData(tabController.index);
// selectIndex = tabController.index;
// setState(() {});
}
});
WidgetsBinding.instance.addPostFrameCallback((_) {
_couponNetworkData();
_couponNetworkData(0);
});
bus.on("refresh_coupon_list_f", (arg) {
_couponNetworkData(tabController.index);
});
// bus.on("refresh_coupon_list", (arg) {
// _couponNetworkData();
// });
}
@override
void dispose() {
bus.off('changeStatusColor');
// bus.off("refresh_coupon_list");
bus.off("refresh_coupon_list_f");
super.dispose();
}
... ... @@ -158,7 +163,109 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
callback: () {
// offset = 0;
// getMessage(showLoading: true);
_couponNetworkData();
_couponNetworkData(tabController.index);
},
emptyMsg: "暂时没有列表信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return EasyRefresh.custom(
controller: _controller,
shrinkWrap: true,
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return CouponItemF(
from: 'quan',
couponSonModel:
couponProvider.couponList[index],
showBtn: true,
onPressedSwich: () {
couponProvider.couponList[index].isOpenBool =
!couponProvider
.couponList[index].isOpenBool;
_setCustomerActivity(index);
},
onPressed: () {
NavigatorUtil.goCouponDetailPage(context,
couponProvider.couponList[index]);
},
);
}, childCount: couponProvider.couponList.length),
)
],
// onRefresh: () async {
// // offset = 0;
// // getMessage(showLoading: false);
// },
// onLoad: () async {
// // offset++;
// // getMessage(showLoading: false);
// },
);
}
}),
Consumer<CouponProvider>(builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
// offset = 0;
// getMessage(showLoading: true);
_couponNetworkData(tabController.index);
},
emptyMsg: "暂时没有列表信息哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
);
} else {
return EasyRefresh.custom(
controller: _controller,
shrinkWrap: true,
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
return CouponItemF(
from: 'quan',
couponSonModel:
couponProvider.couponList[index],
showBtn: true,
onPressedSwich: () {
couponProvider.couponList[index].isOpenBool =
!couponProvider
.couponList[index].isOpenBool;
_setCustomerActivity(index);
},
onPressed: () {
NavigatorUtil.goCouponDetailPage(context,
couponProvider.couponList[index]);
},
);
}, childCount: couponProvider.couponList.length),
)
],
// onRefresh: () async {
// // offset = 0;
// // getMessage(showLoading: false);
// },
// onLoad: () async {
// // offset++;
// // getMessage(showLoading: false);
// },
);
}
}),
Consumer<CouponProvider>(builder: (context, model, _) {
if (model.pageState != PageState.Success) {
return ExceptionPage(
pageState: model.pageState,
callback: () {
// offset = 0;
// getMessage(showLoading: true);
_couponNetworkData(tabController.index);
},
emptyMsg: "暂时没有列表信息哦",
emptyImg: "empty_search",
... ... @@ -202,16 +309,6 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
);
}
}),
Container(
width: 100,
height: 100,
color: Colors.blue,
),
Container(
width: 100,
height: 100,
color: Colors.purple,
)
// MessageOnlineCheckPage()
]),
),
... ... @@ -243,20 +340,20 @@ class _CouponPageState extends State<CouponPage> with TickerProviderStateMixin {
radius: ScreenUtil().setWidth(14),
isBold: false,
fontSize: 28,
onPressed: () async{
onPressed: () async {
UserModel userModel =
Provider.of<UserModel>(context, listen: false);
if (userModel.user.role_name == '管理员' ||
userModel.user.role_name == '店长') {
NavigatorUtil.goCouponCreateSelectTypePage(context);
}else{
bool needRefresh =
} else {
bool needRefresh =
await NavigatorUtil.goCouponEditPage(context);
print(needRefresh);
if (needRefresh != null && needRefresh) {
//刷新页面数据
// _controller.callRefresh();
_couponNetworkData();
_couponNetworkData(tabController.index);
}
}
},
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/screenutil.dart';
import 'package:one_key/models/personnel_manage_model.dart';
import 'package:one_key/provider/personnel_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/event_bus.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
class CouponToPersonnalPage extends StatefulWidget {
final String uids;
final bool onlyShow;
CouponToPersonnalPage({Key key, this.uids, this.onlyShow = false})
: super(key: key);
@override
_CouponToPersonnalPageState createState() => _CouponToPersonnalPageState();
}
class _CouponToPersonnalPageState extends State<CouponToPersonnalPage> {
PersonnelProvider personnelProvider;
ScrollController _scrollController = ScrollController();
List<String> titleList = [];
@override
void initState() {
// TODO: implement initState
super.initState();
titleList = ['管理员', '店长', '客户经理', '收银员', '服务员'];
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_getAuthUserLists(showLoading: false);
});
EventBus().on('personnel_manage_page', (arg) {
_getAuthUserLists(showLoading: false);
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
EventBus().off('personnel_manage_page');
}
//获取员工信息列表
_getAuthUserLists({bool showLoading = true}) async {
Map<String, String> params = {
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
};
await personnelProvider.getAuthUserLists(context, params,
showLoading: showLoading);
List uidsList = widget.uids.split(',');
if (uidsList.length == 1 && uidsList[0] == '') {
} else {
for (String uid in uidsList) {
for (PersonnelManageSunModel item
in personnelProvider.dataMap.admin.listdata) {
if (uid == item.id) {
item.select = true;
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.shopowner.listdata) {
if (uid == item.id) {
item.select = true;
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.manager.listdata) {
if (uid == item.id) {
item.select = true;
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.cashier.listdata) {
if (uid == item.id) {
item.select = true;
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.waiter.listdata) {
if (uid == item.id) {
item.select = true;
}
}
}
personnelProvider.dataMap.admin.select =
!personnelProvider.dataMap.admin.listdata.any((value) {
return value.select == false;
});
personnelProvider.dataMap.shopowner.select =
!personnelProvider.dataMap.shopowner.listdata.any((value) {
return value.select == false;
});
personnelProvider.dataMap.manager.select =
!personnelProvider.dataMap.manager.listdata.any((value) {
return value.select == false;
});
personnelProvider.dataMap.cashier.select =
!personnelProvider.dataMap.cashier.listdata.any((value) {
return value.select == false;
});
personnelProvider.dataMap.waiter.select =
!personnelProvider.dataMap.waiter.listdata.any((value) {
return value.select == false;
});
_btnAllSelect();
personnelProvider.notifyListeners();
}
}
///全体员工选择按钮
_btnAllSelect() {
if (personnelProvider.dataMap.waiter.select &&
personnelProvider.dataMap.cashier.select &&
personnelProvider.dataMap.manager.select &&
personnelProvider.dataMap.admin.select &&
personnelProvider.dataMap.shopowner.select) {
personnelProvider.dataMap.select = true;
} else {
personnelProvider.dataMap.select = false;
}
}
@override
Widget build(BuildContext context) {
personnelProvider = Provider.of<PersonnelProvider>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'可发放员工',
onTap: () {
Navigator.of(context).pop();
},
),
body: Column(children: [
Align(
alignment: Alignment.centerRight,
child: InkWell(
onTap: () {
if (widget.onlyShow) {
return;
}
personnelProvider.dataMap.select =
!personnelProvider.dataMap.select;
if (personnelProvider.dataMap.select) {
personnelProvider.dataMap.waiter.select = true;
personnelProvider.dataMap.cashier.select = true;
personnelProvider.dataMap.manager.select = true;
personnelProvider.dataMap.admin.select = true;
personnelProvider.dataMap.shopowner.select = true;
for (PersonnelManageSunModel item
in personnelProvider.dataMap.waiter.listdata) {
item.select = true;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.cashier.listdata) {
item.select = true;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.manager.listdata) {
item.select = true;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.admin.listdata) {
item.select = true;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.shopowner.listdata) {
item.select = true;
}
} else {
personnelProvider.dataMap.waiter.select = false;
personnelProvider.dataMap.cashier.select = false;
personnelProvider.dataMap.manager.select = false;
personnelProvider.dataMap.admin.select = false;
personnelProvider.dataMap.shopowner.select = false;
for (PersonnelManageSunModel item
in personnelProvider.dataMap.waiter.listdata) {
item.select = false;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.cashier.listdata) {
item.select = false;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.manager.listdata) {
item.select = false;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.admin.listdata) {
item.select = false;
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.shopowner.listdata) {
item.select = false;
}
}
setState(() {});
},
child: Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(32),
horizontal: ScreenUtil().setWidth(36)),
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Image.asset(
Utils.getImgPath(
personnelProvider.dataMap != null &&
personnelProvider.dataMap?.select
? widget.onlyShow
? 'show_select_f'
: 'select_f'
: 'unselect'),
width: ScreenUtil().setWidth(40),
),
HEmptyView(20),
Text(
'全体员工',
style: TextStyle(
fontSize: ScreenUtil().setWidth(32),
color: widget.onlyShow
? MyColours.color_999999
: MyColours.color_000000),
),
],
)))),
Expanded(
child: Container(
child: ListView.builder(
itemCount: titleList.length,
shrinkWrap: true,
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
String title = titleList[index];
List<PersonnelManageSunModel> data = [];
bool select = false;
if (personnelProvider.dataMap != null) {
if (title == '管理员') {
data = personnelProvider.dataMap.admin.listdata;
select = personnelProvider.dataMap.admin.select;
} else if (title == '店长') {
data = personnelProvider.dataMap.shopowner.listdata;
select = personnelProvider.dataMap.shopowner.select;
} else if (title == '客户经理') {
data = personnelProvider.dataMap.manager.listdata;
select = personnelProvider.dataMap.manager.select;
} else if (title == '收银员') {
data = personnelProvider.dataMap.cashier.listdata;
select = personnelProvider.dataMap.cashier.select;
} else if (title == '服务员') {
data = personnelProvider.dataMap.waiter.listdata;
select = personnelProvider.dataMap.waiter.select;
}
}
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
InkWell(
onTap: () {
if (widget.onlyShow) {
return;
}
if (personnelProvider.dataMap != null) {
if (title == '管理员') {
personnelProvider.dataMap.admin.select =
!personnelProvider
.dataMap.admin.select;
select = personnelProvider
.dataMap.admin.select;
} else if (title == '店长') {
personnelProvider
.dataMap.shopowner.select =
!personnelProvider
.dataMap.shopowner.select;
select = personnelProvider
.dataMap.shopowner.select;
} else if (title == '客户经理') {
personnelProvider.dataMap.manager.select =
!personnelProvider
.dataMap.manager.select;
select = personnelProvider
.dataMap.manager.select;
} else if (title == '收银员') {
personnelProvider.dataMap.cashier.select =
!personnelProvider
.dataMap.cashier.select;
select = personnelProvider
.dataMap.cashier.select;
} else if (title == '服务员') {
personnelProvider.dataMap.waiter.select =
!personnelProvider
.dataMap.waiter.select;
select = personnelProvider
.dataMap.waiter.select;
}
if (select) {
for (PersonnelManageSunModel item
in data) {
item.select = true;
}
} else {
for (PersonnelManageSunModel item
in data) {
item.select = false;
}
}
_btnAllSelect();
setState(() {});
}
},
child: Container(
color: MyColours.color_f3f3f3,
height: ScreenUtil().setWidth(60),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(36),
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text('${title}',
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize:
ScreenUtil().setSp(36),
color:
MyColours.color_515151)),
data.length == 0
? SizedBox()
: Row(
children: [
Image.asset(
Utils.getImgPath(select
? widget.onlyShow
? 'show_select_f'
: 'select_f'
: 'unselect'),
width: ScreenUtil()
.setWidth(30),
),
HEmptyView(10),
Text(
'全选',
style: TextStyle(
fontSize: ScreenUtil()
.setWidth(28),
color: MyColours
.color_515151),
),
],
)
]))),
// MyDivider(
// double.infinity,
// ScreenUtil().setWidth(2),
// color: MyColours.color_f3f3f3,
// ),
ListView.builder(
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(0),
left: ScreenUtil().setWidth(36),
right: ScreenUtil().setWidth(36),
bottom: ScreenUtil().setWidth(28 * 2),
),
physics: NeverScrollableScrollPhysics(),
itemCount: data.length,
shrinkWrap: true,
controller: _scrollController,
itemBuilder: (BuildContext context, int index) {
PersonnelManageSunModel model = data[index];
return InkWell(
onTap: () {
if (widget.onlyShow) {
return;
}
model.select = !model.select;
bool temp = data.any((value) {
return value.select == false;
});
if (temp == true) {
personnelProvider.dataMap.select =
false;
if (personnelProvider.dataMap != null) {
if (title == '管理员') {
personnelProvider
.dataMap.admin.select = false;
select = personnelProvider
.dataMap.admin.select;
} else if (title == '店长') {
personnelProvider.dataMap.shopowner
.select = false;
select = personnelProvider
.dataMap.shopowner.select;
} else if (title == '客户经理') {
personnelProvider
.dataMap.manager.select = false;
select = personnelProvider
.dataMap.manager.select;
} else if (title == '收银员') {
personnelProvider
.dataMap.cashier.select = false;
select = personnelProvider
.dataMap.cashier.select;
} else if (title == '服务员') {
personnelProvider
.dataMap.waiter.select = false;
select = personnelProvider
.dataMap.waiter.select;
}
}
} else {
if (personnelProvider.dataMap != null) {
if (title == '管理员') {
personnelProvider
.dataMap.admin.select = true;
select = personnelProvider
.dataMap.admin.select;
} else if (title == '店长') {
personnelProvider.dataMap.shopowner
.select = true;
select = personnelProvider
.dataMap.shopowner.select;
} else if (title == '客户经理') {
personnelProvider
.dataMap.manager.select = true;
select = personnelProvider
.dataMap.manager.select;
} else if (title == '收银员') {
personnelProvider
.dataMap.cashier.select = true;
select = personnelProvider
.dataMap.cashier.select;
} else if (title == '服务员') {
personnelProvider
.dataMap.waiter.select = true;
select = personnelProvider
.dataMap.waiter.select;
}
_btnAllSelect();
}
}
setState(() {});
},
child: Column(children: [
Padding(
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(32),
),
child: Row(
children: [
Image.asset(
Utils.getImgPath(model.select
? widget.onlyShow
? 'show_select_f'
: 'select_f'
: 'unselect'),
width:
ScreenUtil().setWidth(40),
),
HEmptyView(20),
Text(
model.nickName != null &&
model.nickName != 'null'
? model.nickName
: model.account,
style: TextStyle(
fontSize: ScreenUtil()
.setWidth(32),
color: Color.fromRGBO(
0, 0, 0, 0.9)),
),
],
)),
Padding(
padding: EdgeInsets.only(
left:
ScreenUtil().setWidth(30 * 2)),
child: Container(
width: double.infinity,
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
)
]),
);
}),
],
);
}))),
widget.onlyShow
? SizedBox()
: RoundButton(
text: '保存',
width: ScreenUtil().setWidth(130 * 2),
height: ScreenUtil().setWidth(37 * 2),
radius: ScreenUtil().setWidth(22),
isBold: true,
fontSize: 24,
onPressed: () async {
String uids = '';
for (PersonnelManageSunModel item
in personnelProvider.dataMap.admin.listdata) {
if (item.select) {
uids += item.id + ',';
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.shopowner.listdata) {
if (item.select) {
uids += item.id + ',';
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.manager.listdata) {
if (item.select) {
uids += item.id + ',';
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.cashier.listdata) {
if (item.select) {
uids += item.id + ',';
}
}
for (PersonnelManageSunModel item
in personnelProvider.dataMap.waiter.listdata) {
if (item.select) {
uids += item.id + ',';
}
}
if (uids.endsWith(',')) {
uids = uids.substring(0, uids.length - 1);
}
Map temp = {'object': uids};
Navigator.of(context).pop(temp);
}),
VEmptyView(30)
]));
}
}
... ...
... ... @@ -114,7 +114,9 @@ class PersonnelProvider extends ChangeNotifier {
} else {
Utils.showToast(baseResp.msg ?? "");
}
notifyListeners();
return dataMap;
}
/// 添加店员
... ...
import 'package:flutter/material.dart';
class MyColours {
static const Color color_ED7B2F = Color(0xffED7B2F);
static const Color color_DBDBDB = Color(0xffDBDBDB);
static const Color color_F8F9FD = Color(0xffF8F9FD);
static const Color color_5F7292 = Color(0xff5F7292);
... ...
... ... @@ -829,7 +829,7 @@ class NavigatorUtil {
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.my_area_manage_page}?",
return _navigateTo(context, "${Routes.my_area_manage_page}",
replace: replace);
}
... ... @@ -838,7 +838,16 @@ class NavigatorUtil {
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.coupon_create_select_type_page}?",
return _navigateTo(context, "${Routes.coupon_create_select_type_page}",
replace: replace);
}
///优惠券----可发放员工
static Future<dynamic> goCouponToPersonnalPage(
BuildContext context, String uids,
{replace = false, bool onlyShow = false}) {
return _navigateTo(context,
"${Routes.coupon_to_personnel_page}?uids=$uids&onlyShow=$onlyShow",
replace: replace);
}
}
... ...
... ... @@ -24,6 +24,7 @@ import 'package:one_key/pages/coupon/coupon_edit_page.dart';
import 'package:one_key/pages/coupon/coupon_history_page.dart';
import 'package:one_key/pages/coupon/coupon_page.dart';
import 'package:one_key/pages/coupon/coupon_selecet_page.dart';
import 'package:one_key/pages/coupon/coupon_to_personal_page.dart';
import 'package:one_key/pages/create_store/complete_create_store.dart';
import 'package:one_key/pages/create_store/create_store.dart';
import 'package:one_key/pages/create_store/enter_store_address.dart';
... ... @@ -1295,3 +1296,14 @@ var couponCreateSelectTypePageHandle = new Handler(
// params["userHistoryEntity"].first)));
return CouponCreateSelectTypePage();
});
///优惠券----可发放员工
var couponToPersonnelPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
String uids = params["uids"].first;
bool onlyShow = FluroConvertUtils.string2bool(params["onlyShow"].first);
return ChangeNotifierProvider<PersonnelProvider>(
create: (_) => PersonnelProvider(),
child: CouponToPersonnalPage(uids: uids, onlyShow: onlyShow));
});
... ...
... ... @@ -113,6 +113,8 @@ class Routes {
"/base_info_personnal_page"; //员工管理---个人资料
static String coupon_create_select_type_page =
"/coupon_create_select_type_page"; //选择优惠券类型
static String coupon_to_personnel_page =
"/coupon_to_personnel_page"; //优惠券----可发放员工
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
... ... @@ -229,5 +231,7 @@ class Routes {
handler: baseInfoPersonnalPageHandle);
router.define(coupon_create_select_type_page,
handler: couponCreateSelectTypePageHandle);
router.define(coupon_to_personnel_page,
handler: couponToPersonnelPageHandle);
}
}
... ...