详情页
详情页通过 detail()
实现,只需要指定相关属性即可实现。
用法
指定详情对象
通过 object
属性来指定详情页对应的对象,通过 objectType
指定详情对象类型,通过 objectID
指定详情对象 ID,下面为一个例子:
detail
(
set::object($story),
set::objectType('story'),
// 当指定了 object 属性,可以省略 objectID,自动从 object 对象上获取 ID。
// set::objectID($story->id)
);
提示:省略详情对象相关属性
- 当页面所属模块与
objectType
相同时可以省略objectType
属性。 - 当页面上存在
${$objectType}
对象时可以省略object
属性。 - 当指定了
object
属性,可以省略objectID
,自动从object
对象上获取 ID。
定义头部
定义头部 ID 和标题
当指定了详情对象后会自动在头部显示对象 ID 和标题,默认情况下也会在头部显示返回按钮,可以通过 set::backBtn(false)
来关闭返回按钮,如果需要自定义头部 ID 和标题,可以通过如下属性:
detail
(
set::objectID($story->id),
set::objectType('story'),
set::title($story->title)
);
提示
当已经指定了详情对象,可以省略 objectID
和 title
属性。
定义头部右侧工具栏
有时需要在头部右侧显示一些操作按钮,可以通过 set::toolbar()
来定义,如下:
$toolbar = array();
$toolbar[] = array('icon' => 'export', 'text' => '导出', 'url' => '#example-url');
$toolbar[] = array('icon' => 'plus', 'text' => '新建', 'type' => 'dropdown', 'items' => array(array('text' => '新建需求'), array('text' => '批量新建需求')));
detail
(
set::toolbar($toolbar)
);
定义头部父级对象标题
有时需要在标题前方显示父级对象的标题,例如父级任务,可以通过 set::parent($parentObject)
来定义,如下:
detail
(
set::parent($parentTask)
);
/* 或者通过单独的属性指定父级对象相关属性: */
detail
(
set::parentType('task'),
set::parentTitle($parentTask->title),
set::parentUrl(createLink('task', 'view', "taskID=$parentTask->id"))
);
定义主要栏目
在详情页左侧主要栏目上会显示对象的主要信息。
定义主要栏目内容
通过 set::sections()
来定义主要栏目内容,通过一个数组来指定多个内容。每个内容会使用 content 部件进行渲染,可以通过 control
来指定要渲染的部件类型,通过 title
来指定内容标题,通过其他属性来指定要渲染的部件其他属性。下面为一个例子:
$sections = array();
$sections[] = array
(
'control' => 'html', // 使用 html 渲染需求描述内容。
'title' => '需求描述',
'content' => $story->spec // 需求描述内容。
);
$sections[] = array
(
'control' => 'html',
'title' => '验证步骤',
'content' => $story->verify
);
$sections[] = array
(
'title' => '附件',
'control' => 'fileList', // 指定使用 fileList 部件。
'files' => $story->files,
'showDelete' => false,
'object' => $story
);
detail
(
set::sections($sections)
);
定义主要栏目底部浮动操作栏
在主要栏目底部可以显示一些操作按钮,可以通过 set::actions()
来定义,如下:
$actions = array();
$actions[] = array('icon' => 'alter', 'text' => '变更', 'url' => '#example-url');
$actions[] = array('icon' => 'hand-right', 'text' => '指派', 'url' => '#example-url');
$actions[] = '-'; // 分隔符。
$actions[] = array('icon' => 'edit', 'hint' => '编辑', 'url' => '#example-url');
$actions[] = array('icon' => 'copy', 'hint' => '复制', 'url' => '#example-url');
$actions[] = array('icon' => 'trash', 'hint' => '删除', 'url' => '#example-url');
detail
(
set::actions($actions)
);
提示
默认会自动在底部操作栏左侧显示返回按钮,如果完全不需要操作栏,可以通过 set::actions(false)
来关闭。
定义侧边栏标签页
在详情页右侧会显示一些标签页,可以通过 set::tabs()
来定义,与主要栏目内容定义 sections
相同,通过一个数组来定义每个标签页,每个标签页会使用 content 部件进行渲染,可以通过 control
来指定要渲染的部件类型,通过 title
来指定标签页标题,通过 group
来指定标签页分组,通过其他属性来指定要渲染的部件其他属性。相同 group
的标签页会作为一个标签页组展示,不同的的分组会从上到下排列。下面为一个例子:
$tabs = array();
$tabs[] = array
(
'group' => 'basic', // 第一个标签页组
'title' => '基本信息',
'control' => 'storyBasicInfo' // 使用 storyBasicInfo 部件渲染。
);
$tabs[] = array
(
'group' => 'basic', // 第一个标签页组
'title' => '需求的一生',
'control' => 'storyLifeInfo' // 使用 storyLifeInfo 部件渲染。
);
$tabs[] = array
(
'group' => 'relatives', // 第二个标签页组
'title' => '用户需求',
'control' => 'linkedStoryList' // 使用 linkedStoryList 部件渲染。
);
$tabs[] = array
(
'group' => 'relatives', // 第二个标签页组
'title' => '迭代任务',
'control' => 'executionTaskList' // 使用 executionTaskList 部件渲染。
);
$tabs[] = array
(
'group' => 'relatives', // 第二个标签页组
'title' => '相关信息',
'control' => 'storyRelatedList' // 使用 storyRelatedList 部件渲染。
);
综合示例
/* 工具栏。 */
$toolbar = array();
$toolbar[] = array('icon' => 'export', 'text' => '导出', 'url' => '#example-url');
$toolbar[] = array('icon' => 'plus', 'text' => '新建', 'type' => 'dropdown', 'items' => array(array('text' => '新建需求'), array('text' => '批量新建需求')));
/* 主栏目。 */
$sections = array();
$sections[] = array('control' => 'html', 'title' => '需求描述', 'content' => $story->spec);
$sections[] = array('control' => 'html', 'title' => '验证步骤', 'content' => $story->verify);
$sections[] = array('title' => '附件', 'cont rol' => 'fileList', 'files' => $story->files, 'showDelete' => false, 'object' => $story);
/* 侧边栏标签页。 */
$tabs = array();
$tabs[] = array('group' => 'basic', 'title' => '基本信息', 'control' => 'storyBasicInfo');
$tabs[] = array('group' => 'basic', 'title' => '需求的一生', 'control' => 'storyLifeInfo');
$tabs[] = array('group' => 'relatives', 'title' => '用户需求', 'control' => 'linkedStoryList');
$tabs[] = array('group' => 'relatives', 'title' => '迭代任务', 'control' => 'executionTaskList');
$tabs[] = array('group' => 'relatives', 'title' => '相关信息', 'control' => 'storyRelatedList');
/* 底部操作按钮。 */
$actions = array();
$actions[] = array('icon' => 'alter', 'text' => '变更', 'url' => '#example-url');
$actions[] = array('icon' => 'hand-right', 'text' => '指派', 'url' => '#example-url');
$actions[] = '-'; // 分隔符。
$actions[] = array('icon' => 'edit', 'hint' => '编辑', 'url' => '#example-url');
$actions[] = array('icon' => 'copy', 'hint' => '复制', 'url' => '#example-url');
$actions[] = array('icon' => 'trash', 'hint' => '删除', 'url' => '#example-url');
detail
(
set::toolbar($toolbar),
set::sections($sections),
set::tabs($tabs),
set::history(true),
set::actions($actions),
);
相关部件
通用部件
content
:动态内容detail
:详情页detailCard
:详情卡片datalist
:数据列表breadcrumb
:面包屑idLabel
:ID 标签statusLabel
:状态标签simpleList
:简单列表listItem
:列表项entityTitle
:通用对象标题entityList
:通用对象列表
需求相关
storyBasicInfo
:需求基本信息storyLifeInfo
:需求一生信息storyRelatedList
:相关需求列表storyList
:通用需求列表twinsStoryList
:孪生需求列表linkedStoryList
:已关联需求列表
任务相关部件
executionTaskList
:执行任务列表taskTeam
:任务团队信息taskBasicInfo
:任务基本信息taskEffortInfo
:任务工时信息taskLifeInfo
:任务一生信息taskMiscInfo
:任务其他相关信息