diff --git a/module/execution/ui/story.html.php b/module/execution/ui/story.html.php
index 6994371a63..5dcf8b6d49 100644
--- a/module/execution/ui/story.html.php
+++ b/module/execution/ui/story.html.php
@@ -375,8 +375,10 @@ if($canBatchAction)
/* DataTable columns. */
$config->story->dtable->fieldList['title']['title'] = $lang->story->title;
-$setting = $this->loadModel('datatable')->getSetting('execution', 'story', false, $storyType);
-$cols = array();
+$cols = array();
+$setting = $this->loadModel('datatable')->getSetting('execution', 'story', false, $storyType);
+$canModifyExecution = common::canModify('execution', $execution);
+if(!$canModifyExecution) $setting['actions']['actionsMap'] = array();
if($storyType == 'requirement') unset($setting['plan'], $setting['stage'], $setting['taskCount'], $setting['bugCount'], $setting['caseCount']);
foreach($setting as $col)
{
@@ -389,13 +391,14 @@ foreach($setting as $col)
}
/* DataTable data. */
-$data = array();
+$data = array();
$actionMenus = array('submitreview', 'recall', 'recalledchange', 'review', 'dropdown', 'createTask', 'batchCreateTask', 'divider', 'storyEstimate', 'testcase', 'unlink');
if(empty($execution->hasProduct) && empty($execution->multiple))
{
$actionMenus = array('submitreview', 'recall', 'recalledchange', 'review', 'dropdown', 'createTask', 'batchCreateTask', 'edit', 'divider', 'storyEstimate', 'testcase', 'batchCreate', 'close');
if($storyType == 'requirement') $actionMenus = array('submitreview', 'recall', 'recalledchange', 'review', 'dropdown', 'edit', 'divider', 'batchCreate', 'close');
}
+if(!$canModifyExecution) $actionMenus = array();
$options = array('storyTasks' => $storyTasks, 'storyBugs' => $storyBugs, 'storyCases' => $storyCases, 'modules' => $modules ?? array(), 'plans' => (isset($plans) ? $plans : array()), 'users' => $users, 'execution' => $execution, 'actionMenus' => $actionMenus, 'branches' => $branchPairs);
foreach($stories as $story)
diff --git a/module/task/ui/view.html.php b/module/task/ui/view.html.php
index ae8ed986b2..05b2ab50bb 100644
--- a/module/task/ui/view.html.php
+++ b/module/task/ui/view.html.php
@@ -29,7 +29,7 @@ if(!$isInModal && hasPriv('task', 'create', $task))
/* 初始化底部操作栏。Init bottom actions. */
$config->task->actionList['batchCreate']['hint'] = $config->task->actionList['batchCreate']['text'] = $lang->task->children;
-$actions = !$task->deleted ? $this->loadModel('common')->buildOperateMenu($task) : array();
+$actions = !$task->deleted && common::canModify('execution', $execution) ? $this->loadModel('common')->buildOperateMenu($task) : array();
$hasDivider = !empty($actions['mainActions']) && !empty($actions['suffixActions']);
if(!empty($actions)) $actions = array_merge($actions['mainActions'], array('type' => 'divider'), $actions['suffixActions']);
if(!$hasDivider) unset($actions['type']);