Commit 708a63b46fcb795e12a21fca130ed554b54322b0

Authored by wdn127929
1 parent 067e3a29

新建宴会

///桌位区域
class FeastMenuModel {
String name;
bool save;
bool select;
FeastMenuModel();
factory FeastMenuModel.fromJson(Map<String, dynamic> json) => FeastMenuModel()
..name = json["name"]
..save = json["save"]
..select = json["select"];
Map<String, dynamic> toJson() =>
<String, dynamic>{"name": name, "save": save, "select": select};
}
... ...
... ... @@ -78,7 +78,7 @@ class _FeastBoardPageState extends State<FeastBoardPage> {
children: [
TableCalendar(
// rowHeight: ScreenUtil().setWidth(100),
rowHeight: ScreenUtil().setWidth(106),
rowHeight: ScreenUtil().setWidth(114),
calendarController: _calendarController,
initialSelectedDay: dateTimeNow,
onDaySelected: (day, events, holidays) {
... ...
import 'package:dotted_border/dotted_border.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../models/feast_menu_model.dart';
import '../../provider/feast_model.dart';
import '../../provider/upload_img_provider.dart';
import '../../res/colors.dart';
import '../../utils/dialog_util.dart';
import '../../utils/screen_util.dart';
import '../../utils/upload_image_util.dart';
import '../../utils/utils.dart';
import '../../widgets/h_empty_view.dart';
import '../../widgets/set_time_widget.dart';
import '../../widgets/system_app_bar.dart';
import '../online_check/img_picker_widget_f.dart';
import '../table/area_item_table.dart';
class FeastCreatePage extends StatefulWidget {
FeastCreatePage({Key key}) : super(key: key);
... ... @@ -23,18 +33,62 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
TextEditingController phoneC = TextEditingController();
FocusNode nameF = FocusNode();
FocusNode phoneF = FocusNode();
TextEditingController customC = TextEditingController();
FocusNode customF = FocusNode();
TextEditingController customC = TextEditingController(); //意向备注
FocusNode customF = FocusNode(); //意向备注
TextEditingController customCxt = TextEditingController(); //选台备注
FocusNode customFxt = FocusNode(); //选台备注
TextEditingController customCdb = TextEditingController(); //担保说明
FocusNode customFdb = FocusNode(); //担保说明
List sexList;
int sexSelectIndex = 0;
String sexStr = '先生';
ScrollController _scrollController = ScrollController();
DateTime dateTime; //宴会日期
String dateTimeShow = '请选择'; //宴会日期显示 2022-08-02(周二 七月十五)
String jdShow = '请选择'; //接单人
String gdShow = '请选择'; //跟单人
int jdSelIndex; //接单人选择index
int gdSelIndex; //跟单人选择index
FeastModel feastModel;
String feastTypeShow = '请选择'; //宴会类型
int feastTypeSelIndex; //宴会类型选择index
Map<String, FeastMenuModel> menuMap = {}; // 菜单数据
String selectMenu = '意向'; //当前选中的菜单名称
Set<String> menuSet = {}; //已经保存的菜单名称
String cdShow = '请选择'; //餐段显示
String qsDateShow = '请选择'; //起始时间
String startDate = '';
String endDate = '';
String dateTimeShowxt = '请选择'; //宴会日期显示 选台 2022-08-02(周二 七月十五)
DateTime dateTimext; //宴会日期
ScrollController controller = ScrollController();
String djDBR = '请选择'; //定金担保人
@override
void initState() {
// TODO: implement initState
super.initState();
dateTime = DateTime.now();
dateTimext = DateTime.now();
Utils.changeStatusColor(color: MyColours.color_438E93);
initSexList();
WidgetsBinding.instance.addPostFrameCallback((_) {
_getSellerUserBySellerid();
// scrollController.jumpTo(scrollController.position.minScrollExtent);
});
}
///商家编辑页面 ----- 获取经理数据
_getSellerUserBySellerid() async {
await feastModel.getSellerUserBySellerid(context);
// for (int i = 0; i < feastModel.sellerManageList.length; i++) {
// if (manageShow == feastModel.sellerManageList[i].title) {
// customerProvider.manageSelIndex = i;
// }
// }
}
///称谓
... ... @@ -62,19 +116,31 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
];
}
Widget menuBtn(String title, bool select) {
return Container(
width: w(40),
height: h(40),
alignment: Alignment.center,
decoration: BoxDecoration(
color: select ? MyColours.color_438E93 : MyColours.color_BFC4D4,
borderRadius: BorderRadius.circular(r(20))),
child: Text(
title,
style: TextStyle(color: MyColours.color_F6F6F6, fontSize: font(14)),
),
);
Widget menuBtn(String title, {GestureTapCallback onTap}) {
return InkWell(
onTap: () {
if (menuSet.contains(title)) {
setState(() {
selectMenu = title;
});
}
},
child: Container(
width: w(40),
height: h(40),
alignment: Alignment.center,
decoration: BoxDecoration(
color: title == selectMenu
? MyColours.color_438E93
: menuSet.contains(title)
? MyColours.color_00A870
: MyColours.color_BFC4D4,
borderRadius: BorderRadius.circular(r(20))),
child: Text(
title,
style: TextStyle(color: MyColours.color_F6F6F6, fontSize: font(14)),
),
));
}
Widget arrow() {
... ... @@ -91,40 +157,30 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
menuBtn('意向', true),
menuBtn(
'意向',
),
arrow(),
menuBtn('选台', false),
menuBtn(
'选台',
),
arrow(),
menuBtn('定金', false),
menuBtn(
'定金',
),
arrow(),
menuBtn('签约', false),
menuBtn(
'签约',
),
],
),
);
}
Widget _selectWidget(String title, String labelShow) {
Widget _selectWidget(String title, String labelShow,
{GestureTapCallback onTap, bool need = true}) {
return InkWell(
onTap: () {
// FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
// DialogUtil.showSelectCusmanDialog(
// context,
// customerProvider.labelList.map((item) {
// return item.label;
// }).toList(), (value) {
// if (value != null) {
// setState(() {
// customerProvider.labelSelIndex = value.first;
// labelShow = customerProvider
// .labelList[customerProvider.labelSelIndex].label;
// });
// }
// },
// selecteds: customerProvider.labelSelIndex == null
// ? []
// : [customerProvider.labelSelIndex])
// .then((value) {});
},
onTap: onTap,
child: Container(
// height: ScreenUtil().setWidth(60),
padding: EdgeInsets.only(
... ... @@ -158,7 +214,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
recognizer: TapGestureRecognizer()
..onTap = () {}),
TextSpan(
text: '*',
text: need ? '*' : '',
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: ScreenUtil().setSp(28)),
... ... @@ -172,7 +228,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
labelShow,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_515151,
color: labelShow == '请选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
)),
... ... @@ -269,7 +327,9 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
decoration: InputDecoration(
hintText: labelShow,
hintStyle: TextStyle(
color: MyColours.color_999999,
color: labelShow == '请输入'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
// contentPadding:
... ... @@ -335,7 +395,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
));
}
Widget remark() {
Widget remark(TextEditingController textEditC, FocusNode node,
{String hintText = "请输入备注"}) {
return Padding(
padding:
EdgeInsets.only(top: h(29), left: w(16), right: w(18), bottom: h(22)),
... ... @@ -352,8 +413,8 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
color: MyColours.color_DBDBDB, width: ScreenUtil().setWidth(2)),
borderRadius: BorderRadius.circular(ScreenUtil().setWidth(10))),
child: TextField(
controller: customC,
focusNode: customF,
controller: textEditC,
focusNode: node,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
... ... @@ -362,7 +423,7 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
maxLines: 5,
maxLength: 100,
decoration: InputDecoration(
hintText: "请输入备注",
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28),
... ... @@ -371,44 +432,1103 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
border: OutlineInputBorder(borderSide: BorderSide.none),
),
keyboardType: TextInputType.text,
onChanged: (value) {
// setState(() {
// currentRemark = value ?? "";
// });
// if (value.length < currRemark.length &&
// currRemark.substring(value.length) != ',') {
// setState(() {
// currRemark = value ?? "";
// });
// if (sum == 0) {
// for (int i = 0; i < remarks.length; i++) {
// if (remarks[i].isSelect &&
// remarks[i].remark == selectItem.last) {
// setState(() {
// remarks[i].isSelect = false;
// });
// }
// }
// }
// sum++;
// if (sum == selectItem.last.length ||
// selectItem.length == 1 ||
// selectItem.length == 0) {
// selectItem.removeLast();
// sum = 0;
onChanged: (value) {}),
),
);
}
Widget _callButton(
{GestureTapCallback onPress,
content,
hasLeftBorder = true,
isSelect = false}) {
return InkWell(
onTap: onPress,
child: Container(
height: h(48),
decoration: BoxDecoration(
color: isSelect ? MyColours.color_438E93 : MyColours.color_ffffff,
border: Border(
bottom: BorderSide(
color: MyColours.color_438E93,
width: ScreenUtil().setWidth(2)),
top: BorderSide(
color: MyColours.color_438E93,
width: ScreenUtil().setWidth(2)),
left: hasLeftBorder
? BorderSide(
color: MyColours.color_438E93,
width: ScreenUtil().setWidth(2))
: BorderSide.none,
right: BorderSide(
color: MyColours.color_438E93,
width: ScreenUtil().setWidth(2)))),
child: Align(
alignment: Alignment.center,
child: Text(
content,
style: TextStyle(
color:
isSelect ? MyColours.color_F6F6F6 : MyColours.color_438E93,
fontSize: ScreenUtil().setSp(36)),
),
),
),
);
}
//生成日期文本
createDateText(BuildContext context, DateTime day) {
// if (Utils.isOneDay(day, dateTime)) return; //日期没变
String ymd = "${day.year}-" +
Utils.addZeroNumber(day.month) +
"-" +
Utils.addZeroNumber(day.day);
ymd += " (周${Utils.formatWeekDayNum(day.weekday)} ";
ymd += Utils.lunarCalendarHolidays(day);
ymd += ')';
return ymd;
}
///意向
Widget yxWidget() {
return Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(children: <Widget>[
menu(),
MyDivider(double.infinity, h(1), color: MyColours.color_DBDBDB),
VEmptyView(26),
_selectWidget('宴会日期', dateTimeShow, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showCalendarDialog(context, dateTime).then((day) async {
if (day != null) {
dateTime = day;
dateTimeShow = createDateText(context, day);
setState(() {});
}
});
}),
_selectWidget('接单人', jdShow, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showSelectCusmanDialog(
context,
feastModel.sellerManageList.map((item) {
return item.title;
}).toList(), (value) {
if (value != null) {
setState(() {
jdSelIndex = value.first;
jdShow = feastModel.sellerManageList[jdSelIndex].title;
});
}
},
cancelText: '',
title: '选择经理',
selecteds: jdSelIndex == null ? [] : [jdSelIndex])
.then((value) {});
}),
_selectWidget('跟单人', gdShow, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showSelectCusmanDialog(
context,
feastModel.sellerManageList.map((item) {
return item.title;
}).toList(), (value) {
if (value != null) {
setState(() {
gdSelIndex = value.first;
gdShow = feastModel.sellerManageList[gdSelIndex].title;
});
}
},
cancelText: '',
title: '选择经理',
selecteds: gdSelIndex == null ? [] : [gdSelIndex])
.then((value) {});
}),
_selectWidget('宴会类型', feastTypeShow, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showSelectCusmanDialog(
context,
feastModel.sellerManageList.map((item) {
return item.title;
}).toList(), (value) {
if (value != null) {
setState(() {
feastTypeSelIndex = value.first;
feastTypeShow =
feastModel.sellerManageList[feastTypeSelIndex].title;
});
}
},
cancelText: '',
title: '选择宴会类型',
selecteds:
feastTypeSelIndex == null ? [] : [feastTypeSelIndex])
.then((value) {});
}),
_inputWidget('预订人', '请输入', nameC, nameF),
_inputWidget('电话', '请输入', phoneC, phoneF),
remark(customC, customF),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(24)),
child: Consumer<UploadImageProvider>(builder: (context, model, _) {
return ImgPickerFWidget(
model: model,
scrollController: _scrollController,
uploadType: UploadType.FeastRemarkType,
bgColor: MyColours.color_DBDBDB,
size: 64,
crossAxisCount: 4,
maxImageNumber: 8,
mainAxisSpacing: 72,
crossAxisSpacing: 56,
);
}),
),
VEmptyView(150)
]))),
Row(
children: [
Expanded(
child: _callButton(
onPress: () {},
content: '仅保存',
hasLeftBorder: true,
isSelect: false)),
Expanded(
child: _callButton(
onPress: () {
selectMenu = '选台';
menuSet.add('意向');
menuSet.add('选台');
setState(() {});
},
content: '保存并下一步',
hasLeftBorder: true,
isSelect: true))
],
)
],
);
}
///选台
Widget xtWidget() {
return Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: controller,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
menu(),
MyDivider(double.infinity, h(1),
color: MyColours.color_DBDBDB),
VEmptyView(26),
Container(
height: h(33),
child: ListView.builder(
padding: EdgeInsets.only(left: w(21)),
itemCount: 2,
shrinkWrap: true,
scrollDirection: Axis.horizontal,
itemBuilder: (BuildContext contxt, int index) {
if (index == 1) {
return InkWell(
onTap: () async {
// //添加区域弹框
// await DialogUtil
// .openCreateAreaDialog(context,
// onTap: (value) async {
// print(value);
// //添加区域
// bool success =
// await tableManagerModel
// .addTableAreas(
// context, value);
// print(success);
// if (success) {
// Utils.showToast('添加成功!');
// tableManagerModel.currentArea =
// value;
// await tableManagerModel
// .refreshTable(context);
// }
// });
},
child: DottedBorder(
dashPattern: [2, 2, 2, 2],
borderType: BorderType.RRect,
radius: Radius.circular(r(6)),
// padding: EdgeInsets.all(ScreenUtil().setWidth(70)),
color: MyColours.color_199095,
strokeWidth: ScreenUtil().setWidth(2),
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(
ScreenUtil().setWidth(10))),
child: Container(
height: ScreenUtil().setWidth(33 * 2),
width: ScreenUtil().setWidth(70 * 2),
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(r(6)),
),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath('add_area'),
width: ScreenUtil()
.setWidth(24)),
],
),
),
),
));
} else {
return Container(
height: h(33),
width: w(70),
// padding: EdgeInsets.symmetric(
// horizontal: w(8),
// ),
margin: EdgeInsets.only(right: w(8)),
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(6)),
color: true
? MyColours.color_438E93
: MyColours.color_ffffff),
child: Text(
'第一场',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: true
? MyColours.color_F6F6F6
: MyColours.color_999999,
fontSize: font(18),
fontWeight: FontWeight.bold),
),
);
}
},
)),
VEmptyView(26),
_selectWidget('宴会日期', dateTimeShowxt, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showCalendarDialog(context, dateTimext)
.then((day) async {
if (day != null) {
dateTimext = day;
dateTimeShowxt = createDateText(context, day);
setState(() {});
}
});
}),
_selectWidget('餐段选择', cdShow, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
DialogUtil.showSelectCusmanDialog(
context,
feastModel.sellerManageList.map((item) {
return item.title;
}).toList(), (value) {
if (value != null) {
setState(() {
jdSelIndex = value.first;
jdShow =
feastModel.sellerManageList[jdSelIndex].title;
});
}
},
cancelText: '',
title: '选择餐段',
selecteds:
jdSelIndex == null ? [] : [jdSelIndex])
.then((value) {});
}),
_selectWidget('起始时间', qsDateShow, need: false, onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
SetTimeWidget.init.showFeastTimeSelector(
context,
SetTimeWidget.init.getFeastDateData('00:00-23:30'),
startDate,
endDate, (value) {
if (value != null) {
startDate =
SetTimeWidget.init.getSelectTitle(value[0]);
endDate =
SetTimeWidget.init.getSelectTitle(value[1]);
qsDateShow = startDate + '-' + endDate;
setState(() {});
}
});
// DialogUtil.showSelectCusmanDialog(
// context,
// feastModel.sellerManageList.map((item) {
// return item.title;
// }).toList(), (value) {
// if (value != null) {
// setState(() {
// gdSelIndex = value.first;
// gdShow = feastModel.sellerManageList[gdSelIndex].title;
// });
// }
// },
// cancelText: '',
// title: '选择经理',
// selecteds: gdSelIndex == null ? [] : [gdSelIndex])
// .then((value) {});
}),
Padding(
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(32),
right: ScreenUtil().setWidth(32),
top: h(24)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
RichText(
textScaleFactor: 1,
overflow: TextOverflow.ellipsis,
// textDirection: TextDirection.ltr,
text: TextSpan(
children: [
TextSpan(
text: '桌位选择',
style: TextStyle(
color: MyColours.color_000000,
fontSize: ScreenUtil().setSp(28)),
recognizer: TapGestureRecognizer()
..onTap = () {}),
TextSpan(
text: '*',
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: ScreenUtil().setSp(28)),
//点击事件
recognizer: TapGestureRecognizer()
..onTap = () {}),
TextSpan(
text: '(共0桌)',
style: TextStyle(
color: MyColours.color_000000,
fontSize: ScreenUtil().setSp(28)),
recognizer: TapGestureRecognizer()
..onTap = () {}),
],
)),
ListView.builder(
itemCount: 2,
shrinkWrap: true,
controller: controller,
itemBuilder:
(BuildContext context, int index) {
return Container(
height: h(42),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: h(1),
color:
MyColours.color_DBDBDB))),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
'包间$index',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_438E93,
fontSize: font(16)),
)),
Container(
width: w(22),
child: Text(
'30',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: font(14)),
),
),
Text(
'桌',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(14)),
),
HEmptyView(32),
InkWell(
child: Image.asset(
Utils.getImgPath('f_delete_red'),
width: w(20),
))
],
),
);
}),
VEmptyView(28),
RoundButton(
text: '添加桌位',
radius: r(6),
width: w(56),
height: h(21),
fontSize: 24,
textColor: MyColours.color_F6F6F6,
isBold: false,
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
),
VEmptyView(52),
Text(
'套餐选择',
style: TextStyle(
color: MyColours.color_000000,
fontSize: ScreenUtil().setSp(28)),
),
ListView.builder(
itemCount: 2,
shrinkWrap: true,
controller: controller,
itemBuilder:
(BuildContext context, int index) {
return Container(
height: h(80),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: h(1),
color:
MyColours.color_DBDBDB))),
child: Column(
mainAxisAlignment:
MainAxisAlignment.spaceAround,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
'1299套餐',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color:
MyColours.color_515151,
fontSize: font(16)),
)),
InkWell(
child: Row(
children: [
Image.asset(
Utils.getImgPath(
'f_tiaocai'),
width: w(20),
),
HEmptyView(8),
Text(
'调菜',
style: TextStyle(
color: MyColours
.color_515151,
fontSize: font(14)),
),
],
)),
HEmptyView(32),
InkWell(
child: Image.asset(
Utils.getImgPath(
'f_delete_red'),
width: w(20),
))
],
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
taocanText('1299', ' 元/桌'),
taocanText('10', ' 人/桌'),
taocanTextType(
'保证 ', '1299', ' 桌'),
taocanTextType('备用 ', '2', ' 桌'),
],
)
],
),
);
}),
VEmptyView(28),
RoundButton(
text: '添加套餐',
radius: r(6),
width: w(56),
height: h(21),
fontSize: 24,
textColor: MyColours.color_F6F6F6,
isBold: false,
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
),
VEmptyView(52),
Text(
'酒水选择',
style: TextStyle(
color: MyColours.color_000000,
fontSize: ScreenUtil().setSp(28)),
),
ListView.builder(
itemCount: 2,
shrinkWrap: true,
controller: controller,
itemBuilder:
(BuildContext context, int index) {
return Container(
height: h(42),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: h(1),
color:
MyColours.color_DBDBDB))),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
'剑南春52度500ml',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
)),
taocanText('1299', ' 元/份'),
HEmptyView(32),
taocanText('12', ' 份'),
HEmptyView(32),
InkWell(
child: Image.asset(
Utils.getImgPath('f_delete_red'),
width: w(20),
))
],
),
);
}),
VEmptyView(28),
RoundButton(
text: '添加酒水',
radius: r(6),
width: w(56),
height: h(21),
fontSize: 24,
textColor: MyColours.color_F6F6F6,
isBold: false,
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
),
VEmptyView(52),
Text(
'其他配置',
style: TextStyle(
color: MyColours.color_000000,
fontSize: ScreenUtil().setSp(28)),
),
ListView.builder(
itemCount: 2,
shrinkWrap: true,
controller: controller,
itemBuilder:
(BuildContext context, int index) {
return Container(
height: h(42),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: h(1),
color:
MyColours.color_DBDBDB))),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
'LED大屏',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
)),
taocanText('1299', ' 元/份'),
HEmptyView(32),
taocanText('12', ' 份'),
HEmptyView(32),
InkWell(
child: Image.asset(
Utils.getImgPath('f_delete_red'),
width: w(20),
))
],
),
);
}),
VEmptyView(28),
RoundButton(
text: '添加配置',
radius: r(6),
width: w(56),
height: h(21),
fontSize: 24,
textColor: MyColours.color_F6F6F6,
isBold: false,
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
),
],
)),
remark(customCxt, customFxt),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(24)),
child: Consumer<UploadImageProvider>(
builder: (context, model, _) {
return ImgPickerFWidget(
model: model,
scrollController: _scrollController,
uploadType: UploadType.FeastRemarkXtType,
bgColor: MyColours.color_DBDBDB,
size: 64,
crossAxisCount: 4,
maxImageNumber: 8,
mainAxisSpacing: 72,
crossAxisSpacing: 56,
);
}),
),
VEmptyView(150)
]))),
Row(
children: [
Expanded(
child: _callButton(
onPress: () {},
content: '仅保存',
hasLeftBorder: true,
isSelect: false)),
Expanded(
child: _callButton(
onPress: () {
selectMenu = '定金';
menuSet.add('选台');
menuSet.add('定金');
setState(() {});
},
content: '保存并下一步',
hasLeftBorder: true,
isSelect: true))
],
)
],
);
}
///定金页面
Widget djWidget() {
return Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(children: <Widget>[
menu(),
MyDivider(double.infinity, h(1), color: MyColours.color_DBDBDB),
VEmptyView(26),
Padding(
padding: EdgeInsets.symmetric(
horizontal: w(24),
),
child: Row(
children: [
Image.asset(Utils.getImgPath('f_dj'), width: w(20)),
HEmptyView(4),
Text(
'定金付款',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_000000, fontSize: font(18)),
),
Spacer(),
RoundButton(
text: '添加一项',
radius: r(6),
width: w(56),
height: h(21),
fontSize: 24,
textColor: MyColours.color_F6F6F6,
isBold: false,
gradientStart: MyColours.color_438E93,
gradientEnd: MyColours.color_438E93,
),
],
)),
ListView.builder(
padding: EdgeInsets.only(left: w(13), right: w(13), top: h(20)),
itemCount: 2,
shrinkWrap: true,
controller: controller,
itemBuilder: (BuildContext context, int index) {
return Container(
height: h(110),
margin: EdgeInsets.only(bottom: h(20)),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(r(5)),
border: Border.all(
width: h(1), color: MyColours.color_438E93)),
child: Column(children: [
Container(
height: h(24),
padding: EdgeInsets.only(left: w(16), right: w(8)),
decoration: BoxDecoration(
color: MyColours.color_438E93,
borderRadius: BorderRadius.only(
topLeft: Radius.circular(r(4)),
topRight: Radius.circular(r(4))),
border: Border.all(
width: h(1), color: MyColours.color_438E93)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'定金1',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_F6F6F6,
fontSize: font(14)),
),
Text(
'收据编号 SJ000001',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_F6F6F6,
fontSize: font(12)),
),
InkWell(
child: Image.asset(
Utils.getImgPath('f_dj_delete'),
width: w(20),
))
],
),
),
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
HEmptyView(32),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
djTextType1('定金金额 ', '200', ' 元'),
djText('支付方式 ', '现金'),
djText('定金类型 ', '宴会定金')
],
),
HEmptyView(140),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
djText('付款时间 ', '2022-08-03'),
djText('收款人 ', '刘经理'),
djText('付款人 ', '方先生')
],
)
],
))
]));
}),
VEmptyView(62),
Padding(
padding: EdgeInsets.symmetric(
horizontal: w(24),
),
child: Row(
children: [
Image.asset(Utils.getImgPath('f_dj_db'), width: w(20)),
HEmptyView(4),
Text(
'担保',
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: MyColours.color_000000, fontSize: font(18)),
),
],
)),
VEmptyView(48),
InkWell(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //隐藏键盘
// DialogUtil.showSelectCusmanDialog(
// context,
// customerProvider.labelList.map((item) {
// return item.label;
// }).toList(), (value) {
// if (value != null) {
// setState(() {
// customerProvider.labelSelIndex =
// value.first;
// labelShow = customerProvider
// .labelList[
// customerProvider.labelSelIndex]
// .label;
// });
// }
// } else {
// setState(() {
// currRemark = value ?? "";
// });
// }
// },
// selecteds:
// customerProvider.labelSelIndex == null
// ? []
// : [
// customerProvider.labelSelIndex
// ])
// .then((value) {});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
HEmptyView(40),
Container(
// color: Colors.red,
width: ScreenUtil().setWidth(150),
height: ScreenUtil().setWidth(35),
child: Text(
'担保人',
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_333333),
),
),
HEmptyView(60),
Expanded(
child: Container(
height: ScreenUtil().setWidth(64),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: Color.fromRGBO(220, 220, 220, 1)))),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Text(
djDBR,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: djDBR == '请选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
)),
HEmptyView(10),
Image.asset(
Utils.getImgPath('f_arrow_down'),
width: ScreenUtil().setWidth(64),
// height: ScreenUtil().setWidth(10),
),
HEmptyView(16),
],
))),
HEmptyView(24),
],
),
),
remark(customCdb, customFdb,hintText: '担保说明'),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(0),
ScreenUtil().setWidth(32),
ScreenUtil().setWidth(24)),
child: Consumer<UploadImageProvider>(builder: (context, model, _) {
return ImgPickerFWidget(
model: model,
scrollController: _scrollController,
uploadType: UploadType.FeastRemarkDjType,
bgColor: MyColours.color_DBDBDB,
size: 64,
crossAxisCount: 4,
maxImageNumber: 8,
mainAxisSpacing: 72,
crossAxisSpacing: 56,
);
}),
),
),
VEmptyView(150)
]))),
Row(
children: [
Expanded(
child: _callButton(
onPress: () {},
content: '仅保存',
hasLeftBorder: true,
isSelect: false)),
Expanded(
child: _callButton(
onPress: () {
selectMenu = '选台';
menuSet.add('意向');
menuSet.add('选台');
setState(() {});
},
content: '保存并下一步',
hasLeftBorder: true,
isSelect: true))
],
)
],
);
}
Widget taocanTextType(String per1, String title, String per) {
return RichText(
textScaleFactor: 1,
overflow: TextOverflow.ellipsis,
// textDirection: TextDirection.ltr,
text: TextSpan(
children: [
TextSpan(
text: per1,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28)),
//点击事件
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: title,
style: TextStyle(
color: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(28)),
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: per,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28)),
//点击事件
recognizer: TapGestureRecognizer()..onTap = () {}),
],
));
}
Widget taocanText(String title, String per) {
return RichText(
textScaleFactor: 1,
overflow: TextOverflow.ellipsis,
// textDirection: TextDirection.ltr,
text: TextSpan(
children: [
TextSpan(
text: title,
style: TextStyle(
color: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(28)),
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: per,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(28)),
//点击事件
recognizer: TapGestureRecognizer()..onTap = () {}),
],
));
}
Widget djTextType1(String title, String data, String per) {
return RichText(
textScaleFactor: 1,
overflow: TextOverflow.ellipsis,
// textDirection: TextDirection.ltr,
text: TextSpan(
children: [
TextSpan(
text: title,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: data,
style: TextStyle(
color: MyColours.color_E34D59,
fontSize: ScreenUtil().setSp(24)),
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: per,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(24)),
//点击事件
recognizer: TapGestureRecognizer()..onTap = () {}),
],
));
}
Widget djText(String title, String per) {
return RichText(
textScaleFactor: 1,
overflow: TextOverflow.ellipsis,
// textDirection: TextDirection.ltr,
text: TextSpan(
children: [
TextSpan(
text: title,
style: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(24)),
recognizer: TapGestureRecognizer()..onTap = () {}),
TextSpan(
text: per,
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(24)),
//点击事件
recognizer: TapGestureRecognizer()..onTap = () {}),
],
));
}
@override
Widget build(BuildContext context) {
feastModel = Provider.of<FeastModel>(context, listen: true);
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
... ... @@ -420,18 +1540,12 @@ class _FeastCreatePageState extends State<FeastCreatePage> {
Navigator.pop(context);
},
),
body: SingleChildScrollView(
child: Column(children: <Widget>[
menu(),
MyDivider(double.infinity, h(1), color: MyColours.color_DBDBDB),
VEmptyView(26),
_selectWidget('宴会日期', '2022-08-02(周二 七月十五)'),
_selectWidget('接单人', '刘经理'),
_selectWidget('跟单人', '请选择'),
_selectWidget('宴会类型', '请选择'),
_inputWidget('预订人', '请输入', nameC, nameF),
_inputWidget('电话', '请输入', phoneC, phoneF),
remark()
])));
body: selectMenu == '意向'
? yxWidget()
: selectMenu == '选台'
? xtWidget()
: selectMenu == '定金'
? djWidget()
: SizedBox());
}
}
... ...
... ... @@ -26,6 +26,7 @@ import 'package:provider/provider.dart';
import 'package:image_picker/image_picker.dart';
import 'package:qiniu_flutter_sdk/qiniu_flutter_sdk.dart';
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
import '../../utils/screen_util.dart';
import './dispose.dart';
import 'package:photo_manager/photo_manager.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
... ... @@ -42,6 +43,11 @@ class ImgPickerFWidget extends StatefulWidget {
final UploadImageProvider model;
final UploadType uploadType;
final DeleteCallback deleteCallback;
final double size;
final Color bgColor;
final int crossAxisCount;
final double mainAxisSpacing;
final double crossAxisSpacing;
ImgPickerFWidget(
{Key key,
this.scrollController,
... ... @@ -50,7 +56,12 @@ class ImgPickerFWidget extends StatefulWidget {
this.maxImageNumber = 5,
this.model,
this.uploadType,
this.deleteCallback})
this.deleteCallback,
this.size = 100,
this.bgColor = MyColours.color_f3f3f3,
this.crossAxisCount = 3,
this.mainAxisSpacing = 40,
this.crossAxisSpacing = 36})
: super(key: key);
@override
... ... @@ -107,6 +118,12 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
widget.model.imageListDenvironment.add(imgModel);
} else if (widget.uploadType == UploadType.TableManagerType) {
widget.model.tableImageList.add(imgModel);
} else if (widget.uploadType == UploadType.FeastRemarkType) {
widget.model.feastRemarkImageList.add(imgModel);
} else if (widget.uploadType == UploadType.FeastRemarkXtType) {
widget.model.feastRemarkXtImageList.add(imgModel);
} else if (widget.uploadType == UploadType.FeastRemarkDjType) {
widget.model.feastRemarkDjImageList.add(imgModel);
}
} else {
print('No image selected.');
... ... @@ -123,6 +140,12 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.FeastRemarkType) {
temp = widget.model.feastRemarkImageList;
} else if (widget.uploadType == UploadType.FeastRemarkXtType) {
temp = widget.model.feastRemarkXtImageList;
} else if (widget.uploadType == UploadType.FeastRemarkDjType) {
temp = widget.model.feastRemarkDjImageList;
}
UploadImageUtil().startUpload(context, File(pickedFile.path),
temp.length - 1, true, widget.model, widget.uploadType,
... ... @@ -141,6 +164,12 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.FeastRemarkType) {
temp = widget.model.feastRemarkImageList;
} else if (widget.uploadType == UploadType.FeastRemarkXtType) {
temp = widget.model.feastRemarkXtImageList;
} else if (widget.uploadType == UploadType.FeastRemarkDjType) {
temp = widget.model.feastRemarkDjImageList;
}
List<AssetEntity> imgList = await AssetPicker.pickAssets(context,
maxAssets: widget.maxImageNumber - temp.length,
... ... @@ -442,6 +471,12 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.FeastRemarkType) {
temp = widget.model.feastRemarkImageList;
} else if (widget.uploadType == UploadType.FeastRemarkXtType) {
temp = widget.model.feastRemarkXtImageList;
} else if (widget.uploadType == UploadType.FeastRemarkDjType) {
temp = widget.model.feastRemarkDjImageList;
}
return _getGridImg(
temp.length < widget.maxImageNumber ? temp.length + 1 : temp.length,
... ... @@ -461,11 +496,11 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
crossAxisCount: widget.crossAxisCount,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
mainAxisSpacing: ScreenUtil().setWidth(widget.mainAxisSpacing),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
crossAxisSpacing: ScreenUtil().setWidth(widget.crossAxisSpacing),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
... ... @@ -482,14 +517,15 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
_openModalBottomSheet(context);
},
child: Container(
width: ScreenUtil().setWidth(80 * 2),
height: ScreenUtil().setWidth(80 * 2),
width: ScreenUtil().setWidth((widget.size - 20) * 2),
height: ScreenUtil().setWidth((widget.size - 20) * 2),
decoration: BoxDecoration(
color: MyColours.color_f3f3f3,
// border: Border.all(
// color: MyColours.color_E0E0E0,
// width: ScreenUtil().setWidth(2)),
),
color: widget.bgColor,
borderRadius: BorderRadius.circular(r(5))
// border: Border.all(
// color: MyColours.color_E0E0E0,
// width: ScreenUtil().setWidth(2)),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
... ... @@ -534,18 +570,27 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
children: [
temp[index].file != null
? Container(
child: ClipRRect(
borderRadius: BorderRadius.circular(r(5)),
child: Image.file(
temp[index].file,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
width:
ScreenUtil().setWidth(widget.size * 2),
height:
ScreenUtil().setWidth(widget.size * 2),
),
))
: ClipRRect(
borderRadius: BorderRadius.circular(r(5)),
child: CachedNetworkImage(
imageUrl: temp[index].qiniuUrl,
fit: BoxFit.cover,
width:
ScreenUtil().setWidth(widget.size * 2),
height:
ScreenUtil().setWidth(widget.size * 2),
),
)
: CachedNetworkImage(
imageUrl: temp[index].qiniuUrl,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
),
Offstage(
offstage: temp[index].process < 1,
... ... @@ -553,7 +598,7 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
alignment: Alignment.topRight,
child: GestureDetector(
child: Image.asset(
Utils.getImgPath("delete"),
Utils.getImgPath("f_delete"),
width: ScreenUtil().setWidth(40),
height: ScreenUtil().setWidth(40),
),
... ... @@ -598,7 +643,10 @@ class _ImgPickerFWidgetState extends DisposableState<ImgPickerFWidget> {
),
Offstage(
offstage: temp[index].process == 1,
child: Progress(temp[index].process),
child: Progress(
temp[index].process,
size: widget.size,
),
)
],
));
... ...
... ... @@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import '../../utils/screen_util.dart';
class Progress extends StatelessWidget {
final double value;
final double size;
... ... @@ -44,7 +46,9 @@ class Progress extends StatelessWidget {
Container(
width: ScreenUtil().setWidth(size * 2),
height: ScreenUtil().setWidth(size * 2),
color: Color.fromRGBO(0, 0, 0, 0.5),
decoration: BoxDecoration(
color: Color.fromRGBO(0, 0, 0, 0.5),
borderRadius: BorderRadius.circular(r(5))),
child: Center(
child: Text('${integer}${unit}',
style: TextStyle(
... ...
import 'package:flutter/material.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:provider/provider.dart';
import '../constant/constant.dart';
import '../constant/error.dart';
import '../models/filter_btn_model.dart';
import '../models/get_seller_user_by_sellerid_model.dart';
import '../net/base_resp.dart';
import '../net/dio_util.dart';
import '../net/http_url.dart';
import '../utils/utils.dart';
class FeastModel extends ChangeNotifier {
PageState pageState = PageState.Success;
List<FilterBtnModel> sellerManageList = []; //经理数据 ---- 商家编辑页面
///商家详情编辑页面 ------ 获取经理数据
Future<List<FilterBtnModel>> getSellerUserBySellerid(BuildContext context,
{isShowLoading = true}) async {
Map<String, String> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid
};
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(
context, Method.get, HttpUrl.get_seller_user_by_sellerid,
data: params, showLoading: false)
.catchError((error) {
print(error.toString());
if (error is MyError) {}
});
if (baseResp.code == Constant.status_success) {
List<GetSellerUserBySelleridSunModel> sunmodel =
GetSellerUserBySelleridModel.fromJson(baseResp.responseData).data;
sellerManageList = [];
if (sunmodel != null && sunmodel.length > 0) {
for (GetSellerUserBySelleridSunModel item in sunmodel) {
if (item.nickName != null) {
FilterBtnModel model = FilterBtnModel();
model.id = item.id;
model.title = item.nickName;
sellerManageList.add(model);
}
}
}
} else {
if (baseResp != null) {
Utils.showToast(baseResp.msg ?? "");
}
}
return sellerManageList;
}
}
... ...
... ... @@ -25,6 +25,9 @@ class UploadImageProvider extends ChangeNotifier {
List<UploadImgModel> imageListDenvironment = []; //环境信息列表
List<UploadImgModel> imageListFront = []; //门头信息列表
List<UploadImgModel> tableImageList = []; //桌子管理图片信息列表
List<UploadImgModel> feastRemarkImageList = []; //宴会备注图片信息列表
List<UploadImgModel> feastRemarkXtImageList = []; //宴会备注图片信息列表----选台
List<UploadImgModel> feastRemarkDjImageList = []; //宴会备注图片信息列表----定金
int countUpload = 0;
UploadImageProvider() {
touxiang.process = 0.01;
... ...
import 'package:flutter/material.dart';
class MyColours {
static const Color color_00A870 = Color(0xff00A870);
static const Color color_F6F6F6 = Color(0xffF6F6F6);
static const Color color_E6000000 = Color(0xE6000000);
static const Color color_99000000 = Color(0x99000000);
... ...
... ... @@ -23,6 +23,7 @@ import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/pick_date_nonli_gongli/pick_calendar_day.dart';
import 'package:one_key/utils/pick_date_nonli_gongli/pick_calendar_month.dart';
import 'package:one_key/utils/pick_date_nonli_gongli/pick_calendar_year.dart';
import 'package:one_key/utils/screen_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/common_button.dart';
... ... @@ -3987,19 +3988,114 @@ class DialogUtil {
title,
style: TextStyle(
fontWeight: FontWeight.bold,
color: Color.fromRGBO(0, 0, 0, 0.9),
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
cancelText: cancelText,
cancelTextStyle:
TextStyle(color: cancelTextColor, fontSize: ScreenUtil().setSp(32)),
confirmText: "确定",
itemExtent: ScreenUtil().setWidth(90),
itemExtent: ScreenUtil().setWidth(80),
confirmTextStyle: TextStyle(
color: MyColours.color_438E93, fontSize: ScreenUtil().setSp(32)),
selectedTextStyle: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.9),
color: MyColours.color_000000, fontSize: ScreenUtil().setSp(32)),
textStyle: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.26),
fontSize: ScreenUtil().setSp(32)),
selectionOverlay: Container(
height: ScreenUtil().setWidth(80),
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(
width: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7),
top: BorderSide(
width: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7))),
),
onCancel: onCancel,
onConfirm: (Picker picker, List value) {
print(value.toString());
if (valueChanged != null) {
valueChanged(value);
}
}).showModal<List<int>>(context).then((value) {
LogUtil.v("value:${value.toString()}");
return value;
});
}
//显示选择客户经理弹框
static Future<List<int>> showSelectCusmanDialogNeedCustomHeader(
BuildContext context, List<dynamic> data, ValueChanged valueChanged,
{List<int> selecteds,
Color cancelTextColor = const Color.fromRGBO(0, 0, 0, 0.6),
String title = '',
VoidCallback onCancel,
String cancelText = '取消'}) {
return Picker(
selecteds: selecteds,
adapter: PickerDataAdapter<String>(pickerdata: data),
height: ScreenUtil().setWidth(480),
hideHeader: false,
builderHeader: (BuildContext context) {
return Container(
color: MyColours.color_ffffff,
child: Stack(children: [
Column(
children: [
VEmptyView(24),
Text(
title,
style: TextStyle(
fontWeight: FontWeight.bold,
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32)),
),
VEmptyView(22),
MyDivider(double.infinity, ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7),
Padding(
padding: EdgeInsets.symmetric(
horizontal: w(60), vertical: h(8)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('开始时间',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: font(16))),
Text('结束时间',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: font(16)))
],
)),
],
),
Positioned(
top: h(12),
right: w(12),
child: InkWell(
onTap: () {
final picker = PickerWidget.of(context);
List value = picker?.data.selecteds;
print(value.toString());
if (valueChanged != null) {
valueChanged(value);
}
Navigator.pop(context);
},
child: Text('确定',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: ScreenUtil().setSp(32)))))
]));
},
itemExtent: ScreenUtil().setWidth(80),
selectedTextStyle: TextStyle(
color: MyColours.color_000000, fontSize: ScreenUtil().setSp(32)),
textStyle: TextStyle(
color: Color.fromRGBO(0, 0, 0, 0.26),
fontSize: ScreenUtil().setSp(32)),
... ...
... ... @@ -15,6 +15,9 @@ enum UploadType {
HeadUploadType, //头像
QrcodeUploadType, //二维码
TableManagerType, //桌面照片管理
FeastRemarkType, //宴会备注--意向
FeastRemarkXtType, //宴会备注--选台
FeastRemarkDjType //宴会备注--定金
}
... ... @@ -65,6 +68,15 @@ class UploadImageUtil {
} else if (uploadType == UploadType.TableManagerType) {
//桌面照片管理
uploadImageProvider.tableImageList[index].process = percent;
} else if (uploadType == UploadType.FeastRemarkType) {
//宴会备注 ---意向
uploadImageProvider.feastRemarkImageList[index].process = percent;
} else if (uploadType == UploadType.FeastRemarkXtType) {
//宴会备注 ---选台
uploadImageProvider.feastRemarkXtImageList[index].process = percent;
} else if (uploadType == UploadType.FeastRemarkDjType) {
//宴会备注 ---定金
uploadImageProvider.feastRemarkDjImageList[index].process = percent;
}
uploadImageProvider.notifyListeners();
... ... @@ -121,6 +133,18 @@ class UploadImageUtil {
uploadImageProvider.countUpload = 0;
callback();
}
} else if (uploadType == UploadType.FeastRemarkType) {
//宴会备注---意向
uploadImageProvider.feastRemarkImageList[index].process = 1;
uploadImageProvider.feastRemarkImageList[index].qiniuUrl = imgUrl;
} else if (uploadType == UploadType.FeastRemarkXtType) {
//宴会备注---选台
uploadImageProvider.feastRemarkXtImageList[index].process = 1;
uploadImageProvider.feastRemarkXtImageList[index].qiniuUrl = imgUrl;
} else if (uploadType == UploadType.FeastRemarkDjType) {
//宴会备注---定金
uploadImageProvider.feastRemarkDjImageList[index].process = 1;
uploadImageProvider.feastRemarkDjImageList[index].qiniuUrl = imgUrl;
}
// 取消当前任务
... ...
... ... @@ -5,6 +5,7 @@ import 'package:one_key/utils/utils.dart';
typedef SetTimeCallback = void Function(List value);
class SetTimeWidget {
static SetTimeWidget init = SetTimeWidget();
static List dateData = [
{
'深夜00时': [00, 15, 30, 45]
... ... @@ -79,6 +80,105 @@ class SetTimeWidget {
'晚上23时': [00, 15, 30, 45]
}
];
List feastDateData;
List getFeastDateData(String hourAndMinuteStr) {
// '00:00-00:00'
List hm = _getHourAndMinute(hourAndMinuteStr);
List temp = [];
hm.forEach((e) {
Map map = {e: hm};
temp.add(map);
});
feastDateData = temp;
return temp;
}
//根据获取时间 11:00-12:30 获取30分钟间隔组装的数组
_getHourAndMinute(String hourAndMinuteStr) {
List tempDate = hourAndMinuteStr.split("-");
String beginDate = tempDate[0];
String endDate = tempDate[1];
List tempHour = beginDate.split(':');
/*获取开始小时*/
int beginHour = int.parse(tempHour[0]);
/*获取开始分钟*/
int beginMinute = int.parse(tempHour[1]);
List res = [];
bool tempLimit = true;
while (tempLimit) {
String temp = _dealTime(beginHour, beginMinute);
// bool tempSelect = false;
// Map tempMap = {'title': temp, 'select': tempSelect};
res.add(temp);
if (temp == endDate) {
tempLimit = false;
break;
}
if (beginMinute == 30) {
beginHour++;
if (beginHour >= 24) {
beginHour = 0;
}
}
beginMinute = (beginMinute + 30) % 60;
}
return res;
}
/// 根据时间和分钟组装 格式:11:00
_dealTime(int begin, int mm) {
String sb = '';
if (begin < 10) {
sb = '0$begin';
} else {
sb = '$begin';
}
sb = '$sb:';
if (mm < 10) {
sb = '${sb}0${mm}';
} else {
sb = '${sb}${mm}';
}
return sb;
}
showFeastTimeSelector(
context, data, start, end, SetTimeCallback setTimeCallback) {
DialogUtil.showSelectCusmanDialogNeedCustomHeader(context, data, (value) {
setTimeCallback(value);
}, cancelText: '', title: '选择时间', selecteds: [
_getFirSelectedFeast(start, data),
_getFirSelectedFeast(end, data)
]).then((value) {
print(value);
});
}
//宴会 ------ 第一列当前选中第几个
_getFirSelectedFeast(String start, List data) {
for (int i = 0; i < data.length; i++) {
Map map = data[i];
String key = map.keys.first;
if (key.contains(start)) {
return i;
}
}
return 0;
}
String getSelectTitle(int value) {
if (feastDateData.length > 0) {
Map map = feastDateData[0];
List<dynamic> temp = map[map.keys.first];
return temp[value];
}
}
showTimeSelector(
context, data, hourAndMinute, SetTimeCallback setTimeCallback) {
DialogUtil.showSelectCusmanDialog(context, data, (value) {
... ...