This commit is contained in:
wyf
2025-05-24 17:02:47 +08:00
parent acfb262812
commit 3d45b7d991
22 changed files with 2990 additions and 1649 deletions

View File

@@ -5,26 +5,30 @@ import 'package:flutterflow_ui/flutterflow_ui.dart';
import 'package:vbvs_app/common/color/appConstants.dart';
import 'package:vbvs_app/common/color/app_uri_status.dart';
import 'package:vbvs_app/common/util/FitTool.dart';
import 'package:vbvs_app/common/util/MyUtils.dart';
import 'package:vbvs_app/component/base/THFlutterFlowDropDown.dart';
import 'package:vbvs_app/component/tool/ClickableContainer.dart';
import 'package:vbvs_app/component/tool/CustomCard.dart';
import 'package:vbvs_app/component/tool/TopSlideNotification.dart';
import 'package:vbvs_app/controller/device/body_device_controller.dart';
import 'package:vbvs_app/controller/repair/repair_controller.dart';
import 'package:vbvs_app/controller/user_info_controller.dart';
import 'package:vbvs_app/model/api_response.dart';
import 'package:vbvs_app/routers/routers.dart';
class RepairModelWidget extends StatefulWidget {
var model;
final VoidCallback onTap; // 添加回调函数
int length;
final GlobalKey widgetKey; // 新增
final bool showDelete; // ✅ 新增
RepairModelWidget({
super.key,
required this.model,
required this.onTap,
required this.length,
required this.widgetKey,
this.showDelete = true, // ✅ 默认为 false
});
@override
@@ -36,6 +40,8 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
FormFieldController<String>(null);
RepairController repairController = Get.find();
UserInfoController userInfoController = Get.find();
late FormFieldController<String?>? _issueController;
BodyDeviceController bodyDeviceController = Get.find();
@override
void setState(VoidCallback callback) {
@@ -45,6 +51,8 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
@override
void initState() {
super.initState();
_issueController =
FormFieldController<String?>(widget.model['issue'] ?? '');
}
@override
@@ -54,7 +62,6 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
@override
Widget build(BuildContext context) {
// _deviceController.value = "";
return Container(
key: widget.widgetKey, // 使用传入的 key
width: double.infinity,
@@ -97,8 +104,31 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
),
height: AppConstants().dropdown_height,
child: THFlutterFlowDropDown<String>(
controller: _issueController,
onChanged: (val) {
widget.model['id'] = val;
final targetId = widget.model['id'];
final matchedDevice =
bodyDeviceController.deviceList.firstWhere(
(device) => device['_id'] == targetId,
orElse: () => null, // 如果找不到,返回 null可选
);
if (matchedDevice != null) {
// 找到了匹配的项
widget.model['param'] = matchedDevice['mac'];
widget.model['mac'] = matchedDevice['mac'];
widget.model['code'] =
matchedDevice['code'] ?? '';
widget.model['name'] = (matchedDevice['person']
?['name']
?.toString()
.trim()
.isNotEmpty ??
false)
? matchedDevice['person']['name']
: '未命名'.tr;
repairController.updateAll();
}
},
width: 200.rpx,
height: 40.rpx,
@@ -127,7 +157,7 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
isOverButton: false,
isSearchable: false,
isMultiSelect: false,
controller: _deviceController,
// controller: _deviceController,
options: repairController.deviceListId!,
optionLabels: repairController.deviceListId!,
),
@@ -155,84 +185,87 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
overflow: TextOverflow.ellipsis,
),
),
Expanded(
child: Container(
width: 200.rpx,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.rpx),
color: Colors.transparent,
),
child: TextFormField(
controller: repairController.onReDraw(
TextEditingController(
text: widget.model['param']),
(textEditingController) {
textEditingController.text = widget.model['param'];
}),
// initialValue: widget.model['param'],
autofocus: false,
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelStyle: TextStyle(
letterSpacing: 0.0,
fontWeight: FlutterFlowTheme.of(context)
.labelMedium
.fontWeight,
fontStyle: FlutterFlowTheme.of(context)
.labelMedium
.fontStyle,
Obx(() {
return Expanded(
child: Container(
width: 200.rpx,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.rpx),
color: Colors.transparent,
),
child: TextFormField(
controller: repairController.onReDraw(
TextEditingController(
text: widget.model['param']),
(textEditingController) {
textEditingController.text =
widget.model['param'];
}),
// initialValue: widget.model['param'],
autofocus: false,
obscureText: false,
decoration: InputDecoration(
isDense: true,
labelStyle: TextStyle(
letterSpacing: 0.0,
fontWeight: FlutterFlowTheme.of(context)
.labelMedium
.fontWeight,
fontStyle: FlutterFlowTheme.of(context)
.labelMedium
.fontStyle,
),
hintText: "设备参数提示".tr,
hintStyle: TextStyle(
letterSpacing: 0.0,
fontSize: AppConstants().normal_text_fontSize,
color: themeController.currentColor.sc4,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Color(0x00000000),
width: 1.rpx,
),
borderRadius: BorderRadius.circular(
AppConstants().normal_container_radius),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
filled: true,
fillColor: themeController.currentColor.sc15,
),
hintText: "设备参数提示".tr,
hintStyle: TextStyle(
style: TextStyle(
letterSpacing: 0.0,
color: themeController.currentColor.sc3,
fontSize: AppConstants().normal_text_fontSize,
color: themeController.currentColor.sc4,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Color(0x00000000),
width: 1.rpx,
),
borderRadius: BorderRadius.circular(
AppConstants().normal_container_radius),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(
color: Colors.transparent,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
errorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
focusedErrorBorder: OutlineInputBorder(
borderSide: BorderSide(
color: FlutterFlowTheme.of(context).error,
width: 1.rpx,
),
borderRadius: BorderRadius.circular(8.rpx),
),
filled: true,
fillColor: themeController.currentColor.sc15,
cursorColor: themeController.currentColor.sc3,
onChanged: (value) {
widget.model['param'] = value;
},
),
style: TextStyle(
letterSpacing: 0.0,
color: themeController.currentColor.sc3,
fontSize: AppConstants().normal_text_fontSize,
),
cursorColor: themeController.currentColor.sc3,
onChanged: (value) {
widget.model['param'] = value;
},
),
),
),
);
}),
].divide(SizedBox(width: 24.rpx)),
),
),
@@ -246,11 +279,16 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
child: Container(
width: 200.rpx,
child: TextFormField(
controller: repairController.onReDraw(
TextEditingController(text: widget.model['issue']),
(textEditingController) {
textEditingController.text = widget.model['issue'];
}),
onChanged: (value) {
widget.model['issue'] = value;
},
maxLines: null, // 👈 支持无限行
controller: TextEditingController(),
// controller: TextEditingController(),
autofocus: false,
obscureText: false,
decoration: InputDecoration(
@@ -385,7 +423,7 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
})),
),
),
if (widget.length > 1)
if (widget.length > 1 && widget.showDelete == true)
Padding(
padding: EdgeInsetsDirectional.fromSTEB(
100.rpx, 0.rpx, 100.rpx, 0.rpx),
@@ -428,7 +466,7 @@ class _RepairModelWidgetState extends State<RepairModelWidget> {
),
),
),
),
),
].divide(SizedBox(height: 29.rpx)),
),
),