Commit 2f3cb0a4b1d734d34b20aa80e6d8204668fb17de

Authored by wdn127929
1 parent 04093900

图片备注UI

@@ -55,9 +55,13 @@ import '../../models/customer_by_seller_model.dart'; @@ -55,9 +55,13 @@ import '../../models/customer_by_seller_model.dart';
55 import '../../models/customer_list_model.dart'; 55 import '../../models/customer_list_model.dart';
56 import '../../models/reserveA_action_log_modol.dart'; 56 import '../../models/reserveA_action_log_modol.dart';
57 import '../../models/reserve_deposit_model.dart'; 57 import '../../models/reserve_deposit_model.dart';
  58 +import '../../models/upload_img_model.dart';
58 import '../../provider/collect_store_provider.dart'; 59 import '../../provider/collect_store_provider.dart';
  60 +import '../../provider/upload_img_provider.dart';
59 import '../../utils/screen_util.dart'; 61 import '../../utils/screen_util.dart';
  62 +import '../../utils/upload_image_util.dart';
60 import '../../widgets/special_text/my_extended_text_selection_controls.dart'; 63 import '../../widgets/special_text/my_extended_text_selection_controls.dart';
  64 +import '../online_check/img_picker_widget.dart';
61 import '../online_check/photo_view_wiget.dart'; 65 import '../online_check/photo_view_wiget.dart';
62 66
63 class NotebookDetailPage extends StatefulWidget { 67 class NotebookDetailPage extends StatefulWidget {
@@ -125,6 +129,9 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -125,6 +129,9 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
125 CollectStoreProvider collectStoreProvider; 129 CollectStoreProvider collectStoreProvider;
126 ScrollController controller = ScrollController(); 130 ScrollController controller = ScrollController();
127 String reserveType = '普通用餐'; 131 String reserveType = '普通用餐';
  132 + UploadImageProvider _uploadImageProvider;
  133 +
  134 + List<UploadImgModel> remarkImgs = [];
128 135
129 @override 136 @override
130 void initState() { 137 void initState() {
@@ -148,6 +155,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -148,6 +155,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
148 _getOrderInfo(); 155 _getOrderInfo();
149 _getReserveDepositByRid(); 156 _getReserveDepositByRid();
150 _getReserveRecheckByRid(); //获取核餐记录 157 _getReserveRecheckByRid(); //获取核餐记录
  158 + _getQiniuInfo();
151 // _initPersonNumList(); 159 // _initPersonNumList();
152 Map<String, String> params = { 160 Map<String, String> params = {
153 "uid": Provider.of<UserModel>(context, listen: false).user.openid 161 "uid": Provider.of<UserModel>(context, listen: false).user.openid
@@ -209,6 +217,12 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -209,6 +217,12 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
209 }); 217 });
210 } 218 }
211 219
  220 + ///获取七牛云token
  221 + ///
  222 + _getQiniuInfo() async {
  223 + await _uploadImageProvider.getQiniuInfo(context, {});
  224 + }
  225 +
212 _getReserveTypeField() async { 226 _getReserveTypeField() async {
213 await detailModel.getReserveTypeField(context); 227 await detailModel.getReserveTypeField(context);
214 } 228 }
@@ -457,6 +471,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -457,6 +471,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
457 bus.off("refresh_detail_deposit"); 471 bus.off("refresh_detail_deposit");
458 bus.off("refresh_detail_reserve_recheck"); 472 bus.off("refresh_detail_reserve_recheck");
459 bus.off("refresh_action_log"); 473 bus.off("refresh_action_log");
  474 + _uploadImageProvider.qiniuInfoSunModel.token = null;
460 } 475 }
461 476
462 ///获取订单详情 477 ///获取订单详情
@@ -1855,6 +1870,63 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -1855,6 +1870,63 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
1855 ]); 1870 ]);
1856 } 1871 }
1857 1872
  1873 + ///图片备注
  1874 + Widget _imageRemark() {
  1875 + return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
  1876 + VEmptyView(36),
  1877 + Text(
  1878 + '图片备注',
  1879 + overflow: TextOverflow.ellipsis,
  1880 + style: TextStyle(color: MyColours.color_515151, fontSize: font(15)),
  1881 + ),
  1882 + VEmptyView(30),
  1883 + Padding(
  1884 + padding: EdgeInsets.only(left: w(20), right: w(15)),
  1885 + child: Consumer<UploadImageProvider>(builder: (context, model, _) {
  1886 + return ImgPickerWidget(
  1887 + scrollController: controller,
  1888 + model: _uploadImageProvider,
  1889 + maxImageNumber: 3,
  1890 + maxRemind: '三',
  1891 + imageList: remarkImgs,
  1892 + uploadType: UploadType.RemarkImagesType,
  1893 + deleteCallback: (int index) {
  1894 + remarkImgs
  1895 + .removeWhere((element) => element == remarkImgs[index]);
  1896 + setState(() {});
  1897 + //删除图片接口??????
  1898 + },
  1899 + callback: () {
  1900 + print(remarkImgs);
  1901 + for (UploadImgModel item in remarkImgs) {
  1902 + if (item.process < 1) {
  1903 + Utils.showToast('正在上传图片,请稍等');
  1904 + return;
  1905 + }
  1906 + }
  1907 + //接口,和订单绑定
  1908 + List imageQiniuUrlList = [];
  1909 + for (int i = 0; i < remarkImgs.length; i++) {
  1910 + if (!remarkImgs[i].isUpload) {
  1911 + imageQiniuUrlList.add({"url": remarkImgs[i].qiniuUrl});
  1912 + }
  1913 + }
  1914 +
  1915 + print(imageQiniuUrlList); //全部图片,详情接口请求后赋值,初始化数据
  1916 + //调用接口绑定数据
  1917 + // _setTablePhoto(
  1918 + // context, imageQiniuUrlList);
  1919 + },
  1920 + );
  1921 + })),
  1922 + VEmptyView(36),
  1923 + Container(
  1924 + height: ScreenUtil().setWidth(2),
  1925 + color: MyColours.color_E7E7E7,
  1926 + ),
  1927 + ]);
  1928 + }
  1929 +
1858 //查看大图 1930 //查看大图
1859 _showPhotoView(BuildContext context, int index, List<String> imgs, 1931 _showPhotoView(BuildContext context, int index, List<String> imgs,
1860 {isShow = false, List dashName}) async { 1932 {isShow = false, List dashName}) async {
@@ -2096,6 +2168,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -2096,6 +2168,8 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
2096 if (MediaQuery.of(context).viewInsets.bottom == 0) { 2168 if (MediaQuery.of(context).viewInsets.bottom == 0) {
2097 _cancelNode.unfocus(); 2169 _cancelNode.unfocus();
2098 } 2170 }
  2171 + _uploadImageProvider =
  2172 + Provider.of<UploadImageProvider>(context, listen: true);
2099 remarkManagerModel = Provider.of<RemarkManagerModel>(context, listen: true); 2173 remarkManagerModel = Provider.of<RemarkManagerModel>(context, listen: true);
2100 detailModel = Provider.of<NotebookDetailModel>(context, listen: true); 2174 detailModel = Provider.of<NotebookDetailModel>(context, listen: true);
2101 _onlineCheckEditProvider = 2175 _onlineCheckEditProvider =
@@ -3716,6 +3790,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> { @@ -3716,6 +3790,7 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
3716 3790
3717 _deposit(), 3791 _deposit(),
3718 _verifyFood(), 3792 _verifyFood(),
  3793 + _imageRemark(),
3719 _operatingRecord(), 3794 _operatingRecord(),
3720 3795
3721 // InkWell( 3796 // InkWell(
@@ -128,6 +128,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -128,6 +128,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
128 widget.imageList.add(imgModel); 128 widget.imageList.add(imgModel);
129 } else if (widget.uploadType == UploadType.CouponDishType) { 129 } else if (widget.uploadType == UploadType.CouponDishType) {
130 widget.imageList.add(imgModel); 130 widget.imageList.add(imgModel);
  131 + } else if (widget.uploadType == UploadType.RemarkImagesType) {
  132 + widget.imageList.add(imgModel);
131 } 133 }
132 } else { 134 } else {
133 print('No image selected.'); 135 print('No image selected.');
@@ -148,6 +150,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -148,6 +150,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
148 temp = widget.imageList; 150 temp = widget.imageList;
149 } else if (widget.uploadType == UploadType.CouponDishType) { 151 } else if (widget.uploadType == UploadType.CouponDishType) {
150 temp = widget.imageList; 152 temp = widget.imageList;
  153 + } else if (widget.uploadType == UploadType.RemarkImagesType) {
  154 + temp = widget.imageList;
151 } 155 }
152 bool need = await Utils.sizeNeed(File(pickedFile.path)); 156 bool need = await Utils.sizeNeed(File(pickedFile.path));
153 File file = File(pickedFile.path); 157 File file = File(pickedFile.path);
@@ -175,6 +179,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -175,6 +179,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
175 temp = widget.imageList; 179 temp = widget.imageList;
176 } else if (widget.uploadType == UploadType.CouponDishType) { 180 } else if (widget.uploadType == UploadType.CouponDishType) {
177 temp = widget.imageList; 181 temp = widget.imageList;
  182 + } else if (widget.uploadType == UploadType.RemarkImagesType) {
  183 + temp = widget.imageList;
178 } 184 }
179 List<AssetEntity> imgList = await AssetPicker.pickAssets(context, 185 List<AssetEntity> imgList = await AssetPicker.pickAssets(context,
180 pickerConfig: AssetPickerConfig( 186 pickerConfig: AssetPickerConfig(
@@ -502,6 +508,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> { @@ -502,6 +508,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
502 temp = widget.imageList; 508 temp = widget.imageList;
503 } else if (widget.uploadType == UploadType.CouponDishType) { 509 } else if (widget.uploadType == UploadType.CouponDishType) {
504 temp = widget.imageList; 510 temp = widget.imageList;
  511 + } else if (widget.uploadType == UploadType.RemarkImagesType) {
  512 + temp = widget.imageList;
505 } 513 }
506 return _getGridImg( 514 return _getGridImg(
507 temp.length < widget.maxImageNumber ? temp.length + 1 : temp.length, 515 temp.length < widget.maxImageNumber ? temp.length + 1 : temp.length,
@@ -43,6 +43,7 @@ class UploadImageProvider extends ChangeNotifier { @@ -43,6 +43,7 @@ class UploadImageProvider extends ChangeNotifier {
43 // List<UploadImgModel> wineImageList = []; //新建存酒 43 // List<UploadImgModel> wineImageList = []; //新建存酒
44 44
45 int countUpload = 0; 45 int countUpload = 0;
  46 +
46 UploadImageProvider() { 47 UploadImageProvider() {
47 touxiang.process = 0.01; 48 touxiang.process = 0.01;
48 erweima.process = 0.01; 49 erweima.process = 0.01;
@@ -26,7 +26,8 @@ enum UploadType { @@ -26,7 +26,8 @@ enum UploadType {
26 FeastRemarkInvoiceType, //宴会备注--发票 26 FeastRemarkInvoiceType, //宴会备注--发票
27 InvitationStoreType, //预订安排定制----店铺图片 27 InvitationStoreType, //预订安排定制----店铺图片
28 WineManageType, //新建存酒 28 WineManageType, //新建存酒
29 - CouponDishType //新建优惠券菜品券图片 29 + CouponDishType, //新建优惠券菜品券图片
  30 + RemarkImagesType // 订座详情备注图片
30 31
31 } 32 }
32 33
@@ -106,6 +107,9 @@ class UploadImageUtil { @@ -106,6 +107,9 @@ class UploadImageUtil {
106 } else if (uploadType == UploadType.CouponDishType) { 107 } else if (uploadType == UploadType.CouponDishType) {
107 //新建优惠券 108 //新建优惠券
108 imageList[index].process = percent; 109 imageList[index].process = percent;
  110 + } else if (uploadType == UploadType.RemarkImagesType) {
  111 + //备注图片
  112 + imageList[index].process = percent;
109 } 113 }
110 114
111 uploadImageProvider.notifyListeners(); 115 uploadImageProvider.notifyListeners();
@@ -198,6 +202,17 @@ class UploadImageUtil { @@ -198,6 +202,17 @@ class UploadImageUtil {
198 //新建优惠券 202 //新建优惠券
199 imageList[index].process = 1; 203 imageList[index].process = 1;
200 imageList[index].qiniuUrl = imgUrl; 204 imageList[index].qiniuUrl = imgUrl;
  205 + } else if (uploadType == UploadType.RemarkImagesType) {
  206 + //备注图片
  207 + imageList[index].process = 1;
  208 + imageList[index].qiniuUrl = imgUrl;
  209 + imageList[index].isUpload = false;
  210 + uploadImageProvider.countUpload++;
  211 + if (uploadImageProvider.countUpload == countAll) {
  212 + //所有图片上传完成,可以绑定备注图片
  213 + uploadImageProvider.countUpload = 0;
  214 + callback();
  215 + }
201 } 216 }
202 217
203 // 取消当前任务 218 // 取消当前任务
@@ -239,7 +254,10 @@ class UploadImageUtil { @@ -239,7 +254,10 @@ class UploadImageUtil {
239 //新建存酒 254 //新建存酒
240 imageList.removeAt(index); 255 imageList.removeAt(index);
241 } else if (uploadType == UploadType.CouponDishType) { 256 } else if (uploadType == UploadType.CouponDishType) {
242 - //新建存酒 257 + //新建优惠券
  258 + imageList.removeAt(index);
  259 + } else if (uploadType == UploadType.RemarkImagesType) {
  260 + //图片备注
243 imageList.removeAt(index); 261 imageList.removeAt(index);
244 } 262 }
245 263