|
|
|
@ -18,18 +18,19 @@ import 'package:huixiang/retrofit/retrofit_api.dart';
|
|
|
|
|
import 'package:huixiang/store/store_view/people_num.dart'; |
|
|
|
|
import 'package:huixiang/store/store_view/shop_car.dart'; |
|
|
|
|
import 'package:huixiang/utils/app_util.dart'; |
|
|
|
|
import 'package:huixiang/utils/constant.dart'; |
|
|
|
|
import 'package:huixiang/utils/flutter_utils.dart'; |
|
|
|
|
import 'package:huixiang/utils/font_weight.dart'; |
|
|
|
|
import 'package:huixiang/utils/shared_preference.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/border_text.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/classic_header.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/custom_image.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/my_footer.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/request_permission.dart'; |
|
|
|
|
import 'package:huixiang/view_widget/round_button.dart'; |
|
|
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
|
|
import 'package:pull_to_refresh/pull_to_refresh.dart'; |
|
|
|
|
import 'package:shared_preferences/shared_preferences.dart'; |
|
|
|
|
|
|
|
|
|
import '../view_widget/border_text.dart'; |
|
|
|
|
import '../view_widget/request_permission.dart'; |
|
|
|
|
|
|
|
|
|
class ShopDetailsPage extends StatefulWidget { |
|
|
|
|
final Map<String, dynamic>? arguments; |
|
|
|
@ -76,22 +77,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
id = widget.arguments?["id"] ?? ""; |
|
|
|
|
storeId = widget.arguments?["storeId"] ?? ""; |
|
|
|
|
isSetMeal = widget.arguments?["isSetMeal"] ?? false; |
|
|
|
|
// SharedPreferences.getInstance().then((value) { |
|
|
|
|
// String minToken = value.getString("minToken"); |
|
|
|
|
// String tenant = value.getString("tenant"); |
|
|
|
|
// String storeId = value.getString("storeId"); |
|
|
|
|
// minService = MinApiService(Dio(), |
|
|
|
|
// context: context, |
|
|
|
|
// token: minToken, |
|
|
|
|
// tenant: tenant, |
|
|
|
|
// storeId: storeId, |
|
|
|
|
// showLoading: true); |
|
|
|
|
// queryMiNiDetail(id); |
|
|
|
|
// queryShopCar().then((value) { |
|
|
|
|
// this.shopCarGoods = value; |
|
|
|
|
// setState(() {}); |
|
|
|
|
// }); |
|
|
|
|
// }); |
|
|
|
|
|
|
|
|
|
queryStoreInfo(); |
|
|
|
|
buildCount(); |
|
|
|
|
} |
|
|
|
@ -118,7 +104,6 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
minLogin(); |
|
|
|
|
} |
|
|
|
|
// SmartDialog.dismiss(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// 小程序登录 |
|
|
|
@ -147,7 +132,6 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
setState(() {}); |
|
|
|
|
}); |
|
|
|
|
// SmartDialog.dismiss(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
@ -171,6 +155,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} else { |
|
|
|
|
refreshController.refreshFailed(); |
|
|
|
|
} |
|
|
|
|
SmartDialog.dismiss(status: SmartStatus.loading, force: true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_onRefresh() { |
|
|
|
@ -178,7 +163,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///获取父订单(火锅订单加菜前调用) |
|
|
|
|
getParentInfo() async { |
|
|
|
|
Future getParentInfo() async { |
|
|
|
|
BaseData? baseData = await minService?.getParentInfo("$tableId").catchError((error) { |
|
|
|
|
debugPrint("${error}"); |
|
|
|
|
return BaseData()..isSuccess = false; |
|
|
|
@ -188,14 +173,13 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
parentId = baseData.data["id"]; |
|
|
|
|
parentCode = baseData.data["parentCode"]; |
|
|
|
|
} else { |
|
|
|
|
///TODO: 没有父订单, |
|
|
|
|
queryStoreInfo1(); |
|
|
|
|
await queryStoreInfo1(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///显示选择人数的弹窗 |
|
|
|
|
showPeopleNum(String? tableName) async { |
|
|
|
|
Future showPeopleNum(String? tableName) async { |
|
|
|
|
var people = await showDialog( |
|
|
|
|
context: context, |
|
|
|
|
barrierDismissible: false, |
|
|
|
@ -214,7 +198,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///获取桌子信息 |
|
|
|
|
queryStoreInfo1() async { |
|
|
|
|
Future queryStoreInfo1() async { |
|
|
|
|
BaseData<StoreInfo>? baseData = await minService?.queryStoreInfo1({ |
|
|
|
|
"getCoupon": true, |
|
|
|
|
"storeId": storeId, |
|
|
|
@ -225,7 +209,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
}); |
|
|
|
|
if ((baseData?.isSuccess ?? false) && baseData!.data != null) { |
|
|
|
|
StoreInfo storeInfo = baseData.data!; |
|
|
|
|
showPeopleNum(storeInfo.storeTable?.tableName); |
|
|
|
|
await showPeopleNum(storeInfo.storeTable?.tableName); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -240,7 +224,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///去下单结算页面 |
|
|
|
|
toDownOrder() async { |
|
|
|
|
Future toDownOrder() async { |
|
|
|
|
int num = count(); |
|
|
|
|
|
|
|
|
|
if (parentId == "") { |
|
|
|
@ -269,26 +253,23 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
if ((miNiDetail?.subscribeParam?.isEnableSubscribe ?? false)) { |
|
|
|
|
clearShopCar(); |
|
|
|
|
await clearShopCar(); |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (tableId > 0) { |
|
|
|
|
getParentInfo(); |
|
|
|
|
await getParentInfo(); |
|
|
|
|
} |
|
|
|
|
queryShopCar().then((value) { |
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
setState(() {}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// 购物车的key,用于刷新UI |
|
|
|
|
GlobalKey shopCartKey = GlobalKey(); |
|
|
|
|
|
|
|
|
|
///购物车弹窗 |
|
|
|
|
showShoppingCart() { |
|
|
|
|
queryShopCar().then((value) { |
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
Future showShoppingCart() async { |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
dialogShowing = true; |
|
|
|
|
SmartDialog.show( |
|
|
|
|
builder: (ctx) { |
|
|
|
@ -306,11 +287,10 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
}, |
|
|
|
|
alignment: Alignment.bottomCenter, |
|
|
|
|
); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///清空购物车 |
|
|
|
|
clearShopCar() async { |
|
|
|
|
Future clearShopCar() async { |
|
|
|
|
BaseData<bool>? baseData = await minService?.clearShoppingCart(num.parse(storeId)); |
|
|
|
|
if (baseData?.isSuccess ?? false) { |
|
|
|
|
shopCarGoods = null; |
|
|
|
@ -319,7 +299,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///选规格 |
|
|
|
|
_queryMiNiDetail(String id, int count) async { |
|
|
|
|
Future _queryMiNiDetail(String id, int count) async { |
|
|
|
|
S.current.zhengzaijiazai.loading; |
|
|
|
|
if (count < 0) { |
|
|
|
|
shopCarGoods?.shoppingCartSkuItemList?.forEach((element) { |
|
|
|
@ -332,19 +312,20 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
} |
|
|
|
|
BaseData<MiniDetail>? baseData = await minService?.miNiDetail(id); |
|
|
|
|
if (baseData?.isSuccess ?? false) { |
|
|
|
|
showStoreSelector(baseData!.data, id, count); |
|
|
|
|
await showStoreSelector(baseData!.data, id, count); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///选规格弹窗 |
|
|
|
|
showStoreSelector(MiniDetail? miNiDetail, String id, int count) async { |
|
|
|
|
Future showStoreSelector(MiniDetail? miNiDetail, String id, int count) async { |
|
|
|
|
if (miNiDetail?.attrList?.length == 1 && |
|
|
|
|
(miNiDetail?.attrList![0].attrValueList?.isNotEmpty ?? false)) { |
|
|
|
|
_addShopCar(miNiDetail, [], counts); |
|
|
|
|
await _addShopCar(miNiDetail, [], counts); |
|
|
|
|
} else { |
|
|
|
|
// showSpanDialog(); |
|
|
|
|
selectSpecsShowBottomSheet(); |
|
|
|
|
} |
|
|
|
|
SmartDialog.dismiss(status: SmartStatus.loading, force: true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///添加购物车 |
|
|
|
@ -372,7 +353,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
.replaceAll(",", ""); |
|
|
|
|
|
|
|
|
|
if (miNiDetail?.subscribeParam?.isEnableSubscribe ?? false) { |
|
|
|
|
clearShopCar(); |
|
|
|
|
await clearShopCar(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.addShoppingCart({ |
|
|
|
@ -398,14 +379,11 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
}).catchError((error) { |
|
|
|
|
return BaseListData<ShoppingCart>()..isSuccess = false; |
|
|
|
|
}); |
|
|
|
|
SmartDialog.dismiss(); |
|
|
|
|
if (baseDate?.isSuccess ?? false) { |
|
|
|
|
queryShopCar().then((value) { |
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
if (miNiDetail?.subscribeParam?.isEnableSubscribe ?? false) |
|
|
|
|
toDownOrder(); |
|
|
|
|
setState(() {}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -415,7 +393,7 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
pid = ""; //活动 |
|
|
|
|
cName = ""; //优惠券 |
|
|
|
|
cid = ""; //优惠券 |
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.getShoppingCart(tableId); |
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.getShoppingCart(tableId).catchLEr<ShoppingCart>(); |
|
|
|
|
if ((baseDate?.isSuccess ?? false) && (baseDate!.data?.isNotEmpty ?? false)) { |
|
|
|
|
if (baseDate.data![0].selectDiscount == 1) { |
|
|
|
|
baseDate.data![0].couponList?.forEach((element) { |
|
|
|
@ -433,109 +411,52 @@ class _ShopDetailsPage extends State<ShopDetailsPage> {
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
return baseDate.data![0]; |
|
|
|
|
} else { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///购物车➕1 |
|
|
|
|
Future<ShoppingCart?> shopCartAdd(SkuItemList cartSkuItem) async { |
|
|
|
|
S.current.zhengzaijiazai.loading; |
|
|
|
|
Map<String, dynamic> shopCarTemp = shopCarGoods?.toJson() ?? {}; |
|
|
|
|
int buyNum = cartSkuItem.buyNum ?? 0; |
|
|
|
|
cartSkuItem.buyNum = buyNum + 1; |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [cartSkuItem.toJson()]; |
|
|
|
|
BaseListData<ShoppingCart>? baseDate = |
|
|
|
|
await minService?.shoppingCartSingle(shopCarTemp); |
|
|
|
|
Map shoppingCartSkuItemList = cartSkuItem.toJson(); |
|
|
|
|
shoppingCartSkuItemList["buyNum"] = buyNum + 1; |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [shoppingCartSkuItemList]; |
|
|
|
|
shopCarTemp["couponList"] = []; |
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.shoppingCartSingle(shopCarTemp).catchLEr<ShoppingCart>(); |
|
|
|
|
if (baseDate?.isSuccess ?? false) { |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
cartSkuItem.buyNum = buyNum + 1; |
|
|
|
|
shopCartKey.currentState?.setState(() {}); |
|
|
|
|
setState(() {}); |
|
|
|
|
} |
|
|
|
|
SmartDialog.dismiss(status: SmartStatus.loading, force: true); |
|
|
|
|
return this.shopCarGoods; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///购物车➖1 |
|
|
|
|
Future<ShoppingCart?> shopCartReduce(SkuItemList cartSkuItem) async { |
|
|
|
|
S.current.zhengzaijiazai.loading; |
|
|
|
|
Map<String, dynamic> shopCarTemp = shopCarGoods?.toJson() ?? {}; |
|
|
|
|
int buyNum = cartSkuItem.buyNum ?? 0; |
|
|
|
|
cartSkuItem.buyNum = buyNum - 1; |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [cartSkuItem.toJson()]; |
|
|
|
|
Map shoppingCartSkuItemList = cartSkuItem.toJson(); |
|
|
|
|
shoppingCartSkuItemList["buyNum"] = buyNum - 1; |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [shoppingCartSkuItemList]; |
|
|
|
|
shopCarTemp["couponList"] = []; |
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.shoppingCartSingle(shopCarTemp); |
|
|
|
|
if (baseDate?.isSuccess ?? false) { |
|
|
|
|
this.shopCarGoods = await queryShopCar(); |
|
|
|
|
cartSkuItem.buyNum = buyNum - 1; |
|
|
|
|
if (shopCartKey.currentState != null) { |
|
|
|
|
shopCartKey.currentState!.setState(() {}); |
|
|
|
|
} |
|
|
|
|
setState(() {}); |
|
|
|
|
} |
|
|
|
|
SmartDialog.dismiss(status: SmartStatus.loading, force: true); |
|
|
|
|
return this.shopCarGoods; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///商品➕1 |
|
|
|
|
add(MiniDetail miNiDetail, selectSkus) async { |
|
|
|
|
ProductSkuVOList? productSku = miNiDetail.productSkuVOList?.firstWhere((element) { |
|
|
|
|
return skuY(element, selectSkus); |
|
|
|
|
}); |
|
|
|
|
String? skuId = productSku?.id; |
|
|
|
|
int shopSkuIndex = shopCarGoods?.shoppingCartSkuItemList |
|
|
|
|
?.indexWhere((element) => skuId == element.id) ?? |
|
|
|
|
-1; |
|
|
|
|
Map<String, dynamic> shopCarTemp = shopCarGoods?.toJson() ?? {}; |
|
|
|
|
shopCarGoods?.tableId = "$tableId"; |
|
|
|
|
|
|
|
|
|
if (shopSkuIndex >= 0) { |
|
|
|
|
int buyNum = shopCarGoods?.shoppingCartSkuItemList?[shopSkuIndex].buyNum ?? 0; |
|
|
|
|
shopCarGoods?.shoppingCartSkuItemList?[shopSkuIndex].buyNum = buyNum + 1; |
|
|
|
|
SkuItemList? cartSkuItem = shopCarGoods?.shoppingCartSkuItemList |
|
|
|
|
?.firstWhere((element) => skuId == element.id); |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [cartSkuItem?.toJson()]; |
|
|
|
|
shopCarTemp["couponList"] = []; |
|
|
|
|
} else { |
|
|
|
|
await _addShopCar(miNiDetail, selectSkus, 2); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.shoppingCartSingle(shopCarTemp); |
|
|
|
|
if (baseDate?.isSuccess ?? false) { |
|
|
|
|
queryShopCar().then((value) { |
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
setState(() {}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
///商品➖1 |
|
|
|
|
reduce(MiniDetail miNiDetail, selectSkus) async { |
|
|
|
|
ProductSkuVOList? productSku = miNiDetail.productSkuVOList?.firstWhere((element) { |
|
|
|
|
return skuY(element, selectSkus); |
|
|
|
|
}); |
|
|
|
|
String? skuId = productSku?.id; |
|
|
|
|
SkuItemList? shopSkuItem = shopCarGoods?.shoppingCartSkuItemList |
|
|
|
|
?.firstWhere((element) => skuId == element.id); |
|
|
|
|
int shopSkuIndex = shopCarGoods?.shoppingCartSkuItemList |
|
|
|
|
?.indexWhere((element) => skuId == element.id) ?? -1; |
|
|
|
|
|
|
|
|
|
if ((shopSkuItem?.buyNum ?? 0) > 1) { |
|
|
|
|
int buyNum = shopCarGoods?.shoppingCartSkuItemList?[shopSkuIndex].buyNum ?? 0; |
|
|
|
|
shopCarGoods?.shoppingCartSkuItemList?[shopSkuIndex].buyNum = buyNum - 1; |
|
|
|
|
} |
|
|
|
|
shopCarGoods?.tableId = "$tableId"; |
|
|
|
|
|
|
|
|
|
Map<String, dynamic> shopCarTemp = shopCarGoods?.toJson() ?? {}; |
|
|
|
|
SkuItemList? cartSkuItem = shopCarGoods?.shoppingCartSkuItemList |
|
|
|
|
?.firstWhere((element) => skuId == element.id); |
|
|
|
|
shopCarTemp["shoppingCartSkuItemList"] = [cartSkuItem?.toJson()]; |
|
|
|
|
|
|
|
|
|
BaseListData<ShoppingCart>? baseDate = await minService?.shoppingCartSingle(shopCarTemp); |
|
|
|
|
if (baseDate?.isSuccess ?? false) { |
|
|
|
|
queryShopCar().then((value) { |
|
|
|
|
this.shopCarGoods = value; |
|
|
|
|
setState(() {}); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool skuY(ProductSkuVOList productSku, selectSkus) { |
|
|
|
|
bool gg = true; |
|
|
|
|
selectSkus.forEach((element1) { |
|
|
|
|