diff --git a/module/execution/control.php b/module/execution/control.php
index a34d5c9f6a..47024b7fc6 100644
--- a/module/execution/control.php
+++ b/module/execution/control.php
@@ -520,7 +520,7 @@ class execution extends control
{
$kanbanData = $this->loadModel('kanban')->getRDKanban($executionID, $this->session->execLaneType ? $this->session->execLaneType : 'all');
$kanbanData = json_encode($kanbanData);
-
+
return print(js::reload('parent', '', "parent.parent.updateKanban($kanbanData)"));
// return print(js::closeModal('parent.parent', '', "parent.parent.updateKanban($kanbanData)"));
}
@@ -2083,6 +2083,8 @@ class execution extends control
$this->view->productID = $productID;
$this->view->branchID = $branchID;
$this->view->projectID = $this->loadModel('task')->getProjectID($execution->id);
+ $this->view->allProducts = array(0 => '') + $this->loadModel('product')->getProductPairsByProject($this->view->projectID, 'noclosed');
+ a($this->view->allProducts);
$this->view->allPlans = $allPlans;
$this->view->kanbanData = $kanbanData;
$this->view->executionActions = $executionActions;
diff --git a/module/execution/js/kanban.js b/module/execution/js/kanban.js
index 25ec3382c3..64a60d76b1 100644
--- a/module/execution/js/kanban.js
+++ b/module/execution/js/kanban.js
@@ -1049,7 +1049,7 @@ function createStoryMenu(options)
var items = [];
var showAction = story.$col.type == 'backlog' || story.$col.type == 'ready' || story.$col.type == 'developing' || story.$col.type == 'developed' || story.$col.type == 'testing' || story.$col.type == 'tested' || story.$col.type == 'verified' || story.$col.type == 'released';
-
+
if(priv.canEditStory) items.push({label: storyLang.edit, icon: 'edit', url: createLink('story', 'edit', 'storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canChangeStory && showAction) items.push({label: storyLang.change, icon: 'change', url: createLink('story', 'change', 'storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
if(priv.canCreateTask && showAction) items.push({label: executionLang.wbs, icon: 'plus', url: createLink('task', 'create', 'executionID=' + execution.id + '&storyID=' + story.id, '', 'true'), className: 'iframe', attrs: {'data-toggle': 'modal', 'data-width': '80%'}});
diff --git a/module/execution/lang/zh-cn.php b/module/execution/lang/zh-cn.php
index 61b7bf3e66..ad1aae59ee 100644
--- a/module/execution/lang/zh-cn.php
+++ b/module/execution/lang/zh-cn.php
@@ -292,44 +292,45 @@ $lang->execution->aboveAllProduct = "以上所有{$lang->productCommon}";
$lang->execution->aboveAllExecution = "以上所有{$lang->executionCommon}";
/* 页面提示。*/
-$lang->execution->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->SRCommon}全部关联到此{$lang->executionCommon}中";
-$lang->execution->selectExecution = "请选择{$lang->execution->common}";
-$lang->execution->beginAndEnd = '起止时间';
-$lang->execution->lblStats = '工时统计';
-$lang->execution->stats = '可用工时 %s 工时,总共预计 %s 工时,已经消耗 %s 工时,预计剩余 %s 工时';
-$lang->execution->taskSummary = "本页共 %s 个任务,未开始 %s,进行中 %s,总预计 %s 工时,已消耗 %s 工时,剩余 %s 工时。";
-$lang->execution->pageSummary = "本页共 %total% 个任务,未开始 %wait%,进行中 %doing%,总预计 %estimate% 工时,已消耗 %consumed% 工时,剩余 %left% 工时。";
-$lang->execution->checkedSummary = "选中 %total% 个任务,未开始 %wait%,进行中 %doing%,总预计 %estimate% 工时,已消耗 %consumed% 工时,剩余 %left% 工时。";
-$lang->execution->memberHoursAB = "
%s有 %s 工时
";
-$lang->execution->memberHours = '';
-$lang->execution->countSummary = '';
-$lang->execution->timeSummary = '';
-$lang->execution->groupSummaryAB = "总任务 %s : 未开始 %s 进行中 %s
总预计 %s : 已消耗 %s 剩余 %s
";
-$lang->execution->wbs = "分解任务";
-$lang->execution->batchWBS = "批量分解";
-$lang->execution->howToUpdateBurn = "帮助 ";
-$lang->execution->whyNoStories = "看起来没有{$lang->SRCommon}可以关联。请检查下{$lang->executionCommon}关联的{$lang->productCommon}中有没有{$lang->SRCommon},而且要确保它们已经审核通过。";
-$lang->execution->productStories = "{$lang->executionCommon}关联的{$lang->SRCommon}是{$lang->productCommon}{$lang->SRCommon}的子集,并且只有评审通过的{$lang->SRCommon}才能关联。请关联{$lang->SRCommon}。";
-$lang->execution->haveDraft = "有%s条草稿状态的{$lang->SRCommon}无法关联到该{$lang->executionCommon}";
-$lang->execution->doneExecutions = '已结束';
-$lang->execution->selectDept = '选择部门';
-$lang->execution->selectDeptTitle = '选择一个部门的成员';
-$lang->execution->copyTeam = '复制团队';
-$lang->execution->copyFromTeam = "复制自{$lang->execution->common}团队: %s";
-$lang->execution->noMatched = "找不到包含'%s'的{$lang->execution->common}";
-$lang->execution->copyTitle = "请选择一个{$lang->execution->common}来复制";
-$lang->execution->copyNoExecution = "没有可用的{$lang->execution->common}来复制";
-$lang->execution->copyFromExecution = "复制自{$lang->execution->common} %s";
-$lang->execution->cancelCopy = '取消复制';
-$lang->execution->byPeriod = '按时间段';
-$lang->execution->byUser = '按用户';
-$lang->execution->noExecution = "暂时没有{$lang->executionCommon}。";
-$lang->execution->noExecutions = "暂时没有{$lang->execution->common}。";
-$lang->execution->noPrintData = "暂无数据可打印";
-$lang->execution->noMembers = '暂时没有团队成员。';
-$lang->execution->workloadTotal = "工作量占比累计不应当超过100, 当前产品下的工作量之和为%s";
+$lang->execution->linkStoryByPlanTips = "此操作会将所选计划下面的{$lang->SRCommon}全部关联到此{$lang->executionCommon}中";
+$lang->execution->batchCreateStroyTips = '请选择需要批量新建研发需求的产品';
+$lang->execution->selectExecution = "请选择{$lang->execution->common}";
+$lang->execution->beginAndEnd = '起止时间';
+$lang->execution->lblStats = '工时统计';
+$lang->execution->stats = '可用工时 %s 工时,总共预计 %s 工时,已经消耗 %s 工时,预计剩余 %s 工时';
+$lang->execution->taskSummary = "本页共 %s 个任务,未开始 %s,进行中 %s,总预计 %s 工时,已消耗 %s 工时,剩余 %s 工时。";
+$lang->execution->pageSummary = "本页共 %total% 个任务,未开始 %wait%,进行中 %doing%,总预计 %estimate% 工时,已消耗 %consumed% 工时,剩余 %left% 工时。";
+$lang->execution->checkedSummary = "选中 %total% 个任务,未开始 %wait%,进行中 %doing%,总预计 %estimate% 工时,已消耗 %consumed% 工时,剩余 %left% 工时。";
+$lang->execution->memberHoursAB = "%s有 %s 工时
";
+$lang->execution->memberHours = '';
+$lang->execution->countSummary = '';
+$lang->execution->timeSummary = '';
+$lang->execution->groupSummaryAB = "总任务 %s : 未开始 %s 进行中 %s
总预计 %s : 已消耗 %s 剩余 %s
";
+$lang->execution->wbs = "分解任务";
+$lang->execution->batchWBS = "批量分解";
+$lang->execution->howToUpdateBurn = "帮助 ";
+$lang->execution->whyNoStories = "看起来没有{$lang->SRCommon}可以关联。请检查下{$lang->executionCommon}关联的{$lang->productCommon}中有没有{$lang->SRCommon},而且要确保它们已经审核通过。";
+$lang->execution->productStories = "{$lang->executionCommon}关联的{$lang->SRCommon}是{$lang->productCommon}{$lang->SRCommon}的子集,并且只有评审通过的{$lang->SRCommon}才能关联。请关联{$lang->SRCommon}。";
+$lang->execution->haveDraft = "有%s条草稿状态的{$lang->SRCommon}无法关联到该{$lang->executionCommon}";
+$lang->execution->doneExecutions = '已结束';
+$lang->execution->selectDept = '选择部门';
+$lang->execution->selectDeptTitle = '选择一个部门的成员';
+$lang->execution->copyTeam = '复制团队';
+$lang->execution->copyFromTeam = "复制自{$lang->execution->common}团队: %s";
+$lang->execution->noMatched = "找不到包含'%s'的{$lang->execution->common}";
+$lang->execution->copyTitle = "请选择一个{$lang->execution->common}来复制";
+$lang->execution->copyNoExecution = "没有可用的{$lang->execution->common}来复制";
+$lang->execution->copyFromExecution = "复制自{$lang->execution->common} %s";
+$lang->execution->cancelCopy = '取消复制';
+$lang->execution->byPeriod = '按时间段';
+$lang->execution->byUser = '按用户';
+$lang->execution->noExecution = "暂时没有{$lang->executionCommon}。";
+$lang->execution->noExecutions = "暂时没有{$lang->execution->common}。";
+$lang->execution->noPrintData = "暂无数据可打印";
+$lang->execution->noMembers = '暂时没有团队成员。';
+$lang->execution->workloadTotal = "工作量占比累计不应当超过100, 当前产品下的工作量之和为%s";
// $lang->execution->linkProjectStoryTip = "(关联{$lang->SRCommon}来源于项目下所关联的{$lang->SRCommon})";
-$lang->execution->linkAllStoryTip = "(项目下还未关联{$lang->SRCommon},可直接关联该{$lang->execution->common}所关联产品的{$lang->SRCommon})";
+$lang->execution->linkAllStoryTip = "(项目下还未关联{$lang->SRCommon},可直接关联该{$lang->execution->common}所关联产品的{$lang->SRCommon})";
if($config->systemMode == 'classic') $lang->execution->copyTeamTitle = "选择一个{$lang->execution->common}团队来复制";
if($config->systemMode == 'new') $lang->execution->copyTeamTitle = "选择一个{$lang->project->common}或{$lang->execution->common}团队来复制";
diff --git a/module/execution/view/kanban.html.php b/module/execution/view/kanban.html.php
index 99873cc289..1911587566 100644
--- a/module/execution/view/kanban.html.php
+++ b/module/execution/view/kanban.html.php
@@ -163,7 +163,7 @@ js::set('hasTaskButton', $hasTaskButton);