Enhancements

pull/1/head
zaid_daoud 2 years ago
parent 575005ebdd
commit a1f2960fad

@ -16,6 +16,7 @@ import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart';
import '../../../controllers/api_routes/http_status_manger.dart'; import '../../../controllers/api_routes/http_status_manger.dart';
import '../../../controllers/localization/localization.dart'; import '../../../controllers/localization/localization.dart';
import '../../../controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart';
import '../../../models/subtitle.dart'; import '../../../models/subtitle.dart';
import '../../widgets/app_text_form_field.dart'; import '../../widgets/app_text_form_field.dart';
import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_back_button.dart';
@ -49,6 +50,9 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
void initState() { void initState() {
_subWorkOrders = SearchWorkOrder(assignedEmployee: widget.workOrder.assignedEmployee, callRequest: CallRequest()); _subWorkOrders = SearchWorkOrder(assignedEmployee: widget.workOrder.assignedEmployee, callRequest: CallRequest());
_serviceReport = ServiceReport(id: widget.workOrder.id, type: widget.workOrder.assetType, equipmentStatus: widget.workOrder.equipmentStatus); _serviceReport = ServiceReport(id: widget.workOrder.id, type: widget.workOrder.assetType, equipmentStatus: widget.workOrder.equipmentStatus);
if (context.mounted) {
Provider.of<ServiceRequestFaultDescriptionProvider>(context, listen: false).reset();
}
super.initState(); super.initState();
} }
@ -182,7 +186,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
height: 4, height: 4,
), ),
ServiceReportFaultDescription( ServiceReportFaultDescription(
requestId: widget.workOrder?.id?.toString(), requestId: widget.workOrder?.callRequest?.id?.toString(),
initialValue: _subWorkOrders.faultDescription, initialValue: _subWorkOrders.faultDescription,
onSelect: (status) { onSelect: (status) {
_subWorkOrders.faultDescription = status; _subWorkOrders.faultDescription = status;
@ -261,6 +265,7 @@ class _CreateSubWorkOrderPageState extends State<CreateSubWorkOrderPage> {
image: _image, image: _image,
onPick: (image) { onPick: (image) {
_image = image; _image = image;
_subWorkOrders.attachmentsWorkOrder ??= [];
_subWorkOrders.attachmentsWorkOrder.add(AttachmentsWorkOrder(name: "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}")); _subWorkOrders.attachmentsWorkOrder.add(AttachmentsWorkOrder(name: "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}"));
}, },
), ),

@ -1,11 +1,14 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:test_sa/models/part.dart';
import 'package:test_sa/models/service_request/search_work_order.dart'; import 'package:test_sa/models/service_request/search_work_order.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import '../../../controllers/localization/localization.dart'; import '../../../controllers/localization/localization.dart';
import '../../../models/subtitle.dart'; import '../../../models/subtitle.dart';
import '../../widgets/app_text_form_field.dart'; import '../../app_style/sizing.dart';
import '../../widgets/buttons/app_button.dart'; import '../../widgets/buttons/app_button.dart';
import '../../widgets/parts/auto_complete_parts_field.dart';
import '../../widgets/parts/part_item.dart';
import '../../widgets/titles/app_sub_title.dart'; import '../../widgets/titles/app_sub_title.dart';
class SparePartsBottomSheet extends StatefulWidget { class SparePartsBottomSheet extends StatefulWidget {
@ -19,6 +22,7 @@ class SparePartsBottomSheet extends StatefulWidget {
class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> { class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final SearchWorkOrder _workOrder = SearchWorkOrder(); final SearchWorkOrder _workOrder = SearchWorkOrder();
bool _validate = false;
@override @override
void initState() { void initState() {
@ -52,93 +56,89 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
Expanded( Expanded(
child: Padding( child: Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: SingleChildScrollView(
child: SingleChildScrollView( child: SingleChildScrollView(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
const SizedBox(height: 8), Container(
if (_workOrder.sparePartsWorkOrders?.length != null) width: double.infinity,
ListView.builder( padding: const EdgeInsets.all(16),
itemCount: _workOrder.sparePartsWorkOrders?.length, margin: const EdgeInsets.symmetric(vertical: 16),
shrinkWrap: true, decoration: BoxDecoration(color: AColors.grey, borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), boxShadow: const [
physics: const NeverScrollableScrollPhysics(), BoxShadow(
itemBuilder: (context, index) { color: AColors.grey,
final wo = _workOrder.sparePartsWorkOrders[index]; offset: Offset(0, -1),
return Column( )
]),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
Expanded(
flex: 3,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
ATextFormField( ASubTitle(subtitle.partNumber),
labelText: _workOrder?.sparePartsWorkOrders[index]?.sparePart?.partNo ?? "Part No.", _validate && _workOrder.sparePartsWorkOrders == null
onChange: (value) { ? ASubTitle(
_workOrder.sparePartsWorkOrders[index].sparePart = SparePart(partNo: value); subtitle.requiredWord,
color: Colors.red,
)
: const SizedBox.shrink(),
const SizedBox(height: 4),
AutoCompletePartsField(
onPick: (part) {
_workOrder.sparePartsWorkOrders ??= [];
_workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders(
id: part.id,
qty: part.quantity,
sparePart: SparePart(id: part.reportPartID, partName: part.name, partNo: part.code),
));
}, },
), ),
// const SizedBox(height: 8), ],
// ATextFormField(
// labelText: "Description",
// hintText: "Add Some Text",
// textInputType: TextInputType.multiline,
// onSaved: (value) {
// _workOrder.sparePartsWorkOrders[index].sparePart = value;
// },
// ),
const SizedBox(height: 8),
ATextFormField(
labelText: _workOrder?.sparePartsWorkOrders[index]?.qty?.toString() ?? "Quantity",
textInputType: TextInputType.number,
onSaved: (value) {
_workOrder.sparePartsWorkOrders[index].qty = double.tryParse(value ?? "");
},
), ),
const SizedBox(height: 8),
InkWell(
onTap: () {
_workOrder.sparePartsWorkOrders.removeWhere(
(element) => (element.sparePart?.partNo == wo.sparePart?.partNo && element.id == wo.id),
);
setState(() {});
},
child: Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
const Icon(Icons.delete, color: Colors.red),
Text(
"Remove this part",
style: Theme.of(context).textTheme.bodySmall,
), ),
], ],
), ),
SizedBox(
height: 8 * AppStyle.getScaleFactor(context),
), ),
const SizedBox(height: 8), if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false)
Row(
children: [
Expanded(flex: 3, child: Text(subtitle.number)),
Expanded(flex: 1, child: Text(subtitle.quantity)),
], ],
);
},
), ),
const Divider(), if (_workOrder.sparePartsWorkOrders?.isNotEmpty ?? false)
const SizedBox(height: 8), Column(
InkWell( children: List.generate(_workOrder.sparePartsWorkOrders?.length, (index) {
onTap: () { final spare = _workOrder.sparePartsWorkOrders[index];
_workOrder.sparePartsWorkOrders ??= []; Part part = Part(
_workOrder.sparePartsWorkOrders.add(SparePartsWorkOrders()); id: spare.id,
reportPartID: spare.sparePart?.id,
code: spare.sparePart?.partNo,
name: spare.sparePart?.partName,
quantity: spare.qty,
);
return PartItem(
part: part,
onDelete: (part) {
_workOrder.sparePartsWorkOrders.remove(SparePartsWorkOrders(
id: part.id,
qty: part.quantity,
sparePart: SparePart(id: part.reportPartID, partName: part.name, partNo: part.code),
));
setState(() {}); setState(() {});
}, },
child: Container( );
decoration: BoxDecoration( }),
color: AColors.primaryColor.withOpacity(0.15),
borderRadius: BorderRadius.circular(10),
border: Border.all(color: AColors.primaryColor),
),
child: ListTile(
title: Text(
"Add Part",
style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: AColors.primaryColor),
),
trailing: const Icon(
Icons.add_circle,
color: AColors.primaryColor,
size: 20,
),
), ),
const SizedBox(height: 16),
],
), ),
), ),
const SizedBox(height: 24), const SizedBox(height: 24),
@ -147,7 +147,6 @@ class _SparePartsBottomSheetState extends State<SparePartsBottomSheet> {
), ),
), ),
), ),
),
AButton( AButton(
text: subtitle.submit, text: subtitle.submit,
onPressed: () async { onPressed: () async {

@ -19,7 +19,7 @@ class _PartItemState extends State<PartItem> {
//final _subtitle = AppLocalization.of(context).subtitle; //final _subtitle = AppLocalization.of(context).subtitle;
return Column( return Column(
children: [ children: [
Divider(), const Divider(),
Row( Row(
children: [ children: [
Expanded( Expanded(
@ -30,7 +30,7 @@ class _PartItemState extends State<PartItem> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
widget.part.code, widget?.part?.code ?? "",
style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.bold), style: Theme.of(context).textTheme.bodyText1.copyWith(fontSize: 12, fontWeight: FontWeight.bold),
), ),
), ),
@ -68,7 +68,7 @@ class _PartItemState extends State<PartItem> {
], ],
), ),
widget.part.name == null widget.part.name == null
? SizedBox.shrink() ? const SizedBox.shrink()
: Text( : Text(
widget.part.name, widget.part.name,
style: Theme.of(context).textTheme.caption.copyWith(fontSize: 11, fontWeight: FontWeight.bold), style: Theme.of(context).textTheme.caption.copyWith(fontSize: 11, fontWeight: FontWeight.bold),
@ -76,7 +76,8 @@ class _PartItemState extends State<PartItem> {
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
], ],
)), ),
),
AIconButton2( AIconButton2(
iconData: Icons.close, iconData: Icons.close,
color: Colors.red, color: Colors.red,

Loading…
Cancel
Save