Commit 720894863107a09965c6c80dc08d2ac21cddeb3a

Authored by wdn127929
1 parent 2d299df4

差添加菜品接口+样式+菜品数据详情赋值

class CookbookPracticeModel {
int ret;
List<CookbookPracticeSunModel> data;
String msg;
CookbookPracticeModel({this.ret, this.data, this.msg});
CookbookPracticeModel.fromJson(Map<String, dynamic> json) {
ret = json['ret'];
if (json['data'] != null) {
data = [];
json['data'][0].forEach((v) {
data.add(new CookbookPracticeSunModel.fromJson(v));
});
}
msg = json['msg'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['ret'] = this.ret;
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
data['msg'] = this.msg;
return data;
}
}
class CookbookPracticeSunModel {
String id;
String sellerid;
String name;
String cdate;
bool select = false;
CookbookPracticeSunModel({this.id, this.sellerid, this.name, this.cdate});
CookbookPracticeSunModel.fromJson(Map<String, dynamic> json) {
id = json['id'];
sellerid = json['sellerid'];
name = json['name'];
cdate = json['cdate'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sellerid'] = this.sellerid;
data['name'] = this.name;
data['cdate'] = this.cdate;
return data;
}
Map<String, dynamic> toJson2() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
// data['status'] = this.select ? '1':'0';
return data;
}
}
... ...
... ... @@ -39,6 +39,8 @@ class CookbookSpecSunModel extends Object {
@JsonKey(name: 'cdate')
String cdate;
bool select = false;
CookbookSpecSunModel(
this.id,
this.sellerid,
... ...
import 'package:flutter/material.dart';
class MenuUnitModel {
String specs; //销售单位
String specid; //销售单位id
String price; //售价
String memberPrice; //会员价
String status; //是否启用
bool select; //是否启用
TextEditingController priceC = TextEditingController();
TextEditingController memberPriceC = TextEditingController();
MenuUnitModel();
factory MenuUnitModel.fromJson(Map<String, dynamic> json) => MenuUnitModel()
..specs = json["specs"]
..specid = json["specid"]
..price = json["price"]
..memberPrice = json["member_price"]
..status = json["status"]
..select = json["status"] == '1' ? true : false
..memberPriceC.text = json["member_price"]
..priceC.text = json["price"];
Map<String, dynamic> toJson() => <String, dynamic>{
"specs": specs,
"specid": specid,
'price': price,
'member_price': memberPrice,
'status': select ? '1' : '0'
};
}
... ...
... ... @@ -418,4 +418,24 @@ class HttpUrl {
static const String set_new_recharge_write_off =
"?service=App.Activity.SetNewRechargeWriteOff"; // 核销未使用优惠券
static const String get_seller_practice_by_id =
"?service=App.Seller.GetSellerPracticeById"; // 获取商家默认做法数据
static const String add_practice =
"?service=Android.Seller.AddPractice"; // 商家添加做法
static const String add_unit_value =
"?service=App.Seller.AddUnitValue"; // 添加商家计价单位
static const String del_unit_value =
"?service=App.Seller.DelUnitValue"; // 删除商家计价单位
}
... ...
import 'dart:convert';
import 'dart:io';
import 'package:amap_map_fluttify/amap_map_fluttify.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_native_image/flutter_native_image.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:image_picker/image_picker.dart';
... ... @@ -25,6 +27,8 @@ import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import '../../../models/cookbook_practice_model.dart';
import '../../../models/menu_unit_model.dart';
import '../../../utils/screen_util.dart';
/**
... ... @@ -55,6 +59,14 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
List<String> specStrList = [];
String specStr = '请选择';
String mid = '';
List<MenuUnitModel> data; //价格
String showPrice;
String selectPracticeShow;
String selectPracticeIds;
List<CookbookPracticeSunModel> selectPractice;
TextEditingController introduceC = TextEditingController(); //简介
TextEditingController tasteC = TextEditingController(); //味型
TextEditingController cooksC = TextEditingController(); //烹调
@override
void initState() {
super.initState();
... ... @@ -120,18 +132,19 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
Utils.showToast('请输入菜品名称');
return;
}
if (_priceController.text.trim().length == 0) {
Utils.showToast('请输入菜品价格');
return;
}
if (categoryStr == "请选择") {
Utils.showToast('请选择菜品分类');
return;
}
if (specStr == "请选择") {
Utils.showToast('请选择计价方式');
if (showPrice == null || showPrice == '') {
Utils.showToast('请选择菜品价格');
return;
}
// if (specStr == "请选择") {
// Utils.showToast('请选择计价方式');
// return;
// }
String cid = '';
// String unit = '';
menuManageProvider.categorySunModel.forEach((element) {
... ... @@ -147,11 +160,13 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
Map<String, String> params = {
"sellerid": Provider.of<UserModel>(context, listen: false).user.sellerid,
'cid': cid,
'unit': specStr,
// 'unit': specStr,
'name': _nameController.text,
'status': swichState ? '1' : '0',
'price': _priceController.text
// 'price': _priceController.text
'dishSkuList': json.encode(data)
};
if (mid != '') {
params['id'] = mid;
}
... ... @@ -159,7 +174,27 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
uploadImageProvider.dish.qiniuUrl != '') {
params['image'] = uploadImageProvider.dish.qiniuUrl;
}
if (selectPracticeShow != null && selectPracticeShow != '') {
List temp = [];
selectPractice.forEach((element) {
temp.add(element.toJson2());
});
params['practiceList'] = json.encode(temp);
}
if (introduceC.text.trim().length > 0) {
params['desc'] = introduceC.text;
}
if (tasteC.text.trim().length > 0) {
params['taste'] = tasteC.text;
}
if (cooksC.text.trim().length > 0) {
params['cooks'] = cooksC.text;
}
bool sucess = false;
print(params);
if (mid != '') {
sucess = await menuManageProvider.setCookbookById(context, params,
showLoading: showLoading);
... ... @@ -323,18 +358,21 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
),
)
: SizedBox(),
Spacer(),
Text(hintText,
style: TextStyle(
color: hintText == '请选择' ||
hintText == '点击配置菜品价格' ||
hintText == '点击配置菜品做法' ||
hintText == '点击配置烹调方法'
? MyColours.color_999999
: MyColours.color_515151,
fontWeight: FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
)),
// Spacer(),
HEmptyView(100),
Expanded(
child: Text(hintText,
textAlign: TextAlign.right,
style: TextStyle(
color: hintText == '请选择' ||
hintText == '点击配置菜品价格' ||
hintText == '点击配置菜品做法' ||
hintText == '点击配置烹调方法'
? MyColours.color_999999
: MyColours.color_515151,
fontWeight: FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
))),
HEmptyView(20),
Image.asset(
Utils.getImgPath('arr_right_gray'),
... ... @@ -445,277 +483,342 @@ class _MenuAddDishesPageState extends State<MenuAddDishesPage> {
uploadImageProvider =
Provider.of<UploadImageProvider>(context, listen: true);
menuManageProvider = Provider.of<MenuManageProvider>(context, listen: true);
return Material(
child: InkWell(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
},
child: Scaffold(
appBar: SystemAppBar('添加菜品', onTap: () {
Navigator.pop(context);
}),
body: Column(children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
InkWell(
onTap: () {
DialogUtil.openImageModalBottomSheet(context,
lCallback: () {
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(ImageSource.camera);
Navigator.pop(context);
}, Permission.camera);
}, rCallback: () {
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(ImageSource.gallery);
// _getFromPictureOrCamera(ImageSource.gallery);
Navigator.pop(context);
return KeyboardDismissOnTap(
child: Material(
child: InkWell(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
},
child: Scaffold(
appBar: SystemAppBar('添加菜品', onTap: () {
Navigator.pop(context);
}),
body: Column(children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
InkWell(
onTap: () {
DialogUtil.openImageModalBottomSheet(context,
lCallback: () {
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(
ImageSource.camera);
Navigator.pop(context);
}, Permission.camera);
}, rCallback: () {
Utils.getPickPermission(context, () {
_getFromPictureOrCamera(
ImageSource.gallery);
// _getFromPictureOrCamera(ImageSource.gallery);
Navigator.pop(context);
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
});
},
Platform.isAndroid
? Permission.storage
: Permission.photos);
});
},
child: Stack(children: [
uploadImageProvider.dish.file == null
? uploadImageProvider.dish.qiniuUrl != null &&
uploadImageProvider.dish.qiniuUrl !=
''
? CachedNetworkImage(
imageUrl:
uploadImageProvider.dish.qiniuUrl,
child: Stack(children: [
uploadImageProvider.dish.file == null
? uploadImageProvider.dish.qiniuUrl !=
null &&
uploadImageProvider
.dish.qiniuUrl !=
''
? CachedNetworkImage(
imageUrl: uploadImageProvider
.dish.qiniuUrl,
fit: BoxFit.cover,
width: double.infinity,
height:
ScreenUtil().setWidth(400),
)
: Container(
width: double.infinity,
height:
ScreenUtil().setWidth(400),
color: Color.fromRGBO(
235, 234, 239, 1),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(
ScreenUtil()
.setWidth(34)),
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
width: ScreenUtil()
.setWidth(2),
color: MyColours
.color_c1c1c1,
)),
child: Image.asset(
Utils.getImgPath(
'take-picture'),
width: ScreenUtil()
.setWidth(80)),
),
VEmptyView(20),
Text(
'+菜谱效果图',
style: TextStyle(
fontSize: ScreenUtil()
.setSp(30),
color: MyColours
.color_999999),
)
],
),
)
: Image.file(
uploadImageProvider.dish.file,
fit: BoxFit.cover,
width: double.infinity,
height: ScreenUtil().setWidth(400),
)
: Container(
),
(uploadImageProvider.dish.file != null) &&
uploadImageProvider.dish.process !=
1 &&
uploadImageProvider.dish.process !=
0.01
? Container(
width: double.infinity,
height: ScreenUtil().setWidth(400),
color:
Color.fromRGBO(235, 234, 239, 1),
child: Column(
mainAxisAlignment:
MainAxisAlignment.center,
children: [
Container(
padding: EdgeInsets.all(
ScreenUtil().setWidth(34)),
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(
width: ScreenUtil()
.setWidth(2),
color: MyColours
.color_c1c1c1,
)),
child: Image.asset(
Utils.getImgPath(
'take-picture'),
width: ScreenUtil()
.setWidth(80)),
),
VEmptyView(20),
Text(
'+菜谱效果图',
child: Center(
child: Text('上传中...',
style: TextStyle(
fontSize:
ScreenUtil().setSp(30),
color:
MyColours.color_999999),
)
],
color: MyColours
.color_999999)),
),
)
: Image.file(
uploadImageProvider.dish.file,
fit: BoxFit.cover,
width: double.infinity,
height: ScreenUtil().setWidth(400),
),
(uploadImageProvider.dish.file != null) &&
uploadImageProvider.dish.process != 1 &&
uploadImageProvider.dish.process != 0.01
? Container(
width: double.infinity,
height: ScreenUtil().setWidth(400),
child: Center(
child: Text('上传中...',
style: TextStyle(
color: MyColours.color_999999)),
),
)
: Container(),
])),
InkWell(
onTap: () {
setState(() {
swichState = !swichState;
});
},
child: Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Container(
child: Text(
swichState ? '上架菜品,在所有点餐设备上显示' : '商品已下架',
style: TextStyle(
color: MyColours.color_666666,
fontSize: ScreenUtil().setSp(24)),
),
: Container(),
])),
InkWell(
onTap: () {
setState(() {
swichState = !swichState;
});
},
child: Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
Image.asset(
swichState
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: w(44),
height: w(24),
)
],
)),
),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield('名称', '点击输入菜品名称', _nameController,
_nameFocusNode, '',
inputType: TextInputType.text)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Container(
child: Text(
swichState
? '上架菜品,在所有点餐设备上显示'
: '商品已下架',
style: TextStyle(
color: MyColours.color_666666,
fontSize: ScreenUtil().setSp(24)),
),
),
Image.asset(
swichState
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: w(44),
height: w(24),
)
],
)),
),
child: _select('分类', categoryStr, () {
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield('名称', '点击输入菜品名称',
_nameController, _nameFocusNode, '',
inputType: TextInputType.text)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _select('分类', categoryStr, () {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
DialogUtil.showSelectCusmanDialog(
context, categoryStrList, (value) {
if (value != null) {
setState(() {
categoryStr =
categoryStrList[value.first];
});
}
}, selecteds: [
categoryStrList.indexOf(categoryStr)
]).then((value) {});
})),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _select(
'价格',
showPrice == null || showPrice == ''
? '点击配置菜品价格'
: showPrice, () async {
Map object =
await NavigatorUtil.goMenuSetPricePage(
context, {'object': data});
if (object != null) {
//选择了
data = object['data'];
print(data);
outerloop:
for (int i = 0; i < data.length; i++) {
MenuUnitModel menumodel = data[i];
if (menumodel.select) {
showPrice = menumodel.priceC.text;
break outerloop;
}
}
setState(() {});
}
})),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _select(
'做法',
selectPracticeShow == null ||
selectPracticeShow == ''
? '点击配置菜品做法'
: selectPracticeShow, () async {
Map object =
await NavigatorUtil.goMenuDishMethodPage(
context, selectPracticeIds);
if (object != null) {
selectPractice = object['select_practice'];
selectPracticeShow = '';
selectPracticeIds = '';
selectPractice.forEach((element) {
if (element.select) {
selectPracticeShow +=
'${element.name}、';
selectPracticeIds += '${element.id},';
}
});
if (selectPracticeShow.endsWith('、')) {
selectPracticeShow =
selectPracticeShow.substring(
0, selectPracticeShow.length - 1);
}
if (selectPracticeIds.endsWith(',')) {
selectPracticeIds =
selectPracticeIds.substring(
0, selectPracticeIds.length - 1);
}
setState(() {});
}
}, needStar: false)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield(
'味型', '如咸鲜、香辣等,向客户介绍菜品味型', tasteC, null, '',
fontsize: 12,
needStar: false,
inputType: TextInputType.text)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield('烹调',
'如炙烤、熬煮、爆炒等,向客户介绍菜品烹调方法', cooksC, null, '',
fontsize: 12,
needStar: false,
inputType: TextInputType.text)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
_explain('菜品简介', '请输入菜品简介', introduceC, null)
],
),
)),
Padding(
padding: EdgeInsets.fromLTRB(
ScreenUtil().setWidth(40),
0,
ScreenUtil().setWidth(40),
ScreenUtil().setWidth(40)),
child: RoundButton(
onPressed: () async {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
DialogUtil.showSelectCusmanDialog(
context, categoryStrList, (value) {
if (value != null) {
setState(() {
categoryStr = categoryStrList[value.first];
});
}
}, selecteds: [
categoryStrList.indexOf(categoryStr)
]).then((value) {});
})),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _select('价格', '点击配置菜品价格', () async {
Map object =
await NavigatorUtil.goMenuSetPricePage(
context);
if (object != null) {
//选择了
}
})),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _select('做法', '点击配置菜品做法', () async {
await NavigatorUtil.goMenuDishMethodPage(context);
}, needStar: false)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield(
'味型', '如咸鲜、香辣等,向客户介绍菜品味型', null, null, '',
fontsize: 12,
needStar: false,
inputType: TextInputType.text)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Container(
height: w(48),
padding: EdgeInsets.symmetric(
horizontal: ScreenUtil().setWidth(32),
),
child: _textfield(
'烹调', '如炙烤、熬煮、爆炒等,向客户介绍菜品烹调方法', null, null, '',
fontsize: 12, needStar: false)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
_explain('菜品简介', '请输入菜品简介', null, null)
],
),
)),
Padding(
padding: EdgeInsets.fromLTRB(ScreenUtil().setWidth(40), 0,
ScreenUtil().setWidth(40), ScreenUtil().setWidth(40)),
child: RoundButton(
onPressed: () async {
FocusScope.of(context)
.requestFocus(FocusNode()); //点击空白处隐藏键盘
_addCookbook();
},
text: '保存',
fontSize: 34,
isBold: false,
height: ScreenUtil().setWidth(80),
width: double.infinity,
radius: ScreenUtil().setWidth(10),
))
]))));
_addCookbook();
},
text: '保存',
fontSize: 34,
isBold: false,
height: ScreenUtil().setWidth(80),
width: double.infinity,
radius: ScreenUtil().setWidth(10),
))
])))));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/models/cookbook_practice_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../constant/state.dart';
import '../../../provider/menu_provider.dart';
import '../../../provider/user_model.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/page_exception.dart';
import '../../../widgets/round_button.dart';
/**
* 菜品做法选择
*/
class MenuDishMethodPage extends StatefulWidget {
MenuDishMethodPage({Key key}) : super(key: key);
final String selectPracticeIds;
MenuDishMethodPage({Key key, this.selectPracticeIds}) : super(key: key);
@override
_MenuDishMethodPageState createState() => _MenuDishMethodPageState();
}
class _MenuDishMethodPageState extends State<MenuDishMethodPage> {
List data = ['清蒸', '爆炒', '红烧', '椒盐'];
MenuManageProvider menuManageProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
getSellerPracticeById();
});
}
getSellerPracticeById() async {
Map<String, String> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid
};
await menuManageProvider.getSellerPracticeById(context, params);
if (menuManageProvider.dataPractice.length > 0) {
// //如果第一次进来
if (widget.selectPracticeIds != null) {
List<String> ids = widget.selectPracticeIds.split(',');
menuManageProvider.dataPractice.forEach((element) {
if (ids.contains(element.id)) {
element.select = true;
}
});
}
// else {
// String specid = App.sp.getString('specid');
// if (specid != null) {
// menuManageProvider.specSunModel.forEach((element) {
// if (element.id == specid) {
// element.select = true;
// }
// });
// }
// }
}
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
menuManageProvider = Provider.of<MenuManageProvider>(context, listen: true);
return KeyboardDismissOnTap(
child: Scaffold(
backgroundColor: MyColours.color_DBDBDB,
appBar: SystemAppBar('菜品做法选择'),
body: Column(
children: [
Container(
width: double.infinity,
height: w(48),
padding: EdgeInsets.symmetric(horizontal: w(16)),
alignment: Alignment.centerLeft,
color: MyColours.color_ffffff,
child: Text(
'选择当前菜品支持选择的做法:',
style: TextStyle(
fontSize: font(16), color: MyColours.color_515151),
)),
Expanded(
child: ListView.builder(
itemCount: data.length + 1,
shrinkWrap: true,
itemBuilder: (context, index) {
if ((index == 0 && data.length == 0) ||
data.length == index) {
return InkWell(
onTap: () {
DialogUtil.textfeildAlertDialog(context,
title: '添加做法',
hintText: '输入菜品做法名称', rCallback: (name) {
//确定添加
setState(() {
data.add(name);
});
});
},
child: Container(
height: w(64),
if (menuManageProvider.pageStatePractice == PageState.Success ||
menuManageProvider.pageStatePractice == PageState.Empty)
Container(
width: double.infinity,
height: w(48),
padding: EdgeInsets.symmetric(horizontal: w(16)),
alignment: Alignment.centerLeft,
color: MyColours.color_ffffff,
child: Text(
'选择当前菜品支持选择的做法:',
style: TextStyle(
fontSize: font(16), color: MyColours.color_515151),
)),
Consumer<MenuManageProvider>(builder: (context, model, _) {
if (model.pageStatePractice != PageState.Success) {
return Expanded(
child: ExceptionPage(
pageState: model.pageStatePractice,
callback: () {
// offset = 0;
getSellerPracticeById();
},
emptyMsg: "做法数据为哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
));
} else {
return Expanded(
child: ListView.builder(
itemCount: model.dataPractice.length + 1,
shrinkWrap: true,
itemBuilder: (context, index) {
if ((index == 0 && model.dataPractice.length == 0) ||
model.dataPractice.length == index) {
return InkWell(
onTap: () {
DialogUtil.textfeildAlertDialog(context,
title: '添加做法', hintText: '输入菜品做法名称',
rCallback: (name) async {
Map<String, String> pramas = {
'sellerid': Provider.of<UserModel>(context,
listen: false)
.user
.sellerid,
'name': name
};
bool success = await menuManageProvider
.addPractice(context, pramas);
if (success) {
//添加成功
Utils.showToast('添加成功');
getSellerPracticeById();
}
});
},
child: Container(
height: w(64),
color: MyColours.color_ffffff,
margin: EdgeInsets.only(top: w(10)),
alignment: Alignment.center,
child: Text(
'添加做法',
style: TextStyle(
fontSize: font(24),
color: MyColours.color_000000),
),
));
}
return Container(
height: w(48),
color: MyColours.color_ffffff,
margin: EdgeInsets.only(top: w(10)),
alignment: Alignment.center,
child: Text(
'添加做法',
style: TextStyle(
fontSize: font(24),
color: MyColours.color_000000),
),
));
padding: EdgeInsets.symmetric(horizontal: w(16)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
model.dataPractice[index].name,
style: TextStyle(
fontSize: font(16),
color: MyColours.color_515151),
),
InkWell(
onTap: () {
model.dataPractice[index].select =
!model.dataPractice[index].select;
setState(() {});
},
child: Image.asset(
model.dataPractice[index].select
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: w(44),
height: w(24),
))
],
));
}));
}
}),
if (menuManageProvider.pageStatePractice == PageState.Success ||
menuManageProvider.pageStatePractice == PageState.Empty)
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.fromLTRB(w(45), w(13), w(45), w(26)),
child: RoundButton(
onPressed: () async {
// FocusScope.of(context)
// .requestFocus(FocusNode()); //点击空白处隐藏键盘
// // _addCookbook();
List<CookbookPracticeSunModel> selectPractice = [];
menuManageProvider.dataPractice.forEach((element) {
if (element.select) {
selectPractice.add(element);
}
});
if (selectPractice.length == 0) {
Utils.showToast('请选择做法!');
return;
}
return Container(
height: w(48),
color: MyColours.color_ffffff,
margin: EdgeInsets.only(top: w(10)),
padding: EdgeInsets.symmetric(horizontal: w(16)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
data[index],
style: TextStyle(
fontSize: font(16),
color: MyColours.color_515151),
),
InkWell(
onTap: () {
setState(() {});
},
child: Image.asset(
true
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: w(44),
height: w(24),
))
],
));
})),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.fromLTRB(w(45), w(13), w(45), w(26)),
child: RoundButton(
onPressed: () async {
FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘
// _addCookbook();
},
text: '保存',
fontSize: 34,
isBold: false,
height: ScreenUtil().setWidth(80),
width: double.infinity,
radius: ScreenUtil().setWidth(10),
))
Navigator.pop(context, {'select_practice': selectPractice});
},
text: '保存',
fontSize: 34,
isBold: false,
height: ScreenUtil().setWidth(80),
width: double.infinity,
radius: ScreenUtil().setWidth(10),
))
],
),
);
));
}
}
... ...
... ... @@ -5,6 +5,8 @@ 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 '../../../app.dart';
import '../../../models/menu_unit_model.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
... ... @@ -16,16 +18,29 @@ import '../../../widgets/h_empty_view.dart';
* 配置规格和价格
*/
class MenuSetPricePage extends StatefulWidget {
MenuSetPricePage({Key key}) : super(key: key);
final List<MenuUnitModel> data;
MenuSetPricePage({Key key, this.data}) : super(key: key);
@override
_MenuSetPricePageState createState() => _MenuSetPricePageState();
}
class _MenuSetPricePageState extends State<MenuSetPricePage> {
bool swichState = false;
List<MenuUnitModel> data = [];
List data = ['', ''];
@override
void initState() {
// TODO: implement initState
super.initState();
if (widget.data == null || widget.data.length == 0) {
MenuUnitModel menuUnitModel = MenuUnitModel();
// menuUnitModel.status = '1';
menuUnitModel.select = true;
data.add(menuUnitModel);
} else {
data = widget.data;
}
}
///输入框
Widget _textfield(
... ... @@ -192,7 +207,15 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
index == data.length) {
return InkWell(
onTap: () {
data.add('');
MenuUnitModel menuUnitModel = MenuUnitModel();
menuUnitModel.select = false;
String specid = App.sp.getString('specid');
String specs = App.sp.getString('specs');
if (specid != null) {
menuUnitModel.specs = specs;
menuUnitModel.specid = specid;
}
data.add(menuUnitModel);
setState(() {});
},
child: Container(
... ... @@ -224,7 +247,7 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
InkWell(
onTap: () {
setState(() {
swichState = !swichState;
data[index].select = !data[index].select;
});
},
child: Container(
... ... @@ -245,7 +268,7 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
),
),
Image.asset(
swichState
data[index].select
? Utils.getImgPath('swich_on')
: Utils.getImgPath('swich_off'),
width: w(44),
... ... @@ -265,8 +288,30 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
height: w(48),
padding:
EdgeInsets.symmetric(horizontal: w(16)),
child: _select('销售单位', '请选择销售单位', () async {
await NavigatorUtil.goMenuUnitPage(context);
child: _select(
'销售单位',
data[index].specs == null &&
data[index].specid == null
? '请选择销售单位'
: data[index].specs, () async {
Map object =
await NavigatorUtil.goMenuUnitPage(
context, data[index].specid);
if (object != null) {
// 'specs': menuManageProvider
// .specSunModel[index].name,
// 'specid':
// menuManageProvider.specSunModel[index].id
if (object.containsKey('specs')) {
data[index].specs = object['specs'];
data[index].specid = object['specid'];
App.sp.setString(
'specid', object['specid']);
App.sp
.setString('specs', object['specs']);
setState(() {});
}
}
}, needStar: false)),
Padding(
padding: EdgeInsets.only(left: w(16)),
... ... @@ -279,8 +324,9 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
height: w(48),
padding:
EdgeInsets.symmetric(horizontal: w(16)),
child:
_textfield('售价', '点击输入售价', null, null, '')),
child: _textfield('售价', '点击输入售价',
data[index].priceC, null, '',
needStar: false)),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
... ... @@ -292,8 +338,9 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
height: w(48),
padding:
EdgeInsets.symmetric(horizontal: w(16)),
child: _textfield(
'会员价格', '点击输入会员价格', null, null, '')),
child: _textfield('会员价格', '点击输入会员价格',
data[index].memberPriceC, null, '',
needStar: false)),
],
),
);
... ... @@ -309,7 +356,39 @@ class _MenuSetPricePageState extends State<MenuSetPricePage> {
radius: r(5),
fontSize: 32,
isBold: true,
onPressed: () {},
onPressed: () {
data.forEach((element) {
element.price = element.priceC.text;
element.memberPrice = element.memberPriceC.text;
});
bool isContains = data.any((element) => element.select);
if (!isContains) {
Utils.showToast('请至少启用一个规格!');
return;
} else {
bool can = true;
outerloop:
for (int i = 0; i < data.length; i++) {
MenuUnitModel element = data[i];
if (element.select) {
if (element.specid == null) {
Utils.showToast('请完善规格销售单位!');
can = false;
break outerloop;
}
if (element.price == null || element.price == '') {
Utils.showToast('请完善规格售价!');
can = false;
break outerloop;
}
}
}
if (can) {
Navigator.pop(context, {'data': data});
}
}
},
),
)
],
... ...
import 'package:flutter/material.dart';
import 'package:one_key/provider/menu_provider.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../app.dart';
import '../../../constant/state.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/page_exception.dart';
/**
* 销售单位 份、位、晚
*/
class MenuUnitPage extends StatefulWidget {
MenuUnitPage({Key key}) : super(key: key);
final String specid;
MenuUnitPage({Key key, this.specid}) : super(key: key);
@override
_MenuUnitPageState createState() => _MenuUnitPageState();
}
class _MenuUnitPageState extends State<MenuUnitPage> {
List data = ['位', '份'];
bool select = true;
// List data = ['位', '份'];
// bool select = true;
MenuManageProvider menuManageProvider;
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) {
getSpecBySellerid();
});
}
getSpecBySellerid() async {
Map<String, String> params = {
'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid
};
await menuManageProvider.getSpecBySellerid(context, params);
if (menuManageProvider.specSunModel.length > 0) {
//如果第一次进来
if (widget.specid != null) {
menuManageProvider.specSunModel.forEach((element) {
if (element.id == widget.specid) {
element.select = true;
}
});
} else {
String specid = App.sp.getString('specid');
if (specid != null) {
menuManageProvider.specSunModel.forEach((element) {
if (element.id == specid) {
element.select = true;
}
});
}
}
}
setState(() {});
}
@override
Widget build(BuildContext context) {
menuManageProvider =
Provider.of<MenuManageProvider>(context, listen: false);
return Scaffold(
backgroundColor: MyColours.color_DBDBDB,
appBar: SystemAppBar('销售单位'),
body: ListView.builder(
itemCount: data.length + 1,
itemBuilder: (context, index) {
if ((index == 0 && data.length == 0) || index == data.length) {
return Container(
height: w(48),
margin: EdgeInsets.only(top: w(10), left: w(10), right: w(10)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
border:
Border.all(width: w(1), color: MyColours.color_515151),
borderRadius: BorderRadius.circular(r(5))),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath('f_add_image'),
width: w(15),
),
HEmptyView(22),
Text(
'添加新规格',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
backgroundColor: MyColours.color_DBDBDB,
appBar: SystemAppBar('销售单位'),
body: Column(
children: [
Consumer<MenuManageProvider>(builder: (context, model, _) {
if (model.pageStateUnit != PageState.Success) {
return Expanded(
child: ExceptionPage(
pageState: model.pageStateUnit,
callback: () {
// offset = 0;
getSpecBySellerid();
},
emptyMsg: "销售单位数据为哦",
emptyImg: "empty_search",
showMsg: "加载中,请稍后...",
));
} else {
return Expanded(
child: ListView.builder(
shrinkWrap: true,
itemCount: menuManageProvider.specSunModel.length,
itemBuilder: (context, index) {
// if ((index == 0 &&
// menuManageProvider.specSunModel.length == 0) ||
// index == menuManageProvider.specSunModel.length) {
// return Container(
// height: w(48),
// margin: EdgeInsets.only(
// top: w(10), left: w(10), right: w(10)),
// decoration: BoxDecoration(
// color: MyColours.color_ffffff,
// border: Border.all(
// width: w(1), color: MyColours.color_515151),
// borderRadius: BorderRadius.circular(r(5))),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.center,
// children: [
// Image.asset(
// Utils.getImgPath('f_add_image'),
// width: w(15),
// ),
// HEmptyView(22),
// Text(
// '添加新规格',
// textAlign: TextAlign.center,
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: font(16)),
// ),
// ],
// ),
// );
// }
return InkWell(
onTap: () {
// menuManageProvider.specSunModel
// .forEach((element) {
// element.select = false;
// });
// menuManageProvider.specSunModel[index].select =
// true;
// setState(() {});
Navigator.pop(context, {
'specs': menuManageProvider
.specSunModel[index].name,
'specid':
menuManageProvider.specSunModel[index].id
});
},
child: Container(
height: w(48),
margin: EdgeInsets.only(
top: w(10), left: w(10), right: w(10)),
decoration: BoxDecoration(
color: menuManageProvider
.specSunModel[index].select
? MyColours.color_438E93
: MyColours.color_ffffff,
border: Border.all(
width: w(1),
color: menuManageProvider
.specSunModel[index].select
? MyColours.color_438E93
: MyColours.color_515151),
borderRadius: BorderRadius.circular(r(5))),
child: Row(
children: [
Expanded(
child: Text(
menuManageProvider
.specSunModel[index].name,
textAlign: TextAlign.center,
style: TextStyle(
color: menuManageProvider
.specSunModel[index].select
? MyColours.color_F8F9FD
: MyColours.color_515151,
fontSize: font(16)),
)),
InkWell(
onTap: () {
DialogUtil.cupertinoAlertDialog(
context,
content:
'确定要删除销售规格“条”吗?删除后,您可以通过添加新规格增加。\n如果有菜品使用该销售单位定价,则无法删除。',
textAlign: TextAlign.left,
rCallback: () async {
//确定删除
Map<String, String> pramas = {
'sellerid':
Provider.of<UserModel>(
context,
listen: false)
.user
.sellerid,
'name': menuManageProvider
.specSunModel[index].name
};
bool success =
await menuManageProvider
.delUnitValue(
context, pramas);
if (success) {
Utils.showToast('删除成功!');
getSpecBySellerid();
}
});
},
child: Image.asset(
Utils.getImgPath('close'),
width: w(15),
)),
HEmptyView(20)
],
),
));
}));
}
}),
if (menuManageProvider.pageStateUnit == PageState.Success ||
menuManageProvider.pageStateUnit == PageState.Empty)
InkWell(
onTap: () {
DialogUtil.textfeildAlertDialog(context,
title: '添加销售单位',
hintText: '输入销售单位名称', rCallback: (name) async {
Map<String, String> pramas = {
'sellerid':
Provider.of<UserModel>(context, listen: false)
.user
.sellerid,
'name': name
};
bool success = await menuManageProvider.addUnitValue(
context, pramas);
if (success) {
//添加成功
Utils.showToast('添加成功');
getSpecBySellerid();
}
});
},
child: Container(
height: w(48),
margin:
EdgeInsets.only(top: w(10), left: w(10), right: w(10)),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
border: Border.all(
width: w(1), color: MyColours.color_515151),
borderRadius: BorderRadius.circular(r(5))),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Utils.getImgPath('f_add_image'),
width: w(15),
),
HEmptyView(22),
Text(
'添加新规格',
textAlign: TextAlign.center,
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
],
),
],
),
);
}
return Container(
height: w(48),
margin: EdgeInsets.only(top: w(10), left: w(10), right: w(10)),
decoration: BoxDecoration(
color:
select ? MyColours.color_438E93 : MyColours.color_ffffff,
border: Border.all(
width: w(1),
color: select
? MyColours.color_438E93
: MyColours.color_515151),
borderRadius: BorderRadius.circular(r(5))),
child: Row(
children: [
Expanded(
child: Text(
'份',
textAlign: TextAlign.center,
style: TextStyle(
color: select
? MyColours.color_F8F9FD
: MyColours.color_515151,
fontSize: font(16)),
)),
InkWell(
onTap: () {
DialogUtil.cupertinoAlertDialog(context,
content:
'确定要删除销售规格“条”吗?删除后,您可以通过添加新规格增加。\n如果有菜品使用该销售单位定价,则无法删除。',
textAlign: TextAlign.left,rCallback: (){
//确定删除
});
},
child: Image.asset(
Utils.getImgPath('close'),
width: w(15),
)),
HEmptyView(20)
],
),
);
}),
);
))
],
));
}
}
... ...
... ... @@ -11,6 +11,8 @@ import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/utils/utils.dart';
import '../models/cookbook_practice_model.dart';
class MenuManageProvider extends ChangeNotifier {
PageState pageState = PageState.Loading;
PageState pageStateCategory = PageState.Loading;
... ... @@ -20,6 +22,10 @@ class MenuManageProvider extends ChangeNotifier {
CookbookOneSunModel cookbookOneSunModel;
PageState pageStateUnit = PageState.Loading;
PageState pageStatePractice = PageState.Loading;
List<CookbookPracticeSunModel> dataPractice; //做法数据
/// 获取单个菜品信息
getCookbookById(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
... ... @@ -37,6 +43,98 @@ class MenuManageProvider extends ChangeNotifier {
}
}
///商家添加做法
Future<bool> addPractice(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_practice,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
if (baseResp.data != null) {
return true;
}
} else {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
// 添加商家计价单位
Future<bool> addUnitValue(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.add_unit_value,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
if (baseResp.data != '' && baseResp.data != null) {
return true;
}
} else {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
///删除商家计价单位
Future<bool> delUnitValue(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.del_unit_value,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
});
if (baseResp != null && baseResp.code == Constant.status_success) {
if (baseResp.data != '' && baseResp.data != null) {
return true;
}
} else {
Utils.showToast(baseResp.msg ?? "");
}
return false;
}
/// 获取商家默认做法数据
getSellerPracticeById(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(
context, Method.get, HttpUrl.get_seller_practice_by_id,
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
pageStatePractice = PageState.ConnectivityError;
});
specSunModel = [];
if (baseResp != null && baseResp.code == Constant.status_success) {
if (baseResp.data is List) {
if (baseResp.data.length > 0) {
dataPractice =
CookbookPracticeModel.fromJson(baseResp.responseData).data;
pageStatePractice = PageState.Success;
} else {
pageStatePractice = PageState.Empty;
}
} else {
pageStatePractice = PageState.Empty;
}
} else {
Utils.showToast(baseResp.msg ?? "");
pageStatePractice = PageState.ConnectivityError;
}
notifyListeners();
}
/// 获取商家计价单位
getSpecBySellerid(BuildContext context, Map<String, String> params,
{showLoading = false}) async {
... ... @@ -45,16 +143,23 @@ class MenuManageProvider extends ChangeNotifier {
data: params, showLoading: showLoading)
.catchError((error) {
print(error.toString());
pageStateUnit = PageState.ConnectivityError;
});
specSunModel = [];
if (baseResp != null && baseResp.code == Constant.status_success) {
if (baseResp.data is List) {
if (baseResp.data.length > 0) {
specSunModel = CookbookSpecModel.fromJson(baseResp.responseData).data;
pageStateUnit = PageState.Success;
} else {
pageStateUnit = PageState.Empty;
}
} else {}
} else {
pageStateUnit = PageState.Empty;
}
} else {
Utils.showToast(baseResp.msg ?? "");
pageStateUnit = PageState.ConnectivityError;
}
notifyListeners();
}
... ... @@ -65,7 +170,8 @@ class MenuManageProvider extends ChangeNotifier {
{showLoading = false}) async {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(context, Method.get, HttpUrl.get_cookbook_by_class,
data: params, showLoading:pageState == PageState.Loading? false: showLoading)
data: params,
showLoading: pageState == PageState.Loading ? false : showLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {
... ... @@ -109,7 +215,9 @@ class MenuManageProvider extends ChangeNotifier {
BaseResp<dynamic> baseResp = await DioUtil()
.request<dynamic>(
context, Method.get, HttpUrl.get_cookbook_by_seller_id,
data: params, showLoading:pageStateCategory == PageState.Loading?false: showLoading)
data: params,
showLoading:
pageStateCategory == PageState.Loading ? false : showLoading)
.catchError((error) {
print(error.toString());
if (error is MyError) {
... ...
... ... @@ -340,6 +340,11 @@ class UserModel with ChangeNotifier {
//退出清空桌位数据
App.sp.remove('table_list');
}
if (App.sp.containsKey('specid')) {
//退出清空销售计价
App.sp.remove('specid');
App.sp.remove('specs');
}
App.sp.setBool("isLogin", false);
// XgFlutterPlugin().stopXg();
... ...
... ... @@ -28,6 +28,7 @@ import 'package:sqflite/sqlite_api.dart';
import '../app.dart';
import '../models/get_banquet_by_id_new_model.dart';
import '../models/get_banquet_deposit_model.dart';
import '../models/menu_unit_model.dart';
import '../models/otherset_model.dart';
import '../models/out_wine_record_model.dart';
import '../models/plan_cook_by_rid_model.dart';
... ... @@ -1646,27 +1647,31 @@ class NavigatorUtil {
///菜单管理------规格和价格设置
static Future<dynamic> goMenuSetPricePage(
BuildContext context, {
BuildContext context, Map object, {
replace = false,
}) {
return _navigateTo(context, "${Routes.menu_set_price_page}",
return _navigateTo(context, "${Routes.menu_set_price_page}?object=${FluroConvertUtils.object2string(object)}",
replace: replace);
}
///菜单管理-----配置销售单位
static Future<dynamic> goMenuUnitPage(
BuildContext context, {
BuildContext context,
String specid, {
replace = false,
}) {
return _navigateTo(context, "${Routes.menu_unit_page}", replace: replace);
return _navigateTo(context, "${Routes.menu_unit_page}?specid=$specid",
replace: replace);
}
///菜单管理-----做法
static Future<dynamic> goMenuDishMethodPage(
BuildContext context, {
BuildContext context,
String selectPracticeIds, {
replace = false,
}) {
return _navigateTo(context, "${Routes.menu_dish_method_page}",
return _navigateTo(context,
"${Routes.menu_dish_method_page}?selectPracticeIds=$selectPracticeIds",
replace: replace);
}
... ...
... ... @@ -154,6 +154,7 @@ import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';
import '../models/get_banquet_by_id_new_model.dart';
import '../models/menu_unit_model.dart';
import '../models/out_wine_record_model.dart';
import '../models/plan_cook_by_rid_model.dart';
import '../models/plan_cook_list_model.dart';
... ... @@ -2678,34 +2679,52 @@ var menuSetPricePageHandle = new Handler(
// String idstr = params["idstr"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
List<MenuUnitModel> res = [];
// String planDishPrice = '';
if (params.keys.contains('object')) {
Map object = FluroConvertUtils.string2map(params["object"].first);
List temp = object['object'];
// planDishPrice = params["planDishPrice"].first;
if (temp != null) {
for (var item in temp) {
// MenuModel menuModel = MenuModel.fromJson2(item);
// res.add(menuModel);
// print(res);
res.add(MenuUnitModel.fromJson(item));
}
}
}
return ChangeNotifierProvider<MenuManageProvider>(
create: (_) => MenuManageProvider(), child: MenuSetPricePage());
create: (_) => MenuManageProvider(), child: MenuSetPricePage(data: res));
});
///菜单管理--配置销售单位
var menuUnitPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
String specid = params["specid"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
return ChangeNotifierProvider<MenuManageProvider>(
create: (_) => MenuManageProvider(), child: MenuUnitPage());
create: (_) => MenuManageProvider(), child: MenuUnitPage(specid: specid));
});
///菜单管理--做法
var menuDishMethodPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
String selectPracticeIds = params["selectPracticeIds"].first;
// NotebookDetail detailEntity = NotebookDetail.fromJson(json
// .decode(FluroConvertUtils.fluroCnParamsDecode(params["detail"].first)));
return ChangeNotifierProvider<MenuManageProvider>(
create: (_) => MenuManageProvider(), child: MenuDishMethodPage());
create: (_) => MenuManageProvider(),
child: MenuDishMethodPage(selectPracticeIds: selectPracticeIds));
});
///菜单管理--菜单管理配置
var menuThemeColorSetPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
List<MenuModel> res = [];
List<MenuModel> res = [];
if (params.keys.contains('object')) {
Map object = FluroConvertUtils.string2map(params["object"].first);
List temp = object['object'];
... ... @@ -2715,5 +2734,6 @@ var menuThemeColorSetPageHandle = new Handler(
}
}
return ChangeNotifierProvider<MenuManageProvider>(
create: (_) => MenuManageProvider(), child: MenuThemeColorSetPage(menuModel:res));
create: (_) => MenuManageProvider(),
child: MenuThemeColorSetPage(menuModel: res));
});
... ...