2025.8.27 解决bug后上传

main^2
xufei 2025-08-27 16:14:10 +08:00
parent 566ab85147
commit 9d63b8a898
27 changed files with 373 additions and 269 deletions

View File

@ -36,27 +36,27 @@ android {
versionName = flutter.versionName
}
// ✅ 添加 release 签名配置
signingConfigs {
create("release") {
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
}
}
buildTypes {
release {
// ✅ 替换成 release 签名
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = false
isShrinkResources = false
}
debug {
signingConfig = signingConfigs.getByName("debug")
}
}
// // ✅ 添加 release 签名配置
// signingConfigs {
// create("release") {
// storeFile = file(keystoreProperties["storeFile"] as String)
// storePassword = keystoreProperties["storePassword"] as String
// keyAlias = keystoreProperties["keyAlias"] as String
// keyPassword = keystoreProperties["keyPassword"] as String
// }
// }
//
// buildTypes {
// release {
// // ✅ 替换成 release 签名
// signingConfig = signingConfigs.getByName("release")
// isMinifyEnabled = false
// isShrinkResources = false
// }
// debug {
// signingConfig = signingConfigs.getByName("debug")
// }
// }
}
flutter {

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:forceDarkAllowed">false</item>
<item name="android:windowFullscreen">false</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
</resources>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="appName">智守安全</string>
</resources>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "background.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

View File

@ -0,0 +1 @@
"CFBundleDisplayName" = "智守安全";

View File

@ -29,6 +29,7 @@ class BottomPickerTwo {
int initialIndex = 0,
double itemExtent = 40.0,
double height = 250,
double desiredSpacing = 16.0,
}) {
//
dynamic selected = items[initialIndex];
@ -46,7 +47,10 @@ class BottomPickerTwo {
children: [
//
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
padding: const EdgeInsets.symmetric(
horizontal: 16,
vertical: 8,
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -65,13 +69,39 @@ class BottomPickerTwo {
//
Expanded(
child: CupertinoPicker(
scrollController:
FixedExtentScrollController(initialItem: initialIndex),
itemExtent: 30,
scrollController: FixedExtentScrollController(
initialItem: initialIndex,
),
itemExtent: 35,
onSelectedItemChanged: (index) {
selected = items[index];
},
children: items.map(itemBuilder).toList(),
// children: items.map(itemBuilder).toList(),
children: List<Widget>.generate(items.length, (int index) {
return Padding(
// Padding
padding: EdgeInsets.symmetric(
vertical: desiredSpacing / 2,
),
child: Center(
child: Text(
// '选项 $index',
items[index]["NAME"],
style: TextStyle(
fontSize: 18,
color:
index == selected
? CupertinoColors.activeBlue
: CupertinoColors.inactiveGray,
fontWeight:
index == selected
? FontWeight.bold
: FontWeight.normal,
),
),
),
);
}),
),
),
],

View File

@ -152,7 +152,7 @@ class _CheckInformationOneItemState extends State<CheckInformationOneItem> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppbar(title: "隐患登记"),
appBar: MyAppbar(title: "隐患等级"),
body: Column(
children: [
//

View File

@ -151,7 +151,7 @@ class _HazardRegistrationPageState extends State<HazardRegistrationPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyAppbar(title: "隐患登记"),
appBar: MyAppbar(title: "隐患等级"),
body: Column(
children: [
//

View File

@ -311,7 +311,7 @@ class _CheckingInformationOnePageState extends State<CheckingInformationOnePage>
//
// const Spacer(),
_buildTrueButton(),
SizedBox(height: 10,),
],
),

View File

@ -152,7 +152,33 @@ class _SafetyCommitmentDhListState extends State<SafetyCommitmentDhList> {
Future<void> _handleApply() async {
//
setState(() async {
// setState(() async {
// if(widget.type==1) {
// await pushPage(CompanySafetyCommitmentApply(), context);
// }else if(widget.type==2){
// await pushPage(WorkShopSafetyCommitmentApply(), context);
// }else {
// await pushPage(TeamSafetyCommitmentApply(), context);
// }
//
// searchKeywords = "";
// currentPage = 1;
// list.clear();
// _fetchData();
// });
try {
final Map<String, dynamic> response;
if(widget.type==1) {
response = await ApiService.getCompanySafetyCommitmentPermission( id);
}else if(widget.type==2){
response = await ApiService.getWorkshopSafetyCommitmentPermission(id);
}else {
response = await ApiService.getTeamSafetyCommitmentPermission(id);
}
if (response['result'] == 'success') {
if(widget.type==1) {
await pushPage(CompanySafetyCommitmentApply(), context);
}else if(widget.type==2){
@ -161,44 +187,19 @@ class _SafetyCommitmentDhListState extends State<SafetyCommitmentDhList> {
await pushPage(TeamSafetyCommitmentApply(), context);
}
setState(() {
searchKeywords = "";
currentPage = 1;
list.clear();
_fetchData();
});
// try {
// final Map<String, dynamic> response;
// if(widget.type==1) {
// response = await ApiService.getCompanySafetyCommitmentPermission( id);
// }else if(widget.type==2){
// response = await ApiService.getWorkshopSafetyCommitmentPermission(id);
// }else {
// response = await ApiService.getTeamSafetyCommitmentPermission(id);
// }
//
// if (response['result'] == 'success') {
// setState(() async {
// if(widget.type==1) {
// await pushPage(CompanySafetyCommitmentApply(), context);
// }else if(widget.type==2){
//
// }else {
//
// }
//
// searchKeywords = "";
// currentPage = 1;
// list.clear();
// _fetchData();
// });
// }else{
// ToastUtil.showNormal(context, response['msg']);
// }
// } catch (e) {
// ToastUtil.showNormal(context,'$e');
// print('Error fetching data: $e');
// }
}else{
ToastUtil.showNormal(context, response['msg']);
}
} catch (e) {
ToastUtil.showNormal(context,'$e');
print('Error fetching data: $e');
}
}

View File

@ -35,7 +35,7 @@ class _SafetyCommitmentTabListState extends State<SafetyCommitmentTabList> {
buttonInfos = [
{
"icon": "assets/icon-apps/icon_101.png",
"title": "动火作业",
"title": "公司安全承诺",
"unreadCount": 0,
},
{

View File

@ -153,6 +153,7 @@ class _RiskDetailPageState extends State<RiskDetailPage> {
Spacer(),
//
_buildBottomButton(),
SizedBox(height: 10,)
],
);
},

View File

@ -13,6 +13,8 @@ class HotWorkDetailFormWidget extends StatefulWidget {
final VoidCallback onChooseHotworkUser;
final VoidCallback onAnalyzeTap;
//
final VoidCallback? onChooseVideoManager;
///
@ -55,6 +57,7 @@ class HotWorkDetailFormWidget extends StatefulWidget {
this.hotworkPersonController,
this.relatedController,
this.riskController,
}) : assert(
!isEditable ||
(contentController != null &&

View File

@ -100,7 +100,7 @@ class _HotworkApplyDetailState extends State<HotworkApplyDetail> {
_getData();
} else {
isEditable = true;
pd['ANALYZE_TIME'] = 1;
// pd['ANALYZE_TIME'] = 1;
pd['APPLY_DEPARTMENT_ID'] = SessionService.instance.deptId;
pd['APPLY_DEPARTMENT_NAME'] =
SessionService.instance.loginUser!['DEPARTMENT_NAME'] ?? '';
@ -731,6 +731,7 @@ class _HotworkApplyDetailState extends State<HotworkApplyDetail> {
onWorkAreaHandle: _getWorkArea,
onWorkAreaLocationHandle: _showLocationHandle,
onAnalyzeTap: () {
pushPage(
HotworkGasList(HOTWORK_ID: widget.HOTWORK_ID),

View File

@ -53,13 +53,13 @@ class _UserinfoPageState extends State<UserinfoPage> {
Divider(height: 1),
_userItemCell("部门", user["DEPARTMENT_NAME"]??"", false),
Divider(height: 1),
_userItemCell("岗位", user["DUTIES_NAME"]??"", true),
_userItemCell("岗位(工种)", user["POST_NAME"]??"", true),
Divider(height: 1),
_userItemCell("人员类型", user["PERSONNEL_TYPE_NAME"]??"", false),
Divider(height: 1),
_userItemCell("入职时间", user["ENTRY_DATE"]??"", false),
Divider(height: 1),
_userItemCell("工种", user["TYPE_OF_WORK_NAME"]??"", false),
// _userItemCell("工种", user["TYPE_OF_WORK_NAME"]??"", false),
],
),
),

View File

@ -263,7 +263,7 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
Card(
color: Colors.white,
child: Container(
padding: const EdgeInsets.all(16),
padding: const EdgeInsets.all(10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -375,7 +375,7 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
VoidCallback? onImageTap,
}) {
final isSelected = item["REFERENCE_BASIS"] == value;
final buttonWidth = (screenWidth - 60) / 3 - 10; //
final buttonWidth = (screenWidth - 30) / 3 - 10; //
return GestureDetector(
onTap: () {
@ -395,15 +395,15 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
// Expanded Flex
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: 30,
width: 90,
width: 100,
child: Row(
children: [
Icon(icon, color: isSelected ? color : Colors.grey, size: 30),
const SizedBox(width: 8),
const SizedBox(width: 3),
Flexible(
child: Text(
label,
@ -415,10 +415,8 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
),
),
),
],
),
),
const SizedBox(width: 6),
const SizedBox(width: 3),
if ((value == "option1" && item["REFERENCE_BASIS"] == "option1") ||
(value == "option2" &&
item["REFERENCE_BASIS"] == "option2" &&
@ -440,6 +438,11 @@ class _DangerProjectPageState extends State<DangerProjectPage> {
),
),
),
],
),
),
],
),
),

View File

@ -206,8 +206,9 @@ class _riskListPageState extends State<RiskListPage> {
height: 50,
child: TextButton(
onPressed: () => _nextHandle(), child: Text("下一步", style: TextStyle(color: Colors.white),)),
)
),
SizedBox(height: 20,),
],
)),
);

File diff suppressed because it is too large Load Diff