2026.6.26 口门门禁bug
parent
ada70a1713
commit
b9845c7459
|
|
@ -123,6 +123,9 @@ class _DoorareaCarAddPageState extends State<DoorareaCarAddPage> {
|
|||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
addData['closedAreaId']='';//封闭区域id
|
||||
addData['closedAreaName']='';//封闭区域名称
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -530,10 +533,13 @@ class _DoorareaCarAddPageState extends State<DoorareaCarAddPage> {
|
|||
if (raw['success'] ) {
|
||||
List<dynamic> newList = raw['data'] ?? [];
|
||||
|
||||
for(int i=0;i<newList.length;i++){
|
||||
newList[i]["dataId"] = newList[i]["id"];
|
||||
newList[i]["dataName"] = newList[i]["closedAreaName"];
|
||||
}
|
||||
// for(int i=0;i<newList.length;i++){
|
||||
// newList[i]["dataId"] = newList[i]["id"];
|
||||
// newList[i]["dataName"] = newList[i]["closedAreaName"];
|
||||
// }
|
||||
|
||||
// 构建树形结构
|
||||
List<dynamic> treeData = _buildTree(newList);
|
||||
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
|
|
@ -542,12 +548,17 @@ class _DoorareaCarAddPageState extends State<DoorareaCarAddPage> {
|
|||
backgroundColor: Colors.transparent,
|
||||
builder:
|
||||
(ctx) => DepartmentPickerThree(
|
||||
listdata: newList,
|
||||
listdata: treeData,
|
||||
onSelected: (id, name,pdId) async {
|
||||
setState(() {
|
||||
addData['closedAreaId']=id;//封闭区域id
|
||||
addData['closedAreaName']=name;//封闭区域名称
|
||||
|
||||
addData['auditPersonDepartmentId']= '';
|
||||
addData['auditPersonDepartmentName']= '';
|
||||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -566,6 +577,65 @@ class _DoorareaCarAddPageState extends State<DoorareaCarAddPage> {
|
|||
}
|
||||
}
|
||||
|
||||
/// 构建多层级树形结构(支持任意层级)
|
||||
List<dynamic> _buildTree(List<dynamic> data) {
|
||||
if (data.isEmpty) return [];
|
||||
|
||||
// 创建 id -> node 的映射
|
||||
Map<String, dynamic> nodeMap = {};
|
||||
|
||||
// 初始化所有节点
|
||||
for (var item in data) {
|
||||
String id = item['id']?.toString() ?? '';
|
||||
item['children'] = [];
|
||||
item['dataId'] = id;
|
||||
item['dataName'] = item['closedAreaName'] ?? '';
|
||||
nodeMap[id] = item;
|
||||
}
|
||||
|
||||
List<dynamic> rootNodes = [];
|
||||
|
||||
// 遍历所有节点,建立父子关系
|
||||
for (var item in data) {
|
||||
String parentId = item['parentId']?.toString() ?? '0';
|
||||
|
||||
if (parentId == '0' || parentId.isEmpty) {
|
||||
// 根节点
|
||||
rootNodes.add(item);
|
||||
} else if (nodeMap.containsKey(parentId)) {
|
||||
// 有父节点,添加到父节点的 children 中
|
||||
nodeMap[parentId]['children'].add(item);
|
||||
} else {
|
||||
// 父节点不在列表中,作为根节点
|
||||
rootNodes.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// 递归排序(可选:按某个字段排序)
|
||||
_sortTree(rootNodes);
|
||||
|
||||
return rootNodes;
|
||||
}
|
||||
|
||||
/// 递归排序树节点(按 id 或名称排序)
|
||||
void _sortTree(List<dynamic> nodes) {
|
||||
for (var node in nodes) {
|
||||
if (node['children'] != null && node['children'] is List) {
|
||||
List children = node['children'];
|
||||
if (children.isNotEmpty) {
|
||||
// 按 id 排序
|
||||
children.sort((a, b) {
|
||||
String idA = a['id']?.toString() ?? '';
|
||||
String idB = b['id']?.toString() ?? '';
|
||||
return idA.compareTo(idB);
|
||||
});
|
||||
// 递归排序子节点
|
||||
_sortTree(children);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> _getApproverList() async {
|
||||
try {
|
||||
|
|
@ -708,6 +778,18 @@ class _DoorareaCarAddPageState extends State<DoorareaCarAddPage> {
|
|||
addData['portAreaId'] = extraData?['dictValue'];//港区id
|
||||
addData['portAreaName'] = name;//港区名称
|
||||
|
||||
addData['jurisdictionalCorpId']= '';
|
||||
addData['jurisdictionalCorpName']= '';
|
||||
addData['auditPersonCorpId']= '';
|
||||
addData['auditPersonCorpName']= '';
|
||||
addData['auditPersonDepartmentId']= '';
|
||||
addData['auditPersonDepartmentName']= '';
|
||||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
addData['closedAreaId']='';//封闭区域id
|
||||
addData['closedAreaName']='';//封闭区域名称
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -121,6 +121,9 @@ class _DoorareaPersonApplyPageState extends State<DoorareaPersonApplyPage> {
|
|||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
addData['closedAreaId']='';//封闭区域id
|
||||
addData['closedAreaName']='';//封闭区域名称
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -574,6 +577,18 @@ class _DoorareaPersonApplyPageState extends State<DoorareaPersonApplyPage> {
|
|||
addData['portAreaId'] = extraData?['dictValue'];//港区id
|
||||
addData['portAreaName'] = name;//港区名称
|
||||
|
||||
addData['jurisdictionalCorpId']= '';
|
||||
addData['jurisdictionalCorpName']= '';
|
||||
addData['auditPersonCorpId']= '';
|
||||
addData['auditPersonCorpName']= '';
|
||||
addData['auditPersonDepartmentId']= '';
|
||||
addData['auditPersonDepartmentName']= '';
|
||||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
addData['closedAreaId']='';//封闭区域id
|
||||
addData['closedAreaName']='';//封闭区域名称
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -591,10 +606,13 @@ class _DoorareaPersonApplyPageState extends State<DoorareaPersonApplyPage> {
|
|||
if (raw['success'] ) {
|
||||
List<dynamic> newList = raw['data'] ?? [];
|
||||
|
||||
for(int i=0;i<newList.length;i++){
|
||||
newList[i]["dataId"] = newList[i]["id"];
|
||||
newList[i]["dataName"] = newList[i]["closedAreaName"];
|
||||
}
|
||||
// for(int i=0;i<newList.length;i++){
|
||||
// newList[i]["dataId"] = newList[i]["id"];
|
||||
// newList[i]["dataName"] = newList[i]["closedAreaName"];
|
||||
// }
|
||||
|
||||
// 构建树形结构
|
||||
List<dynamic> treeData = _buildTree(newList);
|
||||
|
||||
showModalBottomSheet(
|
||||
context: context,
|
||||
|
|
@ -603,12 +621,17 @@ class _DoorareaPersonApplyPageState extends State<DoorareaPersonApplyPage> {
|
|||
backgroundColor: Colors.transparent,
|
||||
builder:
|
||||
(ctx) => DepartmentPickerThree(
|
||||
listdata: newList,
|
||||
listdata: treeData,
|
||||
onSelected: (id, name,pdId) async {
|
||||
setState(() {
|
||||
addData['closedAreaId']=id;//封闭区域id
|
||||
addData['closedAreaName']=name;//封闭区域名称
|
||||
|
||||
addData['auditPersonDepartmentId']= '';
|
||||
addData['auditPersonDepartmentName']= '';
|
||||
addData['auditPersonUserId']='';
|
||||
addData['auditPersonUserName']='';
|
||||
|
||||
});
|
||||
},
|
||||
),
|
||||
|
|
@ -627,6 +650,65 @@ class _DoorareaPersonApplyPageState extends State<DoorareaPersonApplyPage> {
|
|||
}
|
||||
}
|
||||
|
||||
/// 构建多层级树形结构(支持任意层级)
|
||||
List<dynamic> _buildTree(List<dynamic> data) {
|
||||
if (data.isEmpty) return [];
|
||||
|
||||
// 创建 id -> node 的映射
|
||||
Map<String, dynamic> nodeMap = {};
|
||||
|
||||
// 初始化所有节点
|
||||
for (var item in data) {
|
||||
String id = item['id']?.toString() ?? '';
|
||||
item['children'] = [];
|
||||
item['dataId'] = id;
|
||||
item['dataName'] = item['closedAreaName'] ?? '';
|
||||
nodeMap[id] = item;
|
||||
}
|
||||
|
||||
List<dynamic> rootNodes = [];
|
||||
|
||||
// 遍历所有节点,建立父子关系
|
||||
for (var item in data) {
|
||||
String parentId = item['parentId']?.toString() ?? '0';
|
||||
|
||||
if (parentId == '0' || parentId.isEmpty) {
|
||||
// 根节点
|
||||
rootNodes.add(item);
|
||||
} else if (nodeMap.containsKey(parentId)) {
|
||||
// 有父节点,添加到父节点的 children 中
|
||||
nodeMap[parentId]['children'].add(item);
|
||||
} else {
|
||||
// 父节点不在列表中,作为根节点
|
||||
rootNodes.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
// 递归排序(可选:按某个字段排序)
|
||||
_sortTree(rootNodes);
|
||||
|
||||
return rootNodes;
|
||||
}
|
||||
|
||||
/// 递归排序树节点(按 id 或名称排序)
|
||||
void _sortTree(List<dynamic> nodes) {
|
||||
for (var node in nodes) {
|
||||
if (node['children'] != null && node['children'] is List) {
|
||||
List children = node['children'];
|
||||
if (children.isNotEmpty) {
|
||||
// 按 id 排序
|
||||
children.sort((a, b) {
|
||||
String idA = a['id']?.toString() ?? '';
|
||||
String idB = b['id']?.toString() ?? '';
|
||||
return idA.compareTo(idB);
|
||||
});
|
||||
// 递归排序子节点
|
||||
_sortTree(children);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> _getApproverList() async {
|
||||
try {
|
||||
|
|
|
|||
Loading…
Reference in New Issue