Showing
6 changed files
with
446 additions
and
45 deletions
| @@ -361,4 +361,10 @@ class HttpUrl { | @@ -361,4 +361,10 @@ class HttpUrl { | ||
| 361 | static const String set_clear_Message = | 361 | static const String set_clear_Message = |
| 362 | "?service=App.PushMsg.SetClearMessage"; // App设置消息处理状态、清理过期消息 | 362 | "?service=App.PushMsg.SetClearMessage"; // App设置消息处理状态、清理过期消息 |
| 363 | 363 | ||
| 364 | + static const String set_seller_template_conf = | ||
| 365 | + "?service=App.Seller.SetSellerTemplateConf"; // 商家设置预订安排模板页面 | ||
| 366 | + | ||
| 367 | + static const String get_seller_template_conf = | ||
| 368 | + "?service=App.Seller.GetSellerTemplateConf"; // 获取商家设置预订安排模板页面 | ||
| 369 | + | ||
| 364 | } | 370 | } |
| 1 | +import 'dart:convert'; | ||
| 2 | + | ||
| 1 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 4 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 3 | import 'package:one_key/utils/utils.dart'; | 5 | import 'package:one_key/utils/utils.dart'; |
| @@ -8,6 +10,7 @@ import 'package:one_key/widgets/v_empty_view.dart'; | @@ -8,6 +10,7 @@ import 'package:one_key/widgets/v_empty_view.dart'; | ||
| 8 | import 'package:provider/provider.dart'; | 10 | import 'package:provider/provider.dart'; |
| 9 | 11 | ||
| 10 | import '../../../../models/get_seller_info_model.dart'; | 12 | import '../../../../models/get_seller_info_model.dart'; |
| 13 | +import '../../../../provider/base_info_provider.dart'; | ||
| 11 | import '../../../../provider/marketing_center_provider.dart'; | 14 | import '../../../../provider/marketing_center_provider.dart'; |
| 12 | import '../../../../provider/store_base_info_provider.dart'; | 15 | import '../../../../provider/store_base_info_provider.dart'; |
| 13 | import '../../../../provider/user_model.dart'; | 16 | import '../../../../provider/user_model.dart'; |
| @@ -43,10 +46,15 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -43,10 +46,15 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 43 | MarketingCenterProvider marketingCenterProvider; | 46 | MarketingCenterProvider marketingCenterProvider; |
| 44 | String tableInfo; //包间信息 | 47 | String tableInfo; //包间信息 |
| 45 | 48 | ||
| 46 | - StoreBaseIndoProvider _baseIndoProvider; | 49 | + StoreBaseIndoProvider _storeBaseIndoProvider; |
| 47 | bool addManager = false; | 50 | bool addManager = false; |
| 48 | bool addParking = false; | 51 | bool addParking = false; |
| 49 | 52 | ||
| 53 | + double dateValue; | ||
| 54 | + BaseIndoProvider _baseIndoProvider; | ||
| 55 | + String lat; | ||
| 56 | + String long; | ||
| 57 | + | ||
| 50 | @override | 58 | @override |
| 51 | void initState() { | 59 | void initState() { |
| 52 | super.initState(); | 60 | super.initState(); |
| @@ -56,9 +64,43 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -56,9 +64,43 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 56 | 64 | ||
| 57 | await marketingCenterProvider.getTableList(context); | 65 | await marketingCenterProvider.getTableList(context); |
| 58 | await _getStoreBaseinfo(); | 66 | await _getStoreBaseinfo(); |
| 67 | + await _getCustomerActivityBaseinfo(); | ||
| 59 | }); | 68 | }); |
| 60 | } | 69 | } |
| 61 | 70 | ||
| 71 | + _getCustomerActivityBaseinfo() async { | ||
| 72 | + Map<String, String> params = { | ||
| 73 | + 'sellerid': Provider.of<UserModel>(context, listen: false).user.sellerid, | ||
| 74 | + "uid": Provider.of<UserModel>(context, listen: false).user.openid, | ||
| 75 | + }; | ||
| 76 | + | ||
| 77 | + bool success = | ||
| 78 | + await _baseIndoProvider.getCustomerActivityBaseinfo(context, params); | ||
| 79 | + if (success) { | ||
| 80 | + // _nameController.text = _baseIndoProvider.baseInfoSunModel.name; | ||
| 81 | + // nameStr = _baseIndoProvider.baseInfoSunModel.name; | ||
| 82 | + // _uploadImageProvider.touxiang.qiniuUrl = | ||
| 83 | + // _baseIndoProvider.baseInfoSunModel.photo; | ||
| 84 | + // _uploadImageProvider.erweima.qiniuUrl = | ||
| 85 | + // _baseIndoProvider.baseInfoSunModel.qrcode; | ||
| 86 | + // _phoneController.text = _baseIndoProvider.baseInfoSunModel.phone; | ||
| 87 | + // phoneStr = _baseIndoProvider.baseInfoSunModel.phone ?? ''; | ||
| 88 | + // _wechatController.text = _baseIndoProvider.baseInfoSunModel.wechat; | ||
| 89 | + // if (_baseIndoProvider.baseInfoSunModel.wechat != null && | ||
| 90 | + // _baseIndoProvider.baseInfoSunModel.wechat != '' && | ||
| 91 | + // phoneStr != '' && | ||
| 92 | + // _baseIndoProvider.baseInfoSunModel.wechat == phoneStr) { | ||
| 93 | + // isSelect = true; | ||
| 94 | + // } else { | ||
| 95 | + // isSelect = false; | ||
| 96 | + // } | ||
| 97 | + // _positionController.text = _baseIndoProvider.baseInfoSunModel.position; | ||
| 98 | + // _uploadImageProvider.imgSizeErweima = 64; | ||
| 99 | + // // setState(() {}); | ||
| 100 | + // _uploadImageProvider.notifyListeners(); | ||
| 101 | + } | ||
| 102 | + } | ||
| 103 | + | ||
| 62 | Widget _item(String title, {bool select, GestureTapCallback onTap}) { | 104 | Widget _item(String title, {bool select, GestureTapCallback onTap}) { |
| 63 | return InkWell( | 105 | return InkWell( |
| 64 | onTap: onTap, | 106 | onTap: onTap, |
| @@ -101,6 +143,8 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -101,6 +143,8 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 101 | 143 | ||
| 102 | DateTime dateTime = DateTime.now(); | 144 | DateTime dateTime = DateTime.now(); |
| 103 | 145 | ||
| 146 | + dateValue = (dateTime.millisecondsSinceEpoch) / 1000; | ||
| 147 | + | ||
| 104 | date = Utils.returnYMDandLunarCalendar(DateTime.now(), context); | 148 | date = Utils.returnYMDandLunarCalendar(DateTime.now(), context); |
| 105 | 149 | ||
| 106 | String morning = | 150 | String morning = |
| @@ -160,6 +204,9 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -160,6 +204,9 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 160 | //日期增加一天 | 204 | //日期增加一天 |
| 161 | date = Utils.returnYMDandLunarCalendar( | 205 | date = Utils.returnYMDandLunarCalendar( |
| 162 | dateTime.add(Duration(days: 1)), context); | 206 | dateTime.add(Duration(days: 1)), context); |
| 207 | + | ||
| 208 | + dateValue = | ||
| 209 | + (dateTime.add(Duration(days: 1)).millisecondsSinceEpoch) / 1000; | ||
| 163 | } else { | 210 | } else { |
| 164 | //过了晚市 | 211 | //过了晚市 |
| 165 | dsolt = '早餐'; | 212 | dsolt = '早餐'; |
| @@ -173,8 +220,10 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -173,8 +220,10 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 173 | ///获取店铺信息 | 220 | ///获取店铺信息 |
| 174 | _getStoreBaseinfo() async { | 221 | _getStoreBaseinfo() async { |
| 175 | GetSellerInfoSunModel itemModel = | 222 | GetSellerInfoSunModel itemModel = |
| 176 | - await _baseIndoProvider.getSellerById(context); | 223 | + await _storeBaseIndoProvider.getSellerById(context); |
| 177 | if (itemModel != null) { | 224 | if (itemModel != null) { |
| 225 | + lat = itemModel.data.lat; | ||
| 226 | + long = itemModel.data.long; | ||
| 178 | address = itemModel.data.mapAddress + itemModel.data.realAddress; | 227 | address = itemModel.data.mapAddress + itemModel.data.realAddress; |
| 179 | setState(() {}); | 228 | setState(() {}); |
| 180 | // _introductionController.text = itemModel.data.sellerdesc; | 229 | // _introductionController.text = itemModel.data.sellerdesc; |
| @@ -224,9 +273,10 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -224,9 +273,10 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 224 | 273 | ||
| 225 | @override | 274 | @override |
| 226 | Widget build(BuildContext context) { | 275 | Widget build(BuildContext context) { |
| 276 | + _baseIndoProvider = Provider.of<BaseIndoProvider>(context, listen: true); | ||
| 227 | marketingCenterProvider = | 277 | marketingCenterProvider = |
| 228 | Provider.of<MarketingCenterProvider>(context, listen: true); | 278 | Provider.of<MarketingCenterProvider>(context, listen: true); |
| 229 | - _baseIndoProvider = | 279 | + _storeBaseIndoProvider = |
| 230 | Provider.of<StoreBaseIndoProvider>(context, listen: false); | 280 | Provider.of<StoreBaseIndoProvider>(context, listen: false); |
| 231 | return Scaffold( | 281 | return Scaffold( |
| 232 | backgroundColor: MyColours.color_ffffff, | 282 | backgroundColor: MyColours.color_ffffff, |
| @@ -377,7 +427,14 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -377,7 +427,14 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 377 | ClipRRect( | 427 | ClipRRect( |
| 378 | borderRadius: BorderRadius.circular(r(35)), | 428 | borderRadius: BorderRadius.circular(r(35)), |
| 379 | child: Image.network( | 429 | child: Image.network( |
| 380 | - 'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg', | 430 | + _baseIndoProvider.baseInfoSunModel.photo == |
| 431 | + null || | ||
| 432 | + _baseIndoProvider | ||
| 433 | + .baseInfoSunModel.photo == | ||
| 434 | + '' | ||
| 435 | + ? 'http://nosqn.colorcun.com/yd_person.png' | ||
| 436 | + : _baseIndoProvider | ||
| 437 | + .baseInfoSunModel.photo, | ||
| 381 | fit: BoxFit.cover, | 438 | fit: BoxFit.cover, |
| 382 | width: w(70), | 439 | width: w(70), |
| 383 | height: w(70), | 440 | height: w(70), |
| @@ -388,7 +445,7 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -388,7 +445,7 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 388 | crossAxisAlignment: CrossAxisAlignment.start, | 445 | crossAxisAlignment: CrossAxisAlignment.start, |
| 389 | children: [ | 446 | children: [ |
| 390 | Text( | 447 | Text( |
| 391 | - '专属服务:${username}', | 448 | + '专属服务:${_baseIndoProvider.baseInfoSunModel.name}', |
| 392 | style: TextStyle( | 449 | style: TextStyle( |
| 393 | color: MyColours.color_999999, | 450 | color: MyColours.color_999999, |
| 394 | fontWeight: FontWeight.bold, | 451 | fontWeight: FontWeight.bold, |
| @@ -396,7 +453,7 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -396,7 +453,7 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 396 | ), | 453 | ), |
| 397 | VEmptyView(16), | 454 | VEmptyView(16), |
| 398 | Text( | 455 | Text( |
| 399 | - '专属服务:${userphone}', | 456 | + '服务电话:${_baseIndoProvider.baseInfoSunModel.phone}', |
| 400 | style: TextStyle( | 457 | style: TextStyle( |
| 401 | color: MyColours.color_999999, | 458 | color: MyColours.color_999999, |
| 402 | fontWeight: FontWeight.bold, | 459 | fontWeight: FontWeight.bold, |
| @@ -499,7 +556,60 @@ class _BookInfoPageState extends State<BookInfoPage> { | @@ -499,7 +556,60 @@ class _BookInfoPageState extends State<BookInfoPage> { | ||
| 499 | fontSize: 34, | 556 | fontSize: 34, |
| 500 | height: w(40), | 557 | height: w(40), |
| 501 | isBold: true, | 558 | isBold: true, |
| 502 | - onPressed: () {}, | 559 | + onPressed: () async { |
| 560 | + FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘 | ||
| 561 | + | ||
| 562 | + if (addParking && parkingIncoC.text.trim().length == 0) { | ||
| 563 | + Utils.showToast('请输入停车信息!'); | ||
| 564 | + return false; | ||
| 565 | + } | ||
| 566 | + | ||
| 567 | + //接口 | ||
| 568 | + Map reserveData = { | ||
| 569 | + 'swich_manager': addManager ? '1' : '0', | ||
| 570 | + 'swich_park': addParking ? '1' : '0', | ||
| 571 | + 'park_info': parkingIncoC.text, | ||
| 572 | + 'seller_name': sellername, | ||
| 573 | + 'date': dateValue, | ||
| 574 | + 'dsolt': dsolt, | ||
| 575 | + 'room': marketingCenterProvider.tableOuterList.length > 0 && | ||
| 576 | + marketingCenterProvider | ||
| 577 | + .tableOuterList[0].list.length > | ||
| 578 | + 0 | ||
| 579 | + ? '${marketingCenterProvider.tableOuterList[0].name}${marketingCenterProvider.tableOuterList[0].list[0].name}}' | ||
| 580 | + : '', | ||
| 581 | + 'pnum': | ||
| 582 | + '${marketingCenterProvider.tableOuterList[0].list[0].tableNum}', | ||
| 583 | + 'address': '${address}', | ||
| 584 | + 'seller_phone': '${sellerphone}', | ||
| 585 | + 'manager_image': | ||
| 586 | + _baseIndoProvider.baseInfoSunModel.photo == null || | ||
| 587 | + _baseIndoProvider.baseInfoSunModel.photo == '' | ||
| 588 | + ? 'http://nosqn.colorcun.com/yd_person.png' | ||
| 589 | + : _baseIndoProvider.baseInfoSunModel.photo, | ||
| 590 | + 'manager_name': '${_baseIndoProvider.baseInfoSunModel.name}', | ||
| 591 | + 'manager_phone': | ||
| 592 | + '${_baseIndoProvider.baseInfoSunModel.phone}', | ||
| 593 | + 'manager_wechat': | ||
| 594 | + '${_baseIndoProvider.baseInfoSunModel.wechat}', | ||
| 595 | + 'long': long, | ||
| 596 | + 'lat': lat | ||
| 597 | + }; | ||
| 598 | + | ||
| 599 | + Map<String, String> params = { | ||
| 600 | + 'sid': Provider.of<UserModel>(context, listen: false) | ||
| 601 | + .user | ||
| 602 | + .sellerid, | ||
| 603 | + 'reserve': json.encode(reserveData) | ||
| 604 | + }; | ||
| 605 | + | ||
| 606 | + bool success = await marketingCenterProvider | ||
| 607 | + .setSellerTemplateConf(context, params, showLoading: true); | ||
| 608 | + if (success) { | ||
| 609 | + Utils.showToast('保存成功'); | ||
| 610 | + Navigator.pop(context); | ||
| 611 | + } | ||
| 612 | + }, | ||
| 503 | ), | 613 | ), |
| 504 | ) | 614 | ) |
| 505 | ], | 615 | ], |
| 1 | +import 'dart:convert'; | ||
| 2 | +import 'dart:io'; | ||
| 3 | + | ||
| 1 | import 'package:flutter/material.dart'; | 4 | import 'package:flutter/material.dart'; |
| 2 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 5 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 6 | +import 'package:image_picker/image_picker.dart'; | ||
| 7 | +import 'package:one_key/provider/marketing_center_provider.dart'; | ||
| 3 | import 'package:one_key/utils/dialog_util.dart'; | 8 | import 'package:one_key/utils/dialog_util.dart'; |
| 4 | import 'package:one_key/utils/utils.dart'; | 9 | import 'package:one_key/utils/utils.dart'; |
| 5 | import 'package:one_key/widgets/system_app_bar.dart'; | 10 | import 'package:one_key/widgets/system_app_bar.dart'; |
| 6 | import 'package:one_key/widgets/v_empty_view.dart'; | 11 | import 'package:one_key/widgets/v_empty_view.dart'; |
| 12 | +import 'package:permission_handler/permission_handler.dart'; | ||
| 13 | +import 'package:provider/provider.dart'; | ||
| 7 | 14 | ||
| 8 | import '../../../../app.dart'; | 15 | import '../../../../app.dart'; |
| 9 | import '../../../../models/theme_color_model.dart'; | 16 | import '../../../../models/theme_color_model.dart'; |
| 17 | +import '../../../../models/upload_img_model.dart'; | ||
| 18 | +import '../../../../provider/upload_img_provider.dart'; | ||
| 19 | +import '../../../../provider/user_model.dart'; | ||
| 10 | import '../../../../res/colors.dart'; | 20 | import '../../../../res/colors.dart'; |
| 11 | import '../../../../utils/screen_util.dart'; | 21 | import '../../../../utils/screen_util.dart'; |
| 22 | +import '../../../../utils/upload_image_util.dart'; | ||
| 12 | import '../../../../widgets/round_button.dart'; | 23 | import '../../../../widgets/round_button.dart'; |
| 24 | +import '../../../online_check/photo_view_wiget.dart'; | ||
| 13 | 25 | ||
| 14 | /** | 26 | /** |
| 15 | * 首图形象展示 | 27 | * 首图形象展示 |
| @@ -32,6 +44,12 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -32,6 +44,12 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 32 | TextEditingController sloganC = TextEditingController(); | 44 | TextEditingController sloganC = TextEditingController(); |
| 33 | FocusNode sloganNode = FocusNode(); | 45 | FocusNode sloganNode = FocusNode(); |
| 34 | 46 | ||
| 47 | + final picker = ImagePicker(); | ||
| 48 | + | ||
| 49 | + UploadImageProvider _uploadImageProvider; | ||
| 50 | + | ||
| 51 | + MarketingCenterProvider _marketingCenterProvider; | ||
| 52 | + | ||
| 35 | @override | 53 | @override |
| 36 | void initState() { | 54 | void initState() { |
| 37 | super.initState(); | 55 | super.initState(); |
| @@ -179,9 +197,71 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -179,9 +197,71 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 179 | ))); | 197 | ))); |
| 180 | } | 198 | } |
| 181 | 199 | ||
| 200 | + //查看大图 | ||
| 201 | + _showPhotoView(BuildContext context, int index, List imgs, | ||
| 202 | + {isShow = false, List dashName}) async { | ||
| 203 | + // if (imgs.length == 1 && | ||
| 204 | + // imgs[0] == | ||
| 205 | + // 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') { | ||
| 206 | + // imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png'; | ||
| 207 | + // } | ||
| 208 | + Utils.setBarStatus(false, color: Colors.black); | ||
| 209 | + dynamic result = await showGeneralDialog( | ||
| 210 | + context: context, | ||
| 211 | + barrierDismissible: false, | ||
| 212 | + // barrierColor: Colors.red, | ||
| 213 | + barrierLabel: | ||
| 214 | + MaterialLocalizations.of(context).modalBarrierDismissLabel, | ||
| 215 | + transitionDuration: const Duration(milliseconds: 150), | ||
| 216 | + pageBuilder: (BuildContext context, Animation animation, | ||
| 217 | + Animation secondaryAnimation) { | ||
| 218 | + Widget child = Stack( | ||
| 219 | + children: <Widget>[ | ||
| 220 | + PhotoPreview( | ||
| 221 | + initialIndex: index, | ||
| 222 | + photoList: imgs, | ||
| 223 | + isShow: isShow, | ||
| 224 | + dashName: dashName) | ||
| 225 | + ], | ||
| 226 | + ); | ||
| 227 | + return child; | ||
| 228 | + }); | ||
| 229 | + Utils.setBarStatus(true, color: Colors.white); | ||
| 230 | + } | ||
| 231 | + | ||
| 232 | + ///#相机拍照,单图选择 | ||
| 233 | + Future _getFromPictureOrCamera(UploadImgModel imgModel, imageSource) async { | ||
| 234 | + final pickedFile = await picker.getImage(source: imageSource); | ||
| 235 | + setState(() { | ||
| 236 | + if (pickedFile != null) { | ||
| 237 | + imgModel.file = File(pickedFile.path); | ||
| 238 | + imgModel.process = 0.01; | ||
| 239 | + } else { | ||
| 240 | + print('No image selected.'); | ||
| 241 | + } | ||
| 242 | + }); | ||
| 243 | + if (pickedFile != null) { | ||
| 244 | + // if (title == '头像') { | ||
| 245 | + // _uploadImageProvider.imgSizeTouxiang = 76; | ||
| 246 | + // _uploadImageProvider.touxiang.qiniuUrl = null; | ||
| 247 | + // } else { | ||
| 248 | + // _uploadImageProvider.imgSizeErweima = 76; | ||
| 249 | + _uploadImageProvider.firstImage.qiniuUrl = null; | ||
| 250 | + // } | ||
| 251 | + UploadImageUtil().startUploadOnly( | ||
| 252 | + context, File(pickedFile.path), 4, true, _uploadImageProvider); | ||
| 253 | + } | ||
| 254 | + } | ||
| 255 | + | ||
| 182 | @override | 256 | @override |
| 183 | Widget build(BuildContext context) { | 257 | Widget build(BuildContext context) { |
| 184 | ThemeColorModel themeColerModel = themeColorData[themeColorIndex]; | 258 | ThemeColorModel themeColerModel = themeColorData[themeColorIndex]; |
| 259 | + _uploadImageProvider = | ||
| 260 | + Provider.of<UploadImageProvider>(context, listen: true); | ||
| 261 | + | ||
| 262 | + _marketingCenterProvider = | ||
| 263 | + Provider.of<MarketingCenterProvider>(context, listen: true); | ||
| 264 | + | ||
| 185 | return Scaffold( | 265 | return Scaffold( |
| 186 | backgroundColor: MyColours.color_ffffff, | 266 | backgroundColor: MyColours.color_ffffff, |
| 187 | appBar: SystemAppBar( | 267 | appBar: SystemAppBar( |
| @@ -203,8 +283,6 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -203,8 +283,6 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 203 | setState(() { | 283 | setState(() { |
| 204 | themeColorIndex = object; | 284 | themeColorIndex = object; |
| 205 | }); | 285 | }); |
| 206 | - App.sp.setInt("themeColor", | ||
| 207 | - themeColorData[themeColorIndex].color.value); | ||
| 208 | }); | 286 | }); |
| 209 | }), | 287 | }), |
| 210 | VEmptyView(24), | 288 | VEmptyView(24), |
| @@ -239,8 +317,9 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -239,8 +317,9 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 239 | height: w(39), | 317 | height: w(39), |
| 240 | child: TextField( | 318 | child: TextField( |
| 241 | maxLines: 1, | 319 | maxLines: 1, |
| 242 | - controller: sloganC, | ||
| 243 | - focusNode: sloganNode, | 320 | + controller: titleC, |
| 321 | + focusNode: titleNode, | ||
| 322 | + | ||
| 244 | cursorColor: MyColours.color_F8F9FD, | 323 | cursorColor: MyColours.color_F8F9FD, |
| 245 | 324 | ||
| 246 | // autofocuzs: true, | 325 | // autofocuzs: true, |
| @@ -292,11 +371,11 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -292,11 +371,11 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 292 | height: w(39), | 371 | height: w(39), |
| 293 | child: TextField( | 372 | child: TextField( |
| 294 | maxLines: 1, | 373 | maxLines: 1, |
| 295 | - controller: titleC, | ||
| 296 | - focusNode: titleNode, | 374 | + |
| 297 | // autofocus: true, | 375 | // autofocus: true, |
| 298 | cursorColor: MyColours.color_F8F9FD, | 376 | cursorColor: MyColours.color_F8F9FD, |
| 299 | - | 377 | + controller: sloganC, |
| 378 | + focusNode: sloganNode, | ||
| 300 | style: TextStyle( | 379 | style: TextStyle( |
| 301 | fontSize: font(20), | 380 | fontSize: font(20), |
| 302 | foreground: Paint() | 381 | foreground: Paint() |
| @@ -340,37 +419,139 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -340,37 +419,139 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 340 | ], | 419 | ], |
| 341 | ), | 420 | ), |
| 342 | ), | 421 | ), |
| 343 | - InkWell( | ||
| 344 | - onTap: () {}, | ||
| 345 | - child: true | ||
| 346 | - ? InkWell( | ||
| 347 | - onTap: () { | ||
| 348 | - print('object'); | 422 | + _uploadImageProvider.firstImage.file != null || |
| 423 | + (_uploadImageProvider.firstImage.qiniuUrl != null && | ||
| 424 | + _uploadImageProvider.firstImage.qiniuUrl != '') | ||
| 425 | + ? InkWell( | ||
| 426 | + onTap: () { | ||
| 427 | + double process; | ||
| 428 | + String qiniuUrl; | ||
| 429 | + List<String> tempList = []; | ||
| 430 | + // if (title == '头像') { | ||
| 431 | + process = _uploadImageProvider.firstImage.process; | ||
| 432 | + qiniuUrl = _uploadImageProvider.firstImage.qiniuUrl; | ||
| 433 | + // } else { | ||
| 434 | + // process = _uploadImageProvider.erweima.process; | ||
| 435 | + // qiniuUrl = _uploadImageProvider.erweima.qiniuUrl; | ||
| 436 | + // } | ||
| 437 | + | ||
| 438 | + if (qiniuUrl != null && qiniuUrl != '') { | ||
| 439 | + // tempList.add(qiniuUrl); | ||
| 440 | + | ||
| 441 | + // ///没有上传完成的不可以点击 | ||
| 442 | + // _showPhotoView(context, 0, tempList); | ||
| 443 | + | ||
| 444 | + _uploadImageProvider.firstImage.qiniuUrl = null; | ||
| 445 | + _uploadImageProvider.firstImage.process = 0; | ||
| 446 | + setState(() {}); | ||
| 447 | + Utils.getPickPermission(context, () { | ||
| 448 | + _getFromPictureOrCamera( | ||
| 449 | + _uploadImageProvider.firstImage, | ||
| 450 | + ImageSource.gallery); | ||
| 451 | + }, | ||
| 452 | + Platform.isAndroid | ||
| 453 | + ? Permission.storage | ||
| 454 | + : Permission.photos); | ||
| 455 | + } | ||
| 456 | + }, | ||
| 457 | + child: | ||
| 458 | + Stack(alignment: Alignment.bottomCenter, children: [ | ||
| 459 | + Stack(clipBehavior: Clip.none, children: [ | ||
| 460 | + _uploadImageProvider.firstImage.qiniuUrl != null && | ||
| 461 | + _uploadImageProvider.firstImage.qiniuUrl != | ||
| 462 | + '' | ||
| 463 | + ? Image.network( | ||
| 464 | + _uploadImageProvider.firstImage.qiniuUrl, | ||
| 465 | + fit: BoxFit.cover, | ||
| 466 | + width: double.infinity, | ||
| 467 | + // width: ScreenUtil() | ||
| 468 | + // .setWidth(imgSize * 2), | ||
| 469 | + height: ScreenUtil().setWidth( | ||
| 470 | + _uploadImageProvider.imgSizefirstImage * | ||
| 471 | + 2), | ||
| 472 | + ) | ||
| 473 | + : Image.file( | ||
| 474 | + _uploadImageProvider.firstImage.file, | ||
| 475 | + fit: BoxFit.cover, | ||
| 476 | + width: double.infinity, | ||
| 477 | + // width: ScreenUtil() | ||
| 478 | + // .setWidth(imgSize * 2), | ||
| 479 | + height: ScreenUtil().setWidth( | ||
| 480 | + _uploadImageProvider.imgSizefirstImage * | ||
| 481 | + 2), | ||
| 482 | + ), | ||
| 483 | + Positioned( | ||
| 484 | + left: 0, | ||
| 485 | + top: 0, | ||
| 486 | + child: (_uploadImageProvider.firstImage.file != | ||
| 487 | + null) && | ||
| 488 | + _uploadImageProvider | ||
| 489 | + .firstImage.process != | ||
| 490 | + 1 && | ||
| 491 | + _uploadImageProvider | ||
| 492 | + .firstImage.process != | ||
| 493 | + 0.01 | ||
| 494 | + ? Container( | ||
| 495 | + width: ScreenUtil().screenWidth, | ||
| 496 | + height: w(_uploadImageProvider | ||
| 497 | + .imgSizefirstImage), | ||
| 498 | + color: MyColours.color_4D000000, | ||
| 499 | + child: Center( | ||
| 500 | + child: Text('上传中', | ||
| 501 | + style: TextStyle( | ||
| 502 | + color: | ||
| 503 | + MyColours.color_F8F9FD)), | ||
| 504 | + ), | ||
| 505 | + ) | ||
| 506 | + : Container()), | ||
| 507 | + ]), | ||
| 508 | + _uploadImageProvider.firstImage.process == 1 | ||
| 509 | + ? Container( | ||
| 510 | + width: w(150), | ||
| 511 | + height: w(30), | ||
| 512 | + color: MyColours.color_4D000000, | ||
| 513 | + alignment: Alignment.center, | ||
| 514 | + child: Text( | ||
| 515 | + '点击图片可以更换', | ||
| 516 | + style: TextStyle( | ||
| 517 | + color: MyColours.color_F8F9FD, | ||
| 518 | + fontSize: font(14), | ||
| 519 | + fontWeight: FontWeight.bold), | ||
| 520 | + )) | ||
| 521 | + : SizedBox(), | ||
| 522 | + ])) | ||
| 523 | + : InkWell( | ||
| 524 | + onTap: () { | ||
| 525 | + // double process; | ||
| 526 | + // String qiniuUrl; | ||
| 527 | + // List<String> tempList = []; | ||
| 528 | + // if (title == '头像') { | ||
| 529 | + // process = _uploadImageProvider.touxiang.process; | ||
| 530 | + // qiniuUrl = _uploadImageProvider.touxiang.qiniuUrl; | ||
| 531 | + // } else { | ||
| 532 | + // process = _uploadImageProvider.erweima.process; | ||
| 533 | + // qiniuUrl = _uploadImageProvider.erweima.qiniuUrl; | ||
| 534 | + // } | ||
| 535 | + | ||
| 536 | + // if (qiniuUrl != null && qiniuUrl != '') { | ||
| 537 | + // tempList.add(qiniuUrl); | ||
| 538 | + | ||
| 539 | + // ///没有上传完成的不可以点击 | ||
| 540 | + // _showPhotoView(context, 0, tempList); | ||
| 541 | + // } else { | ||
| 542 | + Utils.getPickPermission(context, () { | ||
| 543 | + _getFromPictureOrCamera( | ||
| 544 | + _uploadImageProvider.firstImage, | ||
| 545 | + ImageSource.gallery); | ||
| 349 | }, | 546 | }, |
| 350 | - child: Stack( | ||
| 351 | - alignment: Alignment.bottomCenter, | ||
| 352 | - children: [ | ||
| 353 | - Image.network( | ||
| 354 | - 'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg', | ||
| 355 | - fit: BoxFit.cover, | ||
| 356 | - ), | ||
| 357 | - Container( | ||
| 358 | - width: w(150), | ||
| 359 | - height: w(30), | ||
| 360 | - color: MyColours.color_4D000000, | ||
| 361 | - alignment: Alignment.center, | ||
| 362 | - child: Text( | ||
| 363 | - '点击图片可以更换', | ||
| 364 | - style: TextStyle( | ||
| 365 | - color: MyColours.color_F8F9FD, | ||
| 366 | - fontSize: font(14), | ||
| 367 | - fontWeight: FontWeight.bold), | ||
| 368 | - )), | ||
| 369 | - ])) | ||
| 370 | - : Container( | 547 | + Platform.isAndroid |
| 548 | + ? Permission.storage | ||
| 549 | + : Permission.photos); | ||
| 550 | + }, | ||
| 551 | + child: Container( | ||
| 371 | color: MyColours.color_d9d9d9, | 552 | color: MyColours.color_d9d9d9, |
| 372 | width: double.infinity, | 553 | width: double.infinity, |
| 373 | - height: w(210), | 554 | + height: w(_uploadImageProvider.imgSizefirstImage), |
| 374 | child: Column( | 555 | child: Column( |
| 375 | mainAxisAlignment: MainAxisAlignment.center, | 556 | mainAxisAlignment: MainAxisAlignment.center, |
| 376 | children: [ | 557 | children: [ |
| @@ -394,8 +575,7 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -394,8 +575,7 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 394 | )) | 575 | )) |
| 395 | ], | 576 | ], |
| 396 | ), | 577 | ), |
| 397 | - ), | ||
| 398 | - ) | 578 | + )), |
| 399 | ], | 579 | ], |
| 400 | ), | 580 | ), |
| 401 | )), | 581 | )), |
| @@ -412,7 +592,49 @@ class _FirstImagePageState extends State<FirstImagePage> { | @@ -412,7 +592,49 @@ class _FirstImagePageState extends State<FirstImagePage> { | ||
| 412 | fontSize: 34, | 592 | fontSize: 34, |
| 413 | height: w(40), | 593 | height: w(40), |
| 414 | isBold: true, | 594 | isBold: true, |
| 415 | - onPressed: () {}, | 595 | + onPressed: () async { |
| 596 | + FocusScope.of(context).requestFocus(FocusNode()); //点击空白处隐藏键盘 | ||
| 597 | + if (titleC.text.trim().length == 0) { | ||
| 598 | + Utils.showToast('请输入标题!'); | ||
| 599 | + return false; | ||
| 600 | + } | ||
| 601 | + if (titleC.text.trim().length == 0) { | ||
| 602 | + Utils.showToast('请输入店铺slogan!'); | ||
| 603 | + return false; | ||
| 604 | + } | ||
| 605 | + if (_uploadImageProvider.firstImage.qiniuUrl == null) { | ||
| 606 | + Utils.showToast('请上传图片!'); | ||
| 607 | + return false; | ||
| 608 | + } | ||
| 609 | + | ||
| 610 | + if (_uploadImageProvider.firstImage.process < 1) { | ||
| 611 | + Utils.showToast('正在上传图片,请稍等'); | ||
| 612 | + return false; | ||
| 613 | + } | ||
| 614 | + | ||
| 615 | + App.sp.setInt( | ||
| 616 | + "themeColor", themeColorData[themeColorIndex].color.value); | ||
| 617 | + //接口 | ||
| 618 | + Map homeData = { | ||
| 619 | + 'theme_color': themeColorData[themeColorIndex].color.value, | ||
| 620 | + 'title': titleC.text, | ||
| 621 | + 'slogan': sloganC.text, | ||
| 622 | + 'image': _uploadImageProvider.firstImage.qiniuUrl | ||
| 623 | + }; | ||
| 624 | + Map<String, String> params = { | ||
| 625 | + 'sid': Provider.of<UserModel>(context, listen: false) | ||
| 626 | + .user | ||
| 627 | + .sellerid, | ||
| 628 | + 'home': json.encode(homeData) | ||
| 629 | + }; | ||
| 630 | + | ||
| 631 | + bool success = await _marketingCenterProvider | ||
| 632 | + .setSellerTemplateConf(context, params, showLoading: true); | ||
| 633 | + if (success) { | ||
| 634 | + Utils.showToast('保存成功'); | ||
| 635 | + Navigator.pop(context); | ||
| 636 | + } | ||
| 637 | + }, | ||
| 416 | ), | 638 | ), |
| 417 | ) | 639 | ) |
| 418 | ], | 640 | ], |
| @@ -2,7 +2,12 @@ import 'package:flutter/material.dart'; | @@ -2,7 +2,12 @@ import 'package:flutter/material.dart'; | ||
| 2 | import 'package:one_key/provider/user_model.dart'; | 2 | import 'package:one_key/provider/user_model.dart'; |
| 3 | import 'package:provider/provider.dart'; | 3 | import 'package:provider/provider.dart'; |
| 4 | 4 | ||
| 5 | +import '../constant/constant.dart'; | ||
| 5 | import '../models/tableOuter.dart'; | 6 | import '../models/tableOuter.dart'; |
| 7 | +import '../net/base_resp.dart'; | ||
| 8 | +import '../net/dio_util.dart'; | ||
| 9 | +import '../net/http_url.dart'; | ||
| 10 | +import '../utils/utils.dart'; | ||
| 6 | import 'choose_table_model.dart'; | 11 | import 'choose_table_model.dart'; |
| 7 | 12 | ||
| 8 | class MarketingCenterProvider extends ChangeNotifier { | 13 | class MarketingCenterProvider extends ChangeNotifier { |
| @@ -16,4 +21,52 @@ class MarketingCenterProvider extends ChangeNotifier { | @@ -16,4 +21,52 @@ class MarketingCenterProvider extends ChangeNotifier { | ||
| 16 | needLoading: needLoading); | 21 | needLoading: needLoading); |
| 17 | notifyListeners(); | 22 | notifyListeners(); |
| 18 | } | 23 | } |
| 24 | + | ||
| 25 | + // 商家设置预订安排模板页面 | ||
| 26 | + Future<bool> setSellerTemplateConf( | ||
| 27 | + BuildContext context, Map<String, String> params, | ||
| 28 | + {bool showLoading = true}) async { | ||
| 29 | + BaseResp<dynamic> baseResp = await DioUtil() | ||
| 30 | + .request<dynamic>(context, Method.get, HttpUrl.set_seller_template_conf, | ||
| 31 | + data: params, showLoading: showLoading) | ||
| 32 | + .catchError((error) { | ||
| 33 | + print(error.toString()); | ||
| 34 | + Utils.showToast('商家设置预订安排模板页面失败,请重试'); | ||
| 35 | + return false; | ||
| 36 | + }); | ||
| 37 | + if (baseResp.code == Constant.status_success) { | ||
| 38 | + if (baseResp.data == 0 || baseResp.data == 1) { | ||
| 39 | + return true; | ||
| 40 | + } else { | ||
| 41 | + Utils.showToast('商家设置预订安排模板页面失败,请重试'); | ||
| 42 | + } | ||
| 43 | + } else { | ||
| 44 | + Utils.showToast(baseResp.msg); | ||
| 45 | + } | ||
| 46 | + return false; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + // 获取商家设置预订安排模板页面 | ||
| 50 | + Future<bool> getSellerTemplateConf( | ||
| 51 | + BuildContext context, Map<String, String> params, | ||
| 52 | + {bool showLoading = true}) async { | ||
| 53 | + BaseResp<dynamic> baseResp = await DioUtil() | ||
| 54 | + .request<dynamic>(context, Method.get, HttpUrl.get_seller_template_conf, | ||
| 55 | + data: params, showLoading: showLoading) | ||
| 56 | + .catchError((error) { | ||
| 57 | + print(error.toString()); | ||
| 58 | + Utils.showToast('获取商家设置预订安排模板页面失败,请重试'); | ||
| 59 | + return false; | ||
| 60 | + }); | ||
| 61 | + if (baseResp.code == Constant.status_success) { | ||
| 62 | + if (baseResp.data == 0 || baseResp.data == 1) { | ||
| 63 | + return true; | ||
| 64 | + } else { | ||
| 65 | + Utils.showToast('获取商家设置预订安排模板页面失败,请重试'); | ||
| 66 | + } | ||
| 67 | + } else { | ||
| 68 | + Utils.showToast(baseResp.msg); | ||
| 69 | + } | ||
| 70 | + return false; | ||
| 71 | + } | ||
| 19 | } | 72 | } |
| @@ -19,6 +19,8 @@ class UploadImageProvider extends ChangeNotifier { | @@ -19,6 +19,8 @@ class UploadImageProvider extends ChangeNotifier { | ||
| 19 | UploadImgModel erweima = UploadImgModel(); //二维码 | 19 | UploadImgModel erweima = UploadImgModel(); //二维码 |
| 20 | UploadImgModel mentou = UploadImgModel(); //店铺信息----门头照片 | 20 | UploadImgModel mentou = UploadImgModel(); //店铺信息----门头照片 |
| 21 | UploadImgModel dish = UploadImgModel(); //菜品 | 21 | UploadImgModel dish = UploadImgModel(); //菜品 |
| 22 | + UploadImgModel firstImage = UploadImgModel(); //预订安排首图 | ||
| 23 | + double imgSizefirstImage = 282; | ||
| 22 | double imgSizeTouxiang = 76; | 24 | double imgSizeTouxiang = 76; |
| 23 | double imgSizeErweima = 22; | 25 | double imgSizeErweima = 22; |
| 24 | double imgSizeMenTou = 64; | 26 | double imgSizeMenTou = 64; |
| @@ -234,6 +234,9 @@ class UploadImageUtil { | @@ -234,6 +234,9 @@ class UploadImageUtil { | ||
| 234 | } else if (index == 3) { | 234 | } else if (index == 3) { |
| 235 | //3 菜品 | 235 | //3 菜品 |
| 236 | uploadImageProvider.dish.process = percent; | 236 | uploadImageProvider.dish.process = percent; |
| 237 | + } else if (index == 4) { | ||
| 238 | + //4 预订安排首图 | ||
| 239 | + uploadImageProvider.firstImage.process = percent; | ||
| 237 | } else { | 240 | } else { |
| 238 | //1 二维码 | 241 | //1 二维码 |
| 239 | uploadImageProvider.erweima.process = percent; | 242 | uploadImageProvider.erweima.process = percent; |
| @@ -293,6 +296,11 @@ class UploadImageUtil { | @@ -293,6 +296,11 @@ class UploadImageUtil { | ||
| 293 | uploadImageProvider.dish.qiniuUrl = imgUrl; | 296 | uploadImageProvider.dish.qiniuUrl = imgUrl; |
| 294 | uploadImageProvider.dish.file = null; | 297 | uploadImageProvider.dish.file = null; |
| 295 | uploadImageProvider.notifyListeners(); | 298 | uploadImageProvider.notifyListeners(); |
| 299 | + }else if (index == 4) { | ||
| 300 | + uploadImageProvider.firstImage.process = 1; | ||
| 301 | + uploadImageProvider.firstImage.qiniuUrl = imgUrl; | ||
| 302 | + uploadImageProvider.firstImage.file = null; | ||
| 303 | + uploadImageProvider.notifyListeners(); | ||
| 296 | } | 304 | } |
| 297 | }) | 305 | }) |
| 298 | ..catchError((dynamic error) { | 306 | ..catchError((dynamic error) { |
-
Please register or login to post a comment