+
+
+
-
-
title;?>
-
desc;?>
- params['header']):?>
-
api->header;?>
-
-
-
- | api->req->name;?> |
- api->req->type;?> |
- api->req->required;?> |
- api->req->desc;?> |
-
-
-
- params['header'] as $param):?>
-
- |
- String |
- api->boolList[$param['required']];?> |
- |
-
-
-
-
-
- params['query']):?>
-
api->query;?>
-
-
-
- | api->req->name;?> |
- api->req->type;?> |
- api->req->required;?> |
- api->req->desc;?> |
-
-
-
- params['query'] as $param):?>
-
- |
- String |
- api->boolList[$param['required']];?> |
- |
-
-
-
-
-
-
+
+
title;?>
+
desc;?>
+ params['header']):?>
+
api->header;?>
+
+
+
+ | api->req->name;?> |
+ api->req->type;?> |
+ api->req->required;?> |
+ api->req->desc;?> |
+
+
+
+ params['header'] as $param):?>
+
+ |
+ String |
+ api->boolList[$param['required']];?> |
+ |
+
+
+
+
+
+ params['query']):?>
+
api->query;?>
+
+
+
+ | api->req->name;?> |
+ api->req->type;?> |
+ api->req->required;?> |
+ api->req->desc;?> |
+
+
+
+ params['query'] as $param):?>
+
+ |
+ String |
+ api->boolList[$param['required']];?> |
+ |
+
+
+
+
+
+ ';
- $field = '';
- for($i = 0; $i < $level; $i++) $field .= ' '. ($i == $level-1 ? '∟' : ' ') . ' ';
- $field .= $data['field'];
- $str .= '
' . $field . ' | ';
- $str .= '
' . zget($typeList, $data['paramsType'], '') . ' | ';
- $str .= '
' . zget($lang->api->boolList, $data['required'], '') . ' | ';
- $str .= '
' . $data['desc'] . ' | ';
- $str .= '';
- if(isset($data['children']) && count($data['children']) > 0)
- {
- $level++;
- foreach($data['children'] as $item) $str .= parseTree($item, $typeList, $level);
- }
- return $str;
- }
- ?>
- params['params']):?>
-
api->params;?>
-
-
-
- | api->req->name;?> |
- api->req->type;?> |
- api->req->required;?> |
- api->req->desc;?> |
-
-
- params['params'] as $item) echo parseTree($item, $typeList);?>
-
-
- paramsExample):?>
-
api->paramsExample;?>
-
paramsExample;?>
-
- response):?>
-
api->response;?>
-
-
-
- | api->req->name;?> |
- api->req->type;?> |
- api->req->required;?> |
- api->req->desc;?> |
-
-
-
- response as $item) echo parseTree($item, $typeList);?>
-
-
-
- responseExample):?>
-
api->responseExample;?>
-
responseExample;?>
-
-
+ $str = '
';
+ $field = '';
+ for($i = 0; $i < $level; $i++) $field .= ' '. ($i == $level-1 ? '∟' : ' ') . ' ';
+ $field .= $data['field'];
+ $str .= '| ' . $field . ' | ';
+ $str .= '' . zget($typeList, $data['paramsType'], '') . ' | ';
+ $str .= '' . zget($lang->api->boolList, $data['required'], '') . ' | ';
+ $str .= '' . $data['desc'] . ' | ';
+ $str .= '
';
+ if(isset($data['children']) && count($data['children']) > 0)
+ {
+ $level++;
+ foreach($data['children'] as $item) $str .= parseTree($item, $typeList, $level);
+ }
+ return $str;
+ }
+ ?>
+ params['params']):?>
+
api->params;?>
+
+
+
+ | api->req->name;?> |
+ api->req->type;?> |
+ api->req->required;?> |
+ api->req->desc;?> |
+
+
+ params['params'] as $item) echo parseTree($item, $typeList);?>
+
+
+ paramsExample):?>
+
api->paramsExample;?>
+
paramsExample;?>
+
+ response):?>
+
api->response;?>
+
+
+
+ | api->req->name;?> |
+ api->req->type;?> |
+ api->req->required;?> |
+ api->req->desc;?> |
+
+
+
+ response as $item) echo parseTree($item, $typeList);?>
+
+
+
+ responseExample):?>
+
api->responseExample;?>
+
responseExample;?>
+
diff --git a/module/dimension/config.php b/module/dimension/config.php
new file mode 100644
index 0000000000..4bd5f8ba3f
--- /dev/null
+++ b/module/dimension/config.php
@@ -0,0 +1,5 @@
+dimension->changeDimensionLink = array();
+$config->dimension->changeDimensionLink['screen-browse'] = 'screen|browse|dimensionID=%s';
+$config->dimension->changeDimensionLink['pivot-preview'] = 'pivot|preview|dimensionID=%s';
+$config->dimension->changeDimensionLink['chart-preview'] = 'chart|preview|dimensionID=%s';
diff --git a/module/dimension/control.php b/module/dimension/control.php
new file mode 100644
index 0000000000..55e8fc601c
--- /dev/null
+++ b/module/dimension/control.php
@@ -0,0 +1,33 @@
+
+ * @package dimension
+ * @version $Id: control.php 4157 2022-11-1 10:24:12Z $
+ * @link http://www.zentao.net
+ */
+class dimension extends control
+{
+ /**
+ * Drop menu page, type is used for tree-browsegroup link.
+ *
+ * @access public
+ * @param string currentModule
+ * @param string currentMethod
+ * @param int dimensionID
+ * @param string type screen|pivot|chart
+ * @return void
+ */
+ public function ajaxGetDropMenu($currentModule, $currentMethod, $dimensionID, $type = '')
+ {
+ $this->view->currentModule = $currentModule;
+ $this->view->currentMethod = $currentMethod;
+ $this->view->dimensionID = $dimensionID;
+ $this->view->type = $type;
+ $this->view->dimensions = $this->dimension->getList();
+ $this->display();
+ }
+}
diff --git a/module/dimension/lang/de.php b/module/dimension/lang/de.php
new file mode 100644
index 0000000000..bfa2812263
--- /dev/null
+++ b/module/dimension/lang/de.php
@@ -0,0 +1,3 @@
+dimension->common = 'Dimension';
+$lang->dimension->default = 'Efficiency';
diff --git a/module/dimension/lang/en.php b/module/dimension/lang/en.php
new file mode 100644
index 0000000000..bfa2812263
--- /dev/null
+++ b/module/dimension/lang/en.php
@@ -0,0 +1,3 @@
+dimension->common = 'Dimension';
+$lang->dimension->default = 'Efficiency';
diff --git a/module/dimension/lang/fr.php b/module/dimension/lang/fr.php
new file mode 100644
index 0000000000..bfa2812263
--- /dev/null
+++ b/module/dimension/lang/fr.php
@@ -0,0 +1,3 @@
+dimension->common = 'Dimension';
+$lang->dimension->default = 'Efficiency';
diff --git a/module/dimension/lang/zh-cn.php b/module/dimension/lang/zh-cn.php
new file mode 100644
index 0000000000..6c6b30b58b
--- /dev/null
+++ b/module/dimension/lang/zh-cn.php
@@ -0,0 +1,3 @@
+dimension->common = '维度';
+$lang->dimension->default = '效能';
diff --git a/module/dimension/model.php b/module/dimension/model.php
new file mode 100644
index 0000000000..f104fe4cd6
--- /dev/null
+++ b/module/dimension/model.php
@@ -0,0 +1,116 @@
+
+ * @package dimension
+ * @version $Id: model.php 5086 2022-11-1 10:26:23Z $
+ * @link http://www.zentao.net
+ */
+class dimensionModel extends model
+{
+ /**
+ * Get dimension by ID.
+ *
+ * @param int $dimensionID
+ * @access public
+ * @return object
+ */
+ public function getByID($dimensionID)
+ {
+ return $this->dao->select('*')->from(TABLE_DIMENSION)->where('id')->eq($dimensionID)->fetch();
+ }
+
+ /**
+ * Get dimension list.
+ *
+ * @access public
+ * @return array
+ */
+ public function getList()
+ {
+ return $this->dao->select('*')->from(TABLE_DIMENSION)->where('deleted')->eq('0')->fetchAll('id');
+ }
+
+ /**
+ * Set switcher menu and save last dimension.
+ *
+ * @param int $dimensionID
+ * @param string $type screen | pivot | chart
+ * @access public
+ * @return void
+ */
+ public function setSwitcherMenu($dimensionID = 0, $type = '')
+ {
+ $dimensionID = $this->saveState($dimensionID);
+ $this->loadModel('setting')->setItem($this->app->user->account . 'common.dimension.lastDimension', $dimensionID);
+
+ $moduleName = $this->app->rawModule;
+ $methodName = $this->app->rawMethod;
+ $this->lang->switcherMenu = $this->getSwitcher($dimensionID, $moduleName, $methodName, $type);
+
+ return $dimensionID;
+ }
+
+ /**
+ * Save dimension state.
+ *
+ * @param int $dimensionID
+ * @access public
+ * @return int
+ */
+ public function saveState($dimensionID)
+ {
+ $dimensions = $this->getList();
+
+ /* When the session do not exist, get it from the database. */
+ if(empty($dimensionID) and isset($this->config->dimension->lastDimension) and isset($dimensions[$this->config->dimension->lastDimension]))
+ {
+ $this->session->set('dimension', $this->config->dimension->lastDimension, $this->app->tab);
+ return $this->session->dimension;
+ }
+
+ if($dimensionID == 0 and $this->session->dimension) $dimensionID = $this->session->dimension;
+ if($dimensionID == 0 or !isset($dimensions[$dimensionID])) $dimensionID = key($dimensions);
+
+ $this->session->set('dimension', (int)$dimensionID, $this->app->tab);
+
+ return $this->session->dimension;
+ }
+
+ /*
+ * Get project swapper.
+ *
+ * @param int $dimensionID
+ * @param string $currentModule
+ * @param string $currentMethod
+ * @param string $type screen | pivot | chart
+ * @access public
+ * @return string
+ */
+ public function getSwitcher($dimensionID, $currentModule, $currentMethod, $type)
+ {
+ $currentDimensionName = $this->lang->dimension->common;
+ if($dimensionID)
+ {
+ $currentDimension = $this->getByID($dimensionID);
+ $currentDimensionName = $currentDimension->name;
+ }
+
+ if($this->app->viewType == 'mhtml' and $dimensionID)
+ {
+ $output = $this->lang->dimension->common . $this->lang->colon;
+ $output .= "
{$currentDimensionName} ";
+ return $output;
+ }
+
+ $dropMenuLink = helper::createLink('dimension', 'ajaxGetDropMenu', "currentModule=$currentModule¤tMethod=$currentMethod&dimensionID=$dimensionID&type=$type");
+ $output = "";
+
+ return $output;
+ }
+}
diff --git a/module/dimension/view/ajaxgetdropmenu.html.php b/module/dimension/view/ajaxgetdropmenu.html.php
new file mode 100644
index 0000000000..1c5870dd6b
--- /dev/null
+++ b/module/dimension/view/ajaxgetdropmenu.html.php
@@ -0,0 +1,71 @@
+
+
+
+
+ $dimension) $dimensionNames[$id] = $dimension->name;
+$dimensionsPinYin = common::convert2Pinyin($dimensionNames);
+
+$dimensionsHtml = '
';
+foreach($dimensions as $id => $dimension)
+{
+ $dimensionLink = 'javascript:;';
+ $moduleMethod = $currentModule . '-' . $currentMethod;
+ if(isset($config->dimension->changeDimensionLink[$moduleMethod]))
+ {
+ $linkArray = explode('|', $config->dimension->changeDimensionLink[$moduleMethod]);
+ if(count($linkArray) != 3) continue;
+
+ list($linkModule, $linkMethod, $linkParams) = $linkArray;
+ $linkParams = $moduleMethod == 'tree-browsegroup' ? sprintf($linkParams, $id, $type) : sprintf($linkParams, $id);
+ $dimensionLink = $this->createLink($linkModule, $linkMethod, $linkParams);
+ }
+
+ $selected = $id == $dimensionID ? 'selected' : '';
+ $dimensionsHtml .= '- ' . html::a($dimensionLink, $dimensionNames[$id], '', "class='$selected clickable' title='{$dimensionNames[$id]}' data-key='" . zget($dimensionsPinYin, $dimensionNames[$id], '') . "' data-app='{$app->tab}'") . '
';
+}
+$dimensionsHtml .= '
';
+?>
+
diff --git a/module/doc/model.php b/module/doc/model.php
index 0a0e4705c7..1504433d4f 100644
--- a/module/doc/model.php
+++ b/module/doc/model.php
@@ -19,7 +19,8 @@ class docModel extends model
public $action;
// api doc type
- const DOC_TYPE_API = 'api';
+ const DOC_TYPE_API = 'api';
+ const DOC_TYPE_REST = 'restapi';
/**
* Get library by id.
@@ -2473,10 +2474,10 @@ class docModel extends model
* @param array $moduleDocs
* @param pointer $docID
* @param int $moduleID
- * @access private
+ * @access public
* @return string
*/
- private function buildTree(&$treeMenu, $type, $objectID, $libID, $module, $moduleDocs, &$docID, $moduleID = 0)
+ public function buildTree(&$treeMenu, $type, $objectID, $libID, $module, $moduleDocs, &$docID, $moduleID = 0)
{
if(!isset($treeMenu[$module->id])) $treeMenu[$module->id] = '';
@@ -2490,9 +2491,13 @@ class docModel extends model
if($type == static::DOC_TYPE_API)
{
$treeMenu[$module->id] .= '
id == $docID ? ' class="active"' : ' class="doc"') . '>';
-
$treeMenu[$module->id] .= html::a(inlink('index', "libID=0&moduleID=0&apiID={$doc->id}"), " " . $doc->title, '', "data-app='{$this->app->tab}' class='doc-title' title='{$doc->title}'");
-
+ $treeMenu[$module->id] .= '';
+ }
+ elseif($type == static::DOC_TYPE_REST)
+ {
+ $treeMenu[$module->id] .= '
id == $docID ? ' class="active"' : ' class="doc"') . '>';
+ $treeMenu[$module->id] .= html::a(inlink('api', "type=restapi&apiID={$doc->id}"), " " . $doc->title, '', "data-app='{$this->app->tab}' class='doc-title' title='{$doc->title}'");
$treeMenu[$module->id] .= '';
}
else
@@ -2535,6 +2540,10 @@ class docModel extends model
{
$li = html::a(inlink('index', "libID=$libID&moduleID={$module->id}"), $module->name, '', "data-app='{$this->app->tab}' class='doc-title' title='{$module->name}'");
}
+ elseif($type == static::DOC_TYPE_REST)
+ {
+ $li = html::a('#', $module->name, '', "data-app='{$this->app->tab}' class='doc-title' title='{$module->name}'");
+ }
else
{
$moduleClass = common::hasPriv('tree', 'updateOrder') ? 'sort-module' : '';
@@ -2554,7 +2563,10 @@ class docModel extends model
}
if($treeMenu[$module->id])
{
- $li .= '
' . $treeMenu[$module->id] . '
';
+ $class = '';
+ if($type == static::DOC_TYPE_REST) $class = 'class="menu-active-primary menu-hover-primary"';
+
+ $li .= "
" . $treeMenu[$module->id] . '
';
}
if(!isset($treeMenu[$module->parent])) $treeMenu[$module->parent] = '';
diff --git a/module/doc/view/lefttree.html.php b/module/doc/view/lefttree.html.php
index e26b39fdee..f97ae54674 100644
--- a/module/doc/view/lefttree.html.php
+++ b/module/doc/view/lefttree.html.php
@@ -30,8 +30,7 @@
.tree li.has-input {overflow: hidden;}
.tree-text {margin-left: 5px; overflow: hidden;}
i.btn-info, i.btn-info:hover {border: none; background: #fff; box-shadow: unset;}
-.tree-version-trigger {display: flex; align-items: center; padding: 0 10px; width: 54px; border-radius: 5px; background: #F9F9F9;}
-.tree-version-trigger > .version-trigger-text {flex: 0 0 30px; overflow: hidden;}
+.tree-version-trigger {padding: 0 10px; width: 54px; border-radius: 5px; background: #F9F9F9;}
/* css for sidebar */
.sidebar-toggle {flex: 0 0 16px;}
@@ -225,7 +224,7 @@ $(function()
{
if(item.versions[i].id == release) versionName = item.versions[i].version;
}
- $item += '
' + (versionName || versionLang) + '
';
+ $item += '
' + (versionName || versionLang) + '
';
}
if((libClass != 'lib' && hasModulePriv) || (libClass == 'lib' && hasLibPriv)) $item += '
';
$item += '
';
@@ -237,8 +236,9 @@ $(function()
if(item.active) $li.addClass('active');
}
});
-
if(location.href.indexOf('moduleID') == -1) ele.data('zui.tree').collapse();
+ var $leaf = ele.find('li.active');
+ if($leaf.length) $leaf[$leaf.length - 1].scrollIntoView(true);
ele.on('click', '.icon-drop', function(e)
{
diff --git a/module/group/lang/resource.php b/module/group/lang/resource.php
index fc3128f4c0..8c8db4fe6f 100644
--- a/module/group/lang/resource.php
+++ b/module/group/lang/resource.php
@@ -44,8 +44,9 @@ $lang->moduleOrder[105] = 'zahost';
$lang->moduleOrder[108] = 'zanode';
$lang->moduleOrder[110] = 'doc';
-$lang->moduleOrder[113] = 'screen';
-$lang->moduleOrder[115] = 'report';
+$lang->moduleOrder[111] = 'screen';
+$lang->moduleOrder[112] = 'pivot';
+$lang->moduleOrder[119] = 'report';
$lang->moduleOrder[120] = 'company';
$lang->moduleOrder[125] = 'dept';
@@ -1771,17 +1772,34 @@ $lang->tree->methodOrder[30] = 'delete';
/* Screen. */
$lang->resource->screen = new stdclass();
-$lang->resource->screen->browse = 'browse';
-$lang->resource->screen->view = 'view';
+$lang->resource->screen->browse = 'browse';
+$lang->resource->screen->view = 'view';
+$lang->resource->screen->annualData = 'annualData';
+$lang->resource->screen->allAnnualData = 'allAnnualData';
$lang->screen->methodOrder[0] = 'browse';
$lang->screen->methodOrder[5] = 'view';
+$lang->screen->methodOrder[10] = 'annualData';
+$lang->screen->methodOrder[15] = 'allAnnualData';
+
+/* Pivot. */
+$lang->resource->pivot = new stdclass();
+$lang->resource->pivot->preview = 'preview';
+$lang->resource->pivot->productSummary = 'productSummary';
+$lang->resource->pivot->projectDeviation = 'projectDeviation';
+$lang->resource->pivot->bugCreate = 'bugCreate';
+$lang->resource->pivot->bugAssign = 'bugAssign';
+$lang->resource->pivot->workload = 'workload';
+
+$lang->pivot->methodOrder[2] = 'preview';
+$lang->pivot->methodOrder[10] = 'productSummary';
+$lang->pivot->methodOrder[15] = 'projectDeviation';
+$lang->pivot->methodOrder[20] = 'bugCreate';
+$lang->pivot->methodOrder[25] = 'bugAssign';
+$lang->pivot->methodOrder[30] = 'workload';
/* Report. */
$lang->resource->report = new stdclass();
-$lang->resource->report->index = 'index';
-
-$lang->report->methodOrder[0] = 'index';
/* Search. */
$lang->resource->search = new stdclass();
diff --git a/module/pivot/control.php b/module/pivot/control.php
index c6624c78e2..4c9883893c 100644
--- a/module/pivot/control.php
+++ b/module/pivot/control.php
@@ -35,6 +35,7 @@ class pivot extends control
*/
public function preview($dimension = 0, $group = '', $module = 'pivot', $method = '', $params = '')
{
+ $dimension = $this->loadModel('dimension')->setSwitcherMenu($dimension);
$this->prepare4Preview($dimension, $group, $module, $method, $params);
$this->display();
}
diff --git a/module/pivot/zen.php b/module/pivot/zen.php
index 8f995c5c59..078b334510 100644
--- a/module/pivot/zen.php
+++ b/module/pivot/zen.php
@@ -16,7 +16,6 @@ class pivotZen extends pivot
{
$params = helper::safe64Decode($params);
- if(!$dimension) $dimension = $this->getDefaultDimension();
if(!$group) $group = $this->getDefaultGroup($dimension);
if(!$module || !$method) list($module, $method, $params) = $this->getDefaultMethod($dimension, $group);
@@ -32,17 +31,6 @@ class pivotZen extends pivot
if(empty($this->view->title)) $this->view->title = $this->lang->pivot->list;
}
- /**
- * Get default dimension of pivot.
- *
- * @access public
- * @return int
- */
- public function getDefaultDimension()
- {
- return 1;
- }
-
/**
* Get default group of a dimension.
*
diff --git a/module/screen/control.php b/module/screen/control.php
index 878ee4fddf..e042af3877 100644
--- a/module/screen/control.php
+++ b/module/screen/control.php
@@ -20,10 +20,11 @@ class screen extends control
*/
public function browse($dimensionID = 0)
{
- $dimensionID = $this->commonAction($dimensionID);
+ $dimensionID = $this->loadModel('dimension')->setSwitcherMenu($dimensionID);
- $this->view->title = $this->lang->screen->common;
- $this->view->screens = $this->screen->getList($dimensionID);
+ $this->view->title = $this->lang->screen->common;
+ $this->view->screens = $this->screen->getList($dimensionID);
+ $this->view->dimension = $dimensionID;
$this->display();
}
diff --git a/module/screen/lang/de.php b/module/screen/lang/de.php
index cae2400ae1..1a808e0975 100644
--- a/module/screen/lang/de.php
+++ b/module/screen/lang/de.php
@@ -1,8 +1,10 @@
screen->browse = 'Browse screen';
-$lang->screen->view = 'View screen';
-$lang->screen->noscreens = 'No screen yet';
-$lang->screen->allDepts = 'All depts';
-$lang->screen->allUsers = 'All users';
-$lang->screen->noData = 'No Data';
-$lang->screen->noDesc = 'No Desc';
+$lang->screen->browse = 'Browse screen';
+$lang->screen->view = 'View screen';
+$lang->screen->annualData = 'Annual Summary';
+$lang->screen->allAnnualData = 'View everyone annual summary';
+$lang->screen->noscreens = 'No screen yet';
+$lang->screen->allDepts = 'All depts';
+$lang->screen->allUsers = 'All users';
+$lang->screen->noData = 'No Data';
+$lang->screen->noDesc = 'No Desc';
diff --git a/module/screen/lang/en.php b/module/screen/lang/en.php
index cae2400ae1..1a808e0975 100644
--- a/module/screen/lang/en.php
+++ b/module/screen/lang/en.php
@@ -1,8 +1,10 @@
screen->browse = 'Browse screen';
-$lang->screen->view = 'View screen';
-$lang->screen->noscreens = 'No screen yet';
-$lang->screen->allDepts = 'All depts';
-$lang->screen->allUsers = 'All users';
-$lang->screen->noData = 'No Data';
-$lang->screen->noDesc = 'No Desc';
+$lang->screen->browse = 'Browse screen';
+$lang->screen->view = 'View screen';
+$lang->screen->annualData = 'Annual Summary';
+$lang->screen->allAnnualData = 'View everyone annual summary';
+$lang->screen->noscreens = 'No screen yet';
+$lang->screen->allDepts = 'All depts';
+$lang->screen->allUsers = 'All users';
+$lang->screen->noData = 'No Data';
+$lang->screen->noDesc = 'No Desc';
diff --git a/module/screen/lang/fr.php b/module/screen/lang/fr.php
index cae2400ae1..1a808e0975 100644
--- a/module/screen/lang/fr.php
+++ b/module/screen/lang/fr.php
@@ -1,8 +1,10 @@
screen->browse = 'Browse screen';
-$lang->screen->view = 'View screen';
-$lang->screen->noscreens = 'No screen yet';
-$lang->screen->allDepts = 'All depts';
-$lang->screen->allUsers = 'All users';
-$lang->screen->noData = 'No Data';
-$lang->screen->noDesc = 'No Desc';
+$lang->screen->browse = 'Browse screen';
+$lang->screen->view = 'View screen';
+$lang->screen->annualData = 'Annual Summary';
+$lang->screen->allAnnualData = 'View everyone annual summary';
+$lang->screen->noscreens = 'No screen yet';
+$lang->screen->allDepts = 'All depts';
+$lang->screen->allUsers = 'All users';
+$lang->screen->noData = 'No Data';
+$lang->screen->noDesc = 'No Desc';
diff --git a/module/screen/lang/zh-cn.php b/module/screen/lang/zh-cn.php
index 7e22543caa..7d6fbb1d4e 100644
--- a/module/screen/lang/zh-cn.php
+++ b/module/screen/lang/zh-cn.php
@@ -1,8 +1,10 @@
screen->browse = '浏览数据大屏';
-$lang->screen->view = '查看数据大屏';
-$lang->screen->noscreens = '暂时没有可视化大屏';
-$lang->screen->allDepts = '所有部门';
-$lang->screen->allUsers = '所有用户';
-$lang->screen->noData = '暂时没有数据';
-$lang->screen->noDesc = '暂无描述';
+$lang->screen->browse = '浏览大屏';
+$lang->screen->view = '查看大屏';
+$lang->screen->annualData = '年度总结';
+$lang->screen->allAnnualData = '查看所有人年度总结';
+$lang->screen->noscreens = '暂时没有可视化大屏';
+$lang->screen->allDepts = '所有部门';
+$lang->screen->allUsers = '所有用户';
+$lang->screen->noData = '暂时没有数据';
+$lang->screen->noDesc = '暂无描述';
diff --git a/module/screen/view/browse.html.php b/module/screen/view/browse.html.php
index f076fa4f72..de572ea693 100644
--- a/module/screen/view/browse.html.php
+++ b/module/screen/view/browse.html.php
@@ -7,6 +7,7 @@