diff --git a/module/testcase/config/form.php b/module/testcase/config/form.php index b6c589921f..3313e1240e 100644 --- a/module/testcase/config/form.php +++ b/module/testcase/config/form.php @@ -127,6 +127,7 @@ $config->testcase->form->showImport['keywords'] = array('required' => false, $config->testcase->form->showImport['stage'] = array('required' => false, 'type' => 'array', 'default' => array(''), 'filter' => 'join'); $config->testcase->form->showImport['steps'] = array('required' => false, 'type' => 'string', 'default' => ''); $config->testcase->form->showImport['expects'] = array('required' => false, 'type' => 'string', 'default' => ''); +if($config->edition != 'open') $config->testcase->form->showImport['scene'] = array('required' => false, 'type' => 'int', 'default' => 0); $config->testcase->form->automation = array(); $config->testcase->form->automation['product'] = array('required' => true, 'type' => 'int', 'default' => 0); diff --git a/module/testcase/control.php b/module/testcase/control.php index e6c1cf4acf..3d7562a8c5 100644 --- a/module/testcase/control.php +++ b/module/testcase/control.php @@ -2075,4 +2075,23 @@ class testcase extends control $caseModuleItmes = isset($moduleItems[$caseID]) ? $moduleItems[$caseID] : array(); return print(json_encode($caseModuleItmes)); } + + /** + * AJAX: 获取用例对应产品模块的场景。 + * AJAX: Get scenes items for case. + * + * @param int $productID + * @param int $moduleID + * @param string $branch + * @access public + * @return json + */ + public function ajaxGetProductScenes(int $productID, int $moduleID, string $branch) + { + $items = array(); + $branches = $this->loadModel('branch')->getPairs($productID); + $scenes = $this->testcase->getSceneMenu($productID, $moduleID, ($branch === 'all' || !isset($branches[$branch])) ? 'all' : (string)$branch); + foreach($scenes as $sceneID => $sceneName) $items[] = array('text' => $sceneName, 'value' => $sceneID); + return print(json_encode($items)); + } } diff --git a/module/testcase/js/showimport.ui.js b/module/testcase/js/showimport.ui.js index 009ebbecf2..d0e5694011 100644 --- a/module/testcase/js/showimport.ui.js +++ b/module/testcase/js/showimport.ui.js @@ -22,6 +22,19 @@ window.renderRowCol = function($result, col, row) }); }); } + if(col.name == 'scene') + { + $result.find('.picker-box').on('inited', function(e, info) + { + const sceneLink = $.createLink('testcase', 'ajaxGetProductScenes', 'productID=' + row.product + '&moduleID=' + row.module + '&branch=' + row.branch); + $.getJSON(sceneLink, function(scenes) + { + let $scene = info[0]; + $scene.render({items: scenes}); + $scene.$.setValue(row.scene); + }); + }); + } } function computeImportTimes() @@ -52,6 +65,15 @@ function changeModule(event) $storyPicker.render({items: stories}); $storyPicker.$.setValue(oldStory); }); + + const $scenePicker = $currentRow.find('.form-batch-control[data-name="scene"] .picker').zui('picker'); + const oldScene = $currentRow.find('input[name^=scene]').val(); + const sceneLink = $.createLink('testcase', 'ajaxGetProductScenes', 'productID=' + productID + '&moduleID=' + moduleID + '&branch=' + branch); + $.getJSON(sceneLink, function(scenes) + { + $scenePicker.render({items: scenes}); + $scenePicker.$.setValue(oldScene); + }); } function changeBranch(event) diff --git a/module/testcase/ui/showimport.html.php b/module/testcase/ui/showimport.html.php index d1a6f63e03..f94953a7ce 100644 --- a/module/testcase/ui/showimport.html.php +++ b/module/testcase/ui/showimport.html.php @@ -93,6 +93,19 @@ else 'required' => strpos(",$requiredFields,", ',module,') !== false ); + if($this->config->edition != 'open') + { + $items[] = array + ( + 'name' => 'scene', + 'label' => $lang->testcase->scene, + 'control' => array('control' => 'picker', 'required' => true), + 'items' => array(), + 'width' => '200px', + 'required' => strpos(",$requiredFields,", ',scene,') !== false + ); + } + $items[] = array ( 'name' => 'story',