|
|
|
import 'package:dio/dio.dart';
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
|
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
|
|
|
import 'package:huixiang/retrofit/data/business_store_list.dart';
|
|
|
|
import 'package:huixiang/view_widget/my_appbar.dart';
|
|
|
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
|
|
|
import '../../generated/l10n.dart';
|
|
|
|
import '../../retrofit/business_api.dart';
|
|
|
|
import '../../retrofit/data/base_data.dart';
|
|
|
|
import '../../utils/business_instance.dart';
|
|
|
|
import '../../utils/font_weight.dart';
|
|
|
|
|
|
|
|
class MerchantInfo extends StatefulWidget {
|
|
|
|
final Map<String, dynamic> arguments;
|
|
|
|
|
|
|
|
MerchantInfo({this.arguments});
|
|
|
|
|
|
|
|
@override
|
|
|
|
State<StatefulWidget> createState() {
|
|
|
|
return _MerchantInfo();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class _MerchantInfo extends State<MerchantInfo> {
|
|
|
|
int platformIndex = 0;
|
|
|
|
int useErpIndex = 0;
|
|
|
|
int isEnableIndex = 0;
|
|
|
|
BusinessApiService businessService;
|
|
|
|
Records records;
|
|
|
|
int tradeTypeIndex = 0;
|
|
|
|
String posTypeCode;
|
|
|
|
int shopTypeIndex = 0;
|
|
|
|
String serviceType;
|
|
|
|
TextEditingController shopNameController = TextEditingController();
|
|
|
|
TextEditingController telController = TextEditingController();
|
|
|
|
TextEditingController sortController = TextEditingController();
|
|
|
|
List<dynamic> image;
|
|
|
|
String logo;
|
|
|
|
String facade;
|
|
|
|
|
|
|
|
@override
|
|
|
|
void initState() {
|
|
|
|
super.initState();
|
|
|
|
records = widget.arguments["records"];
|
|
|
|
}
|
|
|
|
|
|
|
|
///保存店铺信息
|
|
|
|
saveInfo() async {
|
|
|
|
EasyLoading.show(
|
|
|
|
status: S.current.zhengzaijiazai,
|
|
|
|
maskType: EasyLoadingMaskType.black);
|
|
|
|
if (businessService == null) {
|
|
|
|
businessService = BusinessApiService(Dio(),
|
|
|
|
context: context,
|
|
|
|
token: BusinessInstance.instance.businessToken,
|
|
|
|
tenant: BusinessInstance.instance.businessTenant,
|
|
|
|
storeId: widget.arguments["storeId"]);
|
|
|
|
}
|
|
|
|
BaseData baseData = await businessService.saveStoreInfo({
|
|
|
|
"id": widget.arguments["storeId"],
|
|
|
|
"storeName": (shopNameController.text??"")== "" ? records.storeName: shopNameController.text,
|
|
|
|
"posType": posTypeCode == null ? records.posType.code: tradeTypeCode(),
|
|
|
|
"serviceType": serviceType == null ? records.serviceType : shopTypeCode(),
|
|
|
|
"tel": telController.text ?? records.tel,
|
|
|
|
"logo": logo,
|
|
|
|
"facade": facade,
|
|
|
|
"sort": (sortController.text??"")==""? records.sort :double.tryParse(sortController.text),
|
|
|
|
"platformShow": platformIndex == 0 ? records.platformShow :(platformIndex == 1 ?true:false),
|
|
|
|
"isEnable": isEnableIndex == 0 ? records.isEnable :(isEnableIndex == 1 ?true:false),
|
|
|
|
"useErp": useErpIndex == 0 ? records.useErp :(useErpIndex == 1 ?true:false),
|
|
|
|
"isAutoSendRefundAddress": 1
|
|
|
|
}).catchError((error) {});
|
|
|
|
if (baseData != null && baseData.isSuccess) {
|
|
|
|
EasyLoading.dismiss();
|
|
|
|
SmartDialog.showToast("店铺设置修改成功", alignment: Alignment.center);
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
} else {
|
|
|
|
EasyLoading.dismiss();
|
|
|
|
SmartDialog.showToast(baseData.msg, alignment: Alignment.center);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
FocusScope.of(context).unfocus();
|
|
|
|
},
|
|
|
|
child: Scaffold(
|
|
|
|
resizeToAvoidBottomInset: false,
|
|
|
|
backgroundColor: Color(0xFFF8F8FA),
|
|
|
|
appBar: MyAppBar(
|
|
|
|
title: "门店设置",
|
|
|
|
titleColor: Colors.black,
|
|
|
|
background: Colors.white,
|
|
|
|
leadingColor: Colors.black,
|
|
|
|
brightness: Brightness.dark,
|
|
|
|
),
|
|
|
|
body: Column(
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
margin: EdgeInsets.only(top: 16.h, left: 14.w, right: 14.w),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
borderRadius: BorderRadius.circular(8.w),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(left: 16.w, right: 16.w, bottom: 17.h),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
textItem("店铺名称", shopNameController, records.storeName ?? ""),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h, bottom: 16.h)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
showTradeType();
|
|
|
|
},
|
|
|
|
child: textItems("收单类型",
|
|
|
|
posTypeCode == null ? tradeType() : posTypeCode),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h, bottom: 16.h)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
showShopType();
|
|
|
|
},
|
|
|
|
child: textItems(
|
|
|
|
"店铺类型", serviceType == null ? shopType()??"" : serviceType??""),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h)),
|
|
|
|
textItem("负责人电话", telController, records.tel ?? ""),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h, bottom: 16.h)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
Navigator.pushNamed(context, "/router/shop_image_info",
|
|
|
|
arguments: {
|
|
|
|
"logo": ((logo ?? "") != "") ? logo : records.logo,
|
|
|
|
"facade": ((facade ??"") != "")?facade : records.facade,
|
|
|
|
"storeId":widget.arguments["storeId"],
|
|
|
|
}).then((value){
|
|
|
|
if(value != null) {
|
|
|
|
image = value;
|
|
|
|
logo = image[0];
|
|
|
|
facade = image[1];
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: textItems("门店图片", "精美的图片更加吸引顾客"),
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h)),
|
|
|
|
textItem(
|
|
|
|
"排序", sortController, records.sort.toString() ?? ""),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.only(top: 2.h, bottom: 16.h)),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
"是否在平台展示",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF0D0D0D),
|
|
|
|
fontWeight: MyFontWeight.bold),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
platformIndex = 1;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(platformIndex == 0 ?(records.platformShow == true):(platformIndex==1))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"是",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 36.w,
|
|
|
|
),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
platformIndex = 2;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(platformIndex == 0 ?(records.platformShow == false):(platformIndex==2))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"否",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.symmetric(vertical: 16.h)),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
"是否启用仓库管理",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF0D0D0D),
|
|
|
|
fontWeight: MyFontWeight.bold),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
useErpIndex = 1;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(useErpIndex == 0 ?(records.useErp == true):(useErpIndex==1))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"是",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 36.w,
|
|
|
|
),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
useErpIndex = 2;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(useErpIndex == 0 ?(records.useErp == false):(useErpIndex==2))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"否",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 1.h,
|
|
|
|
color: Color(0xFFEBECEF),
|
|
|
|
margin: EdgeInsets.symmetric(vertical: 16.h)),
|
|
|
|
Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
"是否启用门店",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF0D0D0D),
|
|
|
|
fontWeight: MyFontWeight.bold),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
isEnableIndex = 1;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(isEnableIndex == 0 ?(records.isEnable == true):(isEnableIndex==1))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"是",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 36.w,
|
|
|
|
),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
isEnableIndex = 2;
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Image.asset(
|
|
|
|
(isEnableIndex == 0 ?(records.isEnable == false):(isEnableIndex==2))
|
|
|
|
? "assets/image/bs_check.webp"
|
|
|
|
: "assets/image/bs_uncheck.webp",
|
|
|
|
width: 16,
|
|
|
|
height: 16,
|
|
|
|
fit: BoxFit.cover,
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 5.w,
|
|
|
|
),
|
|
|
|
Text(
|
|
|
|
"否",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
Spacer(),
|
|
|
|
GestureDetector(
|
|
|
|
behavior: HitTestBehavior.opaque,
|
|
|
|
onTap: (){
|
|
|
|
saveInfo();
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: double.infinity,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: EdgeInsets.only(bottom: 55.h, left: 16.w, right: 16.w),
|
|
|
|
padding: EdgeInsets.symmetric(vertical: 16.h),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(27),
|
|
|
|
color: Color(0xFF30415B)),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).baocun,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Colors.white,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget textItem(left, rightController, right) {
|
|
|
|
return Container(
|
|
|
|
child: Row(
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
left,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF0D0D0D),
|
|
|
|
fontWeight: MyFontWeight.bold),
|
|
|
|
),
|
|
|
|
flex: 1,
|
|
|
|
),
|
|
|
|
Expanded(
|
|
|
|
child: TextField(
|
|
|
|
controller: rightController,
|
|
|
|
decoration: InputDecoration(
|
|
|
|
hintText: right ?? "",
|
|
|
|
hintTextDirection: TextDirection.rtl,
|
|
|
|
hintStyle: TextStyle(
|
|
|
|
color: Color(0xFF7A797F),
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.regular,
|
|
|
|
),
|
|
|
|
border: InputBorder.none,
|
|
|
|
),
|
|
|
|
textAlign: TextAlign.right,
|
|
|
|
style: TextStyle(
|
|
|
|
color: Color(0xFF7A797F),
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.regular),
|
|
|
|
),
|
|
|
|
flex: 2,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
Widget textItems(left, right) {
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(bottom: 16.h),
|
|
|
|
child: Row(
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
mainAxisAlignment: MainAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Text(
|
|
|
|
left,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF0D0D0D),
|
|
|
|
fontWeight: MyFontWeight.bold),
|
|
|
|
)),
|
|
|
|
Text(
|
|
|
|
right,
|
|
|
|
maxLines: 2,
|
|
|
|
overflow: TextOverflow.ellipsis,
|
|
|
|
textAlign: TextAlign.right,
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
color: Color(0xFF7A797F),
|
|
|
|
fontWeight: MyFontWeight.medium),
|
|
|
|
),
|
|
|
|
SizedBox(
|
|
|
|
width: 4.w,
|
|
|
|
),
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/icon_right_z.webp",
|
|
|
|
width: 16.h,
|
|
|
|
height: 16.h,
|
|
|
|
color: Color(0xFF7A797F),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
));
|
|
|
|
}
|
|
|
|
|
|
|
|
///收单类型
|
|
|
|
String tradeType() {
|
|
|
|
if (records.posType.code == "NORMALSTORE") {
|
|
|
|
return "普通餐饮";
|
|
|
|
} else if (records.posType.code == "FASTSTORE") {
|
|
|
|
return "快消餐饮";
|
|
|
|
} else if (records.posType.code == "RETAILSTORE") {
|
|
|
|
return "零售店";
|
|
|
|
} else if (records.posType.code == "DIRECT") {
|
|
|
|
return "直付商店";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///收单类型选择
|
|
|
|
String tradeTypeCode() {
|
|
|
|
if (tradeTypeIndex == 0) {
|
|
|
|
return "NORMALSTORE";
|
|
|
|
} else if (tradeTypeIndex == 1) {
|
|
|
|
return "FASTSTORE";
|
|
|
|
} else if (tradeTypeIndex == 2) {
|
|
|
|
return "RETAILSTORE";
|
|
|
|
} else if (tradeTypeIndex == 3) {
|
|
|
|
return "DIRECT";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///收单类型弹窗选择
|
|
|
|
showTradeType() {
|
|
|
|
showModalBottomSheet(
|
|
|
|
context: context,
|
|
|
|
backgroundColor: Colors.transparent,
|
|
|
|
builder: (context) {
|
|
|
|
return StatefulBuilder(builder: (
|
|
|
|
context,
|
|
|
|
state,
|
|
|
|
) {
|
|
|
|
return Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 420.h,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
borderRadius: BorderRadius.only(
|
|
|
|
topLeft: Radius.circular(8),
|
|
|
|
topRight: Radius.circular(8),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Container(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
top: 12.h, bottom: 12.h, left: 41.w),
|
|
|
|
child: Text(
|
|
|
|
"选择收单类型",
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: MyFontWeight.bold,
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.only(right: 16.w),
|
|
|
|
child: Image.asset(
|
|
|
|
"assets/image/cancel.webp",
|
|
|
|
width: 25.h,
|
|
|
|
height: 25.h,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
tradeTypeIndex = 0;
|
|
|
|
posTypeCode = "普通餐饮";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: tradeTypeIndex == 0
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: tradeTypeIndex == 0
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: tradeTypeIndex == 0 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"普通餐饮",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: tradeTypeIndex == 0
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (tradeTypeIndex == 0)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
tradeTypeIndex = 1;
|
|
|
|
posTypeCode = "快消餐饮";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: tradeTypeIndex == 1
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: tradeTypeIndex == 1
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: tradeTypeIndex == 1 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"快消餐饮",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: tradeTypeIndex == 1
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (tradeTypeIndex == 1)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
tradeTypeIndex = 2;
|
|
|
|
posTypeCode = "零售店";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: tradeTypeIndex == 2
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: tradeTypeIndex == 2
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: tradeTypeIndex == 2 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"零售店",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: tradeTypeIndex == 2
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (tradeTypeIndex == 2)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
tradeTypeIndex = 3;
|
|
|
|
posTypeCode = "直付商店";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: tradeTypeIndex == 3
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: tradeTypeIndex == 3
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: tradeTypeIndex == 3 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"直付商店",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: tradeTypeIndex == 3
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (tradeTypeIndex == 3)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
Navigator.of(context).pop(posTypeCode);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: double.infinity,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: EdgeInsets.only(top: 25.h),
|
|
|
|
padding: EdgeInsets.symmetric(vertical: 16.h),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(27),
|
|
|
|
color: Color(0xFF30415B)),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).queding,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Colors.white,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
///店铺类型
|
|
|
|
String shopType() {
|
|
|
|
if (records.serviceType == "EATSTORE") {
|
|
|
|
return "吃";
|
|
|
|
} else if (records.serviceType == "DRINKSTORE") {
|
|
|
|
return "喝";
|
|
|
|
} else if (records.serviceType == "HAPPYSTORE") {
|
|
|
|
return "玩";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///店铺类型选择
|
|
|
|
String shopTypeCode() {
|
|
|
|
if (shopTypeIndex == 0) {
|
|
|
|
return "EATSTORE";
|
|
|
|
} else if (shopTypeIndex == 1) {
|
|
|
|
return "DRINKSTORE";
|
|
|
|
} else if (shopTypeIndex == 2) {
|
|
|
|
return "HAPPYSTORE";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
///店铺类型弹窗选择
|
|
|
|
showShopType() {
|
|
|
|
showModalBottomSheet(
|
|
|
|
context: context,
|
|
|
|
backgroundColor: Colors.transparent,
|
|
|
|
builder: (context) {
|
|
|
|
return StatefulBuilder(builder: (
|
|
|
|
context,
|
|
|
|
state,
|
|
|
|
) {
|
|
|
|
return Container(
|
|
|
|
width: double.infinity,
|
|
|
|
height: 360.h,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: Colors.white,
|
|
|
|
borderRadius: BorderRadius.only(
|
|
|
|
topLeft: Radius.circular(8),
|
|
|
|
topRight: Radius.circular(8),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
child: Column(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
|
|
children: [
|
|
|
|
Row(
|
|
|
|
mainAxisAlignment: MainAxisAlignment.start,
|
|
|
|
crossAxisAlignment: CrossAxisAlignment.center,
|
|
|
|
children: [
|
|
|
|
Expanded(
|
|
|
|
child: Container(
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: EdgeInsets.only(
|
|
|
|
top: 12.h, bottom: 12.h, left: 41.w),
|
|
|
|
child: Text(
|
|
|
|
"选择店铺类型",
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: MyFontWeight.bold,
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Color(0xFF1A1A1A),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
Navigator.of(context).pop();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Padding(
|
|
|
|
padding: EdgeInsets.only(right: 16.w),
|
|
|
|
child: Image.asset(
|
|
|
|
"assets/image/cancel.webp",
|
|
|
|
width: 25.h,
|
|
|
|
height: 25.h,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
Padding(
|
|
|
|
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
|
|
|
child: Column(
|
|
|
|
children: [
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
shopTypeIndex = 0;
|
|
|
|
serviceType = "吃";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: shopTypeIndex == 0
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: shopTypeIndex == 0
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: shopTypeIndex == 0 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"吃",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: shopTypeIndex == 0
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (shopTypeIndex == 0)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
shopTypeIndex = 1;
|
|
|
|
serviceType = "喝";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: shopTypeIndex == 1
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: shopTypeIndex == 1
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: shopTypeIndex == 1 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"喝",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: shopTypeIndex == 1
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (shopTypeIndex == 1)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
state(() {
|
|
|
|
shopTypeIndex = 2;
|
|
|
|
serviceType = "玩";
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
height: 52.h,
|
|
|
|
margin: EdgeInsets.only(bottom: 12),
|
|
|
|
child: Stack(
|
|
|
|
alignment: Alignment.bottomRight,
|
|
|
|
children: [
|
|
|
|
Container(
|
|
|
|
height: 52.h,
|
|
|
|
width: double.infinity,
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
color: shopTypeIndex == 2
|
|
|
|
? Color(0xFFEFF5FF)
|
|
|
|
: Color(0xFFF7F7F7),
|
|
|
|
borderRadius: BorderRadius.circular(4.w),
|
|
|
|
border: Border.all(
|
|
|
|
color: shopTypeIndex == 2
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Colors.white,
|
|
|
|
width: shopTypeIndex == 2 ? 1.w : 0,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(
|
|
|
|
top: 16.h,
|
|
|
|
bottom: 16.h,
|
|
|
|
left: 16.w,
|
|
|
|
right: 17.w),
|
|
|
|
child: Text(
|
|
|
|
"玩",
|
|
|
|
style: TextStyle(
|
|
|
|
fontSize: 14.sp,
|
|
|
|
fontWeight: MyFontWeight.medium,
|
|
|
|
color: shopTypeIndex == 2
|
|
|
|
? Color(0xFF30415B)
|
|
|
|
: Color(0xFF0D0D0D)),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
if (shopTypeIndex == 2)
|
|
|
|
Image.asset(
|
|
|
|
"assets/image/bs_shop.webp",
|
|
|
|
width: 20,
|
|
|
|
height: 20,
|
|
|
|
fit: BoxFit.fill,
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)),
|
|
|
|
GestureDetector(
|
|
|
|
onTap: () {
|
|
|
|
setState(() {
|
|
|
|
Navigator.of(context).pop(serviceType);
|
|
|
|
});
|
|
|
|
},
|
|
|
|
child: Container(
|
|
|
|
width: double.infinity,
|
|
|
|
alignment: Alignment.center,
|
|
|
|
margin: EdgeInsets.only(top: 25.h),
|
|
|
|
padding: EdgeInsets.symmetric(vertical: 16.h),
|
|
|
|
decoration: BoxDecoration(
|
|
|
|
borderRadius: BorderRadius.circular(27),
|
|
|
|
color: Color(0xFF30415B)),
|
|
|
|
child: Text(
|
|
|
|
S.of(context).queding,
|
|
|
|
style: TextStyle(
|
|
|
|
fontWeight: MyFontWeight.semi_bold,
|
|
|
|
fontSize: 16.sp,
|
|
|
|
color: Colors.white,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
)
|
|
|
|
],
|
|
|
|
),
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|