import 'package:cs_resources/constants/color_constants.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:widgets/ext/ex_widget.dart'; import 'package:widgets/load_state_layout.dart'; import 'package:widgets/my_button.dart'; import 'package:widgets/my_text_view.dart'; import 'package:widgets/search_app_bar.dart'; import 'package:widgets/widget_export.dart'; import 'applied_staff_item.dart'; import 'job_applied_controller.dart'; import 'package:plugin_basic/base/base_state.dart'; import 'package:plugin_basic/base/base_stateful_page.dart'; import 'package:plugin_basic/utils/ext_get_nav.dart'; import 'package:router/path/router_path.dart'; import 'package:shared/utils/screen_util.dart'; import 'package:widgets/my_appbar.dart'; import 'job_applied_state.dart'; /** * 已申请的页面,可以签到签出、加人、修改状态、评论等操作 */ class JobAppliedPage extends BaseStatefulPage { JobAppliedPage({Key? key}) : super(key: key); //启动当前页面 static void startInstance(String? jobId) { return Get.start(RouterPath.JOB_APPLIED_STAFF_LIST, arguments: {'jobId': jobId}); } @override JobAppliedController createRawController() { return JobAppliedController(); } @override State createState() => _JobAppliedState(); } class _JobAppliedState extends BaseState { late JobAppliedState state; @override void initState() { super.initState(); state = controller.state; state.jobId = Get.arguments['jobId']; } @override Widget build(BuildContext context) { return autoCtlGetBuilder(builder: (controller) { return SafeArea( bottom: true, top: false, child: Container( width: double.infinity, height: double.infinity, padding: EdgeInsets.only(top: ScreenUtil.getStatusBarH(context)), decoration: const BoxDecoration( gradient: LinearGradient( colors: [ Color(0xFF091D44), Color(0xFF245A8A), Color(0xFF7F7CEC), ], begin: Alignment.topCenter, end: Alignment.bottomCenter, ), ), child: Column( children: [ MyAppBar.titleBar( context, state.jobInfo?.jobTitle ?? "Title".tr, subTitle: "(${state.jobInfo?.jobDate ?? "-"})", subTitleColor: ColorConstants.textGrayAECAE5, ), //搜索的条件 Row( children: [ SearchAppBar( value: state.keyword, onSearch: (keyword) { controller.doSearch(keyword); }, hintText: "Staff Name".tr, controller: state.searchController, ).expanded(), MyButton( onPressed: () { FocusScope.of(context).unfocus(); controller.resetFiltering(); }, text: "Reset".tr, textColor: ColorConstants.white, backgroundColor: hexToColor("#2BA9F9", opacity: 0.5), radius: 20, minWidth: 60, minHeight: 35, ), ], ).marginOnly(top: 10, left: 15, right: 15, bottom: 5), // 添加按钮 Visibility( visible: state.jobInfo?.canAppend == true, child: MyButton( type: ClickType.throttle, milliseconds: 500, onPressed: () { FocusScope.of(context).unfocus(); controller.showAddStaffDialog(); }, text: "Add Staff".tr, textColor: ColorConstants.white, fontSize: 16, radius: 20, backgroundColor: hexToColor("#FFBB1B"), fontWeight: FontWeight.w500, ).marginOnly(left: 15, right: 15, top: 5, bottom: 10), ), //底部的列表 EasyRefresh( controller: controller.refreshController, onRefresh: controller.onRefresh, onLoad: controller.loadMore, child: LoadStateLayout( state: controller.loadingState, errorMessage: controller.errorMessage, errorRetry: () { controller.retryRequest(); }, successSliverWidget: [ SliverList( delegate: SliverChildBuilderDelegate( (context, index) { return AppliedStaffItem( index: index, jobInfo: state.jobInfo, item: state.datas[index], onEditAction: () { controller.gotoAppliedEditPage(state.datas[index]); }, onRemarkAction: () { controller.showRemarkDialog(state.datas[index]); }, onStatusAction: () { controller.gotoAppliedWorkflowPage(state.datas[index]); }, onItemAction: () { controller.doSelectedOrNot(state.datas[index]); }, onMemberAction: (){ controller.gotoStaffDetailPage(state.datas[index]); }, ); }, childCount: state.datas.length, )) ], ), ).expanded(), Row( mainAxisSize: MainAxisSize.max, children: [ //批量Approve MyTextView( "Operation Approve".tr, fontSize: 17, isFontMedium: true, boxHeight: 48, onClick: () { controller.operationApprove(); }, alignment: Alignment.center, textAlign: TextAlign.center, textColor: Colors.white, backgroundColor: Color(0XFF0AC074), ).expanded(), //批量修改时间 MyTextView( "Batch Modify".tr, fontSize: 17, isFontMedium: true, boxHeight: 48, onClick: () { controller.showBatchModifyDialog(); }, alignment: Alignment.center, textAlign: TextAlign.center, textColor: Colors.white, backgroundColor: Color(0XFFFFBB1B), ).expanded(), ], ), ], ), ), ); }); } }