Commit c1163556ead9667875492ea53eb5b11439bc861a

Authored by weixin_45529955
1 parent 93d8098f

赠券对象UI

... ... @@ -4,17 +4,203 @@
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Flutter",
"name": "Flutter-ReserveApp",
"request": "launch",
"type": "dart"
},
{
"name": "Flutter-ReserveApp (profile mode)",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "Flutter-ReserveApp (release mode)",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "azlistview_plus-3.0.0",
"cwd": "library/azlistview_plus-3.0.0",
"request": "launch",
"program": "lib/main.dart"
"type": "dart"
},
{
"name": "azlistview_plus-3.0.0 (profile mode)",
"cwd": "library/azlistview_plus-3.0.0",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
// {
// "name": "oneKey_wdn",
// "request": "launch",
// "type": "dart"
// }
{
"name": "azlistview_plus-3.0.0 (release mode)",
"cwd": "library/azlistview_plus-3.0.0",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "calendar_date_picker2-1.1.5",
"cwd": "library/calendar_date_picker2-1.1.5",
"request": "launch",
"type": "dart"
},
{
"name": "calendar_date_picker2-1.1.5 (profile mode)",
"cwd": "library/calendar_date_picker2-1.1.5",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "calendar_date_picker2-1.1.5 (release mode)",
"cwd": "library/calendar_date_picker2-1.1.5",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "device_utils_my",
"cwd": "library/device_utils_my",
"request": "launch",
"type": "dart"
},
{
"name": "device_utils_my (profile mode)",
"cwd": "library/device_utils_my",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "device_utils_my (release mode)",
"cwd": "library/device_utils_my",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "sendsms-1.0.3",
"cwd": "library/sendsms-1.0.3",
"request": "launch",
"type": "dart"
},
{
"name": "sendsms-1.0.3 (profile mode)",
"cwd": "library/sendsms-1.0.3",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "sendsms-1.0.3 (release mode)",
"cwd": "library/sendsms-1.0.3",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "table_calendar-2.3.3",
"cwd": "library/table_calendar-2.3.3",
"request": "launch",
"type": "dart"
},
{
"name": "table_calendar-2.3.3 (profile mode)",
"cwd": "library/table_calendar-2.3.3",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "table_calendar-2.3.3 (release mode)",
"cwd": "library/table_calendar-2.3.3",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "table_calendar-3.1.3",
"cwd": "library/table_calendar-3.1.3",
"request": "launch",
"type": "dart"
},
{
"name": "table_calendar-3.1.3 (profile mode)",
"cwd": "library/table_calendar-3.1.3",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "table_calendar-3.1.3 (release mode)",
"cwd": "library/table_calendar-3.1.3",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
"request": "launch",
"type": "dart"
},
{
"name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930 (profile mode)",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "webview_flutter-2.0.13-copy_inappwebview_select_file_20210930 (release mode)",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "example",
"cwd": "library/table_calendar-3.1.3/example",
"request": "launch",
"type": "dart"
},
{
"name": "example (profile mode)",
"cwd": "library/table_calendar-3.1.3/example",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "example (release mode)",
"cwd": "library/table_calendar-3.1.3/example",
"request": "launch",
"type": "dart",
"flutterMode": "release"
},
{
"name": "example",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
"request": "launch",
"type": "dart"
},
{
"name": "example (profile mode)",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
"request": "launch",
"type": "dart",
"flutterMode": "profile"
},
{
"name": "example (release mode)",
"cwd": "library/webview_flutter-2.0.13-copy_inappwebview_select_file_20210930/example",
"request": "launch",
"type": "dart",
"flutterMode": "release"
}
]
}
\ No newline at end of file
... ...
{
"dart.flutterCreateOrganization": null
}
\ No newline at end of file
... ... @@ -277,10 +277,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
... ... @@ -294,10 +298,14 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
... ... @@ -449,7 +457,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5563;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
... ... @@ -632,7 +640,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5563;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
... ... @@ -658,7 +666,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5563;
CURRENT_PROJECT_VERSION = 5564;
DEVELOPMENT_TEAM = 8J59HM8B82;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
... ...
... ... @@ -138,9 +138,10 @@ class Constant {
'前台',
],
'人数': ['管理员', '店长', '前台'],
'订座详情-添加一项':['管理员', '店长', '前台'],
'订座详情-添加一项': ['管理员', '店长', '前台'],
'图片备注': ['管理员', '店长', '前台'],
'用餐类型': ['管理员', '店长', '前台'],
'赠券对象': ['管理员', '店长', '前台'],
'服务人员': ['管理员', '店长', '前台'],
'消费金额': [
'管理员',
... ...
... ... @@ -4,29 +4,26 @@ import 'dart:io';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:common_utils/common_utils.dart';
// import 'package:easy_contact_picker/easy_contact_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_native_contact_picker/model/contact.dart';
import 'package:flutter_picker_plus/flutter_picker_plus.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/constant/state.dart';
import 'package:one_key/models/manager.dart';
import 'package:one_key/models/notebook_detail.dart';
import 'package:one_key/models/remark.dart';
import 'package:one_key/models/reserve_recheck_model.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page.dart';
import 'package:one_key/pages/detail/notebook_detail_change_page_f.dart';
import 'package:one_key/provider/marketing_center_provider.dart';
import 'package:one_key/provider/message_dialog_model.dart';
import 'package:one_key/provider/notebook_detail_model.dart';
import 'package:one_key/provider/online_check_edit_provider.dart';
import 'package:one_key/provider/remark_manager_model.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/route/route_handles.dart';
import 'package:one_key/utils/NumLengthInputFormatter.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/utils/event_bus.dart';
... ... @@ -34,35 +31,31 @@ import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/utils/misc.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/app_bar.dart';
import 'package:one_key/widgets/common_button.dart';
import 'package:one_key/widgets/dialog.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import 'package:one_key/widgets/input_done_view.dart';
import 'package:one_key/widgets/loading.dart';
import 'package:one_key/widgets/need_item.dart';
import 'package:one_key/widgets/page_exception.dart';
import 'package:one_key/widgets/round_button.dart';
import 'package:one_key/widgets/row_multi_text.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:one_key/widgets/table_item.dart';
import 'package:one_key/models/table.dart' as t;
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:one_key/models/table.dart' as t;
import '../../app.dart';
import '../../models/customer_by_seller_model.dart';
import '../../models/customer_list_model.dart';
import '../../models/detail_model_all_model.dart';
import '../../models/get_reserve_type_field_model.dart';
import '../../models/reserveA_action_log_modol.dart';
import '../../models/reserve_deposit_model.dart';
import '../../models/upload_img_model.dart';
import '../../provider/collect_store_provider.dart';
import '../../provider/notebook_detail_model.dart';
import '../../provider/personnel_provider.dart';
import '../../provider/store_base_info_provider.dart';
import '../../provider/upload_img_provider.dart';
... ... @@ -160,10 +153,14 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
// bool hasAuthority = true; //
bool isback = false;
List<dynamic> couponTypes = ['仅预订人', '所有人', '被请客人', '不赠送']; //赠券对象
String couponType = '所有人';
@override
void initState() {
// TODO: implement initState
super.initState();
// _initCouponTypes();
WidgetsBinding.instance.addPostFrameCallback((_) async {
_myExtendedMaterialTextSelectionControls =
MyTextSelectionControls(callback: (value) {
... ... @@ -350,6 +347,19 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
});
}
// _initCouponTypes() {
// couponTypes = [];
// List<String> titles = ['仅预订人', '所有人', '被请客人', '不赠送'];
// titles.forEach((item) {
// GetReserveTypeFieldsSunModel model =
// GetReserveTypeFieldsSunModel(name: item, select: false);
// couponTypes.add(model);
// });
// couponTypes[couponTypes.indexWhere((element) => element.name == '所有人')]
// .select = true;
// }
/// 修改金额
_updateMoney() async {
if (detailModel!.prestrTF == null || detailModel!.prestrTF == "") {
... ... @@ -3394,6 +3404,44 @@ class NotebookDetailPageState extends State<NotebookDetailPage>
)
]),
TitleAndBtn(
title: "赠券对象",
content: couponType,
// list: personNumList,
detailModel: model,
callback: () {
FocusScope.of(context)
.requestFocus(
FocusNode()); //隐藏键盘
// 存储
DialogUtil.showSelectCusmanDialog(
context,
couponTypes,
title: '赠送优惠券给',
(value) async {
if (value != null) {
int couponSelectIndex =
value.first;
couponType = couponTypes[
couponSelectIndex];
setState(() {});
}
},
selecteds: couponTypes
.indexOf(
couponType) ==
-1
? []
: [
couponTypes
.indexOf(
couponType)
])
.then((value) {});
}),
// ),
// Offstage(
// offstage:
... ...
... ... @@ -198,6 +198,8 @@ class InvicationPageState extends State<InvicationPage>
TextEditingController moneyControl = TextEditingController();
FocusNode moneyFocusNode = FocusNode();
bool cancelCan = true;
List<dynamic> couponTypes = ['仅预订人', '所有人', '被请客人', '不赠送']; //赠券对象
String couponType = '所有人';
@override
void initState() {
... ... @@ -346,7 +348,8 @@ class InvicationPageState extends State<InvicationPage>
getDzSellerConf() async {
MarketingCenterProvider marketingCenterProvider =
Provider.of<MarketingCenterProvider>(context, listen: false);
bool success = await marketingCenterProvider.getDzSellerConf(context,showLoading: false);
bool success = await marketingCenterProvider.getDzSellerConf(context,
showLoading: false);
if (success && marketingCenterProvider.dzSellerConfModel != null) {
String? cancelDay = marketingCenterProvider.dzSellerConfModel!.cancelDay;
bool cancelShopowner =
... ... @@ -855,7 +858,8 @@ class InvicationPageState extends State<InvicationPage>
"sid": Provider.of<UserModel>(context, listen: false).user!.sellerid,
'phone': phone
};
Map? temp = await customerProvider.getIsMemberByPhone(context, params,isShowLoading: false);
Map? temp = await customerProvider.getIsMemberByPhone(context, params,
isShowLoading: false);
if (temp == null) {
//会员状态未知
isMember = '会员状态未知';
... ... @@ -3025,80 +3029,124 @@ class InvicationPageState extends State<InvicationPage>
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: TextField(
maxLines: 1,
enabled: false,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(28),
color: MyColours.color_515151),
// controller: _baseIndoProvider.nameController,
// focusNode: _nameNode,
// textAlignVertical: TextAlignVertical.top,
decoration: InputDecoration(
hintText: "用餐类型:",
hintStyle: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
// contentPadding:
// EdgeInsets.only(bottom: ScreenUtil().setWidth(17)),
// border: InputBorder.none,
contentPadding: EdgeInsets.zero,
border: OutlineInputBorder(
borderSide: BorderSide.none),
),
onChanged: (value) {},
onTap: () {},
onEditingComplete: () {},
keyboardType: TextInputType.text,
),
),
InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode()); //隐藏键盘
// 存储
DialogUtil.openDishTypeSelectModalBottomSheet(
context,
detailModel.reserveTypes!,
reserveType, rCallback: (value) async {
if (value != null) {
reserveType = value;
setState(() {});
bool sucess = await detailModel
.upReserveInfo(context, widget.rid,
reserveType: reserveType,
needToast: false);
if (sucess) {
EventBus()
.emit("refresh_tablemanager"); //刷新桌位
bus.emit("refresh_book_list"); //刷新已预订列表
bus.emit("refresh_detail");
// await _getReserveDetail(
// showCicle: false);
}
}
});
},
child: Row(children: [
Text(
reserveType!,
style: TextStyle(
color: reserveType == '请选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
),
HEmptyView(4),
Image.asset(Utils.getImgPath('quan_down_f'),
width: ScreenUtil().setWidth(28),
height: ScreenUtil().setWidth(28)),
]),
)
child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("用餐类型:",
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28))),
Expanded(
child: InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode()); //隐藏键盘
// 存储
DialogUtil
.openDishTypeSelectModalBottomSheet(
context,
detailModel.reserveTypes!,
reserveType,
rCallback: (value) async {
if (value != null) {
reserveType = value;
setState(() {});
bool sucess = await detailModel
.upReserveInfo(context, widget.rid,
reserveType: reserveType,
needToast: false);
if (sucess) {
EventBus().emit(
"refresh_tablemanager"); //刷新桌位
bus.emit(
"refresh_book_list"); //刷新已预订列表
bus.emit("refresh_detail");
// await _getReserveDetail(
// showCicle: false);
}
}
});
},
child: Row(children: [
Expanded(
child: Text(
reserveType!,
textAlign: TextAlign.center,
style: TextStyle(
color: reserveType == '请选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
)),
HEmptyView(10),
Image.asset(Utils.getImgPath('quan_down_f'),
width: ScreenUtil().setWidth(28),
height: ScreenUtil().setWidth(28)),
]),
))
],
)),
HEmptyView(20),
Expanded(
child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("赠券对象:",
style: TextStyle(
color: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28))),
Expanded(
child: InkWell(
onTap: () {
FocusScope.of(context)
.requestFocus(FocusNode()); //隐藏键盘
// 存储
DialogUtil.showSelectCusmanDialog(
context, couponTypes,
title: '赠送优惠券给', (value) async {
if (value != null) {
int couponSelectIndex = value.first;
couponType =
couponTypes[couponSelectIndex];
setState(() {});
}
},
selecteds: couponTypes
.indexOf(couponType) ==
-1
? []
: [
couponTypes
.indexOf(couponType)
])
.then((value) {});
},
child: Row(children: [
Expanded(
child: Text(
couponType,
textAlign: TextAlign.center,
style: TextStyle(
color: couponType == '请选择'
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(28),
),
)),
HEmptyView(10),
Image.asset(Utils.getImgPath('quan_down_f'),
width: ScreenUtil().setWidth(28),
height: ScreenUtil().setWidth(28)),
]),
))
],
))
],
)),
if (detailModel.isShowNoticeDeposit == '1')
... ... @@ -5348,8 +5396,8 @@ class InvicationPageState extends State<InvicationPage>
return;
} else if (ObjectUtil.isEmpty(
detailModel.baseInfoSunModel) ||
ObjectUtil.isEmpty( detailModel
.baseInfoSunModel!.phone)) {
ObjectUtil.isEmpty(
detailModel.baseInfoSunModel!.phone)) {
// Utils.showToast('请填写经理的联系电话');
DialogUtil.cupertinoAlertDialog(context,
title: "填写个人信息",
... ... @@ -5609,8 +5657,8 @@ class InvicationPageState extends State<InvicationPage>
callback: () async {
if (ObjectUtil.isEmpty(
detailModel.baseInfoSunModel) ||
ObjectUtil.isEmpty( detailModel
.baseInfoSunModel!.phone)) {
ObjectUtil.isEmpty(
detailModel.baseInfoSunModel!.phone)) {
// Utils.showToast('请填写经理的联系电话');
DialogUtil.cupertinoAlertDialog(context,
title: "填写个人信息",
... ...
... ... @@ -276,8 +276,6 @@ class NotebookDetailModel extends ChangeNotifier {
}
if (baseResp.data['reserve_type_field'] != null) {
reserveTypes = <GetReserveTypeFieldsSunModel>[];
reserveTypes = <GetReserveTypeFieldsSunModel>[];
baseResp.data['reserve_type_field'].forEach((v) {
GetReserveTypeFieldsSunModel temp =
GetReserveTypeFieldsSunModel(name: v, select: false);
... ...
... ... @@ -910,7 +910,9 @@ class DialogUtil {
///用餐类型
static openDishTypeSelectModalBottomSheet(context,
List<GetReserveTypeFieldsSunModel> reserveTypes, String? reserveType,
{VoidCallback? lCallback, ClickCallback? rCallback}) async {
{VoidCallback? lCallback,
ClickCallback? rCallback,
String title = "选择客户宴请类型"}) async {
String? selectType = reserveType;
if (selectType != '请选择') {
reserveTypes.forEach((element) {
... ... @@ -962,7 +964,7 @@ class DialogUtil {
padding: EdgeInsets.symmetric(
vertical: ScreenUtil().setWidth(40)),
child: Text(
"选择客户宴请类型",
title,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32),
... ...
... ... @@ -607,10 +607,10 @@ packages:
dependency: "direct main"
description:
name: fl_chart
sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237"
sha256: f2e9137f261d0f53a820f6b829c80ba570ac915284c8e32789d973834796eca0
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.70.2"
version: "0.71.0"
fluro:
dependency: "direct main"
description:
... ...
... ... @@ -181,6 +181,12 @@ dependencies:
amap_map_fluttify: ^2.0.2
# amap_map: ^1.0.12
# amap_location_fluttify: ^0.22.0 # 请检查最新版本
# git:
# url: https://github.com/andychucs/flutter_inappwebview.git
# ref: origin-http
# path: flutter_inappwebview_ios
# amap_search_fluttify: ^0.18.0 # 请检查最新版本
# xbr_gaode_amap: ^6.0.0
... ... @@ -260,7 +266,7 @@ dependencies:
# 二维码扫描
barcode_scan2: ^4.5.0
# 柱形图
fl_chart: ^0.70.2
fl_chart: ^0.71.0
#评论弹框
sliding_up_panel2: ^3.3.0+1
... ...