Merge branch 'master' of https://gitlab.zcorp.cc/easycorp/zentaopms into zentaopms_304

This commit is contained in:
liumengyi
2023-04-19 17:23:44 +08:00
20 changed files with 1165 additions and 13 deletions
+911
View File
File diff suppressed because one or more lines are too long
-1
View File
@@ -14087,7 +14087,6 @@ REPLACE INTO `zt_chart` (`id`, `name`, `dimension`, `type`, `group`, `stage`, `d
(1045, '宏观数据-产品数据概览',1,'table',0,'published','','','{\"group\":[],\"column\":[\r\n{\"field\":\"program\",\"valOrAgg\":\"value\",\"name\":\"一级项目集\"},{\"field\":\"productLine\",\"valOrAgg\":\"value\",\"name\":\"产品线\"},\r\n{\"field\":\"product\",\"valOrAgg\":\"value\",\"name\":\"产品\"},\r\n{\"field\":\"story\",\"valOrAgg\":\"value\",\"name\":\"需求数\"},\r\n{\"field\":\"bug\",\"valOrAgg\":\"value\",\"name\":\"Bug数\"},\r\n{\"field\":\"plan\",\"valOrAgg\":\"value\",\"name\":\"计划数\"},\r\n{\"field\":\"release\",\"valOrAgg\":\"value\",\"name\":\"发布数\"}],\"filter\":[]}','[]','','SELECT \r\n t1.name AS product, \r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.plan, 0) AS plan, \r\n IFNULL(t5.release, 0) AS `release`, \r\n IFNULL(t6.story, 0) AS story, \r\n IFNULL(t7.bug, 0) AS bug \r\nFROM \r\n zt_product AS t1 \r\n LEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\n LEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\n LEFT JOIN (SELECT product, COUNT(1) AS plan FROM zt_productplan WHERE deleted = \'0\' GROUP BY product) AS t4 ON t1.id = t4.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS `release` FROM zt_release WHERE deleted = \'0\' GROUP BY product) AS t5 ON t1.id = t5.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' GROUP BY product) AS t6 ON t1.id = t6.product \r\n LEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' GROUP BY product) AS t7 ON t1.id = t7.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\'AND t1.vision = \'rnd\'\r\nORDER BY t1.order',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1046, '宏观数据-产品需求完成率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"closedRate\",\"agg\":\"value\",\"name\":\"需求完成率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT\r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program, \r\n IFNULL(t3.name, \'/\') AS productLine, \r\n IFNULL(t4.story, 0) AS closedStory, \r\n t5.story AS totalStory, \r\n ROUND(IFNULL(t4.story, 0) / t5.story * 100, 2) AS closedRate \r\nFROM zt_product AS t1 \r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1 \r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\' \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND closedReason = \'done\' GROUP BY product) AS t4 ON t1.id = t4.product \r\nLEFT JOIN (SELECT product, COUNT(1) AS story FROM zt_story WHERE deleted = \'0\' AND ( closedReason = \'done\' OR status != \'closed\') GROUP BY product) AS t5 ON t1.id = t5.product \r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.story IS NOT NULL \r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1047, '宏观数据-产品Bug修复率',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"product\",\"name\":\"产品\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"fixedRate\",\"agg\":\"value\",\"name\":\"Bug修复率\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT \r\n t1.name AS product,\r\n IFNULL(t2.name, \'/\') AS program,\r\n IFNULL(t3.name, \'/\') AS productLine,\r\n IFNULL(t4.bug, 0) AS fixedBug,\r\n t5.bug AS totalBug,\r\n ROUND(IFNULL(t4.bug, 0) / t5.bug * 100, 2) AS fixedRate\r\nFROM zt_product AS t1\r\nLEFT JOIN zt_project AS t2 ON t1.program = t2.id AND t2.type = \'program\' AND t2.grade = 1\r\nLEFT JOIN zt_module AS t3 ON t1.line = t3.id AND t3.type = \'line\'\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND resolution = \'fixed\' AND status = \'closed\' GROUP BY product) AS t4 ON t1.id = t4.product\r\nLEFT JOIN (SELECT product, COUNT(1) AS bug FROM zt_bug WHERE deleted = \'0\' AND (resolution = \'fixed\' OR resolution = \'postponed\' OR status = \'active\') GROUP BY product) AS t5 ON t1.id = t5.product\r\nWHERE t1.deleted = \'0\' AND t1.status != \'closed\' AND t1.shadow = \'0\' AND t1.vision = \'rnd\' AND t5.bug IS NOT NULL\r\nORDER BY t1.order DESC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1048, '宏观数据-公司组织结构图',1,'org',0,'published','','','','[]','','',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1049, '宏观数据-部门人员分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"deptName\",\"name\":\"部门\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"部门人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT IF(t3.id IS NOT NULL, t3.`name`, \'空\') AS deptName,count(1) as count, \r\nIF(t3.id IS NOT NULL, t3.`order`, 9999) AS deptOrder \r\nFROM `zt_user` AS t1 \r\nLEFT JOIN `zt_dept` AS t2 ON t1.dept = t2.id\r\nLEFT JOIN `zt_dept` AS t3 ON FIND_IN_SET(TRIM(\',\' FROM t3.path), TRIM(\',\' FROM t2.path)) AND t3.grade = \'1\'\r\nWHERE t1.deleted = \'0\'\r\nGROUP BY deptName, deptOrder \r\nORDER BY deptOrder ASC',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1050, '宏观数据-公司角色分布图',1,'pie',0,'published','','','{\"group\":[{\"field\":\"role\",\"name\":\"类型\"}],\"metric\":[{\"type\":\"agg\",\"field\":\"account\",\"agg\":\"count\",\"name\":\"人数\",\"valOrAgg\":\"count\"}]}','[]','','SELECT\n account,\nCASE\n ROLE \n WHEN \'dev\' THEN\n \'研发\' \n WHEN \'qa\' THEN\r\n \'测试\'\r\n WHEN \'pm\' THEN\r\n \'项目经理\'\r\n WHEN \'others\' THEN\r\n \'其他\'\r\n WHEN \'td\' THEN\r\n \'研发主管\'\r\n WHEN \'pd\' THEN\r\n \'产品主管\'\r\n WHEN \'po\' THEN\r\n \'产品经理\'\r\n WHEN \'qd\' THEN\r\n \'测试主管\'\r\n WHEN \'top\' THEN\r\n \'高层管理\'\r\n ELSE\r\n \'未知\'\r\n END\r\n role\n FROM\n `zt_user` \n WHERE\n deleted = \'0\' ',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
(1051, '宏观数据-人员工龄分布图',1,'bar',0,'published','','','{\r\n\"xaxis\":[{\"field\":\"joinDate\",\"name\":\"工龄\"}],\r\n\"yaxis\":[\r\n {\"type\":\"value\",\"field\":\"count\",\"agg\":\"value\",\"name\":\"人数\",\"valOrAgg\":\"value\"}\r\n]}','[]','','SELECT count(1) as count, \'0-1年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 1 YEAR)\r\nunion\r\nSELECT count(1) as count, \'1-3年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 3 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 1 YEAR)\r\nunion\r\nSELECT count(1) as count, \'3-5年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 5 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 3 YEAR)\r\nunion\r\nSELECT count(1) as count, \'5-10年\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` > DATE_SUB(NOW(), INTERVAL 10 YEAR) AND `join` <= DATE_SUB(NOW(), INTERVAL 5 YEAR)\r\nunion\r\nSELECT count(1) as count, \'10年以上\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND `join` < DATE_SUB(NOW(), INTERVAL 10 YEAR) AND LEFT(`join`, 4) != \'0000\'\r\nunion \r\nSELECT count(1) as count, \'未知\' as joinDate FROM `zt_user` WHERE deleted = \'0\' AND LEFT(`join`, 4) = \'0000\'',1,'','admin','2022-12-07 14:59:41','','2022-12-07 14:59:41',0),
+1 -1
View File
@@ -2206,7 +2206,7 @@ class block extends control
->andWhere('vision')->eq($this->config->vision)
->andWhere('type')->eq('project')
->andWhere('model')->ne('kanban')
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->projects)->fi()
->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->projects)->fi()
->orderBy('order_asc,id_desc')
->fetchAll('id');
+2 -2
View File
@@ -248,12 +248,13 @@ class buildModel extends model
$selectedBuilds = array();
if(strpos($params, 'noempty') === false) $sysBuilds = array('' => '');
if(strpos($params, 'notrunk') === false) $sysBuilds = $sysBuilds + array('trunk' => $this->lang->trunk);
$productIdList = is_array($products) ? array_keys($products) : $products;
if($buildIdList)
{
$buildIdList = str_replace('trunk', '0', $buildIdList);
$selectedBuilds = $this->dao->select('id, name')->from(TABLE_BUILD)
->where('id')->in($buildIdList)
->beginIF($products)->andWhere('product')->in(array_keys($products))->fi()
->beginIF($products)->andWhere('product')->in($productIdList)->fi()
->beginIF($objectType === 'execution' and $objectID)->andWhere('execution')->eq($objectID)->fi()
->beginIF($objectType === 'project' and $objectID)->andWhere('project')->eq($objectID)->fi()
->beginIF(strpos($params, 'hasdeleted') === false)->andWhere('deleted')->eq(0)->fi()
@@ -261,7 +262,6 @@ class buildModel extends model
}
$branchPairs = $this->dao->select('id,name')->from(TABLE_BRANCH)->fetchPairs();
$productIdList = is_array($products) ? array_keys($products) : $products;
$shadows = $this->dao->select('shadow')->from(TABLE_RELEASE)->where('product')->in($productIdList)->fetchPairs('shadow', 'shadow');
$branchs = strpos($params, 'separate') === false ? "0,$branch" : $branch;
$allBuilds = $this->dao->select('t1.id, t1.name, t1.branch, t1.execution, t1.date, t1.deleted, t2.status as objectStatus, t3.id as releaseID, t3.status as releaseStatus, t4.type as productType')->from(TABLE_BUILD)->alias('t1')
+2
View File
@@ -570,6 +570,8 @@ class chartModel extends model
*/
public static function isClickable($chart, $action)
{
global $config;
if($chart->builtin and in_array($chart->id, $config->screen->builtinChart)) return false;
return true;
}
+111 -1
View File
@@ -4,4 +4,114 @@ $config->dimension->changeDimensionLink['screen-browse'] = 'screen|browse|dimens
$config->dimension->changeDimensionLink['pivot-preview'] = 'pivot|preview|dimensionID=%s';
$config->dimension->changeDimensionLink['chart-preview'] = 'chart|preview|dimensionID=%s';
$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality');
$config->dimension->defaultDimension = array('macro', 'efficiency', 'quality');
/* Pivot second module list. */
$config->dimension->pivotModuleList = array();
$config->dimension->pivotModuleList['macro'] = array();
$config->dimension->pivotModuleList['macro']['staff'] = 'program';
$config->dimension->pivotModuleList['macro']['product'] = 'product';
$config->dimension->pivotModuleList['efficiency'] = array();
$config->dimension->pivotModuleList['efficiency']['project'] = 'project,progress,cost,timelimit';
$config->dimension->pivotModuleList['quality'] = array();
$config->dimension->pivotModuleList['quality']['test'] = 'bug';
/* Chart second module list. */
$config->dimension->chartModuleList = array();
$config->dimension->chartModuleList['macro'] = array();
$config->dimension->chartModuleList['macro']['staff'] = 'program,project,product,plan,execution,release,story,task,bug,doc,cost,personnel,effort,behavior';
$config->dimension->chartModuleList['macro']['product'] = 'story,release';
$config->dimension->chartModuleList['macro']['test'] = 'bug';
$config->dimension->chartModuleList['macro']['project'] = 'project,task,execution,cost,timelimit,story';
$config->dimension->chartModuleList['efficiency'] = array();
$config->dimension->chartModuleList['efficiency']['staff'] = 'project,execution,release,story,task,bug,cost';
$config->dimension->chartModuleList['efficiency']['project'] = 'progress,cost,timelimit';
$config->dimension->chartModuleList['quality'] = array();
$config->dimension->chartModuleList['quality']['staff'] = 'story,bug,testcase';
$config->dimension->chartModuleList['quality']['test'] = 'bug,testcase';
/* Pivot upgrade group. */
$config->dimension->pivotUpgrade = array();
$config->dimension->pivotUpgrade['macro'] = array();
$config->dimension->pivotUpgrade['macro']['staff'] = array();
$config->dimension->pivotUpgrade['macro']['staff']['program'] = array('chart' => '1041,1073,1074');
$config->dimension->pivotUpgrade['macro']['product'] = array();
$config->dimension->pivotUpgrade['macro']['product']['product'] = array('chart' => '1045,1075,1076');
$config->dimension->pivotUpgrade['efficiency'] = array();
$config->dimension->pivotUpgrade['efficiency']['project'] = array();
$config->dimension->pivotUpgrade['efficiency']['project']['project'] = array('chart' => '10118,10119');
$config->dimension->pivotUpgrade['efficiency']['project']['progress'] = array('chart' => '10116,10117');
$config->dimension->pivotUpgrade['efficiency']['project']['cost'] = array('pivot' => '1001');
$config->dimension->pivotUpgrade['efficiency']['project']['timelimit'] = array('pivot' => '1000');
$config->dimension->pivotUpgrade['quality'] = array();
$config->dimension->pivotUpgrade['quality']['test'] = array();
$config->dimension->pivotUpgrade['quality']['test']['bug'] = array('pivot' => '1002');
/* Chart upgrade group. */
$config->dimension->chartUpgrade['macro'] = array();
$config->dimension->chartUpgrade['macro']['staff'] = array();
$config->dimension->chartUpgrade['macro']['staff']['program'] = array('chart' => '1018,1033,1042,1043,1055,1083');
$config->dimension->chartUpgrade['macro']['staff']['project'] = array('chart' => '1019,1036,1060,1066');
$config->dimension->chartUpgrade['macro']['staff']['product'] = array('chart' => '1020,1035,1056');
$config->dimension->chartUpgrade['macro']['staff']['plan'] = array('chart' => '1021,1037,1059');
$config->dimension->chartUpgrade['macro']['staff']['execution'] = array('chart' => '1022,1038,1061,1067');
$config->dimension->chartUpgrade['macro']['staff']['release'] = array('chart' => '1023,1064,1068');
$config->dimension->chartUpgrade['macro']['staff']['story'] = array('chart' => '1024,1034,1057,1069');
$config->dimension->chartUpgrade['macro']['staff']['task'] = array('chart' => '1025,1040,1062,1071');
$config->dimension->chartUpgrade['macro']['staff']['bug'] = array('chart' => '1026,1039,1058,1070');
$config->dimension->chartUpgrade['macro']['staff']['doc'] = array('chart' => '1027,1063');
$config->dimension->chartUpgrade['macro']['staff']['cost'] = array('chart' => '1028,1029');
$config->dimension->chartUpgrade['macro']['staff']['personnel'] = array('chart' => '1049,1050,1051,1065,1105,1106,1107,1108,1109,1110');
$config->dimension->chartUpgrade['macro']['staff']['effort'] = array('chart' => '1072');
$config->dimension->chartUpgrade['macro']['staff']['behavior'] = array('chart' => '1030');
$config->dimension->chartUpgrade['macro']['product'] = array();
$config->dimension->chartUpgrade['macro']['product']['story'] = array('chart' => '1031,1046,1077,1088,1089,1091,1092,1099,1101,1102');
$config->dimension->chartUpgrade['macro']['product']['release'] = array('chart' => '1082');
$config->dimension->chartUpgrade['macro']['test'] = array();
$config->dimension->chartUpgrade['macro']['test']['bug'] = array('chart' => '1032,1047,1078,1090,1093,1103,1104');
$config->dimension->chartUpgrade['macro']['project'] = array();
$config->dimension->chartUpgrade['macro']['project']['project'] = array('chart' => '1044,1080');
$config->dimension->chartUpgrade['macro']['project']['task'] = array('chart' => '1079');
$config->dimension->chartUpgrade['macro']['project']['execution'] = array('chart' => '1081');
$config->dimension->chartUpgrade['macro']['project']['cost'] = array('chart' => '1085,1086,1097,1087,1098');
$config->dimension->chartUpgrade['macro']['project']['timelimit'] = array('chart' => '1094,1096');
$config->dimension->chartUpgrade['macro']['project']['story'] = array('chart' => '1091,1100');
$config->dimension->chartUpgrade['efficiency'] = array();
$config->dimension->chartUpgrade['efficiency']['staff'] = array();
$config->dimension->chartUpgrade['efficiency']['staff']['project'] = array('chart' => '10000,10001,10002,10101,10103,10105,10107');
$config->dimension->chartUpgrade['efficiency']['staff']['execution'] = array('chart' => '10007,10008,10009,10102,10104,10106,10107');
$config->dimension->chartUpgrade['efficiency']['staff']['release'] = array('chart' => '10005');
$config->dimension->chartUpgrade['efficiency']['staff']['story'] = array('chart' => '10003,10004,10109,10111');
$config->dimension->chartUpgrade['efficiency']['staff']['task'] = array('chart' => '10010,10110');
$config->dimension->chartUpgrade['efficiency']['staff']['bug'] = array('chart' => '1070');
$config->dimension->chartUpgrade['efficiency']['staff']['cost'] = array('chart' => '10011,10012,10013,10112,10113');
$config->dimension->chartUpgrade['efficiency']['project'] = array();
$config->dimension->chartUpgrade['efficiency']['project']['progress'] = array('chart' => '10114,10115');
$config->dimension->chartUpgrade['efficiency']['project']['cost'] = array();
$config->dimension->chartUpgrade['efficiency']['project']['timelimit'] = array('chart' => '10014,10015,10016,10017,10020,10021,10018,10019');
$config->dimension->chartUpgrade['quality'] = array();
$config->dimension->chartUpgrade['quality']['staff'] = array();
$config->dimension->chartUpgrade['quality']['staff']['story'] = array('chart' => '10201,10202');
$config->dimension->chartUpgrade['quality']['staff']['bug'] = array('chart' => '10204,10205,10206');
$config->dimension->chartUpgrade['quality']['staff']['testcase'] = array('chart' => '10203');
$config->dimension->chartUpgrade['quality']['test'] = array();
$config->dimension->chartUpgrade['quality']['test']['bug'] = array('chart' => '10209,10210,1014,10211,10219,10212,10218,10214,10220,10213,10216');
$config->dimension->chartUpgrade['quality']['test']['testcase'] = array('chart' => '10208,10215');
$config->dimension->secondModuleList = array();
$config->dimension->secondModuleList['macro'] = array('pivot' => $config->dimension->pivotModuleList['macro'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['macro'], 'chart' => $config->dimension->chartModuleList['macro'], 'chartUpgrade' => $config->dimension->chartUpgrade['macro']);
$config->dimension->secondModuleList['efficiency'] = array('pivot' => $config->dimension->pivotModuleList['efficiency'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['efficiency'], 'chart' => $config->dimension->chartModuleList['efficiency'], 'chartUpgrade' => $config->dimension->chartUpgrade['efficiency']);
$config->dimension->secondModuleList['quality'] = array('pivot' => $config->dimension->pivotModuleList['quality'], 'pivotUpgrade' => $config->dimension->pivotUpgrade['quality'], 'chart' => $config->dimension->chartModuleList['quality'], 'chartUpgrade' => $config->dimension->chartUpgrade['quality']);
+19
View File
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
$lang->dimension->moduleList['project'] = $lang->projectCommon;
$lang->dimension->moduleList['test'] = 'QA';
$lang->dimension->moduleList['staff'] = 'Company';
$lang->dimension->modules = array();
$lang->dimension->modules['program'] = $lang->program->common;
$lang->dimension->modules['project'] = $lang->projectCommon;
$lang->dimension->modules['product'] = $lang->productCommon;
$lang->dimension->modules['plan'] = 'Plan';
$lang->dimension->modules['execution'] = $lang->executionCommon;
$lang->dimension->modules['release'] = $lang->release->common;
$lang->dimension->modules['story'] = $lang->SRCommon;
$lang->dimension->modules['task'] = $lang->task->common;
$lang->dimension->modules['bug'] = $lang->bug->common;
$lang->dimension->modules['doc'] = $lang->doc->common;
$lang->dimension->modules['cost'] = 'Cost';
$lang->dimension->modules['personnel'] = 'Personnel';
$lang->dimension->modules['effort'] = 'Effort';
$lang->dimension->modules['timelimit'] = 'Time limit';
$lang->dimension->modules['progress'] = 'Progress';
$lang->dimension->modules['testcase'] = $lang->testcase->common;
$lang->dimension->modules['behavior'] = 'Behavior';
+19
View File
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
$lang->dimension->moduleList['project'] = $lang->projectCommon;
$lang->dimension->moduleList['test'] = 'QA';
$lang->dimension->moduleList['staff'] = 'Company';
$lang->dimension->modules = array();
$lang->dimension->modules['program'] = $lang->program->common;
$lang->dimension->modules['project'] = $lang->projectCommon;
$lang->dimension->modules['product'] = $lang->productCommon;
$lang->dimension->modules['plan'] = 'Plan';
$lang->dimension->modules['execution'] = $lang->executionCommon;
$lang->dimension->modules['release'] = $lang->release->common;
$lang->dimension->modules['story'] = $lang->SRCommon;
$lang->dimension->modules['task'] = $lang->task->common;
$lang->dimension->modules['bug'] = $lang->bug->common;
$lang->dimension->modules['doc'] = $lang->doc->common;
$lang->dimension->modules['cost'] = 'Cost';
$lang->dimension->modules['personnel'] = 'Personnel';
$lang->dimension->modules['effort'] = 'Effort';
$lang->dimension->modules['timelimit'] = 'Time limit';
$lang->dimension->modules['progress'] = 'Progress';
$lang->dimension->modules['testcase'] = $lang->testcase->common;
$lang->dimension->modules['behavior'] = 'Behavior';
+19
View File
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
$lang->dimension->moduleList['project'] = $lang->projectCommon;
$lang->dimension->moduleList['test'] = 'QA';
$lang->dimension->moduleList['staff'] = 'Company';
$lang->dimension->modules = array();
$lang->dimension->modules['program'] = $lang->program->common;
$lang->dimension->modules['project'] = $lang->projectCommon;
$lang->dimension->modules['product'] = $lang->productCommon;
$lang->dimension->modules['plan'] = 'Plan';
$lang->dimension->modules['execution'] = $lang->executionCommon;
$lang->dimension->modules['release'] = $lang->release->common;
$lang->dimension->modules['story'] = $lang->SRCommon;
$lang->dimension->modules['task'] = $lang->task->common;
$lang->dimension->modules['bug'] = $lang->bug->common;
$lang->dimension->modules['doc'] = $lang->doc->common;
$lang->dimension->modules['cost'] = 'Cost';
$lang->dimension->modules['personnel'] = 'Personnel';
$lang->dimension->modules['effort'] = 'Effort';
$lang->dimension->modules['timelimit'] = 'Time limit';
$lang->dimension->modules['progress'] = 'Progress';
$lang->dimension->modules['testcase'] = $lang->testcase->common;
$lang->dimension->modules['behavior'] = 'Behavior';
+19
View File
@@ -9,3 +9,22 @@ $lang->dimension->moduleList['product'] = $lang->productCommon;
$lang->dimension->moduleList['project'] = $lang->projectCommon;
$lang->dimension->moduleList['test'] = '测试';
$lang->dimension->moduleList['staff'] = '组织';
$lang->dimension->modules = array();
$lang->dimension->modules['program'] = $lang->program->common;
$lang->dimension->modules['project'] = $lang->projectCommon;
$lang->dimension->modules['product'] = $lang->productCommon;
$lang->dimension->modules['plan'] = '计划';
$lang->dimension->modules['execution'] = $lang->executionCommon;
$lang->dimension->modules['release'] = $lang->release->common;
$lang->dimension->modules['story'] = $lang->SRCommon;
$lang->dimension->modules['task'] = $lang->task->common;
$lang->dimension->modules['bug'] = $lang->bug->common;
$lang->dimension->modules['doc'] = $lang->doc->common;
$lang->dimension->modules['cost'] = '成本';
$lang->dimension->modules['personnel'] = '人员';
$lang->dimension->modules['effort'] = '工时';
$lang->dimension->modules['timelimit'] = '工期';
$lang->dimension->modules['progress'] = '进度';
$lang->dimension->modules['testcase'] = $lang->testcase->common;
$lang->dimension->modules['behavior'] = '行为';
+1 -1
View File
@@ -1,4 +1,4 @@
.drop-title {padding: 0 15px;}
.drop-title {padding: 0 15px!important;}
.split-row > .side-col,
.split-row > .main-col {padding: 0;}
.col-spliter {width: 20px; position: relative; z-index: 10; cursor: ew-resize;}
+2 -2
View File
@@ -85,12 +85,12 @@
#editorMenu {max-height: 200px; overflow-y: auto; overflow-x: hidden; margin-left: 4px; max-width: 100%;}
[lang^=zh] #editorMenu {max-width: calc(100% - 10px);}
#editorMenu > li {color: #838A9D; font-weight: 400; padding: 5px 12px; text-overflow: clip; white-space: nowrap;}
.doc-version-menu {padding: 10px 5px;}
.doc-version-menu {padding: 10px 0;}
#changeBtn > i {font-size: 24px;}
#docVersionMenu > .drop-body {max-height: 200px; overflow-y: auto;}
#docVersionMenu > .drop-body > li.li-item {display: flex; position: relative;}
#docVersionMenu > .drop-body > li.li-item > .checkbox-primary {display: none; position: absolute; top: 4px; left: 10px;}
#docVersionMenu > .drop-body > li.li-item > .checkbox-primary {display: none; position: absolute; top: 4px; left: 10px; width: 230px;}
#docVersionMenu > .drop-body > li > a {flex: 1; padding-left: 20px; height: 30px; display: flex; align-items: center;}
#docVersionMenu > .drop-bottom > button {margin-right: 10px; display: none;}
-1
View File
@@ -367,4 +367,3 @@ function submit(object)
$('#dataform').submit();
setTimeout(function(){$(object).attr('type', 'button').removeAttr('disabled')}, 2000);
}
+1 -1
View File
@@ -24,7 +24,7 @@
<span class="caret"></span>
</a>
<ul id="docVersionMenu" class='dropdown-menu doc-version-menu' style='width: 250px; overflow-y:auto'>
<li class="drop-title flex-between"><div><?php echo $lang->doc->allVersion?></div></li>
<li class="drop-title flex-between dropdown-header not-clear-menu"><div><?php echo $lang->doc->allVersion?></div></li>
<div class="drop-body menu-active-primary menu-hover-primary">
<?php for($itemVersion = $doc->version; $itemVersion > 0; $itemVersion--):?>
<li class="li-item <?php if($itemVersion == $version) echo 'active';?>"><div class="checkbox-primary"><input type="checkbox" <?php echo "data-id=".$doc->id." data-version=".$itemVersion;?> ></input><label for=""></label></div><a href='javascript:void(0)' data-url='<?php echo $this->createLink('doc', 'view', "docID=$doc->id&version=$itemVersion"); ?>'>#<?php echo $itemVersion;?></a></li>
+1 -1
View File
@@ -1401,11 +1401,11 @@ class myModel extends model
->andWhere('vision')->eq($this->config->vision)
->andWhere($condition)
->groupBy('objectType,objectID')
->orderBy($orderBy)
->page($pager)
->fetchPairs();
$actions = $this->dao->select('objectType,objectID,actor,action,`date`,extra')->from(TABLE_ACTION)
->where('id')->in($actionIdList)
->orderBy($orderBy)
->fetchAll();
$objectTypeList = array();
foreach($actions as $action) $objectTypeList[$action->objectType][] = $action->objectID;
+57 -2
View File
@@ -8223,13 +8223,68 @@ class upgradeModel extends model
$this->dao->insert(TABLE_DIMENSION)->data($dimension)->exec();
$dimensionID = $this->dao->lastInsertID();
$this->addDefaultModules4BI('chart', $dimensionID);
$this->addDefaultModules4BI('pivot', $dimensionID);
$chartModules = $this->addDefaultModules4BI('chart', $dimensionID);
$this->addSecondModule4BI($dimensionID, $dimensionName, 'chart', $chartModules);
$pivotModules = $this->addDefaultModules4BI('pivot', $dimensionID);
$this->addSecondModule4BI($dimensionID, $dimensionName, 'pivot', $pivotModules);
}
return !dao::isError();
}
/**
* Add second modules for bi, move buildin chart and pivot to second modules.
*
* @access public
* @return bool
*/
public function addSecondModule4BI($dimensionID, $dimensionName, $module, $modules)
{
$this->loadModel('dimension');
$listIndex = $module . 'Upgrade';
$secondModules = $this->config->dimension->secondModuleList[$dimensionName][$module];
$updateInfos = $this->config->dimension->secondModuleList[$dimensionName][$listIndex];
foreach($modules as $moduleName => $parentID)
{
$insertModules = isset($secondModules[$moduleName]) ? explode(',', $secondModules[$moduleName]) : array();
if(empty($insertModules)) continue;
$i = 1;
foreach($insertModules as $moduleCode)
{
$data = new stdclass();
$data->root = $dimensionID;
$data->name = $this->lang->dimension->modules[$moduleCode];
$data->parent = $parentID;
$data->grade = 2;
$data->order = 10 * $i;
$data->type = $module;
$i ++;
$this->dao->insert(TABLE_MODULE)->data($data)->exec();
$lastGroupID = $this->dao->lastInsertID();
$path = ',' . $parentID . ',' . $lastGroupID . ',';
$this->dao->update(TABLE_MODULE)->set("`path`")->eq($path)->where('id')->eq($lastGroupID)->exec();
$updateArr = isset($updateInfos[$moduleName][$moduleCode]) ? $updateInfos[$moduleName][$moduleCode] : array();
if(!empty($updateArr))
{
foreach($updateArr as $type => $idString)
{
$table = $type == 'chart' ? TABLE_CHART : TABLE_PIVOT;
$idList = explode(',', $idString);
$this->dao->update($table)->set('group')->eq($lastGroupID)->set('dimension')->eq($dimensionID)->where('id')->in($idList)->exec();
}
}
}
}
}
/**
* Add update2BI mark to zt_config.
*
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 150 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 136 KiB