2026.6.4 个人信息

master
xufei 2026-06-04 15:58:37 +08:00
parent 85624e1cfd
commit 1105dbb2cf
4 changed files with 217 additions and 4 deletions

View File

@ -1,3 +1,7 @@
org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
# This builtInKotlin flag was added automatically by Flutter migrator
android.builtInKotlin=false
# This newDsl flag was added automatically by Flutter migrator
android.newDsl=false

View File

@ -0,0 +1,205 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:qhd_prevention/pages/home/unit/unit_join_detail_page.dart';
import 'package:qhd_prevention/pages/home/unit/unit_quit_apply_page.dart';
import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/services/SessionService.dart';
import 'package:qhd_prevention/services/StorageService.dart';
import 'package:qhd_prevention/tools/tools.dart';
import 'package:qhd_prevention/customWidget/custom_button.dart';
import 'package:qhd_prevention/http/ApiService.dart';
class UnitServiceListPage extends StatefulWidget {
const UnitServiceListPage({Key? key}) : super(key: key);
@override
_UnitServiceListPageState createState() => _UnitServiceListPageState();
}
class _UnitServiceListPageState extends State<UnitServiceListPage> {
// Data and state variables
List<dynamic> list = [];
int currentPage = 1;
int rows = 10;
int totalPage = 1;
bool isLoading = false;
List<Map<String, dynamic>> flowList = [];
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
final ScrollController _scrollController = ScrollController();
final employmentFlag = {'0': '离职', '1': '在职', '3': '未入职'};
final statusInfo = {
'1': '待审批',
'2': '通过',
'3': '驳回',
};
@override
void initState() {
super.initState();
_fetchData();
_scrollController.addListener(_onScroll);
}
@override
void dispose() {
_scrollController.dispose();
super.dispose();
}
void _onScroll() {
if (_scrollController.position.pixels >=
_scrollController.position.maxScrollExtent &&
!isLoading) {
if (currentPage < totalPage) {
currentPage++;
_fetchData();
}
}
}
String formatDate(String dateTimeStr) {
if (dateTimeStr == null || dateTimeStr.isEmpty) {
return '';
}
// DateTime
DateTime dateTime = DateTime.parse(dateTimeStr);
final time = dateTime == null ? '' : '${dateTime.year}${dateTime.month}${dateTime.day}';
//
return time;
}
Future<void> _fetchData() async {
// if (isLoading) return;
// setState(() => isLoading = true);
//
// try {
//
// final data = {
// 'pageIndex': currentPage,
// 'pageSize': rows,
// 'eqUserId': SessionService.instance.accountId
// };
// final response = await BasicInfoApi.getFirmListByUser(data);
// setState(() {
// if (currentPage == 1) {
// list = response['data'];
// } else {
// list.addAll(response['data']);
// }
// Map<String, dynamic> page = response['page'];
// totalPage = page['totalPage'] ?? 1;
// isLoading = false;
// });
// } catch (e) {
// print('Error fetching data: $e');
// setState(() => isLoading = false);
// }
}
//
void _goToDetail(Map<String, dynamic> item) async {
await pushPage(
UnitJoinDetailPage(firmId: item['id'],),
context,
);
_fetchData();
}
Widget _buildListItem(Map<String, dynamic> item) {
return Card(
color: Colors.white,
margin: const EdgeInsets.all(8.0),
child: InkWell(
onTap: () => _goToDetail(item),
child: Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'服务单位名称:${item['corpinfoName'] ?? ''}',
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
],
),
const SizedBox(height: 8),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
"所属公司: ${item['corpinfoName'] ?? ''}(相关方)",
maxLines: 5,
overflow: TextOverflow.ellipsis,
),
],
),
const SizedBox(height: 8),
Text(
"项目名称: ${item['corpinfoName'] ?? ''}",
maxLines: 5,
overflow: TextOverflow.ellipsis,
),
const SizedBox(height: 8),
Text(
"项目类型: ${statusInfo['${item['status']}'] ?? ''}",
maxLines: 5,
overflow: TextOverflow.ellipsis,
),
],
),
),
),
);
}
Widget _buildListContent() {
if (isLoading && list.isEmpty) {
//
return Center(child: CircularProgressIndicator());
} else if (list.isEmpty) {
//
return NoDataWidget.show();
} else {
//
return ListView.builder(
padding: EdgeInsets.zero,
controller: _scrollController,
itemCount: list.length + (isLoading ? 1 : 0),
itemBuilder: (context, index) {
if (index >= list.length) {
//
return Padding(
padding: const EdgeInsets.symmetric(vertical: 16.0),
child: Center(child: CircularProgressIndicator()),
);
}
return _buildListItem(list[index]);
},
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
appBar: MyAppbar(title: '服务单位', actions: []),
body: SafeArea(child: _buildListContent()),
);
}
}

View File

@ -6,6 +6,7 @@ import 'package:qhd_prevention/customWidget/work_tab_icon_grid.dart';
import 'package:qhd_prevention/http/ApiService.dart'; import 'package:qhd_prevention/http/ApiService.dart';
import 'package:qhd_prevention/customWidget/IconBadgeButton.dart'; import 'package:qhd_prevention/customWidget/IconBadgeButton.dart';
import 'package:qhd_prevention/pages/home/unit/unit_join_list_page.dart'; import 'package:qhd_prevention/pages/home/unit/unit_join_list_page.dart';
import 'package:qhd_prevention/pages/home/unit/unit_service_list_page.dart';
import 'package:qhd_prevention/pages/my_appbar.dart'; import 'package:qhd_prevention/pages/my_appbar.dart';
import 'package:qhd_prevention/tools/tools.dart'; import 'package:qhd_prevention/tools/tools.dart';
import 'package:qhd_prevention/common/route_aware_state.dart'; import 'package:qhd_prevention/common/route_aware_state.dart';
@ -144,7 +145,8 @@ class _UnitTabPageState extends RouteAwareState<UnitTabPage> {
final title = _masterButtons[index]['title'] as String; final title = _masterButtons[index]['title'] as String;
switch (title) { switch (title) {
case '服务单位管理': case '服务单位管理':
ToastUtil.showNormal(context, '您还没有参与项目'); // ToastUtil.showNormal(context, '您还没有参与项目');
pushPage(UnitServiceListPage(), context);
break; break;
case '就职单位管理': case '就职单位管理':
pushPage(UnitJoinListPage(), context); pushPage(UnitJoinListPage(), context);

View File

@ -402,7 +402,8 @@ class _LoginPageState extends State<LoginPage> {
const WebViewPage( const WebViewPage(
name: "用户服务协议", name: "用户服务协议",
url: url:
'http://47.92.102.56:7811/file/xieyi/zsyhxy.htm', 'https://qaaq.qhdsafety.com/help/gwj/gwj-zsyhxy.htm',
// 'http://47.92.102.56:7811/file/xieyi/zsyhxy.htm',
), ),
context, context,
); );
@ -428,7 +429,8 @@ class _LoginPageState extends State<LoginPage> {
const WebViewPage( const WebViewPage(
name: "隐私政策", name: "隐私政策",
url: url:
'http://47.92.102.56:7811/file/xieyi/zsysq.htm', 'https://qaaq.qhdsafety.com/help/gwj/gwj-zsysq.htm',
// 'http://47.92.102.56:7811/file/xieyi/zsysq.htm',
), ),
context, context,
); );