Merge branch 'master' of sma/fcs into master

This commit is contained in:
tzw
2024-02-02 18:01:54 +06:30
committed by Gogs
6 changed files with 206 additions and 73 deletions

View File

@@ -263,7 +263,8 @@
"box.cargo.type":"Cargos", "box.cargo.type":"Cargos",
"box.dimension":"Dimension", "box.dimension":"Dimension",
"box.delivery_address":"Delivery address", "box.delivery_address":"Delivery address",
"box.fcs_shipment_num":"FCS shipment number", "box.delivery_type":"Delivery type",
"box.fcs_shipment_num":"Shipment",
"box.fcs.id":"FCS ID", "box.fcs.id":"FCS ID",
"box.name":"Customer name", "box.name":"Customer name",
"box.phone":"Phone number", "box.phone":"Phone number",
@@ -279,13 +280,14 @@
"box.tracking.id":"Tracking ID", "box.tracking.id":"Tracking ID",
"box.market":"Market", "box.market":"Market",
"box.cargo.save.btn":"Update Carton", "box.cargo.save.btn":"Update Carton",
"box.type.title":"Carton types", "box.type.title":"Carton number",
"box.shipment.boxes":"Cartons", "box.shipment.boxes":"Cartons",
"box.shipment_number":"Shipment number", "box.shipment_number":"Shipment number",
"box.shipment.desc":"Description", "box.shipment.desc":"Description",
"box.mix.number":"Carton number", "box.mix.number":"Carton number",
"box.package":"Packages",
"box.mix.desc":"Description", "box.mix.desc":"Description",
"box.info.title":"Carton", "box.info.title":"Carton Info",
"box.popupmenu.active":"Active Cartons", "box.popupmenu.active":"Active Cartons",
"box.popupmenu.delivered":"Delivered Cartons", "box.popupmenu.delivered":"Delivered Cartons",
"box.cargo.total":"Total Weight", "box.cargo.total":"Total Weight",

View File

@@ -263,9 +263,11 @@
"box.cargo.type":"ကုန်ပစ္စည်းအမျိုးအစားများ", "box.cargo.type":"ကုန်ပစ္စည်းအမျိုးအစားများ",
"box.dimension":"အရွယ်အစား", "box.dimension":"အရွယ်အစား",
"box.delivery_address":"ပို့ဆောင်ရမည့်လိပ်စာ", "box.delivery_address":"ပို့ဆောင်ရမည့်လိပ်စာ",
"box.fcs_shipment_num":"FCS တင်ပို့နံပါတ်", "box.delivery_type":"ပို့ဆောင်ရမည့်အမျိုးအစား",
"box.fcs_shipment_num":"တင်ပို့နံပါတ်",
"box.fcs.id":"FCS ID", "box.fcs.id":"FCS ID",
"box.name":"နာမည်", "box.name":"နာမည်",
"box.package":"အထုပ်များ",
"box.phone":"ဖုန်းနံပါတ်", "box.phone":"ဖုန်းနံပါတ်",
"box.actual_weight":"အမှန်အလေးချိန်", "box.actual_weight":"အမှန်အလေးချိန်",
"box.add_cargo":"ကုန်ပစ္စည်း\nထည့်ရန်", "box.add_cargo":"ကုန်ပစ္စည်း\nထည့်ရန်",
@@ -279,7 +281,7 @@
"box.tracking.id":"Tracking ID", "box.tracking.id":"Tracking ID",
"box.market":"အွန်လိုင်စျေးဆိုင်", "box.market":"အွန်လိုင်စျေးဆိုင်",
"box.cargo.save.btn":"သေတ္တာ ပြုပြင်မည်", "box.cargo.save.btn":"သေတ္တာ ပြုပြင်မည်",
"box.type.title":"သေတ္တာအမျိုးအစားများ", "box.type.title":"သေတ္တာနံပါတ်",
"box.shipment.boxes":"သေတ္တာများ", "box.shipment.boxes":"သေတ္တာများ",
"box.shipment_number":"ပို့ဆောင်နံပါတ်", "box.shipment_number":"ပို့ဆောင်နံပါတ်",
"box.shipment.desc":"ဖော်ပြချက်", "box.shipment.desc":"ဖော်ပြချက်",

View File

@@ -164,27 +164,44 @@ class _CartonInfoState extends State<CartonInfo> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
var cartonModel = Provider.of<CartonModel>(context); var cartonModel = Provider.of<CartonModel>(context);
final cartonTypeBox = LocalRadioButtons( // final cartonTypeBox = LocalRadioButtons(
readOnly: true, // readOnly: true,
values: cartonModel.cartonTypesInfo, // values: cartonModel.cartonTypesInfo,
selectedValue: (_box!.isShipmentCarton ?? false) // selectedValue: (_box!.isShipmentCarton ?? false)
? carton_from_shipments // ? carton_from_shipments
: _box!.cartonType); // : _box!.cartonType);
final cartonTypeBox = DisplayText(
text: _box!.cartonNumber,
labelTextKey: "box.number",
//iconData: Ionicons.ios_airplane,
);
final cartonQrBox = DisplayText(
// text: _box!.,
//labelTextKey: "box.number",
iconData: AntDesign.qrcode,
);
final shipmentBox = DisplayText( final shipmentBox = DisplayText(
text: _box!.fcsShipmentNumber, text: _box!.fcsShipmentNumber,
labelTextKey: "box.fcs_shipment_num", labelTextKey: "box.fcs_shipment_num",
iconData: Ionicons.ios_airplane, // iconData: Ionicons.ios_airplane,
); );
final deliveryBox = DisplayText(
text: "Delivery Carton",
labelTextKey: "box.delivery_type",
//icon: FcsIDIcon(),
);
final fcsIDBox = DisplayText( final fcsIDBox = DisplayText(
text: _box!.fcsID == null ? "" : _box!.fcsID, text: _box!.fcsID == null ? "" : _box!.fcsID,
labelTextKey: "box.fcs.id", labelTextKey: "box.fcs.id",
icon: FcsIDIcon(), //icon: FcsIDIcon(),
); );
final customerNameBox = DisplayText( final customerNameBox = DisplayText(
text: _box!.userName == null ? "" : _box!.userName, text: _box!.userName == null ? "" : _box!.userName,
text1: _box!.fcsID == null ? "" : _box!.fcsID,
labelTextKey: "box.name", labelTextKey: "box.name",
iconData: Icons.person, //iconData: Icons.person,
); );
final consigneefcsIDBox = DisplayText( final consigneefcsIDBox = DisplayText(
@@ -195,9 +212,10 @@ class _CartonInfoState extends State<CartonInfo> {
final consigneeNameBox = DisplayText( final consigneeNameBox = DisplayText(
text: _box!.userName != null ? _box!.userName : "", text: _box!.userName != null ? _box!.userName : "",
text1: _box!.fcsID != null ? _box!.fcsID : "",
labelTextKey: "processing.consignee.name", labelTextKey: "processing.consignee.name",
maxLines: 2, //maxLines: 2,
iconData: Icons.person, //iconData: Ionicons.document_text_outline,
); );
final consigneeBox = Container( final consigneeBox = Container(
@@ -264,6 +282,11 @@ class _CartonInfoState extends State<CartonInfo> {
SizedBox(child: heightBox, width: 80), SizedBox(child: heightBox, width: 80),
], ],
); );
final packageBox = DisplayText(
text: "203FVH",
labelTextKey: "box.package",
//iconData: AntDesign.CodeSandbox,
);
final cartonSizeBox = DisplayText( final cartonSizeBox = DisplayText(
text: _cartonSizeController.text, text: _cartonSizeController.text,
@@ -333,30 +356,82 @@ class _CartonInfoState extends State<CartonInfo> {
body: Padding( body: Padding(
padding: const EdgeInsets.all(10.0), padding: const EdgeInsets.all(10.0),
child: ListView(shrinkWrap: true, children: <Widget>[ child: ListView(shrinkWrap: true, children: <Widget>[
Center(child: getCartonNumberStatus(context, _box!)), // Container(child: Row(children: [
LocalTitle(textKey: "box.type.title"), // Column(children: [
cartonTypeBox, // LocalTitle(textKey: "box.type.title"),
LocalTitle(textKey: "box.shipment_info"), // Align(
shipmentBox, // alignment: Alignment(-0.1,0.1),
// isSmallBag ? mixCartonNumberBox : Container(), // child: getCartonNumberStatus(context, _box!)),
isMixBox
? Container() // ],)
: isFromPackages // ]),),
? fcsIDBox Padding(padding: EdgeInsets.only(left: 30),
: Container(), child:
isMixBox Row(
? Container() mainAxisAlignment: MainAxisAlignment.end,
: isFromPackages children: [Expanded(child: cartonTypeBox,
? customerNameBox flex: 1,
: Container(), ),
isFromCartons Flexible(
? Row( child: cartonQrBox,
),
],)),
Padding(padding: EdgeInsets.only(left: 30),
child:
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [Expanded(child: shipmentBox,
flex: 1,
),
Flexible(
child: deliveryBox,
),
],)),
Padding(padding: EdgeInsets.only(left: 30),
child:
Row(
children: [ children: [
Flexible(child: consigneeBox), Flexible(child: customerNameBox,
Flexible(child: shipperBox) ),
],
) Flexible(
: Container(), child: consigneeNameBox,
),
Flexible(child:
Column(
children: [
Icon(Ionicons.document_text_outline),
Text("Bill to",style:TextStyle(color:Colors.blue))
]
)),
],)),
//LocalTitle(textKey: "box.shipment_info"),
// shipmentBox,
// isSmallBag ? mixCartonNumberBox : Container(),
// isMixBox
// ? Container()
// : isFromPackages
// ? fcsIDBox
// : Container(),
// isMixBox
// ? Container()
// : isFromPackages
// ? customerNameBox
// : Container(),
// isFromCartons
// ? Row(
// children: [
// Flexible(child: consigneeBox),
// Flexible(child: shipperBox)
// ],
// )
// : Container(),
Padding(padding: EdgeInsets.only(left: 30),
child:
packageBox),
isMixBox ? mixTypeBox : Container(), isMixBox ? mixTypeBox : Container(),
isMixBox ? LocalTitle(textKey: "box.mix_caton_title") : Container(), isMixBox ? LocalTitle(textKey: "box.mix_caton_title") : Container(),
isMixBox isMixBox
@@ -367,7 +442,7 @@ class _CartonInfoState extends State<CartonInfo> {
packages: _box!.packages, packages: _box!.packages,
) )
: Container(), : Container(),
isMixBox ? Container() : LocalTitle(textKey: "box.cargo.type"), // isMixBox ? Container() : LocalTitle(textKey: "box.cargo.type"),
isMixBox ? Container() : cargoTableBox, isMixBox ? Container() : cargoTableBox,
...(isFromPackages || isFromCartons ...(isFromPackages || isFromCartons
? [ ? [

View File

@@ -8,6 +8,7 @@ import 'package:fcs/pages/widgets/progress.dart';
import 'package:fcs/pagination/paginator_listview.dart'; import 'package:fcs/pagination/paginator_listview.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_vector_icons/flutter_vector_icons.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../domain/entities/fcs_shipment.dart'; import '../../domain/entities/fcs_shipment.dart';
import 'fcs_shipment_editor.dart'; import 'fcs_shipment_editor.dart';
@@ -20,7 +21,7 @@ class FcsShipmentList extends StatefulWidget {
class _FcsShipmentListState extends State<FcsShipmentList> { class _FcsShipmentListState extends State<FcsShipmentList> {
bool _isLoading = false; bool _isLoading = false;
int _selectedIndex = 1; int _selectedIndex = 0;
@override @override
void initState() { void initState() {
@@ -41,40 +42,14 @@ class _FcsShipmentListState extends State<FcsShipmentList> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
var shipmentModel = Provider.of<FcsShipmentModel>(context); var shipmentModel = Provider.of<FcsShipmentModel>(context);
final popupMenu = LocalPopupMenuButton(
popmenus: [
LocalPopupMenu(
id: 0, text: "All", selected: shipmentModel.selectedIndex == 0),
LocalPopupMenu(
id: 1, text: "Pending", selected: shipmentModel.selectedIndex == 1),
LocalPopupMenu(
id: 2,
text: "Processing",
selected: shipmentModel.selectedIndex == 2),
LocalPopupMenu(
id: 3, text: "Shipped", selected: shipmentModel.selectedIndex == 3),
LocalPopupMenu(
id: 4, text: "Arrived", selected: shipmentModel.selectedIndex == 4),
LocalPopupMenu(
id: 5,
text: "Invoiced",
selected: shipmentModel.selectedIndex == 5),
LocalPopupMenu(
id: 6, text: "Canceled", selected: shipmentModel.selectedIndex == 6)
],
popupMenuCallback: (p) {
setState(() {
_selectedIndex = p.id;
});
context.read<FcsShipmentModel>().onChanged(_selectedIndex);
},
);
return LocalProgress( return LocalProgress(
inAsyncCall: _isLoading, inAsyncCall: _isLoading,
child: Scaffold( child: Scaffold(
appBar: LocalAppBar( appBar: LocalAppBar(
labelKey: "FCSshipment.list.title", actions: [popupMenu]), labelKey: "FCSshipment.list.title", actions: [
//popupMenu,
_menuFilteringWidget(context),
]),
floatingActionButton: FloatingActionButton.extended( floatingActionButton: FloatingActionButton.extended(
onPressed: () { onPressed: () {
_newShipment(); _newShipment();
@@ -93,4 +68,62 @@ class _FcsShipmentListState extends State<FcsShipmentList> {
Navigator.of(context) Navigator.of(context)
.push(CupertinoPageRoute(builder: (context) => FcsShipmentEditor())); .push(CupertinoPageRoute(builder: (context) => FcsShipmentEditor()));
} }
Widget _menuFilteringWidget(BuildContext context) {
return PopupMenuButton<LocalPopupMenu>(
splashRadius: 25,
padding: const EdgeInsets.only(right: 15),
elevation: 3.2,
tooltip: 'This is tooltip',
onSelected: (choice) async {
setState(() {
_selectedIndex = choice.id;
});
await context.read<FcsShipmentModel>().onChanged(choice.id);
},
icon: Stack(
alignment: Alignment.center,
children: <Widget>[
const Icon(
Ionicons.filter,
color: Colors.white,
),
_selectedIndex != 0
? Positioned(
bottom: 15,
right: 0,
child: Container(
width: 10,
height: 10,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: Colors.red,
),
),
)
: Container()
],
),
itemBuilder: (BuildContext context) {
return shipFiteringMenu.map((LocalPopupMenu choice) {
return PopupMenuItem<LocalPopupMenu>(
value: choice,
child: Row(
children: <Widget>[
Flexible(child: Text("${choice.text}")),
const SizedBox(
width: 10,
),
_selectedIndex == choice.id
? const Icon(
Icons.check,
color: Colors.grey,
)
: const SizedBox(),
],
),
);
}).toList();
});
}
} }

View File

@@ -6,6 +6,7 @@ import 'package:provider/provider.dart';
class DisplayText extends StatelessWidget { class DisplayText extends StatelessWidget {
final String? text; final String? text;
final String? text1;
final String? labelTextKey; final String? labelTextKey;
final IconData? iconData; final IconData? iconData;
final int? maxLines; final int? maxLines;
@@ -13,15 +14,18 @@ class DisplayText extends StatelessWidget {
final Color? borderColor; final Color? borderColor;
final Widget? icon; final Widget? icon;
const DisplayText({ const DisplayText({
Key? key, Key? key,
this.text, this.text,
this.text1,
this.labelTextKey, this.labelTextKey,
this.iconData, this.iconData,
this.maxLines = 1, this.maxLines = 1,
this.withBorder = false, this.withBorder = false,
this.borderColor, this.borderColor,
this.icon, this.icon,
}) : super(key: key); }) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -46,12 +50,13 @@ class DisplayText extends StatelessWidget {
: icon! : icon!
: Padding( : Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
left: .0, right: 15.0, top: 8.0, bottom: 8.0), left: .0, right: 15, top: 8.0, bottom: 8.0),
child: Icon( child: Icon(
iconData, iconData,
color: primaryColor, color: primaryColor,
), ),
), ),
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@@ -68,6 +73,12 @@ class DisplayText extends StatelessWidget {
text!, text!,
style: textStyle, style: textStyle,
), ),
text1 == null
? Container()
: Text(
text1!,
style: textStyle,
),
], ],
), ),
), ),

View File

@@ -13,3 +13,13 @@ class LocalPopupMenu {
this.highlight = false, this.highlight = false,
this.enabled = true}); this.enabled = true});
} }
List<LocalPopupMenu> shipFiteringMenu = <LocalPopupMenu>[
LocalPopupMenu(id: 0, text :"All"),
LocalPopupMenu(id: 1, text: "Pending"),
LocalPopupMenu(id: 2, text: "Processing"),
LocalPopupMenu(id: 3, text: "Shipped"),
LocalPopupMenu(id: 4, text: "Arrived"),
LocalPopupMenu(id: 5, text: "Invoiced"),
LocalPopupMenu(id: 6, text: "Canceled"),
];