Commit 34ed9a5abc3a5a56182914c215526d46f9d0dfbf

Authored by wdn127929
1 parent 7af8dd92

存酒UI ok

import 'package:flutter/material.dart';
class WineManageModel {
TextEditingController wineNameC = TextEditingController(); //酒品名称
TextEditingController wineNumC = TextEditingController(); //存酒数量
TextEditingController wineUnitC = TextEditingController(); //计量单位
List<String> imageData = [
'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg',
'https://www.ssfiction.com/wp-content/uploads/2020/08/20200805_5f2b1669e9a24.jpg'
];
}
... ...
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/upload_img_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/upload_image_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/v_empty_view.dart';
import '../../online_check/img_picker_widget.dart';
import '../../online_check/photo_view_wiget.dart';
//出库申请item
class ApplyOutStoreItemPage extends StatefulWidget {
final WineManageModel wineManageModel;
final ScrollController controller;
final int index;
ApplyOutStoreItemPage(
{Key key, this.wineManageModel, this.controller, this.index})
: super(key: key);
@override
_ApplyOutStoreItemPageState createState() => _ApplyOutStoreItemPageState();
}
class _ApplyOutStoreItemPageState extends State<ApplyOutStoreItemPage> {
Widget _textFieldWidget(
String title, String hintText, TextEditingController controller) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_515151),
controller: controller,
// focusNode: _phoneNode,
textAlign: TextAlign.right,
textAlignVertical: TextAlignVertical.center,
// textAlignVertical:
// TextAlignVertical.center,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32),
),
contentPadding: EdgeInsets.zero,
// contentPadding:
// EdgeInsets.symmetric(
// vertical: w(12)),
border:
OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {
print(value);
// if (value.trim().isEmpty || value.trim().length > 11) {
// //内容为空,或 超过11位
// setState(() {
// _baseIndoProvider.userHistorys.clear();
// });
// return;
// }
// Map<String, String> params = {
// "keywords": value.trim(),
// "sid": Provider.of<UserModel>(context, listen: false)
// .user
// .sellerid,
// };
// _baseIndoProvider.getUserHistorys(context, params);
},
onEditingComplete: () {
FocusScope.of(context).requestFocus(FocusNode());
},
onTap: () {
// setState(() {
// showPhoneHistory = true;
// });
// Future.delayed(Duration(milliseconds: 300), () {
// _controller.jumpTo(_controller.position.maxScrollExtent);
// });
},
keyboardType: TextInputType.number,
))),
// InkWell(
// onTap: () {
// // _openAddressBook();
// },
// child: Container(
// width: ScreenUtil().setWidth(74) * 2,
// height: ScreenUtil().setWidth(48),
// alignment: Alignment.centerRight,
// child: Text('一键录入',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: ScreenUtil().setSp(28),
// )),
// ),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
Widget _textWidget(String title, String subTitle) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text(
subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999),
)),
)
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
//查看大图
_showPhotoView(BuildContext context, int index, List<String> imgs,
{isShow = false, List dashName}) async {
// if (imgs.length == 1 &&
// imgs[0] ==
// 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') {
// imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png';
// }
Utils.setBarStatus(false, color: Colors.black);
dynamic result = await showGeneralDialog(
context: context,
barrierDismissible: false,
// barrierColor: Colors.red,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
Widget child = Stack(
children: <Widget>[
PhotoPreview(
initialIndex: index,
photoList: imgs,
isShow: isShow,
dashName: dashName)
],
);
return child;
});
Utils.setBarStatus(true, color: Colors.white);
}
/// 九宫格
Widget _getGridImg(context, List<String> temp) {
return GridView.builder(
controller: widget.controller,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: temp.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
//Widget Function(BuildContext context, int index)
return temp.length < 1
? Text('')
: InkWell(
onTap: () {
///没有上传完成的不可以点击
_showPhotoView(context, index, temp);
},
child: CachedNetworkImage(
imageUrl: temp[index],
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
));
});
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
padding: EdgeInsets.only(left: w(16)),
margin:
EdgeInsets.only(top: w(16), bottom: w(10), left: w(20), right: w(20)),
child: Column(
children: [
_textWidget(
'酒品名称',
"酒名",
),
VEmptyView(16),
_textFieldWidget('出库数量', '数量', widget.wineManageModel.wineNumC),
VEmptyView(16),
_textWidget('计量单位', '计量单位'),
VEmptyView(16),
_textWidget('存酒编号', '存酒编号'),
VEmptyView(16),
_textWidget('存酒日期', '2023-02-14 15:34:23'),
VEmptyView(16),
_getGridImg(context, widget.wineManageModel.imageData),
VEmptyView(16),
],
),
);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/store_wine_provider.dart';
import '../../../res/colors.dart';
import '../../../route/navigator_util.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/system_app_bar.dart';
import '../../../widgets/v_empty_view.dart';
import 'apply_out_store_item_page.dart';
/**
* 申请出库页面
*/
class ApplyOutStorePage extends StatefulWidget {
ApplyOutStorePage({Key key}) : super(key: key);
@override
_ApplyOutStorePageState createState() => _ApplyOutStorePageState();
}
class _ApplyOutStorePageState extends State<ApplyOutStorePage> {
StoreWineProvider storeWineProvider;
ScrollController _controller = ScrollController();
List dataWine = [];
@override
void initState() {
// TODO: implement initState
super.initState();
WineManageModel wineManageModel = WineManageModel();
dataWine.add(wineManageModel);
dataWine.add(wineManageModel);
}
Widget _textItemWidget(
String title,
String subTitle,
) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Text(subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
@override
Widget build(BuildContext context) {
storeWineProvider = Provider.of<StoreWineProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar(
'存酒出库',
onTap: () {
Navigator.pop(context);
},
),
body: Container(
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: _controller,
child: Column(
children: [
Container(
color: Colors.white,
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(16 * 2)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
VEmptyView(32),
_textItemWidget(
'联系电话', Utils.starPhone('18799999999')),
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'客人姓名',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text('fff先生',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
)),
HEmptyView(40),
Container(
width: w(100),
alignment: Alignment.centerRight,
child: Text(
// '会员状态未知',
'会员',
style: TextStyle(
color: true
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32),
),
),
),
],
)),
],
)),
ListView.builder(
shrinkWrap: true,
controller: _controller,
itemCount: dataWine.length,
itemBuilder: (context, index) {
WineManageModel wineManageModel = dataWine[index];
return ApplyOutStoreItemPage(
wineManageModel: wineManageModel,
controller: _controller,
index: index,
);
}),
],
),
)),
Container(
alignment: Alignment.centerLeft,
margin: EdgeInsets.only(
left: w(20), right: w(20), top: w(10), bottom: w(16)),
child: Text(
'注:为保障酒品安排,只有存酒管理员才可以进行存酒操作!',
style: TextStyle(
color: MyColours.color_999999, fontSize: font(10)),
)),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
bottom: ScreenUtil().setWidth(35 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
),
child: RoundButton(
text: '提交出库申请',
width: double.infinity,
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
fontSize: 32,
onPressed: () async {
// Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goSmsCodeInputPage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
))
],
),
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/pages/my/store_wine_manage/create_wine_item_page.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/v_empty_view.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/store_wine_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/dialog_util.dart';
... ... @@ -30,11 +32,119 @@ class _CreateStoreWinePageState extends State<CreateStoreWinePage> {
String sexStr = '先生';
List sexList = [];
ScrollController _controller = ScrollController();
TextEditingController phoneC = TextEditingController(); //电话
List dataWine = [];
@override
void initState() {
// TODO: implement initState
super.initState();
sexList = ['先生', '女士', '公司'];
WineManageModel wineManageModel = WineManageModel();
dataWine.add(wineManageModel);
}
Widget _textFieldWidget(
String title, String hintText, TextEditingController controller) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_515151),
controller: controller,
// focusNode: _phoneNode,
textAlign: TextAlign.right,
textAlignVertical: TextAlignVertical.center,
// textAlignVertical:
// TextAlignVertical.center,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32),
),
contentPadding: EdgeInsets.zero,
// contentPadding:
// EdgeInsets.symmetric(
// vertical: w(12)),
border:
OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {
print(value);
// if (value.trim().isEmpty || value.trim().length > 11) {
// //内容为空,或 超过11位
// setState(() {
// _baseIndoProvider.userHistorys.clear();
// });
// return;
// }
// Map<String, String> params = {
// "keywords": value.trim(),
// "sid": Provider.of<UserModel>(context, listen: false)
// .user
// .sellerid,
// };
// _baseIndoProvider.getUserHistorys(context, params);
},
onEditingComplete: () {
// _phoneNode.unfocus();
FocusScope.of(context).requestFocus(FocusNode());
},
onTap: () {
// setState(() {
// showPhoneHistory = true;
// });
// Future.delayed(Duration(milliseconds: 300), () {
// _controller.jumpTo(_controller.position.maxScrollExtent);
// });
},
keyboardType: TextInputType.number,
))),
// InkWell(
// onTap: () {
// // _openAddressBook();
// },
// child: Container(
// width: ScreenUtil().setWidth(74) * 2,
// height: ScreenUtil().setWidth(48),
// alignment: Alignment.centerRight,
// child: Text('一键录入',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: ScreenUtil().setSp(28),
// )),
// ),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
@override
... ... @@ -52,6 +162,7 @@ class _CreateStoreWinePageState extends State<CreateStoreWinePage> {
children: [
Expanded(
child: SingleChildScrollView(
controller: _controller,
child: Column(
children: [
Container(
... ... @@ -63,110 +174,7 @@ class _CreateStoreWinePageState extends State<CreateStoreWinePage> {
mainAxisAlignment: MainAxisAlignment.start,
children: [
VEmptyView(32),
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(
right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'联系电话',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
Expanded(
child: Container(
height:
ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize:
ScreenUtil().setSp(32),
color:
MyColours.color_515151),
// controller: _baseIndoProvider.phoneController,
// focusNode: _phoneNode,
textAlign: TextAlign.right,
textAlignVertical:
TextAlignVertical.center,
// textAlignVertical:
// TextAlignVertical.center,
decoration: InputDecoration(
hintText: "点击输入客人电话",
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize:
ScreenUtil().setSp(32),
),
contentPadding: EdgeInsets.zero,
// contentPadding:
// EdgeInsets.symmetric(
// vertical: w(12)),
border: OutlineInputBorder(
borderSide:
BorderSide.none),
),
onChanged: (value) {
print(value);
// if (value.trim().isEmpty || value.trim().length > 11) {
// //内容为空,或 超过11位
// setState(() {
// _baseIndoProvider.userHistorys.clear();
// });
// return;
// }
// Map<String, String> params = {
// "keywords": value.trim(),
// "sid": Provider.of<UserModel>(context, listen: false)
// .user
// .sellerid,
// };
// _baseIndoProvider.getUserHistorys(context, params);
},
onEditingComplete: () {
// _phoneNode.unfocus();
},
onTap: () {
// setState(() {
// showPhoneHistory = true;
// });
// Future.delayed(Duration(milliseconds: 300), () {
// _controller.jumpTo(_controller.position.maxScrollExtent);
// });
},
keyboardType:
TextInputType.number,
))),
// InkWell(
// onTap: () {
// // _openAddressBook();
// },
// child: Container(
// width: ScreenUtil().setWidth(74) * 2,
// height: ScreenUtil().setWidth(48),
// alignment: Alignment.centerRight,
// child: Text('一键录入',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: ScreenUtil().setSp(28),
// )),
// ),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
_textFieldWidget('联系电话', "点击输入客人电话", phoneC),
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(
... ... @@ -238,6 +246,7 @@ class _CreateStoreWinePageState extends State<CreateStoreWinePage> {
},
onEditingComplete: () {
// _phoneNode.unfocus();
FocusScope.of(context).requestFocus(FocusNode());
},
onTap: () {
// setState(() {
... ... @@ -299,6 +308,41 @@ class _CreateStoreWinePageState extends State<CreateStoreWinePage> {
],
)),
],
)),
ListView.builder(
shrinkWrap: true,
controller: _controller,
itemCount: dataWine.length,
itemBuilder: (context, index) {
WineManageModel wineManageModel = dataWine[index];
return CreateWineItemPage(
wineManageModel: wineManageModel,
controller: _controller,
index: index,
onDel: () {
dataWine.removeAt(index);
setState(() {});
},
);
}),
InkWell(
onTap: () {
WineManageModel model = WineManageModel();
dataWine.add(model);
setState(() {});
},
child: Container(
color: Colors.white,
width: double.infinity,
height: w(48),
alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: w(20)),
child: Text(
'再加一项',
style: TextStyle(
color: MyColours.color_438E93,
fontSize: font(16)),
),
))
],
),
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/upload_img_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/upload_image_util.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/v_empty_view.dart';
import '../../online_check/img_picker_widget.dart';
class CreateWineItemPage extends StatefulWidget {
final WineManageModel wineManageModel;
final ScrollController controller;
final int index;
final GestureTapCallback onDel;
CreateWineItemPage(
{Key key, this.wineManageModel, this.controller, this.index, this.onDel})
: super(key: key);
@override
_CreateWineItemPageState createState() => _CreateWineItemPageState();
}
class _CreateWineItemPageState extends State<CreateWineItemPage> {
Widget _textFieldWidget(
String title, String hintText, TextEditingController controller) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: TextField(
maxLines: 1,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_515151),
controller: controller,
// focusNode: _phoneNode,
textAlign: TextAlign.right,
textAlignVertical: TextAlignVertical.center,
// textAlignVertical:
// TextAlignVertical.center,
decoration: InputDecoration(
hintText: hintText,
hintStyle: TextStyle(
color: MyColours.color_999999,
fontSize: ScreenUtil().setSp(32),
),
contentPadding: EdgeInsets.zero,
// contentPadding:
// EdgeInsets.symmetric(
// vertical: w(12)),
border:
OutlineInputBorder(borderSide: BorderSide.none),
),
onChanged: (value) {
print(value);
// if (value.trim().isEmpty || value.trim().length > 11) {
// //内容为空,或 超过11位
// setState(() {
// _baseIndoProvider.userHistorys.clear();
// });
// return;
// }
// Map<String, String> params = {
// "keywords": value.trim(),
// "sid": Provider.of<UserModel>(context, listen: false)
// .user
// .sellerid,
// };
// _baseIndoProvider.getUserHistorys(context, params);
},
onEditingComplete: () {
// _phoneNode.unfocus();
FocusScope.of(context).requestFocus(FocusNode());
},
onTap: () {
// setState(() {
// showPhoneHistory = true;
// });
// Future.delayed(Duration(milliseconds: 300), () {
// _controller.jumpTo(_controller.position.maxScrollExtent);
// });
},
keyboardType: TextInputType.number,
))),
// InkWell(
// onTap: () {
// // _openAddressBook();
// },
// child: Container(
// width: ScreenUtil().setWidth(74) * 2,
// height: ScreenUtil().setWidth(48),
// alignment: Alignment.centerRight,
// child: Text('一键录入',
// style: TextStyle(
// color: MyColours.color_515151,
// fontSize: ScreenUtil().setSp(28),
// )),
// ),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
padding: EdgeInsets.only(left: w(16)),
margin:
EdgeInsets.only(top: w(16), bottom: w(10), left: w(20), right: w(20)),
child: Column(
children: [
_textFieldWidget(
'酒品名称',
"点击输入酒名",
widget.wineManageModel.wineNameC,
),
VEmptyView(16),
_textFieldWidget('存酒数量', '点击输入数量', widget.wineManageModel.wineNumC),
VEmptyView(16),
_textFieldWidget(
'计量单位', '点击输入计量单位', widget.wineManageModel.wineUnitC),
VEmptyView(16),
_textFieldWidget('存酒编号', '点击输入存酒编号', null),
VEmptyView(16),
Consumer<UploadImageProvider>(builder: (context, model, _) {
return ImgPickerWidget(
scrollController: widget.controller,
model: model,
maxImageNumber: 3,
maxRemind: '三',
uploadType: UploadType.WineManageType,
deleteCallback: (int index) {
// _delTablePhoto(
// context,
// _uploadImageProvider
// .tableImageList[index]
// .photoID,
// index);
},
callback: () {
// for (UploadImgModel item
// in _uploadImageProvider
// .tableImageList) {
// if (item.process < 1) {
// Utils.showToast('正在上传图片,请稍等');
// return;
// }
// }
// //接口,和桌子绑定
// List imageQiniuUrlList = [];
// for (int i = 0;
// i <
// _uploadImageProvider
// .tableImageList.length;
// i++) {
// if (!_uploadImageProvider
// .tableImageList[i].isUpload) {
// imageQiniuUrlList.add({
// "url": _uploadImageProvider
// .tableImageList[i].qiniuUrl
// });
// }
// }
// _setTablePhoto(
// context, imageQiniuUrlList);
},
);
}),
VEmptyView(16),
widget.index != 0
? MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
)
: SizedBox(),
widget.index != 0
? InkWell(
onTap: widget.onDel,
child: Container(
width: double.infinity,
height: w(48),
alignment: Alignment.center,
child: Text(
'删除该项',
style: TextStyle(
color: MyColours.color_438E93, fontSize: font(16)),
),
))
: SizedBox()
],
),
);
}
}
... ...
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/upload_img_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/upload_image_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/v_empty_view.dart';
import '../../online_check/img_picker_widget.dart';
import '../../online_check/photo_view_wiget.dart';
//出库记录酒品item
class OutStoreRecordItemPage extends StatefulWidget {
final WineManageModel wineManageModel;
final ScrollController controller;
final int index;
OutStoreRecordItemPage(
{Key key, this.wineManageModel, this.controller, this.index})
: super(key: key);
@override
_OutStoreRecordItemPageState createState() => _OutStoreRecordItemPageState();
}
class _OutStoreRecordItemPageState extends State<OutStoreRecordItemPage> {
Widget _textWidget(String title, String subTitle) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text(
subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999),
)),
)
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
//查看大图
_showPhotoView(BuildContext context, int index, List<String> imgs,
{isShow = false, List dashName}) async {
// if (imgs.length == 1 &&
// imgs[0] ==
// 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') {
// imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png';
// }
Utils.setBarStatus(false, color: Colors.black);
dynamic result = await showGeneralDialog(
context: context,
barrierDismissible: false,
// barrierColor: Colors.red,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
Widget child = Stack(
children: <Widget>[
PhotoPreview(
initialIndex: index,
photoList: imgs,
isShow: isShow,
dashName: dashName)
],
);
return child;
});
Utils.setBarStatus(true, color: Colors.white);
}
/// 九宫格
Widget _getGridImg(context, List<String> temp) {
return GridView.builder(
controller: widget.controller,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: temp.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
//Widget Function(BuildContext context, int index)
return temp.length < 1
? Text('')
: InkWell(
onTap: () {
///没有上传完成的不可以点击
_showPhotoView(context, index, temp);
},
child: CachedNetworkImage(
imageUrl: temp[index],
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
));
});
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
padding: EdgeInsets.only(left: w(16)),
margin:
EdgeInsets.only(top: w(16), bottom: w(10), left: w(20), right: w(20)),
child: Column(
children: [
_textWidget(
'酒品名称',
"酒名",
),
VEmptyView(16),
_textWidget('出库数量', '数量'),
VEmptyView(16),
_textWidget('计量单位', '计量单位'),
VEmptyView(16),
_textWidget('存酒编号', '存酒编号'),
VEmptyView(16),
_textWidget('出库日期', '2023-02-14 15:34:23'),
VEmptyView(16),
_getGridImg(context, widget.wineManageModel.imageData),
VEmptyView(16),
],
),
);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/pages/my/store_wine_manage/wine_detail_item_page.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/store_wine_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/v_empty_view.dart';
import 'out_store_record_item_page.dart';
/***
* 出库记录
*/
class OutStoreRecordPage extends StatefulWidget {
OutStoreRecordPage({Key key}) : super(key: key);
@override
_OutStoreRecordPageState createState() => _OutStoreRecordPageState();
}
class _OutStoreRecordPageState extends State<OutStoreRecordPage> {
StoreWineProvider storeWineProvider;
ScrollController _controller = ScrollController();
List dataWine = [];
@override
void initState() {
// TODO: implement initState
super.initState();
WineManageModel wineManageModel = WineManageModel();
dataWine.add(wineManageModel);
dataWine.add(wineManageModel);
}
Widget _textItemWidget(String title, String subTitle,
{bool needBottom = true}) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Text(subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
// ),
],
)),
needBottom
? MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
)
: SizedBox(),
]);
}
@override
Widget build(BuildContext context) {
storeWineProvider = Provider.of<StoreWineProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar(
'存酒出库详情',
onTap: () {
Navigator.pop(context);
},
),
body: Container(
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: _controller,
child: Column(
children: [
Container(
color: Colors.white,
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(16 * 2)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
VEmptyView(32),
_textItemWidget(
'联系电话', Utils.starPhone('18799999999')),
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'客人姓名',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text('fff先生',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
)),
HEmptyView(40),
Container(
width: w(100),
alignment: Alignment.centerRight,
child: Text(
// '会员状态未知',
'会员',
style: TextStyle(
color: true
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32),
),
),
),
],
)),
VEmptyView(12),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
VEmptyView(16),
_textItemWidget('出库记录人', '诸葛孔明', needBottom: false),
],
)),
ListView.builder(
shrinkWrap: true,
controller: _controller,
itemCount: dataWine.length,
itemBuilder: (context, index) {
WineManageModel wineManageModel = dataWine[index];
return OutStoreRecordItemPage(
wineManageModel: wineManageModel,
controller: _controller,
index: index,
);
}),
],
),
)),
// Container(
// alignment: Alignment.centerLeft,
// margin: EdgeInsets.only(
// left: w(20), right: w(20), top: w(10), bottom: w(16)),
// child: Text(
// '注:为保障酒品安排,只有存酒管理员才可以进行存酒操作!',
// style: TextStyle(
// color: MyColours.color_999999, fontSize: font(10)),
// )),
// Container(
// color: MyColours.color_ffffff,
// padding: EdgeInsets.only(
// top: ScreenUtil().setWidth(16 * 2),
// bottom: ScreenUtil().setWidth(35 * 2),
// left: ScreenUtil().setWidth(45 * 2),
// right: ScreenUtil().setWidth(45 * 2),
// ),
// child: Row(
// children: [
// RoundButton(
// text: '出库记录',
// width: w(100),
// height: ScreenUtil().setWidth(80),
// radius: ScreenUtil().setWidth(10),
// isBold: true,
// borderColor: MyColours.color_438E93,
// gradientStart: MyColours.color_ffffff,
// gradientEnd: MyColours.color_ffffff,
// textColor: MyColours.color_438E93,
// fontSize: 32,
// onPressed: () async {
// // UserModel userModel =
// // Provider.of<UserModel>(context, listen: false);
// // if (userModel.user.role_name == '管理员' ||
// // userModel.user.role_name == '店长') {
// // NavigatorUtil.goCouponCreateSelectTypePage(context);
// // } else {
// // bool needRefresh =
// // await NavigatorUtil.goCouponEditPage(context);
// // print(needRefresh);
// // if (needRefresh != null && needRefresh) {
// // bus.emit('refresh_coupon_list_f');
// // //刷新页面数据
// // // _controller.callRefresh();
// // // _couponNetworkData(tabController.index);
// // }
// // }
// },
// ),
// HEmptyView(30),
// Expanded(
// child: RoundButton(
// text: '存酒出库',
// // width: w(218),
// height: ScreenUtil().setWidth(80),
// radius: ScreenUtil().setWidth(10),
// isBold: true,
// gradientStart: true
// ? MyColours.color_BFC4D4
// : MyColours.color_438E93,
// gradientEnd: true
// ? MyColours.color_BFC4D4
// : MyColours.color_438E93,
// fontSize: 32,
// onPressed: () async {
// Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
// // UserModel userModel =
// // Provider.of<UserModel>(context, listen: false);
// // if (userModel.user.role_name == '管理员' ||
// // userModel.user.role_name == '店长') {
// // NavigatorUtil.goCouponCreateSelectTypePage(context);
// // } else {
// // bool needRefresh =
// // await NavigatorUtil.goCouponEditPage(context);
// // print(needRefresh);
// // if (needRefresh != null && needRefresh) {
// // bus.emit('refresh_coupon_list_f');
// // //刷新页面数据
// // // _controller.callRefresh();
// // // _couponNetworkData(tabController.index);
// // }
// // }
// },
// )),
// ],
// ))
],
),
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/res/colors.dart';
import 'package:one_key/utils/dialog_util.dart';
import 'package:one_key/widgets/MyDivider.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:pin_code_fields/pin_code_fields.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/round_button.dart';
/**
* 短信验证码输入,酒品出库申请
*/
class SmsCodeInputPage extends StatefulWidget {
SmsCodeInputPage({Key key}) : super(key: key);
@override
_SmsCodeInputPageState createState() => _SmsCodeInputPageState();
}
class _SmsCodeInputPageState extends State<SmsCodeInputPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: MyColours.color_ffffff,
appBar: SystemAppBar(
'存酒出库确认',
onTap: () {
Navigator.pop(context);
},
),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
Container(
height: w(48),
padding: EdgeInsets.symmetric(horizontal: w(16)),
alignment: Alignment.centerLeft,
child: Text(
'请输入客户手机收到的短信验证码:',
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
),
Padding(
padding: EdgeInsets.only(left: w(16)),
child: MyDivider(
double.infinity,
w(0.5),
color: MyColours.color_E7E7E7,
)),
Padding(
padding:
EdgeInsets.symmetric(vertical: w(23), horizontal: w(32)),
child: PinCodeTextField(
autoFocus: true,
appContext: context,
pastedTextStyle: TextStyle(
color: MyColours.color_438E93,
fontWeight: FontWeight.bold,
),
length: 6,
obscureText: false,
dialogConfig: DialogConfig(
dialogTitle: '确认',
dialogContent: '是否粘贴',
negativeText: '取消',
affirmativeText: '粘贴',
),
obscuringCharacter: '*',
// obscuringWidget: const FlutterLogo(
// size: 24,
// ),
blinkWhenObscuring: true,
animationType: AnimationType.fade,
validator: (v) {
if (v.length < 6) {
return null;
return "请输入6位";
} else {
return null;
}
},
pinTheme: PinTheme(
shape: PinCodeFieldShape.box,
borderRadius: BorderRadius.circular(r(5)),
fieldHeight: w(50),
fieldWidth: w(35),
activeFillColor: Colors.white,
activeColor: Colors.white,
selectedFillColor: Colors.white,
inactiveFillColor: Colors.white,
disabledColor: Colors.white,
borderWidth: w(1),
inactiveColor: MyColours.color_999999,
selectedColor: MyColours.color_438E93),
cursorColor: MyColours.color_515151,
animationDuration: const Duration(milliseconds: 300),
enableActiveFill: true,
// errorAnimationController: errorController,
// controller: textEditingController,
keyboardType: TextInputType.number,
boxShadows: [
BoxShadow(
offset: Offset(0, 1),
color: Colors.black12,
blurRadius: r(5),
)
],
onCompleted: (v) {
debugPrint("Completed");
},
// onTap: () {
// print("Pressed");
// },
onChanged: (value) {
debugPrint(value);
setState(() {
// currentText = value;
});
},
))
],
))),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
bottom: ScreenUtil().setWidth(35 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
),
child: RoundButton(
text: '确认出库',
width: double.infinity,
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
fontSize: 32,
onPressed: () async {
DialogUtil.cupertinoAlertDialogOnly(context,
content: '客户欧阳正德的酒品已经出库。\n您可以在存酒管理-出库记录中查看详细信息。',
rTitle: '我知道了');
// Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
// NavigatorUtil.goSmsCodeInputPage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
))
],
),
);
}
}
... ...
... ... @@ -274,55 +274,60 @@ class _StoreWineManageHomePageState extends State<StoreWineManageHomePage>
})
])),
Container(
height: ScreenUtil().setWidth(91 * 2),
width: double.infinity,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(12 * 2),
bottom: ScreenUtil().setWidth(25 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
boxShadow: [
BoxShadow(
spreadRadius: ScreenUtil().setWidth(2),
color: Color.fromRGBO(0, 0, 0, 0.1),
offset: Offset(0, ScreenUtil().setWidth(-2)),
blurRadius: ScreenUtil().setWidth(8))
],
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(16)),
),
),
child: RoundButton(
text: '新建存酒',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
fontSize: 32,
textColor: MyColours.color_F8F9FD,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goCreateStoreWinePage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
),
)
Container(
height: ScreenUtil().setWidth(91 * 2),
width: double.infinity,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(12 * 2),
bottom: ScreenUtil().setWidth(25 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
),
decoration: BoxDecoration(
color: MyColours.color_ffffff,
boxShadow: [
BoxShadow(
spreadRadius: ScreenUtil().setWidth(2),
color: Color.fromRGBO(0, 0, 0, 0.1),
offset: Offset(0, ScreenUtil().setWidth(-2)),
blurRadius: ScreenUtil().setWidth(8))
],
borderRadius: BorderRadius.all(
Radius.circular(ScreenUtil().setWidth(16)),
),
),
child: RoundButton(
text: '新建存酒',
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
fontSize: 32,
textColor: MyColours.color_F8F9FD,
gradientStart:
true ? MyColours.color_BFC4D4 : MyColours.color_438E93,
gradientEnd:
true ? MyColours.color_BFC4D4 : MyColours.color_438E93,
onPressed: () async {
Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goCreateStoreWinePage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
),
)
// _searchWidget(),
// Positioned(
... ...
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/upload_img_provider.dart';
import '../../../res/colors.dart';
import '../../../utils/screen_util.dart';
import '../../../utils/upload_image_util.dart';
import '../../../utils/utils.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/v_empty_view.dart';
import '../../online_check/img_picker_widget.dart';
import '../../online_check/photo_view_wiget.dart';
//只查看
class WineDetailItemPage extends StatefulWidget {
final WineManageModel wineManageModel;
final ScrollController controller;
final int index;
WineDetailItemPage(
{Key key, this.wineManageModel, this.controller, this.index})
: super(key: key);
@override
_WineDetailItemPageState createState() => _WineDetailItemPageState();
}
class _WineDetailItemPageState extends State<WineDetailItemPage> {
Widget _textWidget(String title, String subTitle) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text(
subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999),
)),
)
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
//查看大图
_showPhotoView(BuildContext context, int index, List<String> imgs,
{isShow = false, List dashName}) async {
// if (imgs.length == 1 &&
// imgs[0] ==
// 'http://nosqn.colorcun.com/custom/lite-online/image/def-banner.png') {
// imgs[0] = 'http://nosqn.colorcun.com/app/seller-hj-empty.png';
// }
Utils.setBarStatus(false, color: Colors.black);
dynamic result = await showGeneralDialog(
context: context,
barrierDismissible: false,
// barrierColor: Colors.red,
barrierLabel:
MaterialLocalizations.of(context).modalBarrierDismissLabel,
transitionDuration: const Duration(milliseconds: 150),
pageBuilder: (BuildContext context, Animation animation,
Animation secondaryAnimation) {
Widget child = Stack(
children: <Widget>[
PhotoPreview(
initialIndex: index,
photoList: imgs,
isShow: isShow,
dashName: dashName)
],
);
return child;
});
Utils.setBarStatus(true, color: Colors.white);
}
/// 九宫格
Widget _getGridImg(context, List<String> temp) {
return GridView.builder(
controller: widget.controller,
// padding: EdgeInsets.only(top: ScreenUtil().getAdapterSize(10)),
shrinkWrap: true,
itemCount: temp.length,
//SliverGridDelegateWithFixedCrossAxisCount 构建一个横轴固定数量Widget
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
//横轴元素个数
crossAxisCount: 3,
//纵轴间距
mainAxisSpacing: ScreenUtil().setWidth(40),
//横轴间距
crossAxisSpacing: ScreenUtil().setWidth(36),
//子组件宽高长度比例
childAspectRatio: 1.0),
itemBuilder: (BuildContext context, int index) {
//Widget Function(BuildContext context, int index)
return temp.length < 1
? Text('')
: InkWell(
onTap: () {
///没有上传完成的不可以点击
_showPhotoView(context, index, temp);
},
child: CachedNetworkImage(
imageUrl: temp[index],
fit: BoxFit.cover,
width: ScreenUtil().setWidth(100 * 2),
height: ScreenUtil().setWidth(100 * 2),
));
});
}
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
padding: EdgeInsets.only(left: w(16)),
margin:
EdgeInsets.only(top: w(16), bottom: w(10), left: w(20), right: w(20)),
child: Column(
children: [
_textWidget(
'酒品名称',
"酒名",
),
VEmptyView(16),
_textWidget('存酒数量', '数量'),
VEmptyView(16),
_textWidget('计量单位', '计量单位'),
VEmptyView(16),
_textWidget('存酒编号', '存酒编号'),
VEmptyView(16),
_getGridImg(context, widget.wineManageModel.imageData),
VEmptyView(16),
],
),
);
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/pages/my/store_wine_manage/wine_detail_item_page.dart';
import 'package:one_key/utils/utils.dart';
import 'package:one_key/widgets/system_app_bar.dart';
import 'package:provider/provider.dart';
import '../../../models/wine_manage_model.dart';
import '../../../provider/store_wine_provider.dart';
import '../../../res/colors.dart';
import '../../../route/navigator_util.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/MyDivider.dart';
import '../../../widgets/h_empty_view.dart';
import '../../../widgets/round_button.dart';
import '../../../widgets/v_empty_view.dart';
/**
*
* 存酒详情页,只查看
*/
class WineDetailPage extends StatefulWidget {
WineDetailPage({Key key}) : super(key: key);
@override
_WineDetailPageState createState() => _WineDetailPageState();
}
class _WineDetailPageState extends State<WineDetailPage> {
StoreWineProvider storeWineProvider;
ScrollController _controller = ScrollController();
List dataWine = [];
@override
void initState() {
// TODO: implement initState
super.initState();
WineManageModel wineManageModel = WineManageModel();
dataWine.add(wineManageModel);
dataWine.add(wineManageModel);
}
Widget _textItemWidget(
String title,
String subTitle,
) {
return Column(children: [
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
title,
style: TextStyle(
color: MyColours.color_515151, fontSize: font(16)),
),
Text(subTitle,
//输入文本的样式
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
// ),
],
)),
MyDivider(
double.infinity,
h(0.5),
color: MyColours.color_E7E7E7,
),
]);
}
@override
Widget build(BuildContext context) {
storeWineProvider = Provider.of<StoreWineProvider>(context, listen: true);
return Scaffold(
appBar: SystemAppBar(
'存酒详情',
onTap: () {
Navigator.pop(context);
},
),
body: Container(
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
controller: _controller,
child: Column(
children: [
Container(
color: Colors.white,
padding: EdgeInsets.only(
left: ScreenUtil().setWidth(16 * 2)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
VEmptyView(32),
_textItemWidget(
'联系电话', Utils.starPhone('18799999999')),
Container(
height: ScreenUtil().setWidth(48 * 2),
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
right: ScreenUtil().setWidth(16 * 2)),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'客人姓名',
style: TextStyle(
color: MyColours.color_515151,
fontSize: font(16)),
),
Expanded(
child: Container(
height: ScreenUtil().setWidth(16 * 2),
alignment: Alignment.centerRight,
child: Text('fff先生',
style: TextStyle(
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_999999)),
)),
HEmptyView(40),
Container(
width: w(100),
alignment: Alignment.centerRight,
child: Text(
// '会员状态未知',
'会员',
style: TextStyle(
color: true
? MyColours.color_999999
: MyColours.color_515151,
fontSize: ScreenUtil().setSp(32),
),
),
),
],
)),
],
)),
ListView.builder(
shrinkWrap: true,
controller: _controller,
itemCount: dataWine.length,
itemBuilder: (context, index) {
WineManageModel wineManageModel = dataWine[index];
return WineDetailItemPage(
wineManageModel: wineManageModel,
controller: _controller,
index: index,
);
}),
],
),
)),
Container(
alignment: Alignment.centerLeft,
margin: EdgeInsets.only(
left: w(20), right: w(20), top: w(10), bottom: w(16)),
child: Text(
'注:为保障酒品安排,只有存酒管理员才可以进行存酒操作!',
style: TextStyle(
color: MyColours.color_999999, fontSize: font(10)),
)),
Container(
color: MyColours.color_ffffff,
padding: EdgeInsets.only(
top: ScreenUtil().setWidth(16 * 2),
bottom: ScreenUtil().setWidth(35 * 2),
left: ScreenUtil().setWidth(45 * 2),
right: ScreenUtil().setWidth(45 * 2),
),
child: Row(
children: [
RoundButton(
text: '出库记录',
width: w(100),
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
borderColor: MyColours.color_438E93,
gradientStart: MyColours.color_ffffff,
gradientEnd: MyColours.color_ffffff,
textColor: MyColours.color_438E93,
fontSize: 32,
onPressed: () async {
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goOutStoreRecordPage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
),
HEmptyView(30),
Expanded(
child: RoundButton(
text: '存酒出库',
// width: w(218),
height: ScreenUtil().setWidth(80),
radius: ScreenUtil().setWidth(10),
isBold: true,
gradientStart: true
? MyColours.color_BFC4D4
: MyColours.color_438E93,
gradientEnd: true
? MyColours.color_BFC4D4
: MyColours.color_438E93,
fontSize: 32,
onPressed: () async {
Utils.showToast('您不是店铺的存酒管理员,无权进行相关操作。');
// UserModel userModel =
// Provider.of<UserModel>(context, listen: false);
// if (userModel.user.role_name == '管理员' ||
// userModel.user.role_name == '店长') {
NavigatorUtil.goApplyOutStorePage(context);
// } else {
// bool needRefresh =
// await NavigatorUtil.goCouponEditPage(context);
// print(needRefresh);
// if (needRefresh != null && needRefresh) {
// bus.emit('refresh_coupon_list_f');
// //刷新页面数据
// // _controller.callRefresh();
// // _couponNetworkData(tabController.index);
// }
// }
},
)),
],
))
],
),
));
}
}
... ...
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/route/navigator_util.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import '../../../res/colors.dart';
... ... @@ -23,7 +24,9 @@ class _WineInStoreItemState extends State<WineInStoreItem> {
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {},
onTap: () {
NavigatorUtil.goWineDetailPage(context);
},
child: Container(
// width: ScreenUtil().setWidth(610),
margin: EdgeInsets.fromLTRB(
... ...
... ... @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:one_key/widgets/h_empty_view.dart';
import '../../../res/colors.dart';
import '../../../route/navigator_util.dart';
import '../../../utils/screen_util.dart';
import '../../../widgets/v_empty_view.dart';
... ... @@ -23,7 +24,9 @@ class _WineOutStoreItemState extends State<WineOutStoreItem> {
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {},
onTap: () {
NavigatorUtil.goOutStoreRecordPage(context);
},
child: Container(
// width: ScreenUtil().setWidth(610),
margin: EdgeInsets.fromLTRB(
... ...
... ... @@ -43,6 +43,7 @@ class ImgPickerWidget extends StatefulWidget {
final UploadImageProvider model;
final UploadType uploadType;
final DeleteCallback deleteCallback;
final String maxRemind;
ImgPickerWidget(
{Key key,
this.scrollController,
... ... @@ -51,7 +52,8 @@ class ImgPickerWidget extends StatefulWidget {
this.maxImageNumber = 5,
this.model,
this.uploadType,
this.deleteCallback})
this.deleteCallback,
this.maxRemind})
: super(key: key);
@override
... ... @@ -108,6 +110,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
widget.model.imageListDenvironment.add(imgModel);
} else if (widget.uploadType == UploadType.TableManagerType) {
widget.model.tableImageList.add(imgModel);
} else if (widget.uploadType == UploadType.WineManageType) {
widget.model.wineImageList.add(imgModel);
}
} else {
print('No image selected.');
... ... @@ -124,6 +128,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.WineManageType) {
temp = widget.model.wineImageList;
}
UploadImageUtil().startUpload(context, File(pickedFile.path),
temp.length - 1, true, widget.model, widget.uploadType,
... ... @@ -142,15 +148,15 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.WineManageType) {
temp = widget.model.wineImageList;
}
List<AssetEntity> imgList = await AssetPicker.pickAssets(context,
pickerConfig:AssetPickerConfig(
List<AssetEntity> imgList = await AssetPicker.pickAssets(context,
pickerConfig: AssetPickerConfig(
maxAssets: widget.maxImageNumber - temp.length,
// selectedAssets: assets,
requestType: type,
themeColor: MyColours.color_199095
)
);
// selectedAssets: assets,
requestType: type,
themeColor: MyColours.color_199095));
/// context is required, other params is optional.
// List<AssetEntity> imgList = await PhotoPicker.pickAsset(
... ... @@ -446,6 +452,8 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
temp = widget.model.imageListDenvironment;
} else if (widget.uploadType == UploadType.TableManagerType) {
temp = widget.model.tableImageList;
} else if (widget.uploadType == UploadType.WineManageType) {
temp = widget.model.wineImageList;
}
return _getGridImg(
temp.length < widget.maxImageNumber ? temp.length + 1 : temp.length,
... ... @@ -507,7 +515,16 @@ class _ImgPickerWidgetState extends DisposableState<ImgPickerWidget> {
style: TextStyle(
fontSize: ScreenUtil().setSp(24),
color: MyColours.color_999999),
)
),
widget.maxRemind != null ? VEmptyView(10) : SizedBox(),
widget.maxRemind != null
? Text(
'最多${widget.maxRemind}张照片',
style: TextStyle(
fontSize: ScreenUtil().setSp(18),
color: MyColours.color_999999),
)
: SizedBox()
],
)),
);
... ...
... ... @@ -30,7 +30,7 @@ class UploadImageProvider extends ChangeNotifier {
List<UploadImgModel> feastRemarkDjImageList = []; //宴会备注图片信息列表----定金
List<UploadImgModel> feastRemarkContractImageList = []; //宴会备注图片信息列表----合同
List<UploadImgModel> feastRemarkInvoiceImageList = []; //宴会备注图片信息列表----发票
List<UploadImgModel> wineImageList = []; //新建存酒
int countUpload = 0;
UploadImageProvider() {
touxiang.process = 0.01;
... ...
... ... @@ -1403,4 +1403,39 @@ class NavigatorUtil {
return _navigateTo(context, "${Routes.create_store_wine_page}",
replace: replace);
}
///我的------存酒详情
static Future<dynamic> goWineDetailPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.wine_detail_page}", replace: replace);
}
///我的------存酒记录
static Future<dynamic> goOutStoreRecordPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.out_store_record_page}",
replace: replace);
}
///我的------申请出库
static Future<dynamic> goApplyOutStorePage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.apply_out_store_page}",
replace: replace);
}
///我的------申请出库短信验证
static Future<dynamic> goSmsCodeInputPage(
BuildContext context, {
replace = false,
}) {
return _navigateTo(context, "${Routes.sms_code_input_page}",
replace: replace);
}
}
... ...
... ... @@ -184,7 +184,11 @@ import '../pages/my/plan_dish/plan_dish_create_select_type_page.dart';
import '../pages/my/plan_dish/plan_dish_eidt_page.dart';
import '../pages/my/plan_dish/plan_new_dish_first_page.dart';
import '../pages/my/plan_dish/plan_new_dish_page.dart';
import '../pages/my/store_wine_manage/apply_out_store_page.dart';
import '../pages/my/store_wine_manage/out_store_record_page.dart';
import '../pages/my/store_wine_manage/sms_code_input_page.dart';
import '../pages/my/store_wine_manage/store_wine_manage_home_page.dart';
import '../pages/my/store_wine_manage/wine_detail_page.dart';
import '../pages/my/table_manage/merge_table_select_page.dart';
import '../pages/order_advance/customer_detail_page.dart';
import '../pages/order_advance/order_advance_home_page.dart';
... ... @@ -2292,12 +2296,50 @@ var storeWineManageHomePageHandle = new Handler(
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: StoreWineManageHomePage());
});
///我的----新建存酒
var createStoreWinePageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: CreateStoreWinePage());
create: (_) => StoreWineProvider(),
child: ChangeNotifierProvider<UploadImageProvider>(
create: (_) => UploadImageProvider(), child: CreateStoreWinePage()));
});
///我的----存酒详情
var wineDetailPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: WineDetailPage());
});
///我的----存酒记录
var outStoreRecordPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: OutStoreRecordPage());
});
///我的----申请出库
var applyOutStorePageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: ApplyOutStorePage());
});
///我的----申请出库短信验证输入
var smsCodeInputPageHandle = new Handler(
handlerFunc: (BuildContext context, Map<dynamic, List<Object>> params) {
// String idstr = params["idstr"].first;
return ChangeNotifierProvider<StoreWineProvider>(
create: (_) => StoreWineProvider(), child: SmsCodeInputPage());
});
... ...
... ... @@ -192,6 +192,11 @@ class Routes {
static String store_wine_manag_home_page =
"/store_wine_manag_home_page"; //我的---存酒管理首页
static String create_store_wine_page = "/create_store_wine_page"; //新建存酒
static String wine_detail_page = "/wine_detail_page"; //存酒详情
static String out_store_record_page = "/out_store_record_page"; //出库记录
static String apply_out_store_page = "/apply_out_store_page"; //出库申请
static String sms_code_input_page = "/sms_code_input_page"; //出库申请短信验证
static void configureRoutes(FluroRouter router) {
router.notFoundHandler = new Handler(
... ... @@ -378,5 +383,9 @@ class Routes {
handler: storeWineManageHomePageHandle);
router.define(create_store_wine_page, handler: createStoreWinePageHandle);
router.define(wine_detail_page, handler: wineDetailPageHandle);
router.define(out_store_record_page, handler: outStoreRecordPageHandle);
router.define(apply_out_store_page, handler: applyOutStorePageHandle);
router.define(sms_code_input_page, handler: smsCodeInputPageHandle);
}
}
... ...
... ... @@ -5598,6 +5598,62 @@ class DialogUtil {
);
}
static Future cupertinoAlertDialogOnly(BuildContext context,
{String title = "",
String content = "内容",
String lTitle = "取消",
String rTitle = "确定",
Color rColor = MyColours.color_438E93,
bool isBold = false,
bool isBoldContent = false,
Color contentColor = MyColours.color_99000000,
VoidCallback lCallback,
VoidCallback rCallback}) {
showCupertinoDialog(
context: context,
builder: (context) {
return CupertinoAlertDialog(
title: title != ''
? Text(title,
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: ScreenUtil().setSp(32),
color: MyColours.color_E6000000))
: SizedBox(),
content: Text(content,
style: TextStyle(
fontWeight:
isBoldContent ? FontWeight.bold : FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
color: contentColor)),
actions: [
// CupertinoDialogAction(
// child: Text(lTitle,
// style: TextStyle(
// fontSize: ScreenUtil().setSp(32),
// color: MyColours.color_E6000000)),
// onPressed: () {
// Navigator.of(context).pop();
// lCallback();
// },
// ),
CupertinoDialogAction(
child: Text(rTitle,
style: TextStyle(
fontWeight: isBold ? FontWeight.bold : FontWeight.normal,
fontSize: ScreenUtil().setSp(32),
color: rColor)),
onPressed: () {
Navigator.of(context).pop();
rCallback();
},
),
],
);
},
);
}
static Future cupertinoAlertDialog(BuildContext context,
{String title = "",
String content = "内容",
... ...
... ... @@ -22,7 +22,8 @@ enum UploadType {
FeastRemarkXtType, //宴会备注--选台
FeastRemarkDjType, //宴会备注--定金
FeastRemarkContractType, //宴会备注--合同
FeastRemarkInvoiceType //宴会备注--发票
FeastRemarkInvoiceType, //宴会备注--发票
WineManageType //新建存酒
}
... ... @@ -91,6 +92,9 @@ class UploadImageUtil {
//宴会备注 ---发票
uploadImageProvider.feastRemarkInvoiceImageList[index].process =
percent;
} else if (uploadType == UploadType.WineManageType) {
//新建存酒
uploadImageProvider.wineImageList[index].process = percent;
}
uploadImageProvider.notifyListeners();
... ... @@ -169,6 +173,10 @@ class UploadImageUtil {
uploadImageProvider.feastRemarkInvoiceImageList[index].process = 1;
uploadImageProvider.feastRemarkInvoiceImageList[index].qiniuUrl =
imgUrl;
} else if (uploadType == UploadType.WineManageType) {
//新建存酒
uploadImageProvider.wineImageList[index].process = 1;
uploadImageProvider.wineImageList[index].qiniuUrl = imgUrl;
}
// 取消当前任务
... ...
... ... @@ -959,6 +959,13 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.14.0"
pin_code_fields:
dependency: "direct main"
description:
name: pin_code_fields
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.4.0"
platform:
dependency: transitive
description:
... ...
... ... @@ -182,6 +182,7 @@ dependencies:
flutter_image_compress: ^1.1.3
image: ^4.0.15
image_cropper: ^3.0.1
pin_code_fields: ^7.4.0
#表格多选组建
... ...