diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart index 7a82560..1fcec9a 100644 --- a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/home/logic.dart @@ -45,6 +45,11 @@ class PoultryFarmInspectionHomeLogic extends GetxController RxInt workerContractStatusIndex = (-1).obs; RxInt newBeneficiaryRequestIndex = (-1).obs; + //step4 + RxInt inspectorConclusionIndex = (-1).obs; + TextEditingController inspectorConclusionDescriptionController = + TextEditingController(); + @override void onReady() { super.onReady(); @@ -126,13 +131,21 @@ class PoultryFarmInspectionHomeLogic extends GetxController index == generatorOperatingStatusIndex.value ? -1 : index; } - void setWorkerContractStatusIndex(int index) { - workerContractStatusIndex.value = index == workerContractStatusIndex.value ? -1 : index; + workerContractStatusIndex.value = index == workerContractStatusIndex.value + ? -1 + : index; } - void setNewBeneficiaryRequestIndex(int index) { - newBeneficiaryRequestIndex.value = index == newBeneficiaryRequestIndex.value ? -1 : index; + newBeneficiaryRequestIndex.value = index == newBeneficiaryRequestIndex.value + ? -1 + : index; + } + + void setInspectorConclusionIndex(int index) { + inspectorConclusionIndex.value = index == inspectorConclusionIndex.value + ? -1 + : index; } } diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart index 0a31f0f..d3f2ba2 100644 --- a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/cu_bottom_sheet.dart @@ -1,16 +1,17 @@ import 'package:flutter/material.dart'; -import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/step2_page.dart'; import 'package:rasadyar_core/core.dart'; import '../home/logic.dart'; import 'step1_page.dart'; +import 'step2_page.dart'; import 'step3_page.dart'; +import 'step4_page.dart'; Widget addOrEditBottomSheet(PoultryFarmInspectionHomeLogic controller) { List pages = [ step1Page(controller), step2Page(controller), step3Page(controller), - Container(color: Colors.green), + step4Page(controller), ]; return BaseBottomSheet( diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart index 1ef8c99..7a3bd80 100644 --- a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step3_page.dart @@ -25,7 +25,7 @@ Widget step3Page(PoultryFarmInspectionHomeLogic controller) { SizedBox(height: 30.h), Container( - height: 410.h, + height: 550.h, clipBehavior: Clip.none, width: Get.width, child: farmInfoWidget( @@ -46,7 +46,7 @@ Widget step3Page(PoultryFarmInspectionHomeLogic controller) { child: humanResources(controller), ), ), - SizedBox(height: 24.h), + SizedBox(height: 24.h), Container( height: 380.h, @@ -681,13 +681,13 @@ Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { controller: controller.nameOfThePoultryFarmUnit, label: 'مبلغ', filled: true, - + filledColor: AppColor.bgLight, - ), RTextField( + ), RTextField( controller: controller.nameOfThePoultryFarmUnit, label: 'سال دریافت', filled: true, - + filledColor: AppColor.bgLight, ), @@ -725,7 +725,7 @@ Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { ), formChips( onTap: (index) => - controller.setNewBeneficiaryRequestIndex(index), + controller.setNewBeneficiaryRequestIndex(index), selectedIndex: data.value, index: 1, label: 'تسهیلات', @@ -736,7 +736,7 @@ Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { selectedIndex: data.value, index: 2, label: 'واکسن', - ), formChips( + ), formChips( onTap: (index) => controller.setNewBeneficiaryRequestIndex(index), selectedIndex: data.value, diff --git a/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart new file mode 100644 index 0000000..b739b86 --- /dev/null +++ b/packages/chicken/lib/presentation/pages/poultry_farm_inspection/widgets/step4_page.dart @@ -0,0 +1,511 @@ +import 'package:flutter/material.dart'; +import 'package:rasadyar_chicken/presentation/pages/poultry_farm_inspection/widgets/card_info.dart'; +import 'package:rasadyar_core/core.dart'; + +import '../home/logic.dart'; + +Widget step4Page(PoultryFarmInspectionHomeLogic controller) { + return SingleChildScrollView( + physics: BouncingScrollPhysics(), + child: Column( + children: [ + SizedBox(height: 35.h), + + Container( + height: 430.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'مستندات', + child: documents(controller), + ), + ), + + SizedBox(height: 30.h), + + Container( + height: 200.h, + clipBehavior: Clip.none, + width: Get.width, + child: farmInfoWidget( + controller: controller, + title: 'جمع‌بندی بازرس', + child: inspectorConclusion(controller), + ), + ), + SizedBox(height: 24.h), + ], + ), + ); +} + +Column documents(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SizedBox(height: 10.h), + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all( + width: 1, + color: AppColor.blackLightHover, + ), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'ثبت عکس سالن (حداقل ۳ زاویه) *', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all( + width: 1, + color: AppColor.blackLightHover, + ), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'ثبت عکس انبار نهاده‌ها', + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + cardInfo( + padding: EdgeInsets.fromLTRB(0, 12, 12, 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + height: 80.h, + width: 80.w, + padding: EdgeInsets.all(22), + decoration: BoxDecoration( + color: Color(0xFFE9E9E9), + border: Border.all( + width: 1, + color: AppColor.blackLightHover, + ), + borderRadius: BorderRadius.circular(8), + ), + child: Assets.vec.galleryAddSvg.svg(width: 36, height: 36), + ), + ], + ), + ), + + Text( + 'ثبت عکس تلفات', + + style: AppFonts.yekan14.copyWith(color: AppColor.textColorLight), + ), + ], + ), + ), + ], + ); +} + +ChoiceChip formChips({ + required int selectedIndex, + required int index, + required String label, + required Function(int) onTap, +}) { + return ChoiceChip( + selectedColor: AppColor.green1Normal, + labelStyle: index == selectedIndex + ? AppFonts.yekan14Bold.copyWith(color: Colors.white) + : AppFonts.yekan14.copyWith(color: AppColor.textColor), + surfaceTintColor: Colors.white, + checkmarkColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: index == selectedIndex + ? BorderSide.none + : BorderSide(width: 1, color: AppColor.blackLightHover), + ), + padding: EdgeInsets.symmetric(horizontal: 12, vertical: 6), + + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + label: Text(label), + selected: index == selectedIndex, + onSelected: (value) => onTap(index), + ); +} + +Column inspectorConclusion(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت کلی واحد', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => + controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 0, + label: 'تایید شده', + ), + formChips( + onTap: (index) => + controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 1, + label: 'نیازمند اصلاح', + ), + formChips( + onTap: (index) => + controller.setInspectorConclusionIndex(index), + selectedIndex: data.value, + index: 2, + label: 'پرریسک', + ), + ], + ); + }, controller.inspectorConclusionIndex), + ], + ), + ), + + RTextField( + controller: controller.inspectorConclusionDescriptionController, + hintText: 'توصیه‌ها / اخطارها / اقدامات اصلاحی ...', + maxLines: 3, + minLines: 3, + filled: true, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column agriculturalInput(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده مصرفی تا روز بازدید (کیلوگرم)', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده موجود در انبار', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'میزان نهاده خریداری‌شده و حمل‌نشده از بازارگاه', + filled: true, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'کیفیت دانه', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 0, + label: 'خوب', + ), + formChips( + onTap: (index) => controller.setSampleTypeIndex(index), + selectedIndex: data.value, + index: 1, + label: 'متوسط', + ), + formChips( + onTap: (index) => + controller.setGrainQualityInputIndex(index), + selectedIndex: data.value, + index: 2, + label: 'ضعیف', + ), + ], + ); + }, controller.grainQualityInputIndex), + ], + ), + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'فرمول دانه (در صورت ارائه)', + filled: true, + minLines: 3, + maxLines: 3, + filledColor: AppColor.bgLight, + ), + ], + ); +} + +Column humanResources(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد شاغل', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد بومی', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تعداد افراد غیر بومی', + filled: true, + maxLines: 3, + minLines: 3, + filledColor: AppColor.bgLight, + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'وضعیت قرارداد کارگران', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => + controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 0, + label: 'دائم', + ), + formChips( + onTap: (index) => + controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 1, + label: 'موقت', + ), + formChips( + onTap: (index) => + controller.setWorkerContractStatusIndex(index), + selectedIndex: data.value, + index: 2, + label: 'روزمزدی', + ), + ], + ); + }, controller.workerContractStatusIndex), + ], + ), + ), + + ResourceOverlayDropdown( + items: Resource.success(['آموزش‌ ندیده است', 'آموزش‌ دیده است']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => + Text(selected ?? 'آموزش‌دیده در حوزه بهداشت و امنیت زیستی'), + ), + ], + ); +} + +Column facilitiesAndSupport(PoultryFarmInspectionHomeLogic controller) { + return Column( + spacing: 10, + children: [ + SizedBox(height: 1.h), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'تسهیلات دریافتی فعال', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'نوع تسهیلات', + filled: true, + filledColor: AppColor.bgLight, + ), + + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'مبلغ', + filled: true, + + filledColor: AppColor.bgLight, + ), + RTextField( + controller: controller.nameOfThePoultryFarmUnit, + label: 'سال دریافت', + filled: true, + + filledColor: AppColor.bgLight, + ), + + ResourceOverlayDropdown( + items: Resource.success(['دریافت نشده', 'دریافت شده']), + + itemBuilder: (item) => Text(item), + labelBuilder: (selected) => Text(selected ?? 'وضعیت بازپرداخت'), + ), + + cardInfo( + padding: EdgeInsets.fromLTRB(12, 12, 12, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 9, + children: [ + Text( + 'درخواست جدید بهره‌بردار', + style: AppFonts.yekan14Bold.copyWith(color: AppColor.textColor2), + ), + + ObxValue((data) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + formChips( + onTap: (index) => + controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 0, + label: 'نهاده', + ), + formChips( + onTap: (index) => + controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 1, + label: 'تسهیلات', + ), + formChips( + onTap: (index) => + controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 2, + label: 'واکسن', + ), + formChips( + onTap: (index) => + controller.setNewBeneficiaryRequestIndex(index), + selectedIndex: data.value, + index: 3, + label: 'تجهیزات', + ), + ], + ); + }, controller.newBeneficiaryRequestIndex), + ], + ), + ), + ], + ); +}