Commit 95f16c3a2562a0bfcc0f2b95fd85c7441fc7739b

Authored by wdn127929
1 parent ad9ee071

图片备注OK

... ... @@ -8,8 +8,10 @@ import 'package:provider/provider.dart';
import 'dart:convert';
import "table.dart";
import 'package:one_key/models/table.dart' as t;
import 'dart:convert' as convert;
part 'notebook_detail.g.dart';
@JsonSerializable()
class NotebookDetail {
NotebookDetail();
... ... @@ -114,6 +116,8 @@ class NotebookDetail {
String log_photo; //下单照片
List<String> photo_note; //图片备注
String get statuImgAssets {
switch (status) {
case "0":
... ... @@ -308,7 +312,7 @@ class NotebookDetail {
@override
String toString() {
return 'NotebookDetail{id: $id, uid: $uid ,con_amount:$con_amount,abolition: $abolition, tableinfo: $tableinfo,actual_pum:$actual_pum, pnum: $pnum, rname: $rname, sex: $sex, phone: $phone, cusdem: $cusdem, cusman: $cusman, ddate: $ddate, is_set_ddate: $is_set_ddate, ddate_solt: $ddate_solt, status: $status, action: $action, type: $type, note_name: $note_name, seller_user_phone:$seller_user_phone, nick_name: $nick_name,channel: $channel, cdate: $cdate, demands: $demands, tables: $tables, cancel: $cancel, gid: $gid,guest_uid:$guest_uid,reserve_type:$reserve_type,place_order_name:$place_order_name,is_user_comments:$is_user_comments,deposit_cancel:$deposit_cancel,up_date:$up_date,log_photo:$log_photo}';
return 'NotebookDetail{id: $id, uid: $uid ,con_amount:$con_amount,abolition: $abolition, tableinfo: $tableinfo,actual_pum:$actual_pum, pnum: $pnum, rname: $rname, sex: $sex, phone: $phone, cusdem: $cusdem, cusman: $cusman, ddate: $ddate, is_set_ddate: $is_set_ddate, ddate_solt: $ddate_solt, status: $status, action: $action, type: $type, note_name: $note_name, seller_user_phone:$seller_user_phone, nick_name: $nick_name,channel: $channel, cdate: $cdate, demands: $demands, tables: $tables, cancel: $cancel, gid: $gid,guest_uid:$guest_uid,reserve_type:$reserve_type,place_order_name:$place_order_name,is_user_comments:$is_user_comments,deposit_cancel:$deposit_cancel,up_date:$up_date,log_photo:$log_photo,photo_note:$photo_note}';
}
}
... ...
... ... @@ -7,6 +7,18 @@ part of 'notebook_detail.dart';
// **************************************************************************
NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) {
List<String> images = [];
if (json['photo_note'] != null) {
if (json['photo_note'] is List) {
json['photo_note'].forEach((v) {
images.add(v);
});
} else {
convert.jsonDecode(json['photo_note']).forEach((v) {
images.add(v);
});
}
}
return NotebookDetail()
..id = json['id'] as String
..uid = json['uid'] as String
... ... @@ -56,7 +68,8 @@ NotebookDetail _$NotebookDetailFromJson(Map<String, dynamic> json) {
..is_user_comments = json['is_user_comments'] as dynamic
..up_date = json['up_date'] as String
..deposit_cancel = json['deposit_cancel'] as String
..log_photo = json['log_photo'] as String;
..log_photo = json['log_photo'] as String
..photo_note = images;
}
Map<String, dynamic> _$NotebookDetailToJson(NotebookDetail instance) =>
... ... @@ -98,6 +111,7 @@ Map<String, dynamic> _$NotebookDetailToJson(NotebookDetail instance) =>
'up_date': instance.up_date,
'deposit_cancel': instance.deposit_cancel,
'log_photo': instance.log_photo,
'photo_note': instance.photo_note
};
OrderInfo _$OrderInfoFromJson(Map<String, dynamic> json) {
return OrderInfo(
... ... @@ -169,7 +183,7 @@ Map<String, dynamic> _$CancelToJson(Cancel instance) => <String, dynamic>{
'uname': instance.uname,
'desc': instance.desc,
'cdate': instance.cdate,
'log_photo':instance.log_photo
'log_photo': instance.log_photo
};
Order _$OrderFromJson(Map<String, dynamic> json) {
... ...
... ... @@ -65,6 +65,8 @@ import '../../widgets/special_text/my_extended_text_selection_controls.dart';
import '../online_check/img_picker_widget.dart';
import '../online_check/photo_view_wiget.dart';
typedef BoolCallback = void Function(bool value);
class NotebookDetailPage extends StatefulWidget {
final String rid;
final String mid;
... ... @@ -495,13 +497,26 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
}
///订座详情
_getReserveDetail({bool showCicle = false}) async {
_getReserveDetail({bool showCicle = false, bool isShowLoading = true}) async {
detailEntity = await detailModel.getReserveDetail(
context,
{
"rid": widget.rid,
},
showCircle: showCicle);
showCircle: showCicle,
isShowLoading: isShowLoading);
remarkImgs = [];
if (detailEntity.photo_note != null && detailEntity.photo_note.length > 0) {
detailEntity.photo_note.forEach((element) {
UploadImgModel imageModel = UploadImgModel();
imageModel.qiniuUrl = element;
imageModel.isUpload = true;
imageModel.process = 1;
remarkImgs.add(imageModel);
});
}
reserveType =
detailEntity.reserve_type == null || detailEntity.reserve_type == ''
... ... @@ -1871,96 +1886,120 @@ class NotebookDetailPageState extends State<NotebookDetailPage> {
]);
}
_updatePhotoNote() async {
List<String> imageQiniuUrlList = [];
// if (isDelete) {
for (int i = 0; i < remarkImgs.length; i++) {
imageQiniuUrlList.add(remarkImgs[i].qiniuUrl);
}
// } else {
// for (int i = 0; i < remarkImgs.length; i++) {
// // if (!remarkImgs[i].isUpload) {
// imageQiniuUrlList.add(remarkImgs[i].qiniuUrl);
// // }
// }
// }
print(imageQiniuUrlList); //全部图片,详情接口请求后赋值,初始化数据
//调用接口绑定数据
// _setTablePhoto(
// context, imageQiniuUrlList);
bool sucess = await detailModel.upReserveInfo(context, widget.rid,
photoNote: json.encode(imageQiniuUrlList));
if (sucess) {
// bus.emit("refresh_book_list"); //刷新已预订列表
// EventBus().emit("refresh_tablemanager"); //刷新桌位
await _getReserveDetail(showCicle: false, isShowLoading: false);
}
}
///图片备注
Widget _imageRemark() {
bool show = Utils.getAuthority(context, '图片备注') ||
widget.uid ==
Provider.of<UserModel>(context, listen: false).user.openid;
return (!show && remarkImgs.length == 0) ? SizedBox(): Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
VEmptyView(36),
Text(
'图片备注',
overflow: TextOverflow.ellipsis,
style: TextStyle(color: MyColours.color_515151, fontSize: font(15)),
),
VEmptyView(30),
show
? Padding(
padding: EdgeInsets.only(left: w(20), right: w(15)),
child:
Consumer<UploadImageProvider>(builder: (context, model, _) {
return ImgPickerWidget(
scrollController: controller,
model: _uploadImageProvider,
maxImageNumber: 3,
maxRemind: '三',
imageList: remarkImgs,
uploadType: UploadType.RemarkImagesType,
deleteCallback: (int index) {
remarkImgs
.removeWhere((element) => element == remarkImgs[index]);
setState(() {});
//删除图片接口??????
},
callback: () {
print(remarkImgs);
for (UploadImgModel item in remarkImgs) {
if (item.process < 1) {
Utils.showToast('正在上传图片,请稍等');
return;
}
}
//接口,和订单绑定
List imageQiniuUrlList = [];
for (int i = 0; i < remarkImgs.length; i++) {
if (!remarkImgs[i].isUpload) {
imageQiniuUrlList.add({"url": remarkImgs[i].qiniuUrl});
}
}
print(imageQiniuUrlList); //全部图片,详情接口请求后赋值,初始化数据
//调用接口绑定数据
// _setTablePhoto(
// context, imageQiniuUrlList);
},
);
}))
: GridView.builder(
controller: controller,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: remarkImgs.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
///没有上传完成的不可以点击
_showPhotoView(context, index,
remarkImgs.map((e) => e.qiniuUrl).toList());
},
child: CachedNetworkImage(
imageUrl: remarkImgs[index].qiniuUrl,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
));
}),
VEmptyView(36),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
]);
return (!show && remarkImgs.length == 0)
? SizedBox()
: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
VEmptyView(36),
Text(
'图片备注',
overflow: TextOverflow.ellipsis,
style:
TextStyle(color: MyColours.color_515151, fontSize: font(15)),
),
VEmptyView(30),
show
? Padding(
padding: EdgeInsets.only(left: w(20), right: w(15)),
child: Consumer<UploadImageProvider>(
builder: (context, model, _) {
return ImgPickerWidget(
scrollController: controller,
model: _uploadImageProvider,
maxImageNumber: 3,
maxRemind: '三',
imageList: remarkImgs,
uploadType: UploadType.RemarkImagesType,
deleteCallback: (int index) {
remarkImgs.removeWhere(
(element) => element == remarkImgs[index]);
setState(() {});
//删除图片接口??????
_updatePhotoNote();
},
callback: () async {
print(remarkImgs);
for (UploadImgModel item in remarkImgs) {
if (item.process < 1) {
Utils.showToast('正在上传图片,请稍等');
return;
}
}
//接口,和订单绑定
_updatePhotoNote();
},
);
}))
: GridView.builder(
controller: controller,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: remarkImgs.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
///没有上传完成的不可以点击
_showPhotoView(context, index,
remarkImgs.map((e) => e.qiniuUrl).toList());
},
child: CachedNetworkImage(
imageUrl: remarkImgs[index].qiniuUrl,
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
));
}),
VEmptyView(36),
Container(
height: ScreenUtil().setWidth(2),
color: MyColours.color_E7E7E7,
),
]);
}
//查看大图
... ...
... ... @@ -634,7 +634,9 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
),
onTap: () {
if (widget.uploadType ==
UploadType.TableManagerType) {
UploadType.TableManagerType ||
widget.uploadType ==
UploadType.RemarkImagesType) {
if (temp[index].isUpload) {
//已经传到服务器,弹提醒窗口,是否删除
//修改之前有内容,则弹框
... ...
... ... @@ -431,7 +431,8 @@ class NotebookDetailModel extends ChangeNotifier {
String ymd,
String reserveType,
bool showLoading = false,
bool needToast = true}) async {
bool needToast = true,
String photoNote}) async {
if (phone != null && phone != '') {
//判断是否可以输入自己的手机号
CustomerProvider customerProvider =
... ... @@ -451,6 +452,10 @@ class NotebookDetailModel extends ChangeNotifier {
"rid": rid,
'note_name': Provider.of<UserModel>(context, listen: false).user.account
};
if (photoNote != null) {
params['photo_note'] = photoNote;
}
if (actualPum != null) {
params['actual_pum'] = actualPum;
}
... ...