From 73cc2143bc45b02af9cf3d90f7130ddc0bd98e53 Mon Sep 17 00:00:00 2001 From: nextwo <1234> Date: Tue, 20 Jun 2023 09:28:06 +0300 Subject: [PATCH] work order --- .../service_report_last_calls_provider.dart | 2 +- .../create_sub_workorder_page.dart | 141 ++++++++++++++---- .../sub_workorder/workorder_details.dart | 42 +++--- .../pages/sub_workorder/workorder_update.dart | 2 +- .../service_report_equipment_status.dart | 18 +-- 5 files changed, 147 insertions(+), 58 deletions(-) diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart index a6f39ab8..3e4741b9 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart @@ -57,7 +57,7 @@ class ServiceReportLastCallsProvider extends ChangeNotifier { try { // todo request new api from backend to make filter work response = await ApiManager.instance.get( - "${URLs.getServiceReportLastCalls}?parentWOId=$woId&isAdd=true&id=${id ?? 0}&typeTransaction=$typeName", + "${URLs.getServiceReportLastCalls}?parentWOId=${woId??id}&isAdd=true&id=${id ?? 0}&typeTransaction=$typeName", ); // response = await get( // Uri.parse( diff --git a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart index bbf8d7cf..1eec8f2f 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -2,6 +2,9 @@ import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; +import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/service_report.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/pages/sub_workorder/spare_parts_details_bottom_sheet.dart'; @@ -10,11 +13,16 @@ import 'package:test_sa/views/pages/sub_workorder/workorder_details.dart'; import '../../../controllers/api_routes/http_status_manger.dart'; import '../../../controllers/localization/localization.dart'; +import '../../../models/fault_description.dart'; import '../../../models/subtitle.dart'; +import '../../widgets/app_text_form_field.dart'; import '../../widgets/buttons/app_back_button.dart'; import '../../widgets/buttons/app_button.dart'; import '../../widgets/date_and_time/date_picker.dart'; +import '../../widgets/images/mini_one_image_picker.dart'; +import '../../widgets/status/report/fault_desc_menu.dart'; import '../../widgets/status/report/service_report_equipment_status.dart'; +import '../../widgets/status/report/service_report_fault_description.dart'; import '../../widgets/status/report/service_report_reasons.dart'; import '../../widgets/titles/app_sub_title.dart'; @@ -29,40 +37,18 @@ class CreateSubWorkOrderPage extends StatefulWidget { class _CreateSubWorkOrderPageState extends State { final GlobalKey _formKey = GlobalKey(); + SearchWorkOrders _searchWorkOrders =SearchWorkOrders(); + Lookup _serviceReportReason=Lookup(); + ServiceReport _serviceReport; @override Widget build(BuildContext context) { final Subtitle subtitle = AppLocalization.of(context).subtitle; + _serviceReport =ServiceReport(id: widget.workOrder.id, type: Lookup(name: widget.workOrder.assetType),equipmentStatus: Lookup(name: widget.workOrder.equipmentStatus) ); return Scaffold( body: SafeArea( child: SingleChildScrollView( child: Column( children: [ - // ServiceReportEquipmentStatusMenu( - // report: _serviceReport, - // request: widget.request, - // onSelect: (status) { - // _serviceReport.equipmentStatus = status; - // }, - // ), - // ADatePicker( - // // date: _from, - // // from: DateTime(1950), - // onDatePicker: (date) { - // // _from = date; - // // setState(() {}); - // // widget.onPickFrom(date); - // }, - // ), - // ASubTitle("_subtitle.reasons"), - // const SizedBox( - // height: 4, - // ), - // ServiceReportReasonsMenu( - // initialValue: _serviceReport.reason, - // onSelect: (status) { - // _serviceReport.reason = status; - // }, - // ), Container( color: AColors.primaryColor, padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), @@ -91,7 +77,97 @@ class _CreateSubWorkOrderPageState extends State { padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 16), child: Column( children: [ - WorkOrderDetails(), + WorkOrderDetails(item: widget.workOrder,), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle("Equipment status"), + const SizedBox( + height: 4, + ), + ServiceReportEquipmentStatusMenu( + report: _serviceReport, + onSelect: (status) { + _searchWorkOrders.equipmentStatus=status.name; + _serviceReport.equipmentStatus=status; + }, + ), + ], + ), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle("Return to Service"), + const SizedBox( + height: 4, + ), + Row( + children: [ + Expanded( + child: ADatePicker( + from: DateTime(1950), + onDatePicker: (date) { + setState(() {}); + }, + ), + ), + ], + ), + ], + ), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle("Failure "+subtitle.reasons), + const SizedBox( + height: 4, + ), + ServiceReportReasonsMenu( + initialValue: _serviceReportReason, + onSelect: (status) { + _serviceReportReason=status; + _searchWorkOrders.reason = status.name; + }, + ), + ], + ), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle(subtitle.faultDescription), + const SizedBox( + height: 4, + ), + ServiceReportFaultDescription( + requestId: widget.workOrder.id.toString(), + initialValue: FaultDescription(id: _searchWorkOrders?.faultDescription?.id, defectName: _searchWorkOrders?.faultDescription?.defectName, workPerformed: _searchWorkOrders?.faultDescription?.workPerformed, estimatedTime: _searchWorkOrders?.faultDescription?.estimatedTime), + onSelect: (status) { + _searchWorkOrders.faultDescription = ModelDefRelatedDefects(id: status?.id, defectName: status?.defectName, workPerformed: status?.workPerformed, estimatedTime: status?.estimatedTime); + }, + ), + ], + ), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ASubTitle("Solution"), + const SizedBox( + height: 4, + ), + ATextFormField( + labelText: "Add some text", + textInputType: TextInputType.multiline, + onSaved: (value) { + + }, + ), + ], + ), const SizedBox(height: 8), InkWell( onTap: () { @@ -144,6 +220,16 @@ class _CreateSubWorkOrderPageState extends State { ), ), ), + const SizedBox(height: 8), + AMiniOneImagePicker( + //error: _validate && _serviceReport.image == null, + //image: _image, + onPick: (image) { + //_image = image; + // _serviceReport.image = "${image.path.split("/").last}|${base64Encode(image.readAsBytesSync())}"; + }, + ), + const SizedBox(height: 50), ], ), ), @@ -157,6 +243,7 @@ class _CreateSubWorkOrderPageState extends State { child: AButton( text: subtitle.create, onPressed: () async { + _searchWorkOrders.parentWOId=widget.workOrder.id.toString(); // validate = true; // if (!_formKey.currentState.validate()) { // setState(() {}); diff --git a/lib/views/pages/sub_workorder/workorder_details.dart b/lib/views/pages/sub_workorder/workorder_details.dart index 23467b4a..4a67e10e 100644 --- a/lib/views/pages/sub_workorder/workorder_details.dart +++ b/lib/views/pages/sub_workorder/workorder_details.dart @@ -1,15 +1,19 @@ import 'package:flutter/material.dart'; +import '../../../controllers/localization/localization.dart'; import '../../../models/service_request/search_work_order.dart'; +import '../../../models/subtitle.dart'; import '../../app_style/colors.dart'; import '../../app_style/sizing.dart'; class WorkOrderDetails extends StatelessWidget { final SearchWorkOrders item; - const WorkOrderDetails({@required this.item,Key key}) : super(key: key); + WorkOrderDetails({@required this.item,Key key}) : super(key: key); + Subtitle _subtitle; @override Widget build(BuildContext context) { + _subtitle = AppLocalization.of(context).subtitle; return Column( children: [ Container( @@ -20,26 +24,25 @@ class WorkOrderDetails extends StatelessWidget { color: Color(0xffefefef), ), borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), - // boxShadow: const [ - // AppStyle.boxShadow - // ] ), child: Column( children: [ - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), - _buildRow("call id", "", context), + _buildRow(_subtitle.callId, item.callRequest?.id?.toString()??"", context), + _buildRow(_subtitle.assetNumber, item.callRequest?.asset?.assetNumber??"", context), + _buildRow("WO No", item.workOrderNo, context), + _buildRow(_subtitle.assetName, item.callRequest?.asset?.assetNumber??'', context), + _buildRow(_subtitle.department, item.callRequest?.asset?.department??'', context), + _buildRow(_subtitle.assetSN, item.callRequest?.asset?.assetSerialNo??'', context), + _buildRow(_subtitle.model, item.callRequest?.asset?.modelDefinition?.modelName??"", context), + _buildRow("Manufacturer", item.callRequest?.asset?.modelDefinition?.manufacturerName??"", context), + _buildRow(_subtitle.site, item.callRequest?.asset?.site?.custName??"", context), ], ), ), + const SizedBox(height: 8), Container( padding: EdgeInsets.all(10), + height: 55, decoration: BoxDecoration( color: AColors.inputFieldBackgroundColor, border: Border.all( @@ -47,22 +50,21 @@ class WorkOrderDetails extends StatelessWidget { ), borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), ), - child: _buildRow("call id", "", context),) + child: _buildRow("Asset type", item.callRequest?.asset?.assetType??'', context),) ], ); } Widget _buildRow(String title, String value, BuildContext context){ return Row( + mainAxisAlignment: MainAxisAlignment.start, children: [ - Expanded( - child: Text( - "Call Id", - style: Theme.of(context).textTheme.subtitle2.copyWith(), - ), + Text( + title+" : ", + style: Theme.of(context).textTheme.subtitle2.copyWith(fontWeight: FontWeight.bold), ), //if (item.clientName != null) Text( - '', + value, style: Theme.of(context).textTheme.subtitle2.copyWith(), ), ], diff --git a/lib/views/pages/sub_workorder/workorder_update.dart b/lib/views/pages/sub_workorder/workorder_update.dart index 71f589c5..0697b182 100644 --- a/lib/views/pages/sub_workorder/workorder_update.dart +++ b/lib/views/pages/sub_workorder/workorder_update.dart @@ -55,7 +55,7 @@ class _WorkOrderUpdateState extends State { ], ), ), - WorkOrderDetails(item: widget.item,) + //WorkOrderDetails(item: widget.item,) ], ), ), diff --git a/lib/views/widgets/status/report/service_report_equipment_status.dart b/lib/views/widgets/status/report/service_report_equipment_status.dart index 1a0382b1..1af9ac9c 100644 --- a/lib/views/widgets/status/report/service_report_equipment_status.dart +++ b/lib/views/widgets/status/report/service_report_equipment_status.dart @@ -44,10 +44,10 @@ class _ServiceReportEquipmentStatusMenuState extends State