diff --git a/module/project/lang/de.php b/module/project/lang/de.php
index 0a772c490c..f99ef6dc40 100644
--- a/module/project/lang/de.php
+++ b/module/project/lang/de.php
@@ -448,6 +448,7 @@ $lang->project->endGreatEqualExecution = "The finish date of the {$lang->projec
$lang->project->childLongTime = "There are long-term {$lang->projectCommon}s in the child {$lang->projectCommon}, and the parent {$lang->projectCommon} should also be a long-term {$lang->projectCommon}.";
$lang->project->confirmUnlinkMember = "Do you want to remove this user from {$lang->projectCommon}?";
$lang->project->stageByTips = "Created by {$lang->projectCommon} as a single set of stages, and the stage is associated with all {$lang->productCommon}s; created by {$lang->productCommon} as multiple sets of stages, each set of stages is associated with a {$lang->productCommon}";
+$lang->project->confirmCloseProject = "There are unclosed {$lang->executionCommon}s under this {$lang->projectCommon}: %s, are you sure you want to close the {$lang->projectCommon}?";
$lang->project->action = new stdclass();
$lang->project->action->managed = '$date, managed by $actor. $extra' . "\n";
diff --git a/module/project/lang/en.php b/module/project/lang/en.php
index 0a772c490c..f99ef6dc40 100644
--- a/module/project/lang/en.php
+++ b/module/project/lang/en.php
@@ -448,6 +448,7 @@ $lang->project->endGreatEqualExecution = "The finish date of the {$lang->projec
$lang->project->childLongTime = "There are long-term {$lang->projectCommon}s in the child {$lang->projectCommon}, and the parent {$lang->projectCommon} should also be a long-term {$lang->projectCommon}.";
$lang->project->confirmUnlinkMember = "Do you want to remove this user from {$lang->projectCommon}?";
$lang->project->stageByTips = "Created by {$lang->projectCommon} as a single set of stages, and the stage is associated with all {$lang->productCommon}s; created by {$lang->productCommon} as multiple sets of stages, each set of stages is associated with a {$lang->productCommon}";
+$lang->project->confirmCloseProject = "There are unclosed {$lang->executionCommon}s under this {$lang->projectCommon}: %s, are you sure you want to close the {$lang->projectCommon}?";
$lang->project->action = new stdclass();
$lang->project->action->managed = '$date, managed by $actor. $extra' . "\n";
diff --git a/module/project/lang/fr.php b/module/project/lang/fr.php
index 0a772c490c..f99ef6dc40 100644
--- a/module/project/lang/fr.php
+++ b/module/project/lang/fr.php
@@ -448,6 +448,7 @@ $lang->project->endGreatEqualExecution = "The finish date of the {$lang->projec
$lang->project->childLongTime = "There are long-term {$lang->projectCommon}s in the child {$lang->projectCommon}, and the parent {$lang->projectCommon} should also be a long-term {$lang->projectCommon}.";
$lang->project->confirmUnlinkMember = "Do you want to remove this user from {$lang->projectCommon}?";
$lang->project->stageByTips = "Created by {$lang->projectCommon} as a single set of stages, and the stage is associated with all {$lang->productCommon}s; created by {$lang->productCommon} as multiple sets of stages, each set of stages is associated with a {$lang->productCommon}";
+$lang->project->confirmCloseProject = "There are unclosed {$lang->executionCommon}s under this {$lang->projectCommon}: %s, are you sure you want to close the {$lang->projectCommon}?";
$lang->project->action = new stdclass();
$lang->project->action->managed = '$date, managed by $actor. $extra' . "\n";
diff --git a/module/project/lang/zh-cn.php b/module/project/lang/zh-cn.php
index 821bb813c7..8bc1425739 100644
--- a/module/project/lang/zh-cn.php
+++ b/module/project/lang/zh-cn.php
@@ -448,6 +448,7 @@ $lang->project->endGreatEqualExecution = "{$lang->projectCommon}的完成日期
$lang->project->childLongTime = "子{$lang->projectCommon}中有长期{$lang->projectCommon},父{$lang->projectCommon}也应该是长期{$lang->projectCommon}";
$lang->project->confirmUnlinkMember = "您确定从该{$lang->projectCommon}中移除该用户吗?";
$lang->project->stageByTips = "按{$lang->projectCommon}创建为单套阶段,阶段关联所有{$lang->productCommon};按{$lang->productCommon}创建为多套阶段,每套阶段关联一个{$lang->productCommon}。";
+$lang->project->confirmCloseProject = "该{$lang->projectCommon}下还有未关闭的{$lang->executionCommon}:%s,您确定要关闭{$lang->projectCommon}吗?";
$lang->project->action = new stdclass();
$lang->project->action->managed = '$date, 由 $actor 维护。$extra' . "\n";
diff --git a/module/project/ui/close.html.php b/module/project/ui/close.html.php
index dac1eb09f9..c5d6fd2c23 100644
--- a/module/project/ui/close.html.php
+++ b/module/project/ui/close.html.php
@@ -10,9 +10,25 @@ declare(strict_types=1);
*/
namespace zin;
+$beforeSubmit = jsRaw("() =>
+{
+ zui.Modal.confirm('{$confirmTip}').then((res) =>
+ {
+ if(res)
+ {
+ const formData = new FormData($('#zin_project_close_{$project->id}_form')[0]);
+ const url = $('#zin_project_close_{$project->id}_form').attr('action');
+ $.ajaxSubmit({url: url, data: formData});
+ }
+ });
+ return false;
+}");
+
modalHeader();
formPanel
(
+ set::formID("zin_project_close_{$project->id}_form"),
+ !empty($confirmTip) ? set::ajax(array('beforeSubmit' => $beforeSubmit)) : null,
formGroup
(
set::width('1/2'),