From 217310e51150c7c71e77905b5549d5dbacd3589b Mon Sep 17 00:00:00 2001 From: hs <873121290@qq.com> Date: Wed, 30 Jul 2025 10:51:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=AE=89=E5=85=A8=E6=8E=AA?= =?UTF-8?q?=E6=96=BD=E7=A1=AE=E8=AE=A4=E4=BA=BA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/icon-apps/home-xj.png | Bin 0 -> 2846 bytes assets/images/xj_finish.png | Bin 0 -> 1696 bytes assets/images/xj_top.png | Bin 0 -> 146818 bytes assets/images/xj_wait.png | Bin 0 -> 1200 bytes assets/images/xjjd_top.png | Bin 0 -> 3655 bytes lib/http/ApiService.dart | 36 ++ lib/pages/home/NFC/home_nfc_check_page.dart | 0 lib/pages/home/NFC/home_nfc_detail_page.dart | 360 ++++++++++++ lib/pages/home/NFC/home_nfc_list_page.dart | 263 +++++++++ lib/pages/home/home_page.dart | 8 + lib/pages/home/tap/item_list_widget.dart | 325 ++++++----- .../special_wrok/WorkDetailFormWidget.dart | 163 ++++++ .../hotwork_safe_func_sure.dart | 532 ++++++++++++++++++ .../dh_work_detai/MeasuresListWidget.dart | 477 +++++++++++----- .../dh_work_detai/hotwork_apply_detail.dart | 250 +++----- .../special_wrok/home_gas_test_page.dart | 31 +- .../special_wrok/special_work_list_page.dart | 3 +- .../szaq_work_detail/SafeFunctionDialog.dart | 66 ++- .../hotwork_set_safe_detail.dart | 428 +++++++------- 19 files changed, 2197 insertions(+), 745 deletions(-) create mode 100644 assets/icon-apps/home-xj.png create mode 100644 assets/images/xj_finish.png create mode 100644 assets/images/xj_top.png create mode 100644 assets/images/xj_wait.png create mode 100644 assets/images/xjjd_top.png create mode 100644 lib/pages/home/NFC/home_nfc_check_page.dart create mode 100644 lib/pages/home/NFC/home_nfc_detail_page.dart create mode 100644 lib/pages/home/NFC/home_nfc_list_page.dart create mode 100644 lib/pages/home/tap/tabList/special_wrok/WorkDetailFormWidget.dart create mode 100644 lib/pages/home/tap/tabList/special_wrok/aqcs_work_detail/hotwork_safe_func_sure.dart diff --git a/assets/icon-apps/home-xj.png b/assets/icon-apps/home-xj.png new file mode 100644 index 0000000000000000000000000000000000000000..f045124de2117d9e00e42d5246018681925c9f1a GIT binary patch literal 2846 zcmaJ@c|6ql8y}frBrQ=hj%tiTmN}VbrkR>CgA^*{N{;4WFf+^yhTO`rm2+*0^;0Mk zwd=^0tDMbBxk_@2T}x7kuHR^@{r$1O{k~q`@8@{E-_P@Yp6C6?H}R;Ah0;cijQ{{Z z$?_oGR=U!p?*Xu!^jm8X*dbliMP^PSJ3d?vRYs7(GT7R-|C>BX{Tc``!+I#?tC zKvtJy?<8`vwjwh4T!iO31|jD9OW6Pb>44bZli|w}!A`NfI6N}^Wo-i-#$l4-jwaS9 zYkwNcn{zN!z_JUqv1f$(G6+ogf&DO&m?#avWr;jtVy+)gNEDOdpW_mx`}J!i9QGL^ z@+HIn66Iul6h`9N9Dfmq&x5T;^gP866p`UlrGJ&c^|!YE7MLge(kN-mkYZ1NBpQK2a=Ghu zeMSpKwyeKp{3BXuAL7qK+OmZFKmkKK54O%%vb1;qo@gB?RYRon8G&3DPh?3a!=*O} zCWlGHQ?Uf9u_+oyL*vnCa}>dZMknA1C@f|#6-_fX{mQlE2}Pbf2J0)A^EVguuUsNc z!15IF1@?Tt-`D9K_2!HCLT|o5j7D3Z76GR3$l)>h!NNW3?fs&bCEx_HnC1dL7xuY7 zM9x2GFyCupiYH(&7%U36t{+b|H=|-q=qAPl9F|Jk3;)7p{zL6wxY+;8MM}jW*N6K* z!~S|DbdLztsT}>QUL(SCt1>|_Ts@mT~GLJGgHgqoC9ttR5qSs z?<&kMFp8o3s%@nwB8Q)CVdztLDjS8Z1GUYSRzPmU!$ee7WnA1MSWpB00ZoF$V*$^Kl^E6)Y zLGq}yZ?RB5qJ1+|g>otR-iMT0*u+eI$^eq>s;09KBv9%@cLq|2&F;?Oaf+*UWenYI z%FU!aSEYQV)g!P6C}(IvCQstiD`!F|*@v?vMl`}fMsP&d8JsgD& zp>B*h57A=hPeUj!rz^X%)7(1jswTp3IoRAA6PnxQzcd`{1#WB75-r5cJ~?!GAkuXH z1^V!_WF;aLa7t^ld!8!xRIGBdq9AP<)HK}c*WE z4Yi3ZtUzF#ka+<=gsUtiFE^&4(O$)yVEQFdqG@ro87^^OfP+@ct~2kFz9VQ(L8v)V zev(>t_K2xM}^DGpymB}(D7K0pBmmsk{&^K!kJ(P5C=U7-WO|$CaU_kg)466G|s`>(C z*Tde&2vy)%&dANhyo}lj?K%{OrKK&SeZRVgN-}r^BxD-EyCX{c{IvosJMnNLSkk3^ z^T;yEQFFRCK+fyB&O-AX+pzc&q;3#44cfWCC+AaE=hI0#&`rOsf)z3j+7=CQo!U;u z7bQ_Ly_2C9b?3{b^xacXNeeR3Er2FqbL!ynE#4>YFP&ArgLu9JkMTfA*D{GyFta8YF+%=+()NaUJ=LXf&I%&uDbsp}c-{M{iHnGPZNx zszb5VB*pdT=c`UbPp^50Ya1q|Z0=Nu0bk0QvnyVX2+k6qTKg+r(jYGJPu#)4X!OH~ zRHR;iQ27)MTWF^l_r!f+0(2ecG(9`93CZ(Y)V`urjqucJg14#E6lIJKX2_HQ`!btc zVbI^pEGxDv{Sq--bqi8EVwiPd^IT7bL6BBzzkAA$5DZElCIqxb*Tqnad{3+Q9wBZ0 zb>4dg(p=G`uz{OQLdZs=UuH!-Q}r&MWcE7mtG>oKITWya=)2whk6V>D7X_R@iNz+7CeP@U;@Tk*P=S{siA7gORI!H_9pcGWTW{kTau8Gv47+_e_)5 zqDOtau!p*`Yk)+}Q)i)ZcKgoYekGZIhy87Dm zyUx-W!&Z(v7}Ft~F3bt|IC%EtxxjGMu25|x z=ygm=X||USE_D@htlJ!=Pf2@{f LHuO?ckC^`gdV;$( literal 0 HcmV?d00001 diff --git a/assets/images/xj_finish.png b/assets/images/xj_finish.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac3c18a6b498c3da2d4bc4535241684fde30c09 GIT binary patch literal 1696 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

PDudf`wizxS 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 Z{s*{#08Tmc&jSDe002ovPDHLkV1f!b2NM7Q literal 0 HcmV?d00001 diff --git a/lib/http/ApiService.dart b/lib/http/ApiService.dart index b9496e6..860badf 100644 --- a/lib/http/ApiService.dart +++ b/lib/http/ApiService.dart @@ -704,6 +704,21 @@ U6Hzm1ninpWeE+awIDAQAB }, ); } + /// 安全措施确认 + static Future> listSignSureAllMeasures(String homeWorkId) { + final String tm = DateTime.now().millisecondsSinceEpoch.toString(); + return HttpManager().request( + basePath, + '/app/hotwork/listAllMeasuresForSign?tm=$tm', + method: Method.post, + data: { + "CORPINFO_ID":SessionService.instance.corpinfoId, + "HOTWORK_ID": homeWorkId, + "USER_ID":SessionService.instance.loginUserId, + }, + ); + } + /// 关联的特殊作业列表 static Future> getEightWorkStartList(Map data) { @@ -763,7 +778,28 @@ U6Hzm1ninpWeE+awIDAQAB fromData: data, ); } + /// 保存安全措施确认 + static Future> saveSafeFunctionSure ( + Map formData, + List filePaths, + ) async { + // 复制一份 formData + final data = Map.from(formData); + // 把文件路径填成 MultipartFile + for (var i = 0; i < filePaths.length; i++) { + final path = filePaths[i]; + data['file$i'] = await MultipartFile.fromFile( + path, + filename: path.split(Platform.pathSeparator).last, + ); + } + return HttpManager().uploadFaceImage( + baseUrl: basePath, + path: '/app/hotwork/nextStep', + fromData: data, + ); + } diff --git a/lib/pages/home/NFC/home_nfc_check_page.dart b/lib/pages/home/NFC/home_nfc_check_page.dart new file mode 100644 index 0000000..e69de29 diff --git a/lib/pages/home/NFC/home_nfc_detail_page.dart b/lib/pages/home/NFC/home_nfc_detail_page.dart new file mode 100644 index 0000000..22a7178 --- /dev/null +++ b/lib/pages/home/NFC/home_nfc_detail_page.dart @@ -0,0 +1,360 @@ +import 'package:flutter/material.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; + +class HomeNfcDetailPage extends StatefulWidget { + const HomeNfcDetailPage({super.key}); + + @override + State createState() => _HomeNfcDetailPageState(); +} + +class _HomeNfcDetailPageState extends State { + + Map info = { + 'title': '设备巡检 A', + 'status': '专项巡检', + 'department': '安全部', + 'owner': '张三', + 'unType': 'UN1001', + 'cycle': '7天', + 'points': '3/5', + }; + final List demoData = const [ + ProgressItem(status: '未查', location: '到期哦i维护经费欺废气阀我废费欺废气阀我废费欺废气阀我废气阀', code: 'XJ1001'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + ProgressItem(status: '已查', location: 'B区-配电室', code: 'XJ1002', checkTime: '2025-07-28 15:32'), + + ]; + Widget _pendingTopCard(Map item) { + return SizedBox( + height: 180, + child: Stack( + clipBehavior: Clip.none, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.asset( + 'assets/images/xj_top.png', + height: 70, + width: double.infinity, + fit: BoxFit.cover, + ), + ), + + // 标题 & 状态标签 + Positioned( + top: 12, + left: 12, + child: Text( + item['title']!, + style: const TextStyle( + color: Colors.black87, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ), + Positioned( + top: 12, + right: 12, + child: Container( + height: 30, + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.7), + borderRadius: BorderRadius.circular(15), + ), + child: Center( + child: Text( + item['status']!, + style: const TextStyle(color: Colors.white, fontSize: 14), + ), + ), + ), + ), + + // 白色信息区域(盖住图片部分) + Positioned( + left: 0, + right: 0, + top: 50, // 盖住图片底部 + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 4, + offset: Offset(0, 1), + ), + ], + ), + child: _buildInfoGrid(item), + ), + ), + ], + ), + ); + } + /// 构建信息网格 + Widget _buildInfoGrid(Map item) { + return Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('负责部门:${item['department']}'), + const SizedBox(height: 8), + Text('负责人:${item['owner']}'), + const SizedBox(height: 8), + Text('UN件类型:${item['unType']}'), + ], + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text('巡检周期:${item['cycle']}'), + const SizedBox(height: 8), + Text('已巡点位:${item['points']}'), + Text('涉及管道区域:${item['department']}') + ], + ), + ), + ], + ); + } + + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppbar(title: '任务详情'), + body: SafeArea(child: Padding(padding: EdgeInsets.all(16), child: Column( + children: [ + _pendingTopCard(info), + Expanded(child: Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 4, + offset: Offset(0, 1), + ), + ], + ), + + child: SingleChildScrollView( + child: ProgressList( + items: demoData, + onStartCheck: (idx) { + print('开始检查第 $idx 项'); + }, + ), + ) + )) + ], + ),)), + ); + } +} +/// 单条进度数据模型 +class ProgressItem { + final String status; // “未查” 或 “已查” + final String location; // 地点 + final String code; // 编码 + final String? checkTime; // 检查时间(已查时有值) + + const ProgressItem({ + required this.status, + required this.location, + required this.code, + this.checkTime, + }); +} + +/// 进度列表组件 +class ProgressList extends StatelessWidget { + /// 数据源 + final List items; + + /// 点击“开始检查”后的回调,index 对应 items 的下标 + final void Function(int index) onStartCheck; + + const ProgressList({ + Key? key, + required this.items, + required this.onStartCheck, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + // 整体用 Column 包裹标题和列表 + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // 标题 + const Padding( + padding: EdgeInsets.all(16), + child: Text( + '已查点位1/5', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + ), + const Divider(height: 1), + + // 列表 + ListView.builder( + physics: const NeverScrollableScrollPhysics(), // 让父级滚动 + shrinkWrap: true, + itemCount: items.length, + itemBuilder: (ctx, idx) { + return _ProgressListItem( + item: items[idx], + onStart: () => onStartCheck(idx), + ); + }, + ), + ], + ); + } +} + +/// 单行进度条目 +class _ProgressListItem extends StatelessWidget { + final ProgressItem item; + final VoidCallback onStart; + + const _ProgressListItem({ + Key? key, + required this.item, + required this.onStart, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final bool unchecked = item.status == '未查'; + + return Container( + height: 100, + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // 左侧状态区 + Column(children: [ + Stack( + alignment: Alignment.center, + children: [ + Image.asset( + unchecked + ? 'assets/images/xj_wait.png' + : 'assets/images/xj_finish.png', + width: 50, + height: 30, + fit: BoxFit.cover, + ), + Positioned( + top: 2, + child: Text( + item.status, + style: const TextStyle(color: Colors.white, fontSize: 14), + ), + ), + + ], + ), + SizedBox(height: 15,), + Positioned( + // bottom: 0, + // right: 17, + child: Image.asset( + 'assets/images/xjjd_top.png', + width: 15, + height: 30, + ), + ), + ],), + + + const SizedBox(width: 20), + + // 中间详情 + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + item.location, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + maxLines: 1, // 最多一行 + overflow: TextOverflow.ellipsis, // 超出省略号 + ), + const SizedBox(height: 4), + Text('NFC编码:${item.code}'), + + unchecked + ? InkWell( + onTap: onStart, + child: Column( + children: [ + SizedBox(height: 5,), + Container( + height: 35, + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(vertical: 1), + decoration: BoxDecoration( + gradient: const LinearGradient( + colors: [Color(0xFFFFA726), Color(0xFFFF7043)], + ), + borderRadius: BorderRadius.circular(5), + ), + child: const Text( + '开始检查', + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ), + ], + ) + ) + : Text( + '检查时间:' + (item.checkTime ?? ''), + style: const TextStyle(fontSize: 14), + textAlign: TextAlign.center, + ), + ], + ), + ), + + // 操作区或时间 + const SizedBox(width: 8), + Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Icon(Icons.chevron_right, color: Colors.grey), + SizedBox() + ], + ) + ], + ), + ); + } +} \ No newline at end of file diff --git a/lib/pages/home/NFC/home_nfc_list_page.dart b/lib/pages/home/NFC/home_nfc_list_page.dart new file mode 100644 index 0000000..a734f9e --- /dev/null +++ b/lib/pages/home/NFC/home_nfc_list_page.dart @@ -0,0 +1,263 @@ +import 'package:flutter/material.dart'; +import 'package:qhd_prevention/pages/home/NFC/home_nfc_detail_page.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; +import 'package:qhd_prevention/tools/tools.dart'; + +class HomeNfcListPage extends StatefulWidget { + const HomeNfcListPage({super.key}); + + @override + State createState() => _HomeNfcListPageState(); +} + +class _HomeNfcListPageState extends State + with SingleTickerProviderStateMixin { + late TabController _tabController; + + // 测试数据 + final List> _pendingList = [ + { + 'title': '设备巡检 A', + 'status': '待巡检', + 'department': '安全部', + 'owner': '张三', + 'unType': 'UN1001', + 'cycle': '7天', + 'points': '3/5', + }, + { + 'title': '设备巡检 B', + 'status': '待巡检', + 'department': '维护部', + 'owner': '李四', + 'unType': 'UN1002', + 'cycle': '30天', + 'points': '1/2', + }, + { + 'title': '设备巡检 C', + 'status': '待巡检', + 'department': '维护部', + 'owner': '李四', + 'unType': 'UN1002', + 'cycle': '30天', + 'points': '1/2', + }, + ]; + + final List> _recordList = [ + { + 'title': '设备巡检 A', + 'status': '待巡检', + 'department': '安全部', + 'owner': '张三', + 'unType': 'UN1001', + 'cycle': '7天', + 'points': '3/5', + }, + + ]; + + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppbar(title: '巡检列表'), + body: SafeArea( + child: Column( + children: [ + // Tab bar + TabBar( + controller: _tabController, + labelStyle: const TextStyle(fontSize: 16), + indicator: const UnderlineTabIndicator( + borderSide: BorderSide(width: 3.0, color: Colors.blue), + insets: EdgeInsets.symmetric(horizontal: 50.0), + ), + labelColor: Colors.blue, + unselectedLabelColor: Colors.grey, + tabs: const [Tab(text: '待巡检'), Tab(text: '巡检记录')], + ), + const SizedBox(height: 8), + // Tab 内容 + Expanded( + child: TabBarView( + controller: _tabController, + children: [_buildPendingList(), _buildRecordList()], + ), + ), + ], + ), + ), + ); + } + + Widget _buildPendingList() { + if (_pendingList.isEmpty) { + return NoDataWidget.show(); // 无数据提示 + } + + return ListView.builder( + + itemCount: _pendingList.length, + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 0), + itemBuilder: (context, index) { + final item = _pendingList[index]; + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 0), + child: GestureDetector( + onTap: (){ + pushPage(HomeNfcDetailPage(), context); + }, + child: _pendingCard(item, false), + ), + ); + }, + ); + } + + Widget _buildRecordList() { + if (_recordList.isEmpty) { + return NoDataWidget.show(); // 无数据提示 + } + return ListView.builder( + itemCount: _recordList.length, + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 0), + itemBuilder: (context, index) { + final item = _recordList[index]; + return Container( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 0), + child: _pendingCard(item, true), + ); + }, + ); + } + + /// 构建待巡检卡片 + Widget _pendingCard(Map item, bool isFinish) { + return SizedBox( + height: 180, + child: Stack( + clipBehavior: Clip.none, + children: [ + // 背景卡片阴影 & 图片 + ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Image.asset( + 'assets/images/xj_top.png', + height: 70, + width: double.infinity, + fit: BoxFit.cover, + ), + ), + + // 标题 & 状态标签 + Positioned( + top: 12, + left: 12, + child: Text( + item['title']!, + style: const TextStyle( + color: Colors.black87, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ), + if (!isFinish) + Positioned( + top: 12, + right: 12, + child: Container( + height: 30, + padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: Colors.blue.withOpacity(0.7), + borderRadius: BorderRadius.circular(15), + ), + child: Center( + child: Text( + item['status']!, + style: const TextStyle(color: Colors.white, fontSize: 14), + ), + ), + ), + ), + + // 白色信息区域(盖住图片部分) + Positioned( + left: 0, + right: 0, + top: 50, // 盖住图片底部 + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 0), + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(10), + topRight: Radius.circular(10), + bottomLeft: Radius.circular(10), + bottomRight: Radius.circular(10), + ), + boxShadow: [ + BoxShadow( + color: Colors.black12, + blurRadius: 4, + offset: Offset(0, 1), + ), + ], + ), + child: _buildInfoGrid(item, isFinish), + ), + ), + ], + ), + ); + } + + /// 构建信息网格 + Widget _buildInfoGrid(Map item, bool isFinish) { + return Row( + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('负责部门:${item['department']}'), + const SizedBox(height: 8), + Text('负责人:${item['owner']}'), + const SizedBox(height: 8), + Text('UN件类型:${item['unType']}'), + ], + ), + ), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Text('巡检周期:${item['cycle']}'), + const SizedBox(height: 8), + Text('已巡点位:${item['points']}'), + isFinish + ? Text('涉及管道区域:${item['department']}') + : const SizedBox(height: 25), + ], + ), + ), + ], + ); + } + +} diff --git a/lib/pages/home/home_page.dart b/lib/pages/home/home_page.dart index aada2ee..0e7974c 100644 --- a/lib/pages/home/home_page.dart +++ b/lib/pages/home/home_page.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; +import 'package:qhd_prevention/pages/home/NFC/home_nfc_list_page.dart'; import 'package:qhd_prevention/pages/home/low_page.dart'; import 'package:qhd_prevention/pages/home/risk/riskControl_page.dart'; import 'package:qhd_prevention/pages/home/study/study_garden_page.dart'; @@ -196,6 +197,8 @@ class _HomePageState extends State { pushPage(WorkTabListPage(), context); } else if (index == 7) { pushPage(StudyGardenPage(), context); + } else if (index == 11) { + pushPage(HomeNfcListPage(), context); } }, ); @@ -513,6 +516,11 @@ class _HomePageState extends State { "title": "安全例会", "unreadCount": 0, }, + { + "icon": "assets/icon-apps/home-xj.png", + "title": "燃气巡检", + "unreadCount": 0, + }, ]; }); diff --git a/lib/pages/home/tap/item_list_widget.dart b/lib/pages/home/tap/item_list_widget.dart index 079e26b..abbaf30 100644 --- a/lib/pages/home/tap/item_list_widget.dart +++ b/lib/pages/home/tap/item_list_widget.dart @@ -19,9 +19,10 @@ class ItemListWidget { return Container( padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 12), child: Row( - mainAxisAlignment: isEditable - ? MainAxisAlignment.start - : MainAxisAlignment.spaceBetween, + mainAxisAlignment: + isEditable + ? MainAxisAlignment.start + : MainAxisAlignment.spaceBetween, children: [ Text( label, @@ -30,23 +31,23 @@ class ItemListWidget { const SizedBox(width: 8), isEditable ? Expanded( - child: TextField( - autofocus: false, - controller: controller, - style: TextStyle(fontSize: fontSize), - maxLines: 1, - decoration: InputDecoration( - isDense: true, - hintText: hintText, - contentPadding: EdgeInsets.symmetric(vertical: 8), - ), - ), - ) + child: TextField( + autofocus: false, + controller: controller, + style: TextStyle(fontSize: fontSize), + maxLines: 1, + decoration: InputDecoration( + isDense: true, + hintText: hintText, + contentPadding: EdgeInsets.symmetric(vertical: 8), + ), + ), + ) : Text( - text ?? '', - style: TextStyle(fontSize: fontSize, color: detailtextColor), - overflow: TextOverflow.ellipsis, // 超出省略 - ), + text ?? '', + style: TextStyle(fontSize: fontSize, color: detailtextColor), + overflow: TextOverflow.ellipsis, // 超出省略 + ), ], ), ); @@ -76,47 +77,53 @@ class ItemListWidget { ), const SizedBox(height: 8), Expanded( - child: isEditable - ? TextField( - autofocus: false, - controller: controller, - keyboardType: TextInputType.multiline, - maxLines: null, - expands: true, - // 垂直顶部对齐 - textAlignVertical: TextAlignVertical.top, - style: TextStyle(fontSize: fontSize), - decoration: InputDecoration( - hintText: '请输入', - // 去掉 TextField 默认内边距 - contentPadding: EdgeInsets.zero, - border: InputBorder.none, - ), - ) - : SingleChildScrollView( - // 去掉多余的 padding - padding: EdgeInsets.zero, - child: Text( - text ?? '', - style: TextStyle(fontSize: fontSize, color: detailtextColor), - ), - ), + child: + isEditable + ? TextField( + autofocus: false, + controller: controller, + keyboardType: TextInputType.multiline, + maxLines: null, + expands: true, + // 垂直顶部对齐 + textAlignVertical: TextAlignVertical.top, + style: TextStyle(fontSize: fontSize), + decoration: InputDecoration( + hintText: '请输入', + // 去掉 TextField 默认内边距 + contentPadding: EdgeInsets.zero, + border: InputBorder.none, + ), + ) + : SingleChildScrollView( + // 去掉多余的 padding + padding: EdgeInsets.zero, + child: Text( + text ?? '', + style: TextStyle( + fontSize: fontSize, + color: detailtextColor, + ), + ), + ), ), ], ), ); } - /// 单行可点击选择: /// - 可编辑时:标题 + “请选择”提示 + 右箭头 /// - 不可编辑时:标题 + 文本内容 static Widget selectableLineTitleTextField({ - required String label, // 标题文本 - required bool isEditable, // 是否可点击 - required String text, // 显示内容或提示 - VoidCallback? onTap, // 点击回调 - double fontSize = 15, // 字体大小 + required String label, // 标题文本 + required bool isEditable, // 是否可点击 + required String text, // 显示内容或提示 + VoidCallback? onTap, // 点击回调 + double fontSize = 15, // 字体大小 + bool isClean = false, + VoidCallback? onTapClean, // 清除回调 + }) { return InkWell( onTap: isEditable ? onTap : null, @@ -127,14 +134,24 @@ class ItemListWidget { // 1. 标题 Text( label, - style: TextStyle( - fontSize: fontSize, - fontWeight: FontWeight.bold, - ), + style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), ), - + if (isClean) + Column( + children: [ + CustomButton( + text: '清除', + height: 20, + padding: EdgeInsets.symmetric(horizontal: 10, vertical: 0), + textStyle: TextStyle(fontSize: 11, color: Colors.white), + borderRadius: 10, + backgroundColor: Colors.red, + onPressed: onTapClean, + ), + SizedBox(height: 20), + ], + ), const SizedBox(width: 8), - Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.end, @@ -153,10 +170,7 @@ class ItemListWidget { if (isEditable) const Padding( padding: EdgeInsets.only(left: 4), - child: Icon( - Icons.chevron_right, - size: 20, - ), + child: Icon(Icons.chevron_right, size: 20), ), ], ), @@ -167,8 +181,6 @@ class ItemListWidget { ); } - - /// 两行垂直布局: /// 第一行:可点击选择(带箭头)或仅显示标题 /// 第二行:多行输入框或多行文本展示 @@ -194,7 +206,10 @@ class ItemListWidget { children: [ Text( label, - style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), + style: TextStyle( + fontSize: fontSize, + fontWeight: FontWeight.bold, + ), ), Row( children: [ @@ -209,7 +224,7 @@ class ItemListWidget { ), if (isEditable) const Icon(Icons.chevron_right), ], - ) + ), ], ), ), @@ -217,27 +232,31 @@ class ItemListWidget { Container( height: row2Height, padding: const EdgeInsets.symmetric(vertical: 8), - child: isEditable - ? TextField( - autofocus: false, - controller: controller, - keyboardType: TextInputType.multiline, - maxLines: null, - expands: true, - style: TextStyle(fontSize: fontSize), - decoration: InputDecoration( - hintText: '请输入', - contentPadding: EdgeInsets.zero, - border: InputBorder.none, - ), - ) - : SingleChildScrollView( - padding: EdgeInsets.zero, - child: Text( - text, - style: TextStyle(fontSize: fontSize, color: detailtextColor), - ), - ), + child: + isEditable + ? TextField( + autofocus: false, + controller: controller, + keyboardType: TextInputType.multiline, + maxLines: null, + expands: true, + style: TextStyle(fontSize: fontSize), + decoration: InputDecoration( + hintText: '请输入', + contentPadding: EdgeInsets.zero, + border: InputBorder.none, + ), + ) + : SingleChildScrollView( + padding: EdgeInsets.zero, + child: Text( + text, + style: TextStyle( + fontSize: fontSize, + color: detailtextColor, + ), + ), + ), ), ], ), @@ -269,7 +288,10 @@ class ItemListWidget { Flexible( child: Text( label, - style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), + style: TextStyle( + fontSize: fontSize, + fontWeight: FontWeight.bold, + ), maxLines: 1, overflow: TextOverflow.ellipsis, ), @@ -279,7 +301,10 @@ class ItemListWidget { CustomButton( text: "选择其他", height: 30, - padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), + padding: const EdgeInsets.symmetric( + vertical: 2, + horizontal: 5, + ), backgroundColor: Colors.green, onPressed: onTap, ), @@ -291,32 +316,37 @@ class ItemListWidget { Container( height: row2Height, padding: const EdgeInsets.symmetric(vertical: 8), - child: isEditable - ? TextField( - autofocus: false, - controller: controller, - keyboardType: TextInputType.multiline, - maxLines: null, - expands: true, - style: TextStyle(fontSize: fontSize), - decoration: InputDecoration( - hintText: hintText, - contentPadding: EdgeInsets.zero, - border: InputBorder.none, - ), - ) - : SingleChildScrollView( - padding: EdgeInsets.zero, - child: Text( - text, - style: TextStyle(fontSize: fontSize, color: detailtextColor), - ), - ), + child: + isEditable + ? TextField( + autofocus: false, + controller: controller, + keyboardType: TextInputType.multiline, + maxLines: null, + expands: true, + style: TextStyle(fontSize: fontSize), + decoration: InputDecoration( + hintText: hintText, + contentPadding: EdgeInsets.zero, + border: InputBorder.none, + ), + ) + : SingleChildScrollView( + padding: EdgeInsets.zero, + child: Text( + text, + style: TextStyle( + fontSize: fontSize, + color: detailtextColor, + ), + ), + ), ), ], ), ); } + /// 单行布局: /// 标题 + 文字 + 按钮 static Widget OneRowButtonTitleText({ @@ -330,23 +360,31 @@ class ItemListWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Expanded(child: Row( - children: [ - Text( - label, - style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), - ), - SizedBox(width: 15,), - Expanded( - child: Text( - text, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle(fontSize: fontSize, color: detailtextColor), + Expanded( + child: Row( + children: [ + Text( + label, + style: TextStyle( + fontSize: fontSize, + fontWeight: FontWeight.bold, + ), ), - ), - ], - ),), + SizedBox(width: 15), + Expanded( + child: Text( + text, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: fontSize, + color: detailtextColor, + ), + ), + ), + ], + ), + ), CustomButton( text: "分析详情", height: 30, @@ -355,9 +393,10 @@ class ItemListWidget { onPressed: onTap, ), ], - ) + ), ); } + /// 单行布局: /// 标题 + 按钮 static Widget OneRowButtonTitle({ @@ -366,27 +405,25 @@ class ItemListWidget { required VoidCallback? onTap, // 第一行点击回调 double fontSize = 15, // 字体大小 Color btnColor = Colors.blue, - }) { return Container( - padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 12), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - label, - style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), - ), - CustomButton( - text: buttonText, - height: 30, - padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), - backgroundColor: btnColor, - onPressed: onTap, - ), - ], - ) + padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 12), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + label, + style: TextStyle(fontSize: fontSize, fontWeight: FontWeight.bold), + ), + CustomButton( + text: buttonText, + height: 30, + padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5), + backgroundColor: btnColor, + onPressed: onTap, + ), + ], + ), ); } - } diff --git a/lib/pages/home/tap/tabList/special_wrok/WorkDetailFormWidget.dart b/lib/pages/home/tap/tabList/special_wrok/WorkDetailFormWidget.dart new file mode 100644 index 0000000..f104d59 --- /dev/null +++ b/lib/pages/home/tap/tabList/special_wrok/WorkDetailFormWidget.dart @@ -0,0 +1,163 @@ +import 'package:flutter/material.dart'; + +import '../../../../../tools/tools.dart'; +import '../../item_list_widget.dart'; +import '../special_Wrok/dh_work_detai/MeasuresListWidget.dart'; + +/// 通用明细表单组件 +/// 编辑模式时需传入对应的 TextEditingController;非编辑模式可不传 +class WorkDetailFormWidget extends StatelessWidget { + final Map pd; + final bool isEditable; + final VoidCallback onChooseLevel; + final VoidCallback onChooseHotworkUser; + final VoidCallback onAnalyzeTap; + + /// 编辑模式下需提供以下控制器,非编辑可不传 + final TextEditingController? contentController; + final TextEditingController? locationController; + final TextEditingController? methodController; + final TextEditingController? hotworkPersonController; + final TextEditingController? relatedController; + final TextEditingController? riskController; + + const WorkDetailFormWidget({ + Key? key, + required this.pd, + required this.isEditable, + required this.onChooseLevel, + required this.onChooseHotworkUser, + required this.onAnalyzeTap, + this.contentController, + this.locationController, + this.methodController, + this.hotworkPersonController, + this.relatedController, + this.riskController, + }) : assert( + !isEditable || (contentController != null && locationController != null && methodController != null && hotworkPersonController != null && relatedController != null && riskController != null), + 'Editable mode requires all TextEditingController parameters', + ), + super(key: key); + + @override + Widget build(BuildContext context) { + final pd = this.pd; + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ItemListWidget.singleLineTitleText( + label: '申请单位:', + isEditable: false, + text: pd['APPLY_DEPARTMENT_NAME'] ?? '', + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '申请人:', + isEditable: false, + text: pd['APPLY_USER_NAME'] ?? '', + ), + if (FormUtils.hasValue(pd, 'CHECK_NO')) ...[ + const Divider(), + ItemListWidget.singleLineTitleText( + label: '编号:', + isEditable: false, + text: pd['CHECK_NO'] ?? '', + ), + ], + const Divider(), + ItemListWidget.multiLineTitleTextField( + label: '作业内容:', + isEditable: isEditable, + controller: contentController, + text: pd['WORK_CONTENT'] ?? '', + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '动火地点及动火部位:', + isEditable: isEditable, + controller: locationController, + text: pd['WORK_PLACE'] ?? '', + ), + const Divider(), + ItemListWidget.selectableLineTitleTextField( + label: '动火作业级别:', + isEditable: isEditable, + onTap: onChooseLevel, + text: pd['WORK_LEVEL'] ?? '', + ), + const Divider(), + ItemListWidget.singleLineTitleText( + label: '动火方式:', + isEditable: isEditable, + controller: methodController, + text: pd['WORK_FUNCTION'] ?? '', + ), + if (pd['WORK_START_DATE']?.toString().isNotEmpty == true) ...[ + const Divider(), + ItemListWidget.singleLineTitleText( + label: '动火作业实施时间:', + isEditable: isEditable, + text: '${pd['WORK_START_DATE']} 至 ${pd['WORK_END_DATE'] ?? '--'}', + ), + ], + const Divider(), + ItemListWidget.twoRowSelectableTitleText( + label: '动火人及证书编号:', + isEditable: isEditable, + onTap: onChooseHotworkUser, + text: pd['WORK_USER'] ?? '', + controller: hotworkPersonController, + ), + const Divider(), + ItemListWidget.twoRowButtonTitleText( + label: '关联其他特殊作业及安全作业票:', + isEditable: isEditable, + onTap: () async { + final val = await showDialog( + context: context, + builder: (_) => SelectionPopup( + type: 'assignments', + initialValue: pd['SPECIAL_WORK'] ?? '', + onConfirm: (v) => Navigator.of(context).pop(v), + ), + ); + if (val != null) pd['SPECIAL_WORK'] = val; + FocusHelper.clearFocus(context); + }, + hintText: '请输入关联的其他特殊作业及安全作业票编号', + controller: relatedController, + text: pd['SPECIAL_WORK'] ?? '', + ), + const Divider(), + ItemListWidget.twoRowButtonTitleText( + label: '风险辨识结果:', + isEditable: isEditable, + onTap: () async { + final val = await showDialog( + context: context, + builder: (_) => SelectionPopup( + type: 'identification', + initialValue: pd['RISK_IDENTIFICATION'] ?? '', + onConfirm: (v) => Navigator.of(context).pop(v), + ), + ); + if (val != null) pd['RISK_IDENTIFICATION'] = val; + FocusHelper.clearFocus(context); + }, + hintText: '请输入风险辨识结果', + controller: riskController, + text: pd['RISK_IDENTIFICATION'] ?? '', + ), + if (FormUtils.hasValue(pd, 'ANALYZE_TIME')) ...[ + const Divider(), + ItemListWidget.OneRowButtonTitleText( + label: '分析人:', + text: pd['ANALYZE_USER_NAME'] ?? '', + onTap: onAnalyzeTap, + ), + ], + ], + ); + } +} diff --git a/lib/pages/home/tap/tabList/special_wrok/aqcs_work_detail/hotwork_safe_func_sure.dart b/lib/pages/home/tap/tabList/special_wrok/aqcs_work_detail/hotwork_safe_func_sure.dart new file mode 100644 index 0000000..0e459ad --- /dev/null +++ b/lib/pages/home/tap/tabList/special_wrok/aqcs_work_detail/hotwork_safe_func_sure.dart @@ -0,0 +1,532 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:math'; + +import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:qhd_prevention/customWidget/ItemWidgetFactory.dart'; +import 'package:qhd_prevention/customWidget/custom_button.dart'; +import 'package:qhd_prevention/customWidget/department_person_picker.dart'; +import 'package:qhd_prevention/customWidget/department_picker.dart'; +import 'package:qhd_prevention/customWidget/toast_util.dart'; +import 'package:qhd_prevention/pages/home/tap/item_list_widget.dart'; +import 'package:qhd_prevention/tools/tools.dart'; +import '../../../../../../customWidget/bottom_picker.dart'; +import '../../../../../../customWidget/custom_alert_dialog.dart'; +import '../../../../../../customWidget/single_image_viewer.dart'; +import '../../../../../../http/ApiService.dart'; +import '../../../../../mine/mine_sign_page.dart'; +import '../../../../../my_appbar.dart'; +import '../../special_Wrok/dh_work_detai/MeasuresListWidget.dart'; +import '../../special_Wrok/qtfx_work_detail/hotwork_gas_list.dart'; +import '../WorkDetailFormWidget.dart'; +/// 安全措施确认 +class HotworkSafeFuncSure extends StatefulWidget { + const HotworkSafeFuncSure({ + super.key, + required this.HOTWORK_ID, + required this.flow, + }); + + final String HOTWORK_ID; + final String flow; + + @override + State createState() => _HotworkSafeFuncSureState(); +} + +class _HotworkSafeFuncSureState extends State { + late bool isEditable = false; + final levelList = ["特级", "一级", "二级"]; + + /// 编辑还是新增 + late String msg = 'add'; + + /// 详情 + late Map pd = {}; + late List> measuresList = []; + + /// 动火人及证书编号 + late List workUserList = []; + + /// 安全防护措施列表 + late List measuresListCopy = []; + List imagePaths = []; + List signTimes = []; // 签字时间列表 + @override + void initState() { + super.initState(); + _getData(); + _getHotWorkNameList(); + addMeasuresListCopy(); + } + + String measuresListToJson() { + final List> jsonList = + measuresListCopy.map((item) => item.toJson()).toList(); + return jsonEncode(jsonList); + } + + Widget _card(Widget child) { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(5), + ), + child: child, + ); + } + + + + /// 弹出单位选择 + void chooseUnitHandle(MeasureItem item) { + showModalBottomSheet( + context: context, + isScrollControlled: true, + barrierColor: Colors.black54, + backgroundColor: Colors.transparent, + builder: + (_) => DepartmentPicker( + onSelected: (id, name) async { + setState(() { + item.DEPARTMENT_ID = id; + item.DEPARTMENT_NAME = name; + }); + _getPersonListForUnitId(item); + }, + ), + ).then((_) {}); + } + + Future _getPersonListForUnitId(MeasureItem item) async { + // 拉取该单位的人员列表并缓存 + final result = await ApiService.getListTreePersonList(item.DEPARTMENT_ID); + setState(() { + item.userList = List>.from( + result['userList'] ?? >[], + ); + }); + } + + /// 弹出人员选择,需先选择单位 + void choosePersonHandle(MeasureItem item) async { + String unitId = item.DEPARTMENT_ID; + final personList = item.userList; + if (!unitId.isNotEmpty) { + ToastUtil.showNormal(context, '请先选择确认单位'); + return; + } + if (personList.isEmpty) { + // 一般这种情况是因为重新编辑没有缓存对应部门的负责人,所以先拉取一下接口 + await _getPersonListForUnitId(item); + final list = item.userList; + + if (list.isEmpty) { + // 如果还是没数据,说明该部门没有可选的人 + ToastUtil.showNormal(context, '暂无数据,请选择其他单位'); + } else { + choosePersonHandle(item); + } + return; + } + DepartmentPersonPicker.show( + context, + personsData: personList, + onSelected: (userId, name) { + setState(() { + item.USER_NAME = name; + item.USER_ID = userId; + print(json.encode(measuresListCopy)); + }); + }, + ).then((_) {}); + } + + /// 签字 + Future _sign() async { + final path = await Navigator.push( + context, + MaterialPageRoute(builder: (context) => MineSignPage()), + ); + if (path != null) { + final now = DateFormat('yyyy-MM-dd HH:mm').format(DateTime.now()); + + setState(() { + imagePaths.add(path); + signTimes.add(now); + FocusHelper.clearFocus(context); + }); + } + } + + Widget _signListWidget() { + return Column( + children: + imagePaths.map((path) { + return Column( + children: [ + const SizedBox(height: 10), + const Divider(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + GestureDetector( + child: // 用一个 ConstrainedBox 限制最大尺寸,并改为 BoxFit.contain + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 200, + maxHeight: 150, + ), + child: Image.file( + File(path), + // 改为完整显示 + fit: BoxFit.contain, + ), + ), + onTap: () { + presentOpaque( + SingleImageViewer(imageUrl: path), + context, + ); + }, + ), + Column( + children: [ + Container( + padding: const EdgeInsets.only(right: 5), + child: CustomButton( + text: 'X', + height: 30, + padding: const EdgeInsets.symmetric(horizontal: 10), + backgroundColor: Colors.red, + onPressed: () { + setState(() { + imagePaths.remove(path); + }); + }, + ), + ), + const SizedBox(height: 80), + ], + ), + ], + ), + ], + ); + }).toList(), + ); + } + + /// 提交 1 提交 0暂存 + Future _submit(String status) async { + if (imagePaths.isEmpty) { + ToastUtil.showNormal(context, '请签字'); + return; + } + List> signers = []; + String reasonText = ''; + + if (status == '1') { + int index = 0; + for (var item in measuresListCopy) { + if (item.USER_ID.isEmpty) { + ToastUtil.showNormal( + context, + '第${index + 1}项未设置确认人', + ); + return; + } + if (item.selectMeasures.isEmpty) { + ToastUtil.showNormal( + context, + '第${index + 1}项未选择安全措施', + ); + return; + } + final userId = item.USER_ID; + final selectMeasures = item.selectMeasures as List? ?? []; + + for (var item in selectMeasures) { + signers.add({ + 'BUS_HOTWORK_MEASURES_ID': item['BUS_HOTWORK_MEASURES_ID'], + 'USER_ID': userId, + }); + } + // 检查长度是否一致 + if (signers.length != measuresList.length) { + // 使用 ScaffoldMessenger 弹出提示 + ToastUtil.showNormal(context, '请为每个安全措施选择确认人'); + return; + } + index++; + } + } else { + await showDialog( + context: context, + builder: + (_) => CustomAlertDialog( + title: '作废原因', + mode: DialogMode.input, + hintText: '请输入作废原因', + cancelText: '取消', + confirmText: '确定', + onInputConfirm: (text) { + reasonText = text; + }, + ), + ); + if (reasonText.isEmpty) { + ToastUtil.showNormal(context, '请填写作废原因'); + return; + } + } + + final Map formData = {}; + // 提交参数 + formData['HOTWORK_ID'] = widget.HOTWORK_ID; + formData['SIGNTIME'] = signTimes.join(','); + formData['USER_ID'] = SessionService.instance.loginUserId; + formData['APPLY_STATUS'] = status; + formData['STEP_REASON'] = reasonText; + formData['PREPARERS'] = json.encode(signers); + + await showDialog( + context: context, + builder: + (_) => CustomAlertDialog( + title: '提示', + content: '请确认' + (status == '1' ? "通过" : "作废") + '本作业票?', + cancelText: '取消', + confirmText: '确定', + onConfirm: () async { + LoadingDialogHelper.show(context); + try { + final result = await ApiService.saveSafeFunctionSure( + formData, + imagePaths, + ); + LoadingDialogHelper.hide(context); + if (result['result'] == 'success') { + ToastUtil.showSuccess( + context, + status == '1' ? '提交成功' : '已暂存', + ); + Navigator.pop(context); + } + } catch (e) { + LoadingDialogHelper.hide(context); + ToastUtil.showNormal(context, '操作失败:$e'); + } + }, + ), + ); + } + + void printLongString(String text, {int chunkSize = 800}) { + final pattern = RegExp('.{1,$chunkSize}'); // 每 chunkSize 个字符一组 + for (final match in pattern.allMatches(text)) { + print(match.group(0)); + } + } + + Future _getHotWorkNameList() async { + final result = await ApiService.getHotWorkNameList(); + setState(() { + workUserList = result['varList'] ?? ''; + List names = + workUserList.map((item) => item['NAME'] as String).toList(); + }); + } + + /// 初始化拉取数据 + Future _getData() async { + final data = await ApiService.getHomeworkFindById(widget.HOTWORK_ID); + setState(() { + pd = data['pd']; + _getMeasures(); + }); + } + + Future _getMeasures() async { + final data = await ApiService.listSignSureAllMeasures(widget.HOTWORK_ID); + setState(() { + measuresList = List>.from( + data['measuresForSignList'] ?? >[], + ); + }); + } + + void removeMeasuresListCopy(int index) { + setState(() { + measuresListCopy.removeAt(index); + }); + } + + void addMeasuresListCopy() { + setState(() { + measuresListCopy.add( + MeasureItem( + id: Random().nextDouble(), + DEPARTMENT_ID: '', + DEPARTMENT_NAME: '', + USER_ID: '', + USER_NAME: '', + userList: [], + userIndex: -1, + selectMeasures: [], + ), + ); + }); + } + + /// 安全防护措施 + Widget _setSafeDetailWidget() { + return Container( + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(8), + ), + padding: EdgeInsets.symmetric(horizontal: 5), + child: Column( + children: [ + if (measuresList.length > 0) + Column( + children: [ + SizedBox(height: 20), + ListItemFactory.createBuildSimpleSection('安全防护措施'), + Container( + color: Colors.white, + child: MeasuresListWidget( + measuresList: + measuresList, // List> + baseImgPath: ApiService.baseImgPath, + ), + ), + ], + ), + SizedBox(height: 20), + + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox(), + CustomButton( + text: '新增手写签字', + height: 36, + backgroundColor: Colors.green, + onPressed: () { + _sign(); + }, + ), + ], + ), + SizedBox(height: 10), + if (imagePaths.isNotEmpty) _signListWidget(), + ], + ), + ); + } + + /// 底部按钮 + Widget _bottomButtons() { + return Row( + spacing: 10, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: CustomButton( + height: 45, + textStyle: TextStyle(fontSize: 16, color: Colors.white), + text: '作废', + backgroundColor: Colors.red, + onPressed: () { + _submit('-1'); + }, + ), + ), + Expanded( + child: CustomButton( + textStyle: TextStyle(fontSize: 16, color: Colors.white), + text: '通过', + backgroundColor: Colors.green, + onPressed: () { + _submit('1'); + }, + ), + ), + ], + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppbar(title: '安全措施确认人意见'), + body: SafeArea( + child: SingleChildScrollView( + padding: EdgeInsets.all(12), + child: Column( + children: [ + // _card(_defaultDetail()), + _card( + WorkDetailFormWidget( + pd: pd, + isEditable: false, + onChooseLevel: (){}, + onChooseHotworkUser: (){}, + onAnalyzeTap: () { + pushPage( + HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID), + context, + ); + }, + ), + ), + SizedBox(height: 20), + _setSafeDetailWidget(), + SizedBox(height: 20), + _bottomButtons(), + ], + ), + ), + ), + ); + } +} + +class MeasureItem { + final double id; + String DEPARTMENT_ID; + String DEPARTMENT_NAME; + String USER_ID; + String USER_NAME; + List> userList; + int userIndex; + List> selectMeasures; + + MeasureItem({ + required this.id, + this.DEPARTMENT_ID = '', + this.DEPARTMENT_NAME = '', + this.USER_ID = '', + this.USER_NAME = '', + List>? userList, + this.userIndex = -1, + List>? selectMeasures, + }) : userList = userList ?? [], + selectMeasures = selectMeasures ?? []; + + Map toJson() { + return { + 'id': id, + 'DEPARTMENT_ID': DEPARTMENT_ID, + 'DEPARTMENT_NAME': DEPARTMENT_NAME, + 'USER_ID': USER_ID, + 'USER_NAME': USER_NAME, + 'userList': userList, + 'userIndex': userIndex, + 'selectMeasures': selectMeasures, + }; + } +} diff --git a/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/MeasuresListWidget.dart b/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/MeasuresListWidget.dart index a9b26bb..e1af6dd 100644 --- a/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/MeasuresListWidget.dart +++ b/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/MeasuresListWidget.dart @@ -50,7 +50,6 @@ class MeasuresListWidget extends StatelessWidget { border: TableBorder( horizontalInside: BorderSide(color: Colors.grey.shade300), verticalInside: BorderSide(color: Colors.grey.shade300), - ), children: [ // 表头 @@ -155,26 +154,32 @@ class MeasuresListWidget extends StatelessWidget { padding: const EdgeInsets.only(top: 8), child: Column( children: [ - Padding(padding: EdgeInsets.symmetric(horizontal: 12), child: Row( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - '$question: ', - style: const TextStyle(fontWeight: FontWeight.w800), - ), - Text(answer.isNotEmpty ? answer : '0') - ], - ),), - Divider() + Padding( + padding: EdgeInsets.symmetric(horizontal: 12), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '$question: ', + style: const TextStyle(fontWeight: FontWeight.w800), + ), + Text(answer.isNotEmpty ? answer : '0'), + ], + ), + ), + Divider(), ], - ) + ), ); } /// 构造一组图片 + 可选时间文本行 - List _buildImageRows(BuildContext context, List paths, String time) { - + List _buildImageRows( + BuildContext context, + List paths, + String time, + ) { return paths.map((p) { return Padding( padding: const EdgeInsets.only(top: 8), @@ -182,16 +187,16 @@ class MeasuresListWidget extends StatelessWidget { children: [ GestureDetector( onTap: () { - Navigator.of(context).push(PageRouteBuilder( - opaque: false, - pageBuilder: (_, __, ___) => SingleImageViewer(imageUrl: '$baseImgPath$p'), - )); + Navigator.of(context).push( + PageRouteBuilder( + opaque: false, + pageBuilder: + (_, __, ___) => + SingleImageViewer(imageUrl: '$baseImgPath$p'), + ), + ); }, - child: Image.network( - '$baseImgPath$p', - width: 80, - height: 80, - ), + child: Image.network('$baseImgPath$p', width: 80, height: 80), ), if (time.isNotEmpty) ...[const SizedBox(width: 8), Text(time)], ], @@ -200,6 +205,7 @@ class MeasuresListWidget extends StatelessWidget { }).toList(); } } + /// 其他安全防护措施表格组件 class OtherMeasuresWidget extends StatelessWidget { /// 其他安全防护措施数据列表 @@ -214,17 +220,17 @@ class OtherMeasuresWidget extends StatelessWidget { @override Widget build(BuildContext context) { - final list = (otherMeasures ?? []) - .where((e) => e is Map) - .map((e) => e as Map) - .toList(); + final list = + (otherMeasures ?? []) + .where((e) => e is Map) + .map((e) => e as Map) + .toList(); if (list.isEmpty) { return const SizedBox.shrink(); } return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( margin: const EdgeInsets.symmetric(horizontal: 10), decoration: BoxDecoration( @@ -244,13 +250,19 @@ class OtherMeasuresWidget extends StatelessWidget { Padding( padding: EdgeInsets.all(8), child: Center( - child: Text('其他安全措施', style: TextStyle(fontWeight: FontWeight.bold)), + child: Text( + '其他安全措施', + style: TextStyle(fontWeight: FontWeight.bold), + ), ), ), Padding( padding: EdgeInsets.all(8), child: Center( - child: Text('签字', style: TextStyle(fontWeight: FontWeight.bold)), + child: Text( + '签字', + style: TextStyle(fontWeight: FontWeight.bold), + ), ), ), ], @@ -291,29 +303,35 @@ class OtherMeasuresWidget extends StatelessWidget { return Wrap( spacing: 8, runSpacing: 8, - children: paths.map((p) { - return GestureDetector( - onTap: () { - Navigator.of(context).push(MaterialPageRoute( - builder: (_) => SingleImageViewer(imageUrl: '$baseImgPath$p'), - )); - }, - child: Image.network( - '$baseImgPath$p', - width: 60, - height: 60, - errorBuilder: (c, o, s) => const Icon(Icons.broken_image), - ), - ); - }).toList(), + children: + paths.map((p) { + return GestureDetector( + onTap: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: + (_) => SingleImageViewer(imageUrl: '$baseImgPath$p'), + ), + ); + }, + child: Image.network( + '$baseImgPath$p', + width: 60, + height: 60, + errorBuilder: (c, o, s) => const Icon(Icons.broken_image), + ), + ); + }).toList(), ); } } + /// 各角色签名展示组件 class SignaturesListWidget extends StatelessWidget { final Map? signs; final Map? pd; final String baseImgPath; + const SignaturesListWidget({ Key? key, this.signs, @@ -327,22 +345,96 @@ class SignaturesListWidget extends StatelessWidget { final safePd = pd ?? {}; return Column( children: [ - _buildSection(context, '监护人', safeSigns['GUARDIAN'], safePd['GUARDIAN_USER_NAME'], EditUserType.GUARDIAN), - _buildSection(context, '安全交底人', safeSigns['CONFESS'], safePd['CONFESS_USER_NAME'], EditUserType.CONFESS), - _buildSection(context, '接受交底人', safeSigns['ACCEPT_CONFESS'], safePd['ACCEPT_CONFESS_USER_NAME'], EditUserType.ACCEPT_CONFESS), - _buildTextareaWithSigns(context, '作业负责人意见', safeSigns['CONFIRM'], safePd['CONFIRM_USER_NAME'], EditUserType.CONFIRM), - _buildTextareaWithSigns(context, '所在单位意见', safeSigns['LEADER'], safePd['LEADER_USER_NAME'], EditUserType.LEADER), - _buildTextareaWithSigns(context, '安全管理部门意见', safeSigns['AUDIT'], safePd['AUDIT_USER_NAME'], EditUserType.AUDIT), - _buildTextareaWithSigns(context, '动火审批人意见', safeSigns['APPROVE'], safePd['APPROVE_USER_NAME'], EditUserType.APPROVE), - _buildTextareaWithSigns(context, '动火前在岗班长意见', safeSigns['MONITOR'], safePd['MONITOR_USER_NAME'], EditUserType.MONITOR), - _buildSection(context, '作业开始负责人', safeSigns['WORK_START'], safePd['WORK_START_USER_NAME'], EditUserType.WORK_START), - _buildSection(context, '作业结束负责人', safeSigns['WORK_END'], safePd['WORK_END_USER_NAME'], EditUserType.WORK_END), - _buildTextareaWithSigns(context, '完工验收', safeSigns['ACCEPT'], safePd['ACCEPT_USER_NAME'], EditUserType.ACCEPT, timeKey: 'ACCEPT_TIME'), + _buildSection( + context, + '监护人', + safeSigns['GUARDIAN'], + safePd['GUARDIAN_USER_NAME'], + EditUserType.GUARDIAN, + ), + _buildSection( + context, + '安全交底人', + safeSigns['CONFESS'], + safePd['CONFESS_USER_NAME'], + EditUserType.CONFESS, + ), + _buildSection( + context, + '接受交底人', + safeSigns['ACCEPT_CONFESS'], + safePd['ACCEPT_CONFESS_USER_NAME'], + EditUserType.ACCEPT_CONFESS, + ), + _buildTextareaWithSigns( + context, + '作业负责人意见', + safeSigns['CONFIRM'], + safePd['CONFIRM_USER_NAME'], + EditUserType.CONFIRM, + ), + _buildTextareaWithSigns( + context, + '所在单位意见', + safeSigns['LEADER'], + safePd['LEADER_USER_NAME'], + EditUserType.LEADER, + ), + _buildTextareaWithSigns( + context, + '安全管理部门意见', + safeSigns['AUDIT'], + safePd['AUDIT_USER_NAME'], + EditUserType.AUDIT, + ), + _buildTextareaWithSigns( + context, + '动火审批人意见', + safeSigns['APPROVE'], + safePd['APPROVE_USER_NAME'], + EditUserType.APPROVE, + ), + _buildTextareaWithSigns( + context, + '动火前在岗班长意见', + safeSigns['MONITOR'], + safePd['MONITOR_USER_NAME'], + EditUserType.MONITOR, + ), + _buildSection( + context, + '作业开始负责人', + safeSigns['WORK_START'], + safePd['WORK_START_USER_NAME'], + EditUserType.WORK_START, + ), + _buildSection( + context, + '作业结束负责人', + safeSigns['WORK_END'], + safePd['WORK_END_USER_NAME'], + EditUserType.WORK_END, + ), + _buildTextareaWithSigns( + context, + '完工验收', + safeSigns['ACCEPT'], + safePd['ACCEPT_USER_NAME'], + EditUserType.ACCEPT, + timeKey: 'ACCEPT_TIME', + ), ], ); } - Widget _buildSection(BuildContext context, String title, dynamic rawList, dynamic userName, EditUserType type, {bool showImages = false}) { + Widget _buildSection( + BuildContext context, + String title, + dynamic rawList, + dynamic userName, + EditUserType type, { + bool showImages = false, + }) { if (rawList is! List || rawList.isEmpty) return const SizedBox.shrink(); final list = rawList.cast>(); final first = list.first; @@ -364,20 +456,38 @@ class SignaturesListWidget extends StatelessWidget { return Container( margin: const EdgeInsets.only(top: 20), - decoration: BoxDecoration(color: Colors.white,border: Border.symmetric(vertical: BorderSide(color: Colors.grey.shade300))), + decoration: BoxDecoration( + color: Colors.white, + border: Border.symmetric( + vertical: BorderSide(color: Colors.grey.shade300), + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: const EdgeInsets.all(8), - child: Text('$title: $name', style: const TextStyle(fontWeight: FontWeight.bold)), + child: Text( + '$title: $name', + style: const TextStyle(fontWeight: FontWeight.bold), + ), ), if (showImages && first['IMG_PATH'] is List) Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: Wrap( spacing: 8, - children: (first['IMG_PATH'] as List).cast().map((img) => Image.network('$baseImgPath$img', width: 50, height: 50)).toList(), + children: + (first['IMG_PATH'] as List) + .cast() + .map( + (img) => Image.network( + '$baseImgPath$img', + width: 50, + height: 50, + ), + ) + .toList(), ), ), for (var i = 0; i < signPaths.length; i++) @@ -386,11 +496,27 @@ class SignaturesListWidget extends StatelessWidget { child: Row( children: [ GestureDetector( - onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => SingleImageViewer(imageUrl: '$baseImgPath${signPaths[i]}'))), - child: Image.network('$baseImgPath${signPaths[i]}', width: 100, height: 100, errorBuilder: (_, __, ___) => const Icon(Icons.broken_image)), + onTap: + () => Navigator.of(context).push( + MaterialPageRoute( + builder: + (_) => SingleImageViewer( + imageUrl: '$baseImgPath${signPaths[i]}', + ), + ), + ), + child: Image.network( + '$baseImgPath${signPaths[i]}', + width: 100, + height: 100, + errorBuilder: + (_, __, ___) => const Icon(Icons.broken_image), + ), ), const SizedBox(width: 16), - Expanded(child: Text(i < signTimes.length ? signTimes[i] : '')), + Expanded( + child: Text(i < signTimes.length ? signTimes[i] : ''), + ), ], ), ), @@ -399,14 +525,20 @@ class SignaturesListWidget extends StatelessWidget { ); } - Widget _buildTextareaWithSigns(BuildContext context, String label, dynamic rawList, dynamic userName, EditUserType type, {String? timeKey}) { + Widget _buildTextareaWithSigns( + BuildContext context, + String label, + dynamic rawList, + dynamic userName, + EditUserType type, { + String? timeKey, + }) { if (rawList is! List || rawList.isEmpty) return const SizedBox.shrink(); final first = (rawList as List).cast>().first; final descr = first['DESCR'] is String ? first['DESCR'] as String : ''; final name = pd?['${type.name}_USER_NAME']; final personDes = type.personName; - final signPaths = []; final signTimes = []; if (first['SIGN_PATH'] != null) { @@ -422,7 +554,12 @@ class SignaturesListWidget extends StatelessWidget { return Container( margin: const EdgeInsets.only(top: 20), - decoration: BoxDecoration(color: Colors.white,border: Border.symmetric(vertical: BorderSide(color: Colors.grey.shade300))), + decoration: BoxDecoration( + color: Colors.white, + border: Border.symmetric( + vertical: BorderSide(color: Colors.grey.shade300), + ), + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -431,9 +568,17 @@ class SignaturesListWidget extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text(label, style: const TextStyle(fontWeight: FontWeight.bold)), + Text( + label, + style: const TextStyle(fontWeight: FontWeight.bold), + ), const SizedBox(height: 4), - TextField(controller: TextEditingController(text: descr), maxLines: null, readOnly: true, decoration: const InputDecoration(border: InputBorder.none)), + TextField( + controller: TextEditingController(text: descr), + maxLines: null, + readOnly: true, + decoration: const InputDecoration(border: InputBorder.none), + ), ], ), ), @@ -447,11 +592,27 @@ class SignaturesListWidget extends StatelessWidget { child: Row( children: [ GestureDetector( - onTap: () => Navigator.of(context).push(MaterialPageRoute(builder: (_) => SingleImageViewer(imageUrl: '$baseImgPath${signPaths[i]}'))), - child: Image.network('$baseImgPath${signPaths[i]}', width: 100, height: 100, errorBuilder: (_, __, ___) => const Icon(Icons.broken_image)), + onTap: + () => Navigator.of(context).push( + MaterialPageRoute( + builder: + (_) => SingleImageViewer( + imageUrl: '$baseImgPath${signPaths[i]}', + ), + ), + ), + child: Image.network( + '$baseImgPath${signPaths[i]}', + width: 100, + height: 100, + errorBuilder: + (_, __, ___) => const Icon(Icons.broken_image), + ), ), const SizedBox(width: 16), - Expanded(child: Text(i < signTimes.length ? signTimes[i] : '')), + Expanded( + child: Text(i < signTimes.length ? signTimes[i] : ''), + ), ], ), ), @@ -460,12 +621,15 @@ class SignaturesListWidget extends StatelessWidget { ); } } + ///动火安全申请里的’选择其他‘弹窗 class SelectionPopup extends StatefulWidget { /// 类型: 'assignments' 或 'identification' final String type; + /// 初始选中值,以逗号分隔 final String initialValue; + /// 确认回调 final void Function(String) onConfirm; @@ -514,22 +678,20 @@ class _SelectionPopupState extends State { } Future _pickDate() async { - showDialog( context: context, builder: (_) => HDatePickerDialog( - initialDate: DateTime.now(), - onCancel: () => Navigator.of(context).pop(), - onConfirm: (selected) { - Navigator.of(context).pop(); - setState(() { - selectedDate = selected; - }); - }, - ), + initialDate: DateTime.now(), + onCancel: () => Navigator.of(context).pop(), + onConfirm: (selected) { + Navigator.of(context).pop(); + setState(() { + selectedDate = selected; + }); + }, + ), ); - } Future _getData() async { @@ -538,7 +700,8 @@ class _SelectionPopupState extends State { if (widget.type == 'assignments') { params = { 'WORK_TYPE': selectedWorkType, - 'KEYWORDS': selectedDate == null ? '' : selectedDate!.toString().split(' ')[0], + 'KEYWORDS': + selectedDate == null ? '' : selectedDate!.toString().split(' ')[0], 'CORPINFO_ID': SessionService.instance.corpinfoId, }; } else { @@ -567,14 +730,12 @@ class _SelectionPopupState extends State { item['CHECK_NO'] = (prefixMap[type] ?? '') + ' ' + no; } }); - - }else{ + } else { final result = await ApiService.getEightWorkInfo(params); setState(() { - list = (result['accidentType'] as List).cast>(); + list = (result['accidentType'] as List).cast>(); }); } - } catch (e) { ToastUtil.showError(context, '$e'); } @@ -582,15 +743,16 @@ class _SelectionPopupState extends State { void _reset() { setState(() { - selectedWorkType = ''; - selectedWorkName = '请选择'; - selectedDate = null; + // 回到下拉列表的初始选项(第 0 项) + selectedWorkType = workList[0]['WORK_TYPE']!; + selectedWorkName = workList[0]['WORK_NAME']!; + + selectedDate = null; list.clear(); selectValue.clear(); }); _getData(); } - void _determine() { // 合并选中 final result = selectValue.join(','); @@ -610,51 +772,76 @@ class _SelectionPopupState extends State { children: [ // 筛选栏 if (widget.type == 'assignments') - Padding( - padding: const EdgeInsets.all(12), - child: Row( - children: [ - // 作业类型下拉 - Expanded( - child: DropdownButton( - dropdownColor: Colors.white, - style: TextStyle(), - isExpanded: true, - value: selectedWorkName, - items: workList - .map((e) => DropdownMenuItem( - value: e['WORK_NAME'], - child: Text(e['WORK_NAME']!, style: TextStyle(color: Colors.black87),), - )) - .toList(), - onChanged: (v) { - final idx = workList.indexWhere((e) => e['WORK_NAME'] == v); - if (idx >= 0) { - setState(() { - selectedWorkType = workList[idx]['WORK_TYPE']!; - selectedWorkName = v!; - }); - _getData(); - } - }, + Padding( + padding: const EdgeInsets.all(12), + child: Row( + children: [ + // 作业类型下拉 + Expanded( + child: DropdownButton( + dropdownColor: Colors.white, + style: TextStyle(), + isExpanded: true, + value: selectedWorkName, + items: + workList + .map( + (e) => DropdownMenuItem( + value: e['WORK_NAME'], + child: Text( + e['WORK_NAME']!, + style: TextStyle(color: Colors.black87), + ), + ), + ) + .toList(), + onChanged: (v) { + final idx = workList.indexWhere( + (e) => e['WORK_NAME'] == v, + ); + if (idx >= 0) { + setState(() { + selectedWorkType = workList[idx]['WORK_TYPE']!; + selectedWorkName = v!; + }); + _getData(); + } + }, + ), ), - ), - const SizedBox(width: 12), + const SizedBox(width: 12), - TextButton(onPressed: _pickDate, child: Row( - children: [ - Text(selectedDate == null - ? '选择作业申请时间' - : selectedDate!.toString().split(' ')[0],style: TextStyle(color: Colors.blue),), - SizedBox(width: 5,), - Icon(Icons.arrow_drop_down, color: Colors.grey, size: 20,), ], - )), + TextButton( + onPressed: _pickDate, + child: Row( + children: [ + Text( + selectedDate == null + ? '选择作业申请时间' + : selectedDate!.toString().split(' ')[0], + style: TextStyle(color: Colors.blue), + ), + SizedBox(width: 5), + Icon( + Icons.arrow_drop_down, + color: Colors.grey, + size: 20, + ), + ], + ), + ), - // 清空 - CustomButton(text: '清空',padding: EdgeInsets.symmetric(horizontal: 15),height: 35, backgroundColor: Colors.blue, onPressed: _reset,) - ], + // 清空 + CustomButton( + text: '清空', + padding: EdgeInsets.symmetric(horizontal: 15), + height: 35, + backgroundColor: Colors.blue, + onPressed: _reset, + ), + ], + ), ), - ), const Divider(), // 列表多选 Expanded( @@ -664,9 +851,10 @@ class _SelectionPopupState extends State { itemBuilder: (c, i) { final item = list[i]; final value = selectValue; - final key = widget.type == 'assignments' - ? item['CHECK_NO'] as String? ?? '' - : item['NAME'] as String? ?? ''; + final key = + widget.type == 'assignments' + ? item['CHECK_NO'] as String? ?? '' + : item['NAME'] as String? ?? ''; final checked = value.contains(key); return CheckboxListTile( activeColor: Colors.blue, @@ -700,11 +888,22 @@ class _SelectionPopupState extends State { child: Row( children: [ Expanded( - child:CustomButton(text: '确定', height: 40, backgroundColor: Colors.blue, onPressed: _determine,) + child: CustomButton( + text: '确定', + height: 40, + backgroundColor: Colors.blue, + onPressed: _determine, + ), ), const SizedBox(width: 12), Expanded( - child: CustomButton(text: '关闭', height: 40, backgroundColor: Colors.grey.shade300, textStyle: TextStyle(color: Colors.grey.shade600), onPressed: () => Navigator.of(context).pop(),) + child: CustomButton( + text: '关闭', + height: 40, + backgroundColor: Colors.grey.shade300, + textStyle: TextStyle(color: Colors.grey.shade600), + onPressed: () => Navigator.of(context).pop(), + ), ), ], ), diff --git a/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/hotwork_apply_detail.dart b/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/hotwork_apply_detail.dart index 7f4e596..a81cf5c 100644 --- a/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/hotwork_apply_detail.dart +++ b/lib/pages/home/tap/tabList/special_wrok/dh_work_detai/hotwork_apply_detail.dart @@ -7,6 +7,7 @@ import 'package:qhd_prevention/customWidget/department_person_picker.dart'; import 'package:qhd_prevention/customWidget/department_picker.dart'; import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/pages/home/tap/item_list_widget.dart'; +import 'package:qhd_prevention/pages/home/tap/tabList/special_wrok/WorkDetailFormWidget.dart'; import 'package:qhd_prevention/tools/tools.dart'; import '../../../../../../customWidget/bottom_picker.dart'; import '../../../../../../http/ApiService.dart'; @@ -159,12 +160,10 @@ class _HotworkApplyDetailState extends State { pd['WORK_LEVEL'] = choice; FocusHelper.clearFocus(context); }); - } } - Future _chooseHorkUser() async{ - + Future _chooseHorkUser() async { final choice = await BottomPicker.show( context, items: workUserList.map((item) => item['NAME'] as String).toList(), @@ -176,7 +175,7 @@ class _HotworkApplyDetailState extends State { pd['WORK_USER'] = choice; _hotworkPersonController.text = choice; Map result = workUserList.firstWhere( - (item) => item['NAME'] == choice, + (item) => item['NAME'] == choice, orElse: () => {}, // 避免找不到时报错 ); if (FormUtils.hasValue(result, 'USER_ID')) { @@ -184,172 +183,9 @@ class _HotworkApplyDetailState extends State { } FocusHelper.clearFocus(context); }); - } } - Widget _defaultDetail() { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ItemListWidget.singleLineTitleText( - label: '申请单位:', - isEditable: false, - text: pd['APPLY_DEPARTMENT_NAME'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '申请人:', - isEditable: false, - text: pd['APPLY_USER_NAME'] ?? '', - ), - if (FormUtils.hasValue(pd, 'CHECK_NO')) - Column( - children: [ - Divider(), - ItemListWidget.singleLineTitleText( - label: '编号:', - isEditable: false, - text: pd['CHECK_NO'] ?? '', - ), - ], - ), - - Divider(), - ItemListWidget.multiLineTitleTextField( - label: '作业内容:', - isEditable: isEditable, - controller: _contentController, - text: pd['WORK_CONTENT'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火地点及动火部位:', - isEditable: isEditable, - controller: _locationController, - text: pd['WORK_PLACE'] ?? '', - ), - Divider(), - ItemListWidget.selectableLineTitleTextField( - label: '动火作业级别', - isEditable: isEditable, - onTap: () { - _chooseLevel(); - }, - text: pd['WORK_LEVEL'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火方式:', - isEditable: isEditable, - controller: _methodController, - text: pd['WORK_FUNCTION'] ?? '', - ), - if (pd['WORK_START_DATE'] != null && - pd['WORK_START_DATE'].toString().isNotEmpty) - Column( - children: [ - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火作业\n实施时间:', - isEditable: isEditable, - controller: _methodController, - text: - pd['WORK_START_DATE'] ?? - '' + - '至' + - (pd['WORK_END_DATE'] - ? pd['WORK_END_DATE'] ?? '' - : '--') ?? - '', - ), - ], - ), - Divider(), - ItemListWidget.twoRowSelectableTitleText( - label: '动火人及证书编号:', - isEditable: isEditable, - onTap: () { - _chooseHorkUser(); - }, - controller: _hotworkPersonController, - text: pd['WORK_USER'] ?? '', - ), - Divider(), - ItemListWidget.twoRowButtonTitleText( - label: '关联的其他特殊作业及安全作业票编号', - isEditable: isEditable, - onTap: () { - showDialog( - context: context, - builder: (_) => SelectionPopup( - type: 'assignments', - initialValue: pd['SPECIAL_WORK'] ?? '', - onConfirm: (val) { - // val 为逗号分隔的选中值 - setState(() { - pd['SPECIAL_WORK'] = val; - _relatedController.text = val; - }); - }, - ), - ).then((_) { - FocusHelper.clearFocus(context); - }); - // identification - }, - hintText: '请输入关联的其他特殊作业及安全作业票编号', - controller: _relatedController, - text: pd['SPECIAL_WORK'] ?? '', - ), - Divider(), - ItemListWidget.twoRowButtonTitleText( - label: '风险辨识结果', - isEditable: isEditable, - onTap: () { - - showDialog( - context: context, - builder: (_) => SelectionPopup( - type: 'identification', - initialValue: pd['RISK_IDENTIFICATION'] ?? '', - onConfirm: (val) { - // val 为逗号分隔的选中值 - setState(() { - pd['RISK_IDENTIFICATION'] = val; - _riskController.text = val; - }); - }, - ), - ).then((_) { - FocusHelper.clearFocus(context); - - }); - }, - hintText: '请输入风险辨识结果', - controller: _riskController, - text: pd['RISK_IDENTIFICATION'] ?? '', - ), - if (FormUtils.hasValue(pd, 'ANALYZE_TIME')) - Column( - children: [ - Divider(), - ItemListWidget.OneRowButtonTitleText( - label: '分析人', - text: pd['ANALYZE_USER_NAME'] ?? '', - onTap: () { - pushPage( - HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID), - context, - ); - }, - ), - ], - ), - ], - ); - } - Widget _card(Widget child) { return Container( decoration: BoxDecoration( @@ -361,11 +197,32 @@ class _HotworkApplyDetailState extends State { } Widget _chooseItem(EditUserType type) { + bool isClean = false; + + if (isEditable) { + if (type == EditUserType.AUDIT && (pd['WORK_LEVEL'] ?? '') == '二级') { + isClean = true; + } + if (type == EditUserType.APPROVE && + ((pd['WORK_LEVEL'] ?? '') == '二级' || + (pd['WORK_LEVEL'] ?? '') == '一级')) { + isClean = true; + } + } + return Column( children: [ ItemListWidget.selectableLineTitleTextField( label: type.displayName, isEditable: isEditable, + isClean: isClean, + onTapClean: () { + setState(() { + pd['${type.name}_DEPARTMENT_NAME'] = ''; + pd['${type.name}_USER_NAME'] = ''; + _personCache.remove(type); + }); + }, text: pd['${type.name}_DEPARTMENT_NAME'] ?? '请选择', onTap: () => chooseUnitHandle(type), ), @@ -416,7 +273,7 @@ class _HotworkApplyDetailState extends State { } /// 弹出人员选择,需先选择单位 - void choosePersonHandle(EditUserType type) async{ + void choosePersonHandle(EditUserType type) async { FocusHelper.clearFocus(context); String unitId = get_pd_DEPARTMENT_ID(type); @@ -426,17 +283,22 @@ class _HotworkApplyDetailState extends State { ToastUtil.showNormal(context, '请先选择$unitName'); return; } - if (personList.isEmpty) { // 一般这种情况是因为重新编辑没有缓存对应部门的负责人,所以先拉取一下接口 - await _getPersonListForUnitId(unitId, type); - final list = _personCache[type] ?? []; - - if (list.isEmpty) { // 如果还是没数据,说明该部门没有可选的人 - ToastUtil.showNormal(context, '暂无数据,请选择其他单位'); - }else{ - choosePersonHandle(type); - } + if (personList.isEmpty) { + // 如果还是没数据,说明该部门没有可选的人 + ToastUtil.showNormal(context, '请先选择' + type.displayName); return; } + // if (personList.isEmpty) { // 一般这种情况是因为重新编辑没有缓存对应部门的负责人,所以先拉取一下接口 + // await _getPersonListForUnitId(unitId, type); + // final list = _personCache[type] ?? []; + // + // if (list.isEmpty) { // 如果还是没数据,说明该部门没有可选的人 + // ToastUtil.showNormal(context, '暂无数据,请选择其他单位'); + // }else{ + // choosePersonHandle(type); + // } + // return; + // } DepartmentPersonPicker.show( context, personsData: personList, @@ -467,6 +329,7 @@ class _HotworkApplyDetailState extends State { ]; final level = pd['WORK_LEVEL'] ?? ''; print('---level-$level'); + /// 各项负责人校验 final unitRules = [ EditUserType.ANALYZE, @@ -529,11 +392,11 @@ class _HotworkApplyDetailState extends State { pd['TASK_ID'] = taskId; pd['HOTWORK_ID'] = widget.HOTWORK_ID; pd['APPLY_DEPARTMENT_ID'] = SessionService.instance.deptId; - pd['APPLY_DEPARTMENT_NAME'] = SessionService.instance.loginUser?['DEPARTMENT_NAME'] ?? ''; + pd['APPLY_DEPARTMENT_NAME'] = + SessionService.instance.loginUser?['DEPARTMENT_NAME'] ?? ''; pd['APPLY_USER_ID'] = SessionService.instance.loginUserId; pd['APPLY_USER_NAME'] = SessionService.instance.username; pd['USER_ID'] = SessionService.instance.loginUserId; - } LoadingDialogHelper.show(context); @@ -552,20 +415,23 @@ class _HotworkApplyDetailState extends State { ToastUtil.showNormal(context, '操作失败:$e'); } } + void printLongString(String text, {int chunkSize = 800}) { final pattern = RegExp('.{1,$chunkSize}'); // 每 chunkSize 个字符一组 for (final match in pattern.allMatches(text)) { print(match.group(0)); } } + Future _getHotWorkNameList() async { final result = await ApiService.getHotWorkNameList(); setState(() { workUserList = result['varList'] ?? ''; - List names = workUserList.map((item) => item['NAME'] as String).toList(); - + List names = + workUserList.map((item) => item['NAME'] as String).toList(); }); } + /// 初始化拉取数据 Future _getData() async { final data = await ApiService.getHomeworkFindById(widget.HOTWORK_ID); @@ -584,7 +450,6 @@ class _HotworkApplyDetailState extends State { _hotworkPersonController.text = pd['WORK_USER'] ?? ''; _relatedController.text = pd['SPECIAL_WORK'] ?? ''; _riskController.text = pd['RISK_IDENTIFICATION'] ?? ''; - }); // final data = await ApiService.getHomeworkFindById(widget.HOTWORK_ID); // setState(() { @@ -622,7 +487,26 @@ class _HotworkApplyDetailState extends State { padding: EdgeInsets.all(12), child: Column( children: [ - _card(_defaultDetail()), + _card( + WorkDetailFormWidget( + pd: pd, + isEditable: isEditable, + contentController: _contentController, + locationController: _locationController, + methodController: _methodController, + hotworkPersonController: _hotworkPersonController, + relatedController: _relatedController, + riskController: _riskController, + onChooseLevel: _chooseLevel, + onChooseHotworkUser: _chooseHorkUser, + onAnalyzeTap: () { + pushPage( + HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID), + context, + ); + }, + ), + ), if (isEditable) Column( children: [ diff --git a/lib/pages/home/tap/tabList/special_wrok/home_gas_test_page.dart b/lib/pages/home/tap/tabList/special_wrok/home_gas_test_page.dart index 838afe4..063804c 100644 --- a/lib/pages/home/tap/tabList/special_wrok/home_gas_test_page.dart +++ b/lib/pages/home/tap/tabList/special_wrok/home_gas_test_page.dart @@ -12,6 +12,7 @@ import 'package:qhd_prevention/pages/mine/mine_sign_page.dart'; import '../../../../../customWidget/custom_alert_dialog.dart'; import '../../../../../customWidget/picker/CupertinoDatePicker.dart'; +import '../../../../../customWidget/single_image_viewer.dart'; class HomeGasTestPage extends StatefulWidget { const HomeGasTestPage({Key? key, required this.HOTWORK_ID}) : super(key: key); @@ -68,21 +69,29 @@ class _HomeGasTestPageState extends State { return Column( children: [ const SizedBox(height: 10), - // const DottedLine( - // dashLength: 6.0, - // dashGapLength: 4.0, - // lineThickness: 0.5, - // dashColor: Colors.grey, - // ), const Divider(), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Image.file( - File(path), - width: 200, - height: 150, - fit: BoxFit.cover, + GestureDetector( + child: // 用一个 ConstrainedBox 限制最大尺寸,并改为 BoxFit.contain + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 200, + maxHeight: 150, + ), + child: Image.file( + File(path), + // 改为完整显示 + fit: BoxFit.contain, + ), + ), + onTap: () { + presentOpaque( + SingleImageViewer(imageUrl: path), + context, + ); + }, ), Column( children: [ diff --git a/lib/pages/home/tap/tabList/special_wrok/special_work_list_page.dart b/lib/pages/home/tap/tabList/special_wrok/special_work_list_page.dart index 268735a..cce2cf0 100644 --- a/lib/pages/home/tap/tabList/special_wrok/special_work_list_page.dart +++ b/lib/pages/home/tap/tabList/special_wrok/special_work_list_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/pages/home/tap/tabList/special_Wrok/dh_work_detai/hotwork_apply_detail.dart'; +import 'package:qhd_prevention/pages/home/tap/tabList/special_wrok/aqcs_work_detail/hotwork_safe_func_sure.dart'; import 'package:qhd_prevention/pages/home/tap/tabList/special_wrok/szaq_work_detail/hotwork_set_safe_detail.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; import 'package:qhd_prevention/tools/tools.dart'; @@ -196,7 +197,7 @@ class _SpecialWorkListPageState extends State { await pushPage(HotworkSetSafeDetail(HOTWORK_ID: item['HOTWORK_ID'], flow: widget.flow), context); break; case '安全措施确认': - routeName = '/hotwork-measures-confirm-detail'; + await pushPage(HotworkSafeFuncSure(HOTWORK_ID: item['HOTWORK_ID'], flow: widget.flow), context); break; case '监护人签字': routeName = '/hotwork-guardian-detail'; diff --git a/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/SafeFunctionDialog.dart b/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/SafeFunctionDialog.dart index ea5bbd0..a801349 100644 --- a/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/SafeFunctionDialog.dart +++ b/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/SafeFunctionDialog.dart @@ -3,15 +3,20 @@ import 'package:qhd_prevention/customWidget/custom_button.dart'; /// 安全措施弹窗 class SafeFunctionDialog extends StatefulWidget { + /// 原始数据列表,每个元素为包含 "PROTECTIVE_MEASURES" 键的 Map final List> data; - /// 点击确认回调,返回选中的措施列表 - final void Function(List selectedMeasures) onConfirm; + /// 已选中的初始数据列表 + final List> initialSelectedItems; - /// 构造函数 + /// 点击确认回调,返回选中的 Map 列表 + final void Function(List> selectedItems) onConfirm; + + /// 构造函数,支持传入已选中的数据 const SafeFunctionDialog({ Key? key, required this.data, + this.initialSelectedItems = const [], required this.onConfirm, }) : super(key: key); @@ -20,19 +25,19 @@ class SafeFunctionDialog extends StatefulWidget { } class _SafeFunctionDialogState extends State { - /// 存放所有可选项的文字 - late final List _allMeasures; + /// 存放所有可选项的 Map 列表 + late final List> _allItems; - /// 存放当前被选中的文字 - final List _selectedMeasures = []; + /// 存放当前被选中的 Map 列表 + late final List> _selectedItems; @override void initState() { super.initState(); - _allMeasures = - widget.data - .map((e) => e['PROTECTIVE_MEASURES'] as String? ?? '') - .toList(); + // 初始化所有选项 + _allItems = widget.data; + // 初始化已选中项,克隆一份避免修改原数据 + _selectedItems = List>.from(widget.initialSelectedItems); } @override @@ -41,32 +46,30 @@ class _SafeFunctionDialogState extends State { insetPadding: const EdgeInsets.symmetric(horizontal: 12, vertical: 24), content: SizedBox( width: MediaQuery.of(context).size.width - 24, - height: - MediaQuery.of(context).size.height - + height: MediaQuery.of(context).size.height - MediaQuery.of(context).padding.top - MediaQuery.of(context).padding.bottom, child: Column( children: [ Expanded( child: ListView.builder( - itemCount: _allMeasures.length, + itemCount: _allItems.length, itemBuilder: (ctx, index) { - final measure = _allMeasures[index]; - final checked = _selectedMeasures.contains(measure); + final item = _allItems[index]; + final label = item['PROTECTIVE_MEASURES'] as String? ?? ''; + final checked = _selectedItems.contains(item); return CheckboxListTile( - // 将复选框移到左侧 controlAffinity: ListTileControlAffinity.leading, - // 调整左右间隙 contentPadding: const EdgeInsets.symmetric(horizontal: 0), activeColor: Colors.blue, - title: Text(measure, style: const TextStyle(fontSize: 14)), + title: Text(label, style: const TextStyle(fontSize: 14)), value: checked, onChanged: (value) { setState(() { if (value == true) { - _selectedMeasures.add(measure); + _selectedItems.add(item); } else { - _selectedMeasures.remove(measure); + _selectedItems.remove(item); } }); }, @@ -83,7 +86,7 @@ class _SafeFunctionDialogState extends State { height: 40, backgroundColor: Colors.blue, onPressed: () { - widget.onConfirm(_selectedMeasures); + widget.onConfirm(_selectedItems); Navigator.of(context).pop(); }, ), @@ -107,14 +110,21 @@ class _SafeFunctionDialogState extends State { } } +/// 显示安全措施弹窗 +/// [initialSelected] 可选,指定弹窗打开时的已选项 Future showSafeFunctionDialog( - BuildContext context, - List> data, - void Function(List) onConfirm, -) { + BuildContext context, + List> data, + void Function(List>) onConfirm, { + List> initialSelected = const [], + }) { return showDialog( context: context, barrierDismissible: false, - builder: (_) => SafeFunctionDialog(data: data, onConfirm: onConfirm), + builder: (_) => SafeFunctionDialog( + data: data, + initialSelectedItems: initialSelected, + onConfirm: onConfirm, + ), ); -} +} \ No newline at end of file diff --git a/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/hotwork_set_safe_detail.dart b/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/hotwork_set_safe_detail.dart index 7e0d9e8..96d0f1e 100644 --- a/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/hotwork_set_safe_detail.dart +++ b/lib/pages/home/tap/tabList/special_wrok/szaq_work_detail/hotwork_set_safe_detail.dart @@ -12,15 +12,16 @@ import 'package:qhd_prevention/customWidget/toast_util.dart'; import 'package:qhd_prevention/pages/home/tap/item_list_widget.dart'; import 'package:qhd_prevention/tools/tools.dart'; import '../../../../../../customWidget/bottom_picker.dart'; +import '../../../../../../customWidget/custom_alert_dialog.dart'; import '../../../../../../customWidget/single_image_viewer.dart'; import '../../../../../../http/ApiService.dart'; import '../../../../../mine/mine_sign_page.dart'; import '../../../../../my_appbar.dart'; import '../../special_Wrok/dh_work_detai/MeasuresListWidget.dart'; import '../../special_Wrok/qtfx_work_detail/hotwork_gas_list.dart'; +import '../WorkDetailFormWidget.dart'; import 'SafeFunctionDialog.dart'; - - +/// 设置安全措施确认人 class HotworkSetSafeDetail extends StatefulWidget { const HotworkSetSafeDetail({ super.key, @@ -46,7 +47,6 @@ class _HotworkSetSafeDetailState extends State { late Map pd = {}; late List> measuresList = []; - /// 动火人及证书编号 late List workUserList = []; @@ -60,128 +60,14 @@ class _HotworkSetSafeDetailState extends State { _getData(); _getHotWorkNameList(); addMeasuresListCopy(); - } String measuresListToJson() { final List> jsonList = - measuresListCopy.map((item) => item.toJson()).toList(); + measuresListCopy.map((item) => item.toJson()).toList(); return jsonEncode(jsonList); } - - Widget _defaultDetail() { - return Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - ItemListWidget.singleLineTitleText( - label: '申请单位:', - isEditable: false, - text: pd['APPLY_DEPARTMENT_NAME'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '申请人:', - isEditable: false, - text: pd['APPLY_USER_NAME'] ?? '', - ), - if (FormUtils.hasValue(pd, 'CHECK_NO')) - Column( - children: [ - Divider(), - ItemListWidget.singleLineTitleText( - label: '编号:', - isEditable: false, - text: pd['CHECK_NO'] ?? '', - ), - ], - ), - - Divider(), - ItemListWidget.multiLineTitleTextField( - label: '作业内容:', - isEditable: isEditable, - text: pd['WORK_CONTENT'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火地点及动火部位:', - isEditable: isEditable, - text: pd['WORK_PLACE'] ?? '', - ), - Divider(), - ItemListWidget.selectableLineTitleTextField( - label: '动火作业级别', - isEditable: isEditable, - text: pd['WORK_LEVEL'] ?? '', - ), - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火方式:', - isEditable: isEditable, - text: pd['WORK_FUNCTION'] ?? '', - ), - if (pd['WORK_START_DATE'] != null && - pd['WORK_START_DATE'].toString().isNotEmpty) - Column( - children: [ - Divider(), - ItemListWidget.singleLineTitleText( - label: '动火作业\n实施时间:', - isEditable: isEditable, - text: - pd['WORK_START_DATE'] ?? - '' + - '至' + - (pd['WORK_END_DATE'] - ? pd['WORK_END_DATE'] ?? '' - : '--') ?? - '', - ), - ], - ), - Divider(), - ItemListWidget.twoRowSelectableTitleText( - label: '动火人及证书编号:', - isEditable: isEditable, - text: pd['WORK_USER'] ?? '', - ), - Divider(), - ItemListWidget.twoRowButtonTitleText( - label: '关联的其他特殊作业及安全作业票编号', - isEditable: isEditable, - onTap: ()=>{}, - hintText: '请输入关联的其他特殊作业及安全作业票编号', - text: pd['SPECIAL_WORK'] ?? '', - ), - Divider(), - ItemListWidget.twoRowButtonTitleText( - label: '风险辨识结果', - isEditable: isEditable, - onTap: () {}, - hintText: '请输入风险辨识结果', - text: pd['RISK_IDENTIFICATION'] ?? '', - ), - if (FormUtils.hasValue(pd, 'ANALYZE_TIME')) - Column( - children: [ - Divider(), - ItemListWidget.OneRowButtonTitleText( - label: '分析人', - text: pd['ANALYZE_USER_NAME'] ?? '', - onTap: () { - pushPage( - HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID), - context, - ); - }, - ), - ], - ), - ], - ); - } - Widget _card(Widget child) { return Container( decoration: BoxDecoration( @@ -214,10 +100,16 @@ class _HotworkSetSafeDetailState extends State { label: '安全措施:', buttonText: '选择安全措施', onTap: () { - showSafeFunctionDialog(context, measuresList, (selected) { - // 在这里处理用户的选择结果 - debugPrint('用户选择了:' + json.encode(selected)); - }); + showSafeFunctionDialog( + context, + measuresList, + initialSelected: item.selectMeasures, + (selected) { + setState(() { + item.selectMeasures = selected; + }); + }, + ); }, ), ], @@ -226,7 +118,6 @@ class _HotworkSetSafeDetailState extends State { /// 弹出单位选择 void chooseUnitHandle(MeasureItem item) { - showModalBottomSheet( context: context, isScrollControlled: true, @@ -242,16 +133,13 @@ class _HotworkSetSafeDetailState extends State { _getPersonListForUnitId(item); }, ), - ).then((_) { - - }); + ).then((_) {}); } Future _getPersonListForUnitId(MeasureItem item) async { // 拉取该单位的人员列表并缓存 final result = await ApiService.getListTreePersonList(item.DEPARTMENT_ID); setState(() { - item.userList = List>.from( result['userList'] ?? >[], ); @@ -260,12 +148,10 @@ class _HotworkSetSafeDetailState extends State { /// 弹出人员选择,需先选择单位 void choosePersonHandle(MeasureItem item) async { - String unitId = item.DEPARTMENT_ID; final personList = item.userList; if (!unitId.isNotEmpty) { - final unitName = item.DEPARTMENT_NAME; - ToastUtil.showNormal(context, '请先选择$unitName'); + ToastUtil.showNormal(context, '请先选择确认单位'); return; } if (personList.isEmpty) { @@ -291,10 +177,9 @@ class _HotworkSetSafeDetailState extends State { print(json.encode(measuresListCopy)); }); }, - ).then((_) { - - }); + ).then((_) {}); } + /// 签字 Future _sign() async { final path = await Navigator.push( @@ -311,115 +196,168 @@ class _HotworkSetSafeDetailState extends State { }); } } + Widget _signListWidget() { return Column( - children: imagePaths.map((path) { - return Column( - children: [ - const SizedBox(height: 10), - const Divider(), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: + imagePaths.map((path) { + return Column( children: [ - GestureDetector( - child: Image.file( - File(path), - width: 200, - height: 150, - fit: BoxFit.cover, - ), - onTap: () { - presentOpaque( - SingleImageViewer(imageUrl:path), - context, - ); - }, - ), - Column( + const SizedBox(height: 10), + const Divider(), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Container( - padding: const EdgeInsets.only(right: 5), - child: CustomButton( - text: 'X', - height: 30, - padding: const EdgeInsets.symmetric(horizontal: 10), - backgroundColor: Colors.red, - onPressed: () { - setState(() { - imagePaths.remove(path); - }); - }, + GestureDetector( + child: // 用一个 ConstrainedBox 限制最大尺寸,并改为 BoxFit.contain + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: 200, + maxHeight: 150, + ), + child: Image.file( + File(path), + // 改为完整显示 + fit: BoxFit.contain, + ), ), + onTap: () { + presentOpaque( + SingleImageViewer(imageUrl: path), + context, + ); + }, + ), + Column( + children: [ + Container( + padding: const EdgeInsets.only(right: 5), + child: CustomButton( + text: 'X', + height: 30, + padding: const EdgeInsets.symmetric(horizontal: 10), + backgroundColor: Colors.red, + onPressed: () { + setState(() { + imagePaths.remove(path); + }); + }, + ), + ), + const SizedBox(height: 80), + ], ), - const SizedBox(height: 80), ], ), ], - ), - ], - ); - }).toList(), + ); + }).toList(), ); } + /// 提交 1 提交 0暂存 Future _submit(String status) async { - // 通用文本字段校验规则 + if (imagePaths.isEmpty) { + ToastUtil.showNormal(context, '请签字'); + return; + } + List> signers = []; + String reasonText = ''; if (status == '1') { - // // 文本校验 - // for (var rule in textRules) { - // if ((rule['value'] as String).isEmpty) { - // ToastUtil.showNormal(context, rule['message']); - // return; - // } - // } - // // 级别校验 - // if (level.length == 0) { - // ToastUtil.showNormal(context, '请选择动火级别'); - // return; - // } - // - // for (MeasureItem item in measuresListCopy) { - // if (item.USER_ID.isNotEmpty) { - // ToastUtil.showNormal(context, '请选择确认人'); - // return; - // } - // } - } - // LoadingDialogHelper.show(context); + int index = 0; + for (var item in measuresListCopy) { + if (item.USER_ID.isEmpty) { + ToastUtil.showNormal( + context, + '第${index + 1}项未设置确认人', + ); + return; + } + if (item.selectMeasures.isEmpty) { + ToastUtil.showNormal( + context, + '第${index + 1}项未选择安全措施', + ); + return; + } + final userId = item.USER_ID; + final selectMeasures = item.selectMeasures as List? ?? []; - // 提交参数 - if (msg == 'add') { - pd['CORPINFO_ID'] = SessionService.instance.corpinfoId; - pd['CREATOR'] = SessionService.instance.loginUserId; - pd['OPERATOR'] = SessionService.instance.loginUserId; - pd['ACTION_USER'] = SessionService.instance.username; - pd['APPLY_STATUS'] = status; - pd['STEP_ID'] = status; - pd['HOTWORK_ID'] = widget.HOTWORK_ID; - pd['APPLY_DEPARTMENT_ID'] = SessionService.instance.deptId; - pd['APPLY_DEPARTMENT_NAME'] = - SessionService.instance.loginUser?['DEPARTMENT_NAME'] ?? ''; - pd['APPLY_USER_ID'] = SessionService.instance.loginUserId; - pd['APPLY_USER_NAME'] = SessionService.instance.username; - pd['USER_ID'] = SessionService.instance.loginUserId; - } - - LoadingDialogHelper.show(context); - String jsonStr = jsonEncode(pd); - printLongString(jsonStr); - try { - String url = "/app/hotwork/" + msg; - final result = await ApiService.submitHotwork(url, pd); - LoadingDialogHelper.hide(context); - if (result['result'] == 'success') { - ToastUtil.showSuccess(context, status == '1' ? '提交成功' : '已暂存'); - Navigator.pop(context); + for (var item in selectMeasures) { + signers.add({ + 'BUS_HOTWORK_MEASURES_ID': item['BUS_HOTWORK_MEASURES_ID'], + 'USER_ID': userId, + }); + } + // 检查长度是否一致 + if (signers.length != measuresList.length) { + // 使用 ScaffoldMessenger 弹出提示 + ToastUtil.showNormal(context, '请为每个安全措施选择确认人'); + return; + } + index++; + } + } else { + await showDialog( + context: context, + builder: + (_) => CustomAlertDialog( + title: '作废原因', + mode: DialogMode.input, + hintText: '请输入作废原因', + cancelText: '取消', + confirmText: '确定', + onInputConfirm: (text) { + reasonText = text; + }, + ), + ); + if (reasonText.isEmpty) { + ToastUtil.showNormal(context, '请填写作废原因'); + return; } - } catch (e) { - LoadingDialogHelper.hide(context); - ToastUtil.showNormal(context, '操作失败:$e'); } + + final Map formData = {}; + // 提交参数 + formData['HOTWORK_ID'] = widget.HOTWORK_ID; + formData['SIGNTIME'] = signTimes.join(','); + formData['USER_ID'] = SessionService.instance.loginUserId; + formData['APPLY_STATUS'] = status; + formData['STEP_REASON'] = reasonText; + formData['PREPARERS'] = json.encode(signers); + + await showDialog( + context: context, + builder: + (_) => CustomAlertDialog( + title: '提示', + content: '请确认' + (status == '1' ? "通过" : "作废") + '本作业票?', + cancelText: '取消', + confirmText: '确定', + onConfirm: () async { + LoadingDialogHelper.show(context); + try { + final result = await ApiService.saveSafeFunctionSure( + formData, + imagePaths, + ); + LoadingDialogHelper.hide(context); + if (result['result'] == 'success') { + ToastUtil.showSuccess( + context, + status == '1' ? '提交成功' : '已暂存', + ); + Navigator.pop(context); + } + } catch (e) { + LoadingDialogHelper.hide(context); + ToastUtil.showNormal(context, '操作失败:$e'); + } + }, + ), + ); } void printLongString(String text, {int chunkSize = 800}) { @@ -444,13 +382,7 @@ class _HotworkSetSafeDetailState extends State { setState(() { pd = data['pd']; _getMeasures(); - }); - // final data = await ApiService.getHomeworkFindById(widget.HOTWORK_ID); - // setState(() { - // pd = data['pd']; - // }); - // LoadingDialogHelper.hide(context); } Future _getMeasures() async { @@ -535,9 +467,14 @@ class _HotworkSetSafeDetailState extends State { ...item.selectMeasures.asMap().entries.map((e) { int idx = e.key; - String txt = e.value; + String txt = e.value['PROTECTIVE_MEASURES']; return Padding( - padding: EdgeInsets.only(top: 4), + padding: EdgeInsets.only( + top: 4, + left: 12, + right: 12, + bottom: 12, + ), child: Text('${idx + 1}. $txt'), ); }), @@ -589,7 +526,6 @@ class _HotworkSetSafeDetailState extends State { ), SizedBox(height: 10), if (imagePaths.isNotEmpty) _signListWidget(), - ], ), ); @@ -608,7 +544,7 @@ class _HotworkSetSafeDetailState extends State { text: '作废', backgroundColor: Colors.red, onPressed: () { - _submit('1'); + _submit('-1'); }, ), ), @@ -618,7 +554,7 @@ class _HotworkSetSafeDetailState extends State { text: '通过', backgroundColor: Colors.green, onPressed: () { - _submit('0'); + _submit('1'); }, ), ), @@ -635,8 +571,21 @@ class _HotworkSetSafeDetailState extends State { padding: EdgeInsets.all(12), child: Column( children: [ - _card(_defaultDetail()), - + // _card(_defaultDetail()), + _card( + WorkDetailFormWidget( + pd: pd, + isEditable: false, + onChooseLevel: (){}, + onChooseHotworkUser: (){}, + onAnalyzeTap: () { + pushPage( + HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID), + context, + ); + }, + ), + ), SizedBox(height: 20), _setSafeDetailWidget(), SizedBox(height: 20), @@ -657,7 +606,7 @@ class MeasureItem { String USER_NAME; List> userList; int userIndex; - List selectMeasures; + List> selectMeasures; MeasureItem({ required this.id, @@ -667,9 +616,10 @@ class MeasureItem { this.USER_NAME = '', List>? userList, this.userIndex = -1, - List? selectMeasures, + List>? selectMeasures, }) : userList = userList ?? [], selectMeasures = selectMeasures ?? []; + Map toJson() { return { 'id': id,