This commit is contained in:
wangyidong
2023-04-10 13:20:45 +08:00
342 changed files with 5121 additions and 2172 deletions
+62 -62
View File
@@ -213,20 +213,20 @@ INSERT INTO `zt_block` (`id`, `account`, `module`, `type`, `title`, `source`, `b
(60, 'dev3', 'my', '', '待处理', '', 'assigntome', '{\"todoCount\":\"20\",\"taskCount\":\"20\",\"bugCount\":\"20\",\"riskCount\":\"20\",\"issueCount\":\"20\",\"storyCount\":\"20\",\"meetingCount\":\"20\"}', 7, 8, 0, 0),
(61, 'dev3', 'my', '', '项目人力投入', 'project', 'projectteam', '', 8, 8, 0, 0),
(62, 'dev3', 'my', '', '项目列表', 'project', 'project', '{\"orderBy\":\"id_desc\",\"count\":\"15\"}', 9, 8, 0, 0);
INSERT INTO `zt_bug` (`id`, `project`, `product`, `branch`, `module`, `execution`, `plan`, `story`, `storyVersion`, `task`, `toTask`, `toStory`, `title`, `keywords`, `severity`, `pri`, `type`, `os`, `browser`, `hardware`, `found`, `steps`, `status`, `subStatus`, `color`, `confirmed`, `activatedCount`, `activatedDate`, `mailto`, `openedBy`, `openedDate`, `openedBuild`, `assignedTo`, `assignedDate`, `deadline`, `resolvedBy`, `resolution`, `resolvedBuild`, `resolvedDate`, `closedBy`, `closedDate`, `duplicateBug`, `linkBug`, `case`, `caseVersion`, `result`, `repo`, `entry`, `lines`, `v1`, `v2`, `repoType`, `testtask`, `lastEditedBy`, `lastEditedDate`, `deleted`) VALUES
(1, 7, 1, 0, 8, 1, 0, 1, 1, 1, 0, 0, '首页页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入首页</p>\r\n<p>[结果]出现乱码&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:56:11', 'trunk', 'dev1', '2012-06-05 10:56:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(2, 7, 1, 0, 9, 1, 0, 2, 1, 4, 0, 0, '新闻中心页面问题', '', 3, 2, 'codeerror', '', '', '', '', '<p>[步骤]进入新闻中心</p>\r\n<p>[结果]页面出现乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:57:11', 'trunk', 'dev1', '2012-06-05 10:57:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(3, 7, 1, 0, 10, 1, 0, 3, 2, 6, 0, 0, '成果展示页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入成果展示&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester2', '2012-06-05 10:58:22', 'trunk', 'dev1', '2012-06-05 10:58:22', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(4, 7, 1, 0, 11, 1, 0, 4, 1, 9, 0, 0, '售后服务页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入售后服务</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester3', '2012-06-05 11:00:19', 'trunk', 'dev1', '2012-06-05 11:00:19', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0');
INSERT INTO `zt_build` (`id`, `project`, `product`, `branch`, `execution`, `name`, `scmPath`, `filePath`, `date`, `stories`, `bugs`, `builder`, `desc`, `deleted`) VALUES
(1, 7, 1, 0, 1, '第一期版本', '', '', '2012-06-05', '3,2,1,4', '', 'projectManager', '', '0');
INSERT INTO `zt_bug` (`id`, `project`, `product`, `branch`, `module`, `execution`, `plan`, `story`, `storyVersion`, `task`, `toTask`, `toStory`, `title`, `keywords`, `severity`, `pri`, `type`, `os`, `browser`, `hardware`, `found`, `steps`, `status`, `subStatus`, `color`, `confirmed`, `activatedCount`, `activatedDate`, `mailto`, `openedBy`, `openedDate`, `openedBuild`, `assignedTo`, `assignedDate`, `deadline`, `resolvedBy`, `resolution`, `resolvedBuild`, `resolvedDate`, `closedBy`, `closedDate`, `duplicateBug`, `linkBug`, `case`, `caseVersion`, `result`, `repo`, `entry`, `lines`, `v1`, `v2`, `repoType`, `testtask`, `lastEditedBy`, `lastEditedDate`, `deleted`, `feedbackBy`, `mr`, `notifyEmail`) VALUES
(1, 7, 1, 0, 8, 1, 0, 1, 1, 1, 0, 0, '首页页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入首页</p>\r\n<p>[结果]出现乱码&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:56:11', 'trunk', 'dev1', '2012-06-05 10:56:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(2, 7, 1, 0, 9, 1, 0, 2, 1, 4, 0, 0, '新闻中心页面问题', '', 3, 2, 'codeerror', '', '', '', '', '<p>[步骤]进入新闻中心</p>\r\n<p>[结果]页面出现乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:57:11', 'trunk', 'dev1', '2012-06-05 10:57:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(3, 7, 1, 0, 10, 1, 0, 3, 2, 6, 0, 0, '成果展示页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入成果展示&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester2', '2012-06-05 10:58:22', 'trunk', 'dev1', '2012-06-05 10:58:22', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(4, 7, 1, 0, 11, 1, 0, 4, 1, 9, 0, 0, '售后服务页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入售后服务</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester3', '2012-06-05 11:00:19', 'trunk', 'dev1', '2012-06-05 11:00:19', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, '');
INSERT INTO `zt_build` (`id`, `project`, `product`, `branch`, `execution`, `name`, `scmPath`, `filePath`, `date`, `stories`, `bugs`, `builder`, `desc`, `deleted`, `builds`, `createdBy`, `createdDate`) VALUES
(1, 7, 1, 0, 1, '第一期版本', '', '', '2012-06-05', '3,2,1,4', '', 'projectManager', '', '0', '', 'tester1', '2012-06-05 11:11:11');
INSERT INTO `zt_burn` (`execution`, `product`, `task`, `date`, `estimate`, `left`, `consumed`, `storyPoint`) VALUES
(1, 0, 0, '2012-06-05', 0, 0, 38, 0);
INSERT INTO `zt_case` (`id`, `project`, `product`, `branch`, `lib`, `module`, `path`, `story`, `storyVersion`, `title`, `precondition`, `keywords`, `pri`, `type`, `auto`, `frame`, `stage`, `howRun`, `scriptedBy`, `scriptedDate`, `scriptStatus`, `scriptLocation`, `status`, `subStatus`, `color`, `frequency`, `order`, `openedBy`, `openedDate`, `reviewedBy`, `reviewedDate`, `lastEditedBy`, `lastEditedDate`, `version`, `linkCase`, `fromBug`, `fromCaseID`, `fromCaseVersion`, `deleted`, `lastRunner`, `lastRunDate`, `lastRunResult`, `execution`) VALUES
(1, 7, 1, 0, 0, 0, 0, 4, 1, '售后服务的测试用例', '', '', 1, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester3', '2012-06-05 11:02:18', '', '0000-00-00', 'tester3', '2012-06-05 11:02:46', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:00', 'pass', 0),
(2, 7, 1, 0, 0, 0, 0, 1, 1, '首页的测试用例', '', '', 3, 'feature', 'no', '', '', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:28', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:05', 'pass', 0),
(3, 7, 1, 0, 0, 0, 0, 2, 1, '新闻中心的测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:54', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:07', 'pass', 0),
(4, 7, 1, 0, 0, 0, 0, 3, 2, '成果展示测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester2', '2012-06-05 11:04:48', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:08', 'pass', 0);
INSERT INTO `zt_case` (`id`, `project`, `product`, `branch`, `lib`, `module`, `path`, `story`, `storyVersion`, `title`, `precondition`, `keywords`, `pri`, `type`, `auto`, `frame`, `stage`, `howRun`, `scriptedBy`, `scriptedDate`, `scriptStatus`, `scriptLocation`, `status`, `subStatus`, `color`, `frequency`, `order`, `openedBy`, `openedDate`, `reviewedBy`, `reviewedDate`, `lastEditedBy`, `lastEditedDate`, `version`, `linkCase`, `fromBug`, `fromCaseID`, `fromCaseVersion`, `deleted`, `lastRunner`, `lastRunDate`, `lastRunResult`, `execution`, `script`) VALUES
(1, 7, 1, 0, 0, 0, 0, 4, 1, '售后服务的测试用例', '', '', 1, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester3', '2012-06-05 11:02:18', '', '0000-00-00', 'tester3', '2012-06-05 11:02:46', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:00', 'pass', 0, ''),
(2, 7, 1, 0, 0, 0, 0, 1, 1, '首页的测试用例', '', '', 3, 'feature', 'no', '', '', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:28', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:05', 'pass', 0, ''),
(3, 7, 1, 0, 0, 0, 0, 2, 1, '新闻中心的测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:54', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:07', 'pass', 0, ''),
(4, 7, 1, 0, 0, 0, 0, 3, 2, '成果展示测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester2', '2012-06-05 11:04:48', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:08', 'pass', 0, '');
INSERT INTO `zt_casestep` (`id`, `parent`, `case`, `version`, `type`, `desc`, `expect`) VALUES
(1, 0, 1, 1, 'step', '进入首页', '正常显示'),
(2, 0, 2, 1, 'step', '进入首页', '正常显示'),
@@ -241,12 +241,12 @@ INSERT INTO `zt_dept` (`id`, `name`, `parent`, `path`, `grade`, `order`, `positi
(6, '项目', 1, ',1,6,', 2, 0, '', '', ''),
(7, '编程', 2, ',2,7,', 2, 0, '', '', ''),
(8, '美工', 2, ',2,8,', 2, 0, '', '', '');
INSERT INTO `zt_doclib` (`id`, `type`, `product`, `project`, `execution`, `name`, `acl`, `groups`, `users`, `main`, `collector`, `order`, `deleted`) VALUES
(1, 'product', 1, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0'),
(2, 'product', 2, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0'),
(3, 'execution', 0, 0, 1, '项目库', 'default', '', '', '1', '', 0, '0'),
(4, 'execution', 0, 0, 2, '项目库', 'default', '', '', '1', '', 0, '0'),
(5, 'project', 0, 7, 0, '项目主库', 'default', '', '', '1', '', 0, '0');
INSERT INTO `zt_doclib` (`id`, `type`, `product`, `project`, `execution`, `name`, `acl`, `groups`, `users`, `main`, `collector`, `order`, `deleted`, `addedBy`, `addedDate`) VALUES
(1, 'product', 1, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(2, 'product', 2, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(3, 'execution', 0, 0, 1, '项目库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(4, 'execution', 0, 0, 2, '项目库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(5, 'project', 0, 7, 0, '项目主库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32');
INSERT INTO `zt_history` (`id`, `action`, `field`, `old`, `new`, `diff`) VALUES
(1, 14, 'version', '1', '2', ''),
(2, 14, 'spec', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '001- <del>作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。<br /></del>\n001+ <ins>作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。<br /></ins>'),
@@ -380,8 +380,8 @@ INSERT INTO `zt_module` (`id`, `root`, `branch`, `name`, `parent`, `path`, `grad
INSERT INTO `zt_product` (`id`, `program`, `name`, `code`, `bind`, `line`, `type`, `status`, `subStatus`, `desc`, `PO`, `QD`, `RD`, `acl`, `whitelist`, `createdBy`, `createdDate`, `createdVersion`, `order`, `deleted`) VALUES
(1, 6, '公司企业网站建设', 'companyWebsite', '0', 0, 'normal', 'normal', '', '建立公司企业网站,可以更好对外展示。<br />', 'productManager', 'testManager', 'productManager', 'open', '', 'productManager', '2012-06-05 09:57:07', '', 5, '0'),
(2, 6, '企业内部工时管理系统', 'workhourManage', '0', 0, 'normal', 'normal', '', '', 'productManager', 'testManager', 'productManager', 'open', '', 'productManager', '2012-06-05 11:15:20', '5.2.1', 10, '0');
INSERT INTO `zt_productplan` (`id`, `product`, `branch`, `parent`, `title`, `desc`, `begin`, `end`, `order`, `deleted`) VALUES
(1, 1, 0, 0, '1.0版本', '开发出企业网站1.0版本。<br />', '2020-06-05', '2021-06-04', '', '0');
INSERT INTO `zt_productplan` (`id`, `product`, `branch`, `parent`, `title`, `desc`, `begin`, `end`, `order`, `deleted`, `createdBy`, `createdDate`) VALUES
(1, 1, 0, 0, '1.0版本', '开发出企业网站1.0版本。<br />', '2020-06-05', '2021-06-04', '', '0', 'tester1', '2021-04-01 11:08:09');
INSERT INTO `zt_project` (`id`, `project`, `model`, `type`, `lifetime`, `budget`, `budgetUnit`, `attribute`, `percent`, `milestone`, `output`, `auth`, `parent`, `path`, `grade`, `name`, `code`, `begin`, `end`, `realBegan`, `realEnd`, `days`, `status`, `subStatus`, `pri`, `desc`, `version`, `parentVersion`, `planDuration`, `realDuration`, `openedBy`, `openedDate`, `openedVersion`, `lastEditedBy`, `lastEditedDate`, `closedBy`, `closedDate`, `canceledBy`, `canceledDate`, `PO`, `PM`, `QD`, `RD`, `team`, `acl`, `whitelist`, `order`, `deleted`) VALUES
(1, 7, '', 'sprint', 'long', '0', 'CNY', '', 0, '0', '', '', 7, ',7,1,', 1, '企业网站第一期', 'coWeb1', '2020-06-05', '2021-12-04', '0000-00-00', '0000-00-00', 391, 'doing', '', '1', '开发企业网站的基本雏形。<br />', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 'productManager', 'projectManager', 'testManager', 'productManager', '公司开发团队', 'open', '', 5, '0'),
(2, 7, '', 'sprint', 'long', '0', 'CNY', '', 0, '0', '', '', 7, ',7,2,', 1, '企业网站第二期', 'coWebsite2', '2021-06-05', '2022-06-04', '0000-00-00', '0000-00-00', 260, 'wait', '', '1', '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 'productManager', 'projectManager', 'testManager', 'productManager', '公司开发团队', 'open', '', 10, '0'),
@@ -401,15 +401,15 @@ INSERT INTO `zt_projectproduct` (`project`, `product`, `branch`, `plan`) VALUES
(2, 1, 0, 0),
(7, 1, 0, 0),
(7, 2, 0, 0);
INSERT INTO `zt_projectstory` (`project`, `product`, `story`, `version`, `order`) VALUES
(1, 1, 1, 1, 0),
(1, 1, 2, 1, 0),
(1, 1, 3, 2, 0),
(1, 1, 4, 1, 0),
(7, 1, 4, 1, 0),
(7, 1, 3, 2, 0),
(7, 1, 2, 1, 0),
(7, 1, 1, 1, 0);
INSERT INTO `zt_projectstory` (`project`, `product`, `story`, `version`, `order`, `branch`) VALUES
(1, 1, 1, 1, 0, 0),
(1, 1, 2, 1, 0, 0),
(1, 1, 3, 2, 0, 0),
(1, 1, 4, 1, 0, 0),
(7, 1, 4, 1, 0, 0),
(7, 1, 3, 2, 0, 0),
(7, 1, 2, 1, 0, 0),
(7, 1, 1, 1, 0, 0);
INSERT INTO `zt_searchdict` (`key`, `value`) VALUES
(39318, '首'),
(39029, '页'),
@@ -584,32 +584,32 @@ INSERT INTO `zt_searchindex` (`id`, `objectType`, `objectID`, `title`, `content`
(39, 'task', 15, ' 25104 26524 23637 31034 30340 24320 21457', ' 25104 26524 23637 31034 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
(40, 'task', 16, ' 21806 21518 26381 21153 30340 35774 35745', ' 21806 21518 26381 21153 30340 35774 35745', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
(41, 'task', 17, ' 21806 21518 26381 21153 30340 24320 21457', ' 21806 21518 26381 21153 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15');
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`) VALUES
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', ''),
(3, 1, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', ''),
(3, 2, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', ''),
(4, 1, '售后服务的设计和开发', '作为一名本公司的用户,我希望可以在售后服务看到该公司网站的售后服务,这样可以方便我联系该公司来解决我的问题。&nbsp;<br />', ''),
(5, 1, '诚聘英才的设计和开发', '作为一名求职者,我希望可以在诚聘英才里看到该公司的招聘信息,这样可以方便我应聘该公司。&nbsp;<br />', ''),
(6, 1, '合作洽谈的设计和开发', '作为一名合作商,我希望可以在合作洽谈里看到该公司对外的合作内容,这样可以方便我和该公司进行合作洽谈。&nbsp;<br />', ''),
(7, 1, '关于我们的设计和开发', '我希望可以在关于我们里看到该公司的基本信息,这样可以方便我了解该公司。<br />', '');
INSERT INTO `zt_task` (`id`, `project`, `parent`, `execution`, `module`, `design`, `story`, `storyVersion`, `designVersion`, `fromBug`, `name`, `type`, `pri`, `estimate`, `consumed`, `left`, `deadline`, `status`, `subStatus`, `color`, `mailto`, `desc`, `version`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `estStarted`, `realStarted`, `finishedBy`, `finishedDate`, `finishedList`, `canceledBy`, `canceledDate`, `closedBy`, `closedDate`, `realDuration`, `planDuration`, `closedReason`, `lastEditedBy`, `lastEditedDate`, `activatedDate`, `deleted`) VALUES
(17, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的开发', 'devel', 1, 5, 5, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-06 15:30:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '0'),
(16, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的设计', 'design', 1, 5, 6, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-05 17:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '0'),
(15, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'doing', '', '', NULL, '成果展示的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:20:09', '0000-00-00', '0'),
(14, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的设计', 'design', 1, 6, 0, 6, '0000-00-00', 'doing', '', '', NULL, '成果展示的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:19:54', '0000-00-00', '0'),
(13, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0'),
(12, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的设计', 'design', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0'),
(10, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的设计', 'design', 1, 7, 8, 0, '0000-00-00', 'done', '', '', NULL, '首页页面的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '2021-04-28 13:17:54', 'dev1', '2021-04-01 16:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '0'),
(11, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的开发', 'devel', 1, 8, 0, 8, '0000-00-00', 'doing', '', '', NULL, '首页页面的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 16:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:18:45', '0000-00-00', '0');
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`, `linkRequirements`, `twins`) VALUES
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0', '', ''),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', '');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`, `files`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />', ''),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', '', ''),
(3, 1, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '', ''),
(3, 2, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '', ''),
(4, 1, '售后服务的设计和开发', '作为一名本公司的用户,我希望可以在售后服务看到该公司网站的售后服务,这样可以方便我联系该公司来解决我的问题。&nbsp;<br />', '', ''),
(5, 1, '诚聘英才的设计和开发', '作为一名求职者,我希望可以在诚聘英才里看到该公司的招聘信息,这样可以方便我应聘该公司。&nbsp;<br />', '', ''),
(6, 1, '合作洽谈的设计和开发', '作为一名合作商,我希望可以在合作洽谈里看到该公司对外的合作内容,这样可以方便我和该公司进行合作洽谈。&nbsp;<br />', '', ''),
(7, 1, '关于我们的设计和开发', '我希望可以在关于我们里看到该公司的基本信息,这样可以方便我了解该公司。<br />', '', '');
INSERT INTO `zt_task` (`id`, `project`, `parent`, `execution`, `module`, `design`, `story`, `storyVersion`, `designVersion`, `fromBug`, `name`, `type`, `pri`, `estimate`, `consumed`, `left`, `deadline`, `status`, `subStatus`, `color`, `mailto`, `desc`, `version`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `estStarted`, `realStarted`, `finishedBy`, `finishedDate`, `finishedList`, `canceledBy`, `canceledDate`, `closedBy`, `closedDate`, `realDuration`, `planDuration`, `closedReason`, `lastEditedBy`, `lastEditedDate`, `activatedDate`, `deleted`, `feedback`, `mode`, `order`, `repo`, `mr`, `entry`, `lines`, `v1`, `v2`) VALUES
(17, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的开发', 'devel', 1, 5, 5, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-06 15:30:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(16, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的设计', 'design', 1, 5, 6, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-05 17:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(15, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'doing', '', '', NULL, '成果展示的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:20:09', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(14, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的设计', 'design', 1, 6, 0, 6, '0000-00-00', 'doing', '', '', NULL, '成果展示的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:19:54', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(13, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(12, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的设计', 'design', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(10, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的设计', 'design', 1, 7, 8, 0, '0000-00-00', 'done', '', '', NULL, '首页页面的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '2021-04-28 13:17:54', 'dev1', '2021-04-01 16:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(11, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的开发', 'devel', 1, 8, 0, 8, '0000-00-00', 'doing', '', '', NULL, '首页页面的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 16:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:18:45', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', '');
INSERT INTO `zt_taskestimate` (`id`, `task`, `date`, `left`, `consumed`, `account`, `work`) VALUES
(1, 10, '2021-04-01', 0, 8, 'dev1', ''),
(2, 11, '2021-04-01', 8, 0, 'dev1', ''),
@@ -647,18 +647,18 @@ INSERT INTO `zt_team` (`id`, `root`, `type`, `account`, `role`, `limited`, `join
(17, 2, 'execution', 'testManager', '测试负责人', 'no', '2021-04-28', 260, 7.0, '0.00', '0.00', '0.00', 0),
(18, 7, 'project', 'productManager', '', 'no', '2021-04-28', 0, 0.0, '0.00', '0.00', '0.00', 0),
(19, 7, 'project', 'projectManager', '', 'no', '2021-04-28', 0, 0.0, '0.00', '0.00', '0.00', 0);
INSERT INTO `zt_testresult` (`id`, `run`, `case`, `version`, `job`, `compile`, `caseResult`, `stepResults`, `lastRunner`, `date`, `duration`, `xml`) VALUES
(1, 4, 1, 1, 0, 0, 'pass', 'a:1:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:00', 0, ''),
(2, 3, 2, 1, 0, 0, 'pass', 'a:1:{i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:05', 0, ''),
(3, 2, 3, 1, 0, 0, 'pass', 'a:1:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:07', 0, ''),
(4, 1, 4, 1, 0, 0, 'pass', 'a:1:{i:4;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:08', 0, '');
INSERT INTO `zt_testresult` (`id`, `run`, `case`, `version`, `job`, `compile`, `caseResult`, `stepResults`, `lastRunner`, `date`, `duration`, `xml`, `ZTFResult`, `deploy`) VALUES
(1, 4, 1, 1, 0, 0, 'pass', 'a:1:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:00', 0, '', '', 0),
(2, 3, 2, 1, 0, 0, 'pass', 'a:1:{i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:05', 0, '', '', 0),
(3, 2, 3, 1, 0, 0, 'pass', 'a:1:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:07', 0, '', '', 0),
(4, 1, 4, 1, 0, 0, 'pass', 'a:1:{i:4;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:08', 0, '', '', 0);
INSERT INTO `zt_testrun` (`id`, `task`, `case`, `version`, `assignedTo`, `lastRunner`, `lastRunDate`, `lastRunResult`, `status`) VALUES
(1, 1, 4, 1, '', 'testManager', '2012-06-05 11:11:08', 'pass', 'done'),
(2, 1, 3, 1, '', 'testManager', '2012-06-05 11:11:07', 'pass', 'done'),
(3, 1, 2, 1, '', 'testManager', '2012-06-05 11:11:05', 'pass', 'done'),
(4, 1, 1, 1, '', 'testManager', '2012-06-05 11:11:00', 'pass', 'done');
INSERT INTO `zt_testtask` (`id`, `project`, `name`, `product`, `execution`, `build`, `owner`, `pri`, `begin`, `end`, `mailto`, `desc`, `report`, `status`, `auto`, `subStatus`, `deleted`) VALUES
(1, 0, '企业网站第一期测试任务', 1, 1, '1', 'testManager', 0, '2020-06-05', '2021-06-21', '', '', '', 'wait', 'no', '', '0');
INSERT INTO `zt_testtask` (`id`, `project`, `name`, `product`, `execution`, `build`, `owner`, `pri`, `begin`, `end`, `mailto`, `desc`, `report`, `status`, `auto`, `subStatus`, `deleted`, `testreport`, `createdBy`, `createdDate`) VALUES
(1, 0, '企业网站第一期测试任务', 1, 1, '1', 'testManager', 0, '2020-06-05', '2021-06-21', '', '', '', 'wait', 'no', '', '0', '0', 'testManager', '2021-01-06 10:10:20');
REPLACE INTO `zt_user` (`company`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `mobile`, `phone`, `weixin`, `dingding`, `slack`, `whatsapp`, `address`, `zipcode`, `nature`, `analysis`, `strategy`, `join`, `visits`, `ip`, `last`, `fails`, `locked`, `ranzhi`, `score`, `scoreLevel`, `deleted`) VALUES
(0, 5, 'productManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'po', '产品经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338866083, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(0, 6, 'projectManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'pm', '项目经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 4, '10.0.2.2', 1619580798, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
+62 -62
View File
@@ -213,20 +213,20 @@ INSERT INTO `zt_block` (`id`, `account`, `module`, `type`, `title`, `source`, `b
(60, 'dev3', 'my', '', '待处理', '', 'assigntome', '{\"todoCount\":\"20\",\"taskCount\":\"20\",\"bugCount\":\"20\",\"riskCount\":\"20\",\"issueCount\":\"20\",\"storyCount\":\"20\",\"meetingCount\":\"20\"}', 7, 8, 0, 0),
(61, 'dev3', 'my', '', '项目人力投入', 'project', 'projectteam', '', 8, 8, 0, 0),
(62, 'dev3', 'my', '', '项目列表', 'project', 'project', '{\"orderBy\":\"id_desc\",\"count\":\"15\"}', 9, 8, 0, 0);
INSERT INTO `zt_bug` (`id`, `project`, `product`, `branch`, `module`, `execution`, `plan`, `story`, `storyVersion`, `task`, `toTask`, `toStory`, `title`, `keywords`, `severity`, `pri`, `type`, `os`, `browser`, `hardware`, `found`, `steps`, `status`, `subStatus`, `color`, `confirmed`, `activatedCount`, `activatedDate`, `mailto`, `openedBy`, `openedDate`, `openedBuild`, `assignedTo`, `assignedDate`, `deadline`, `resolvedBy`, `resolution`, `resolvedBuild`, `resolvedDate`, `closedBy`, `closedDate`, `duplicateBug`, `linkBug`, `case`, `caseVersion`, `result`, `repo`, `entry`, `lines`, `v1`, `v2`, `repoType`, `testtask`, `lastEditedBy`, `lastEditedDate`, `deleted`) VALUES
(1, 7, 1, 0, 8, 1, 0, 1, 1, 1, 0, 0, '首页页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入首页</p>\r\n<p>[结果]出现乱码&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:56:11', 'trunk', 'dev1', '2012-06-05 10:56:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(2, 7, 1, 0, 9, 1, 0, 2, 1, 4, 0, 0, '新闻中心页面问题', '', 3, 2, 'codeerror', '', '', '', '', '<p>[步骤]进入新闻中心</p>\r\n<p>[结果]页面出现乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:57:11', 'trunk', 'dev1', '2012-06-05 10:57:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(3, 7, 1, 0, 10, 1, 0, 3, 2, 6, 0, 0, '成果展示页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入成果展示&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester2', '2012-06-05 10:58:22', 'trunk', 'dev1', '2012-06-05 10:58:22', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0'),
(4, 7, 1, 0, 11, 1, 0, 4, 1, 9, 0, 0, '售后服务页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入售后服务</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester3', '2012-06-05 11:00:19', 'trunk', 'dev1', '2012-06-05 11:00:19', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0');
INSERT INTO `zt_build` (`id`, `project`, `product`, `branch`, `execution`, `name`, `scmPath`, `filePath`, `date`, `stories`, `bugs`, `builder`, `desc`, `deleted`) VALUES
(1, 7, 1, 0, 1, '第一期版本', '', '', '2012-06-05', '3,2,1,4', '', 'projectManager', '', '0');
INSERT INTO `zt_bug` (`id`, `project`, `product`, `branch`, `module`, `execution`, `plan`, `story`, `storyVersion`, `task`, `toTask`, `toStory`, `title`, `keywords`, `severity`, `pri`, `type`, `os`, `browser`, `hardware`, `found`, `steps`, `status`, `subStatus`, `color`, `confirmed`, `activatedCount`, `activatedDate`, `mailto`, `openedBy`, `openedDate`, `openedBuild`, `assignedTo`, `assignedDate`, `deadline`, `resolvedBy`, `resolution`, `resolvedBuild`, `resolvedDate`, `closedBy`, `closedDate`, `duplicateBug`, `linkBug`, `case`, `caseVersion`, `result`, `repo`, `entry`, `lines`, `v1`, `v2`, `repoType`, `testtask`, `lastEditedBy`, `lastEditedDate`, `deleted`, `feedbackBy`, `mr`, `notifyEmail`) VALUES
(1, 7, 1, 0, 8, 1, 0, 1, 1, 1, 0, 0, '首页页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入首页</p>\r\n<p>[结果]出现乱码&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:56:11', 'trunk', 'dev1', '2012-06-05 10:56:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(2, 7, 1, 0, 9, 1, 0, 2, 1, 4, 0, 0, '新闻中心页面问题', '', 3, 2, 'codeerror', '', '', '', '', '<p>[步骤]进入新闻中心</p>\r\n<p>[结果]页面出现乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester1', '2012-06-05 10:57:11', 'trunk', 'dev1', '2012-06-05 10:57:11', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(3, 7, 1, 0, 10, 1, 0, 3, 2, 6, 0, 0, '成果展示页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入成果展示&nbsp;&nbsp;&nbsp;&nbsp;</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester2', '2012-06-05 10:58:22', 'trunk', 'dev1', '2012-06-05 10:58:22', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, ''),
(4, 7, 1, 0, 11, 1, 0, 4, 1, 9, 0, 0, '售后服务页面问题', '', 3, 1, 'codeerror', '', '', '', '', '<p>[步骤]进入售后服务</p>\r\n<p>[结果]乱码</p>\r\n<p>[期望]正常显示</p>', 'active', '', '', 0, 0, '0000-00-00 00:00:00', '', 'tester3', '2012-06-05 11:00:19', 'trunk', 'dev1', '2012-06-05 11:00:19', '0000-00-00', '', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, '', 0, 1, 0, 0, '', '', '', '', '', 0, 'admin', '2021-04-28 11:09:08', '0', '', 0, '');
INSERT INTO `zt_build` (`id`, `project`, `product`, `branch`, `execution`, `name`, `scmPath`, `filePath`, `date`, `stories`, `bugs`, `builder`, `desc`, `deleted`, `builds`, `createdBy`, `createdDate`) VALUES
(1, 7, 1, 0, 1, '第一期版本', '', '', '2012-06-05', '3,2,1,4', '', 'projectManager', '', '0', '', 'tester1', '2012-06-05 11:11:11');
INSERT INTO `zt_burn` (`execution`, `product`, `task`, `date`, `estimate`, `left`, `consumed`, `storyPoint`) VALUES
(1, 0, 0, '2012-06-05', 0, 0, 38, 0);
INSERT INTO `zt_case` (`id`, `project`, `product`, `branch`, `lib`, `module`, `path`, `story`, `storyVersion`, `title`, `precondition`, `keywords`, `pri`, `type`, `auto`, `frame`, `stage`, `howRun`, `scriptedBy`, `scriptedDate`, `scriptStatus`, `scriptLocation`, `status`, `subStatus`, `color`, `frequency`, `order`, `openedBy`, `openedDate`, `reviewedBy`, `reviewedDate`, `lastEditedBy`, `lastEditedDate`, `version`, `linkCase`, `fromBug`, `fromCaseID`, `fromCaseVersion`, `deleted`, `lastRunner`, `lastRunDate`, `lastRunResult`, `execution`) VALUES
(1, 7, 1, 0, 0, 0, 0, 4, 1, '售后服务的测试用例', '', '', 1, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester3', '2012-06-05 11:02:18', '', '0000-00-00', 'tester3', '2012-06-05 11:02:46', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:00', 'pass', 0),
(2, 7, 1, 0, 0, 0, 0, 1, 1, '首页的测试用例', '', '', 3, 'feature', 'no', '', '', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:28', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:05', 'pass', 0),
(3, 7, 1, 0, 0, 0, 0, 2, 1, '新闻中心的测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:54', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:07', 'pass', 0),
(4, 7, 1, 0, 0, 0, 0, 3, 2, '成果展示测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester2', '2012-06-05 11:04:48', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:08', 'pass', 0);
INSERT INTO `zt_case` (`id`, `project`, `product`, `branch`, `lib`, `module`, `path`, `story`, `storyVersion`, `title`, `precondition`, `keywords`, `pri`, `type`, `auto`, `frame`, `stage`, `howRun`, `scriptedBy`, `scriptedDate`, `scriptStatus`, `scriptLocation`, `status`, `subStatus`, `color`, `frequency`, `order`, `openedBy`, `openedDate`, `reviewedBy`, `reviewedDate`, `lastEditedBy`, `lastEditedDate`, `version`, `linkCase`, `fromBug`, `fromCaseID`, `fromCaseVersion`, `deleted`, `lastRunner`, `lastRunDate`, `lastRunResult`, `execution`, `script`) VALUES
(1, 7, 1, 0, 0, 0, 0, 4, 1, '售后服务的测试用例', '', '', 1, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester3', '2012-06-05 11:02:18', '', '0000-00-00', 'tester3', '2012-06-05 11:02:46', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:00', 'pass', 0, ''),
(2, 7, 1, 0, 0, 0, 0, 1, 1, '首页的测试用例', '', '', 3, 'feature', 'no', '', '', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:28', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:05', 'pass', 0, ''),
(3, 7, 1, 0, 0, 0, 0, 2, 1, '新闻中心的测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester1', '2012-06-05 11:03:54', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:07', 'pass', 0, ''),
(4, 7, 1, 0, 0, 0, 0, 3, 2, '成果展示测试用例', '', '', 3, 'feature', 'no', '', 'feature', '', '', '0000-00-00', '', '', 'normal', '', '', '1', 0, 'tester2', '2012-06-05 11:04:48', '', '0000-00-00', '', '0000-00-00 00:00:00', 1, '', 0, 0, 1, '0', 'testManager', '2012-06-05 11:11:08', 'pass', 0, '');
INSERT INTO `zt_casestep` (`id`, `parent`, `case`, `version`, `type`, `desc`, `expect`) VALUES
(1, 0, 1, 1, 'step', '进入首页', '正常显示'),
(2, 0, 2, 1, 'step', '进入首页', '正常显示'),
@@ -241,12 +241,12 @@ INSERT INTO `zt_dept` (`id`, `name`, `parent`, `path`, `grade`, `order`, `positi
(6, '项目', 1, ',1,6,', 2, 0, '', '', ''),
(7, '编程', 2, ',2,7,', 2, 0, '', '', ''),
(8, '美工', 2, ',2,8,', 2, 0, '', '', '');
INSERT INTO `zt_doclib` (`id`, `type`, `product`, `project`, `execution`, `name`, `acl`, `groups`, `users`, `main`, `collector`, `order`, `deleted`) VALUES
(1, 'product', 1, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0'),
(2, 'product', 2, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0'),
(3, 'execution', 0, 0, 1, '项目库', 'default', '', '', '1', '', 0, '0'),
(4, 'execution', 0, 0, 2, '项目库', 'default', '', '', '1', '', 0, '0'),
(5, 'project', 0, 7, 0, '项目主库', 'default', '', '', '1', '', 0, '0');
INSERT INTO `zt_doclib` (`id`, `type`, `product`, `project`, `execution`, `name`, `acl`, `groups`, `users`, `main`, `collector`, `order`, `deleted`, `addedBy`, `addedDate`) VALUES
(1, 'product', 1, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(2, 'product', 2, 0, 0, '产品库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(3, 'execution', 0, 0, 1, '项目库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(4, 'execution', 0, 0, 2, '项目库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32'),
(5, 'project', 0, 7, 0, '项目主库', 'default', '', '', '1', '', 0, '0', 'tester1', '2012-06-05 10:11:32');
INSERT INTO `zt_history` (`id`, `action`, `field`, `old`, `new`, `diff`) VALUES
(1, 14, 'version', '1', '2', ''),
(2, 14, 'spec', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '001- <del>作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。<br /></del>\n001+ <ins>作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。<br /></ins>'),
@@ -380,8 +380,8 @@ INSERT INTO `zt_module` (`id`, `root`, `branch`, `name`, `parent`, `path`, `grad
INSERT INTO `zt_product` (`id`, `program`, `name`, `code`, `bind`, `line`, `type`, `status`, `subStatus`, `desc`, `PO`, `QD`, `RD`, `acl`, `whitelist`, `createdBy`, `createdDate`, `createdVersion`, `order`, `deleted`) VALUES
(1, 6, '公司企业网站建设', 'companyWebsite', '0', 0, 'normal', 'normal', '', '建立公司企业网站,可以更好对外展示。<br />', 'productManager', 'testManager', 'productManager', 'open', '', 'productManager', '2012-06-05 09:57:07', '', 5, '0'),
(2, 6, '企业内部工时管理系统', 'workhourManage', '0', 0, 'normal', 'normal', '', '', 'productManager', 'testManager', 'productManager', 'open', '', 'productManager', '2012-06-05 11:15:20', '5.2.1', 10, '0');
INSERT INTO `zt_productplan` (`id`, `product`, `branch`, `parent`, `title`, `desc`, `begin`, `end`, `order`, `deleted`) VALUES
(1, 1, 0, 0, '1.0版本', '开发出企业网站1.0版本。<br />', '2020-06-05', '2021-06-04', '', '0');
INSERT INTO `zt_productplan` (`id`, `product`, `branch`, `parent`, `title`, `desc`, `begin`, `end`, `order`, `deleted`, `createdBy`, `createdDate`) VALUES
(1, 1, 0, 0, '1.0版本', '开发出企业网站1.0版本。<br />', '2020-06-05', '2021-06-04', '', '0', 'tester1', '2021-04-01 11:08:09');
INSERT INTO `zt_project` (`id`, `project`, `model`, `type`, `lifetime`, `budget`, `budgetUnit`, `attribute`, `percent`, `milestone`, `output`, `auth`, `parent`, `path`, `grade`, `name`, `code`, `begin`, `end`, `realBegan`, `realEnd`, `days`, `status`, `subStatus`, `pri`, `desc`, `version`, `parentVersion`, `planDuration`, `realDuration`, `openedBy`, `openedDate`, `openedVersion`, `lastEditedBy`, `lastEditedDate`, `closedBy`, `closedDate`, `canceledBy`, `canceledDate`, `PO`, `PM`, `QD`, `RD`, `team`, `acl`, `whitelist`, `order`, `deleted`) VALUES
(1, 7, '', 'sprint', 'sprint', '0', 'CNY', '', 0, '0', '', '', 7, ',7,1,', 1, '企业网站第一期', 'coWeb1', '2020-06-05', '2021-12-04', '0000-00-00', '0000-00-00', 391, 'doing', '', '1', '开发企业网站的基本雏形。<br />', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 'productManager', 'projectManager', 'testManager', 'productManager', '公司开发团队', 'open', '', 5, '0'),
(2, 7, '', 'sprint', 'sprint', '0', 'CNY', '', 0, '0', '', '', 7, ',7,2,', 1, '企业网站第二期', 'coWebsite2', '2021-06-05', '2022-06-04', '0000-00-00', '0000-00-00', 260, 'wait', '', '1', '', 0, 0, 0, 0, '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 'productManager', 'projectManager', 'testManager', 'productManager', '公司开发团队', 'open', '', 10, '0'),
@@ -401,15 +401,15 @@ INSERT INTO `zt_projectproduct` (`project`, `product`, `branch`, `plan`) VALUES
(2, 1, 0, 0),
(7, 1, 0, 0),
(7, 2, 0, 0);
INSERT INTO `zt_projectstory` (`project`, `product`, `story`, `version`, `order`) VALUES
(1, 1, 1, 1, 0),
(1, 1, 2, 1, 0),
(1, 1, 3, 2, 0),
(1, 1, 4, 1, 0),
(7, 1, 4, 1, 0),
(7, 1, 3, 2, 0),
(7, 1, 2, 1, 0),
(7, 1, 1, 1, 0);
INSERT INTO `zt_projectstory` (`project`, `product`, `story`, `version`, `order`, `branch`) VALUES
(1, 1, 1, 1, 0, 0),
(1, 1, 2, 1, 0, 0),
(1, 1, 3, 2, 0, 0),
(1, 1, 4, 1, 0, 0),
(7, 1, 4, 1, 0, 0),
(7, 1, 3, 2, 0, 0),
(7, 1, 2, 1, 0, 0),
(7, 1, 1, 1, 0, 0);
INSERT INTO `zt_searchdict` (`key`, `value`) VALUES
(39318, '首'),
(39029, '页'),
@@ -584,32 +584,32 @@ INSERT INTO `zt_searchindex` (`id`, `objectType`, `objectID`, `title`, `content`
(39, 'task', 15, ' 25104 26524 23637 31034 30340 24320 21457', ' 25104 26524 23637 31034 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
(40, 'task', 16, ' 21806 21518 26381 21153 30340 35774 35745', ' 21806 21518 26381 21153 30340 35774 35745', '2021-04-28 13:16:15', '2021-04-28 13:16:15'),
(41, 'task', 17, ' 21806 21518 26381 21153 30340 24320 21457', ' 21806 21518 26381 21153 30340 24320 21457', '2021-04-28 13:16:15', '2021-04-28 13:16:15');
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`) VALUES
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0'),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0'),
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />'),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', ''),
(3, 1, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', ''),
(3, 2, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', ''),
(4, 1, '售后服务的设计和开发', '作为一名本公司的用户,我希望可以在售后服务看到该公司网站的售后服务,这样可以方便我联系该公司来解决我的问题。&nbsp;<br />', ''),
(5, 1, '诚聘英才的设计和开发', '作为一名求职者,我希望可以在诚聘英才里看到该公司的招聘信息,这样可以方便我应聘该公司。&nbsp;<br />', ''),
(6, 1, '合作洽谈的设计和开发', '作为一名合作商,我希望可以在合作洽谈里看到该公司对外的合作内容,这样可以方便我和该公司进行合作洽谈。&nbsp;<br />', ''),
(7, 1, '关于我们的设计和开发', '我希望可以在关于我们里看到该公司的基本信息,这样可以方便我了解该公司。<br />', '');
INSERT INTO `zt_task` (`id`, `project`, `parent`, `execution`, `module`, `design`, `story`, `storyVersion`, `designVersion`, `fromBug`, `name`, `type`, `pri`, `estimate`, `consumed`, `left`, `deadline`, `status`, `subStatus`, `color`, `mailto`, `desc`, `version`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `estStarted`, `realStarted`, `finishedBy`, `finishedDate`, `finishedList`, `canceledBy`, `canceledDate`, `closedBy`, `closedDate`, `realDuration`, `planDuration`, `closedReason`, `lastEditedBy`, `lastEditedDate`, `activatedDate`, `deleted`) VALUES
(17, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的开发', 'devel', 1, 5, 5, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-06 15:30:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '0'),
(16, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的设计', 'design', 1, 5, 6, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-05 17:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '0'),
(15, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'doing', '', '', NULL, '成果展示的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:20:09', '0000-00-00', '0'),
(14, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的设计', 'design', 1, 6, 0, 6, '0000-00-00', 'doing', '', '', NULL, '成果展示的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:19:54', '0000-00-00', '0'),
(13, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0'),
(12, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的设计', 'design', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0'),
(10, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的设计', 'design', 1, 7, 8, 0, '0000-00-00', 'done', '', '', NULL, '首页页面的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '2021-04-28 13:17:54', 'dev1', '2021-04-01 16:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '0'),
(11, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的开发', 'devel', 1, 8, 0, 8, '0000-00-00', 'doing', '', '', NULL, '首页页面的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 16:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:18:45', '0000-00-00', '0');
INSERT INTO `zt_story` (`id`, `parent`, `product`, `branch`, `module`, `plan`, `source`, `sourceNote`, `fromBug`, `title`, `keywords`, `type`, `pri`, `estimate`, `status`, `subStatus`, `color`, `stage`, `stagedBy`, `mailto`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `lastEditedBy`, `lastEditedDate`, `reviewedBy`, `reviewedDate`, `closedBy`, `closedDate`, `closedReason`, `toBug`, `childStories`, `linkStories`, `duplicateStory`, `version`, `URChanged`, `deleted`, `linkRequirements`, `twins`) VALUES
(1, 0, 1, 0, 1, '1', 'po', '', 0, '首页设计和开发', '', 'story', 1, 1, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:09:49', 'productManager', '0000-00-00 00:00:00', 'productManager', '2012-06-05 10:25:19', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(2, 0, 1, 0, 2, '1', 'po', '', 0, '新闻中心的设计和开发。', '', 'story', 1, 1, 'active', '', '', 'projected', '', '', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:16:37', 'productManager', '2012-06-05 10:25:33', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(3, 0, 1, 0, 3, '1', 'po', '', 0, '成果展示的设计和开发', '', 'story', 1, 0, 'active', '', '', 'developing', '', '', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:18:10', 'productManager', '2012-06-05 10:25:38', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 2, '0', '0', '', ''),
(4, 0, 1, 0, 4, '1', 'po', '', 0, '售后服务的设计和开发', '', 'story', 1, 1, 'active', '', '', 'developed', '', '', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:20:16', 'productManager', '2012-06-05 10:25:42', 'productManager, ', '2012-06-05 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(5, 0, 1, 0, 5, '1', 'po', '', 0, '诚聘英才的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:21:39', 'productManager', '2012-06-05 10:21:39', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(6, 0, 1, 0, 6, '1', 'po', '', 0, '合作洽谈的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:23:11', 'productManager', '2012-06-05 10:23:11', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', ''),
(7, 0, 1, 0, 7, '1', 'po', '', 0, '关于我们的设计和开发', '', 'story', 1, 1, 'reviewing', '', '', 'planned', '', '', 'productManager', '2012-06-05 10:24:19', 'productManager', '2012-06-05 10:24:19', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', 0, '', '', 0, 1, '0', '0', '', '');
INSERT INTO `zt_storyspec` (`story`, `version`, `title`, `spec`, `verify`, `files`) VALUES
(1, 1, '首页设计和开发', '作为一名本公司的用户,我希望可以在首页看到该公司网站的基本内容,例如最新动态、部分成果展示、联系信息、工商信息等。<br />', '开发并通过验收<br />', ''),
(2, 1, '新闻中心的设计和开发。', '作为一名本公司的用户,我希望可以在新闻中心看到该公司网站的企业新闻,这样可以通过新闻了解企业的最新动态。<br />', '', ''),
(3, 1, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的企业新闻,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '', ''),
(3, 2, '成果展示的设计和开发', '&nbsp;作为一名本公司的用户,我希望可以在成果展示看到该公司网站的吹产品,这样可以方便我进行了解该公司的产品并进行购买。&nbsp;<br />', '', ''),
(4, 1, '售后服务的设计和开发', '作为一名本公司的用户,我希望可以在售后服务看到该公司网站的售后服务,这样可以方便我联系该公司来解决我的问题。&nbsp;<br />', '', ''),
(5, 1, '诚聘英才的设计和开发', '作为一名求职者,我希望可以在诚聘英才里看到该公司的招聘信息,这样可以方便我应聘该公司。&nbsp;<br />', '', ''),
(6, 1, '合作洽谈的设计和开发', '作为一名合作商,我希望可以在合作洽谈里看到该公司对外的合作内容,这样可以方便我和该公司进行合作洽谈。&nbsp;<br />', '', ''),
(7, 1, '关于我们的设计和开发', '我希望可以在关于我们里看到该公司的基本信息,这样可以方便我了解该公司。<br />', '', '');
INSERT INTO `zt_task` (`id`, `project`, `parent`, `execution`, `module`, `design`, `story`, `storyVersion`, `designVersion`, `fromBug`, `name`, `type`, `pri`, `estimate`, `consumed`, `left`, `deadline`, `status`, `subStatus`, `color`, `mailto`, `desc`, `version`, `openedBy`, `openedDate`, `assignedTo`, `assignedDate`, `estStarted`, `realStarted`, `finishedBy`, `finishedDate`, `finishedList`, `canceledBy`, `canceledDate`, `closedBy`, `closedDate`, `realDuration`, `planDuration`, `closedReason`, `lastEditedBy`, `lastEditedDate`, `activatedDate`, `deleted`, `feedback`, `mode`, `order`, `repo`, `mr`, `entry`, `lines`, `v1`, `v2`) VALUES
(17, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的开发', 'devel', 1, 5, 5, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-06 15:30:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:51', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(16, 7, 0, 1, 0, 0, 4, 1, 0, 0, '售后服务的设计', 'design', 1, 5, 6, 0, '0000-00-00', 'done', '', '', NULL, '售后服务的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '2021-04-02 08:00:00', 'dev3', '2021-04-05 17:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev3', '2021-04-28 13:21:22', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(15, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'doing', '', '', NULL, '成果展示的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:20:09', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(14, 7, 0, 1, 0, 0, 3, 2, 0, 0, '成果展示的设计', 'design', 1, 6, 0, 6, '0000-00-00', 'doing', '', '', NULL, '成果展示的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev2', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 08:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev2', '2021-04-28 13:19:54', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(13, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的开发', 'devel', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(12, 7, 0, 1, 0, 0, 2, 1, 0, 0, '新闻中心的设计', 'design', 1, 7, 0, 7, '0000-00-00', 'wait', '', '', NULL, '新闻中心的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', '', '0000-00-00 00:00:00', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(10, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的设计', 'design', 1, 7, 8, 0, '0000-00-00', 'done', '', '', NULL, '首页页面的设计', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '2021-04-28 13:17:54', 'dev1', '2021-04-01 16:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:17:54', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', ''),
(11, 7, 0, 1, 0, 0, 1, 1, 0, 0, '首页页面的开发', 'devel', 1, 8, 0, 8, '0000-00-00', 'doing', '', '', NULL, '首页页面的开发', 1, 'admin', '2021-04-28 13:16:15', 'dev1', '2021-04-28 13:16:15', '0000-00-00', '2021-04-01 16:00:00', '', '0000-00-00 00:00:00', '', '', '0000-00-00 00:00:00', '', '0000-00-00 00:00:00', 0, 0, '', 'dev1', '2021-04-28 13:18:45', '0000-00-00', '0', 0, '', 0, 0, 0, '', '', '', '');
INSERT INTO `zt_taskestimate` (`id`, `task`, `date`, `left`, `consumed`, `account`, `work`) VALUES
(1, 10, '2021-04-01', 0, 8, 'dev1', ''),
(2, 11, '2021-04-01', 8, 0, 'dev1', ''),
@@ -647,18 +647,18 @@ INSERT INTO `zt_team` (`id`, `root`, `type`, `account`, `role`, `limited`, `join
(17, 2, 'execution', 'testManager', '测试负责人', 'no', '2021-04-28', 260, 7.0, '0.00', '0.00', '0.00', 0),
(18, 7, 'project', 'productManager', '', 'no', '2021-04-28', 0, 0.0, '0.00', '0.00', '0.00', 0),
(19, 7, 'project', 'projectManager', '', 'no', '2021-04-28', 0, 0.0, '0.00', '0.00', '0.00', 0);
INSERT INTO `zt_testresult` (`id`, `run`, `case`, `version`, `job`, `compile`, `caseResult`, `stepResults`, `lastRunner`, `date`, `duration`, `xml`) VALUES
(1, 4, 1, 1, 0, 0, 'pass', 'a:1:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:00', 0, ''),
(2, 3, 2, 1, 0, 0, 'pass', 'a:1:{i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:05', 0, ''),
(3, 2, 3, 1, 0, 0, 'pass', 'a:1:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:07', 0, ''),
(4, 1, 4, 1, 0, 0, 'pass', 'a:1:{i:4;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:08', 0, '');
INSERT INTO `zt_testresult` (`id`, `run`, `case`, `version`, `job`, `compile`, `caseResult`, `stepResults`, `lastRunner`, `date`, `duration`, `xml`, `ZTFResult`, `deploy`) VALUES
(1, 4, 1, 1, 0, 0, 'pass', 'a:1:{i:1;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:00', 0, '', '', 0),
(2, 3, 2, 1, 0, 0, 'pass', 'a:1:{i:2;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:05', 0, '', '', 0),
(3, 2, 3, 1, 0, 0, 'pass', 'a:1:{i:3;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:07', 0, '', '', 0),
(4, 1, 4, 1, 0, 0, 'pass', 'a:1:{i:4;a:2:{s:6:\"result\";s:4:\"pass\";s:4:\"real\";s:0:\"\";}}', 'testManager', '2012-06-05 11:11:08', 0, '', '', 0);
INSERT INTO `zt_testrun` (`id`, `task`, `case`, `version`, `assignedTo`, `lastRunner`, `lastRunDate`, `lastRunResult`, `status`) VALUES
(1, 1, 4, 1, '', 'testManager', '2012-06-05 11:11:08', 'pass', 'done'),
(2, 1, 3, 1, '', 'testManager', '2012-06-05 11:11:07', 'pass', 'done'),
(3, 1, 2, 1, '', 'testManager', '2012-06-05 11:11:05', 'pass', 'done'),
(4, 1, 1, 1, '', 'testManager', '2012-06-05 11:11:00', 'pass', 'done');
INSERT INTO `zt_testtask` (`id`, `project`, `name`, `product`, `execution`, `build`, `owner`, `pri`, `begin`, `end`, `mailto`, `desc`, `report`, `status`, `auto`, `subStatus`, `deleted`) VALUES
(1, 0, '企业网站第一期测试任务', 1, 1, '1', 'testManager', 0, '2020-06-05', '2021-06-21', '', '', '', 'wait', 'no', '', '0');
INSERT INTO `zt_testtask` (`id`, `project`, `name`, `product`, `execution`, `build`, `owner`, `pri`, `begin`, `end`, `mailto`, `desc`, `report`, `status`, `auto`, `subStatus`, `deleted`, `testreport`, `createdBy`, `createdDate`) VALUES
(1, 0, '企业网站第一期测试任务', 1, 1, '1', 'testManager', 0, '2020-06-05', '2021-06-21', '', '', '', 'wait', 'no', '', '0', '0', 'testManager', '2021-01-06 10:10:20');
REPLACE INTO `zt_user` (`company`, `dept`, `account`, `type`, `password`, `role`, `realname`, `nickname`, `commiter`, `avatar`, `birthday`, `gender`, `email`, `skype`, `qq`, `mobile`, `phone`, `weixin`, `dingding`, `slack`, `whatsapp`, `address`, `zipcode`, `nature`, `analysis`, `strategy`, `join`, `visits`, `ip`, `last`, `fails`, `locked`, `ranzhi`, `score`, `scoreLevel`, `deleted`) VALUES
(0, 5, 'productManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'po', '产品经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 3, '192.168.0.8', 1338866083, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
(0, 6, 'projectManager', 'inside', 'e10adc3949ba59abbe56e057f20f883e', 'pm', '项目经理', '', '', '', '0000-00-00', 'm', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0000-00-00', 4, '10.0.2.2', 1619580798, 0, '0000-00-00 00:00:00', '', 0, 0, '0'),
+6 -4
View File
@@ -20,7 +20,7 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` (
`name` text NOT NULL,
`desc` text NOT NULL,
`sql` mediumtext NOT NULL,
`fields` mediumtext NOT NULL,
`fields` mediumtext NULL,
`langs` mediumtext NULL,
`vars` mediumtext NOT NULL,
`objects` mediumtext NULL,
@@ -35,13 +35,13 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` (
`editedDate` datetime NULL,
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY(`dimension`),
KEY(`group`)
KEY `dimension` (`dimension`),
KEY `group` (`group`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `zt_chart_back` SELECT * FROM `zt_chart`;
ALTER TABLE `zt_chart` MODIFY `fields` mediumtext NOT NULL;
ALTER TABLE `zt_chart` MODIFY `fields` mediumtext NULL;
ALTER TABLE `zt_chart` MODIFY `group` varchar(255) NOT NULL;
ALTER TABLE `zt_chart` ADD `stage` enum('draft','published') NOT NULL DEFAULT 'draft' AFTER `sql`;
ALTER TABLE `zt_chart` ADD `langs` text NULL AFTER `fields`;
@@ -215,6 +215,8 @@ CHANGE `lastEditedBy` `lastEditedBy` char(30) NOT NULL DEFAULT '',
CHANGE `lastEditedDate` `lastEditedDate` date NULL;
ALTER TABLE `zt_bug`
CHANGE `injection` `injection` mediumint unsigned NOT NULL DEFAULT '0',
CHANGE `identify` `identify` mediumint unsigned NOT NULL DEFAULT '0',
CHANGE `assignedDate` `assignedDate` datetime NULL,
CHANGE `resolvedDate` `resolvedDate` datetime NULL,
CHANGE `closedDate` `closedDate` datetime NULL,
+10 -10
View File
@@ -249,8 +249,8 @@ CREATE TABLE IF NOT EXISTS `zt_bug` (
`id` mediumint(8) NOT NULL AUTO_INCREMENT,
`project` mediumint(8) unsigned NOT NULL,
`product` mediumint(8) unsigned NOT NULL DEFAULT '0',
`injection` mediumint(8) unsigned NOT NULL,
`identify` mediumint(8) unsigned NOT NULL,
`injection` mediumint(8) unsigned NOT NULL DEFAULT '0',
`identify` mediumint(8) unsigned NOT NULL DEFAULT '0',
`branch` mediumint(8) unsigned NOT NULL DEFAULT '0',
`module` mediumint(8) unsigned NOT NULL DEFAULT '0',
`execution` mediumint(8) unsigned NOT NULL DEFAULT '0',
@@ -443,7 +443,7 @@ CREATE TABLE IF NOT EXISTS `zt_chart` (
`settings` mediumtext NOT NULL,
`filters` mediumtext NOT NULL,
`step` tinyint(1) unsigned NOT NULL DEFAULT '0',
`fields` mediumtext NOT NULL,
`fields` mediumtext NULL,
`langs` text NULL,
`sql` mediumtext,
`stage` enum('draft','published') NOT NULL DEFAULT 'draft',
@@ -481,8 +481,8 @@ CREATE TABLE IF NOT EXISTS `zt_dimension` (
`desc` text NOT NULL,
`createdBy` varchar(30) NOT NULL,
`createdDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL,
`editedDate` datetime NOT NULL,
`editedBy` varchar(30) NOT NULL DEFAULT '',
`editedDate` datetime NULL,
`deleted` enum('0','1') NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `code` (`code`)
@@ -966,8 +966,8 @@ CREATE TABLE IF NOT EXISTS `zt_kanbanregion` (
`order` mediumint(8) NOT NULL DEFAULT '0',
`createdBy` char(30) NOT NULL,
`createdDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL,
`lastEditedDate` datetime NOT NULL,
`lastEditedBy` char(30) NOT NULL DEFAULT '',
`lastEditedDate` datetime NULL,
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@@ -14018,7 +14018,7 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` (
`name` text NOT NULL,
`desc` text NOT NULL,
`sql` mediumtext NOT NULL,
`fields` mediumtext NOT NULL,
`fields` mediumtext NULL,
`langs` mediumtext NULL,
`vars` mediumtext NOT NULL,
`objects` mediumtext NULL,
@@ -14033,8 +14033,8 @@ CREATE TABLE IF NOT EXISTS `zt_pivot` (
`editedDate` datetime NOT NULL,
`deleted` enum('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY(`dimension`),
KEY(`group`)
KEY `dimension` (`dimension`),
KEY `group` (`group`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
-- DROP TABLE IF EXISTS `zt_sqlview`;
+14
View File
@@ -217,6 +217,20 @@ class dm extends dao
return parent::groupBy($groupBy);
}
/**
* 创建ORDER BY部分。
* Create the order by part.
*
* @param string $order
* @access public
* @return static|sql the sql object.
*/
public function orderBy($order)
{
$order = str_replace('"', '', $order);
return parent::orderBy($order);
}
/**
* 创建ON部分。
* Create the on part.
+1
View File
@@ -256,6 +256,7 @@ class dbh
public function formatDmSQL($sql)
{
$sql = trim($sql);
$sql = str_replace(array('\r', '\n'), ' ', $sql);
$actionPos = strpos($sql, ' ');
$action = strtoupper(substr($sql, 0, $actionPos));
$setPos = 0;
+121
View File
@@ -0,0 +1,121 @@
/**
* Display the document in full screen.
*
* @access public
* @return void
*/
function fullScreen()
{
var element = document.getElementById('content');
var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen;
if(requestMethod)
{
var afterEnterFullscreen = function()
{
$('#mainActions').removeClass('hidden');
$('#content').addClass('scrollbar-hover');
$('#content .actions').addClass('hidden');
$('#content .file-image .right-icon').addClass('hidden');
$('#content .detail').eq(1).addClass('hidden');
$.cookie('isFullScreen', 1);
};
var whenFailEnterFullscreen = function(error)
{
$.cookie('isFullScreen', 0);
};
try
{
var result = requestMethod.call(element);
if(result && (typeof result.then === 'function' || result instanceof window.Promise))
{
result.then(afterEnterFullscreen).catch(whenFailEnterFullscreen);
}
else
{
afterEnterFullscreen();
}
}
catch (error)
{
whenFailEnterFullscreen(error);
}
}
$('.main-col iframe').css('min-height', $(window).height() + 'px');
}
/**
* Exit full screen.
*
* @access public
* @return void
*/
function exitFullScreen()
{
$('#mainActions').addClass('hidden');
$('#content').removeClass('scrollbar-hover');
$('#content .actions').removeClass('hidden');
$('#content .file-image .right-icon').removeClass('hidden');
$('#content .detail').eq(1).removeClass('hidden');
$('.main-col iframe').css('min-height', '380px');
$.cookie('isFullScreen', 0);
}
document.addEventListener('fullscreenchange', function (e)
{
if(!document.fullscreenElement) exitFullScreen();
});
document.addEventListener('webkitfullscreenchange', function (e)
{
if(!document.webkitFullscreenElement) exitFullScreen();
});
document.addEventListener('mozfullscreenchange', function (e)
{
if(!document.mozFullScreenElement) exitFullScreen();
});
document.addEventListener('msfullscreenChange', function (e)
{
if(!document.msfullscreenElement) exitFullScreen();
});
$(function()
{
$(document).keydown(function(event)
{
if($.cookie('isFullScreen') == 1)
{
if(event.keyCode == 37) $('#prevPage').click();
if(event.keyCode == 39) $('#nextPage').click();
}
});
if($.cookie('isFullScreen') == 1) fullScreen();
$('.menu-actions > a').click(function()
{
$(this).parent().hasClass('open') ? $(this).css('background', 'none') : $(this).css('background', '#f1f1f1');
})
$('.menu-actions > a').blur(function() {$(this).css('background', 'none');})
/* Update doc content silently on switch doc version, story #40503 */
$(document).on('click', '.api-version-menu a, #mainActions .container a', function(event)
{
var $tmpDiv = $('<div>');
$tmpDiv.load($(this).data('url') + ' #mainContent', function()
{
$('#content').html($tmpDiv.find('#content').html());
$('#sidebarContent').html($tmpDiv.find('#sidebarContent').html());
$('#actionbox .histories-list').html($tmpDiv.find('#actionbox .histories-list').html());
if($.cookie('isFullScreen') == 1) fullScreen();
$('#content [data-ride="tree"]').tree();
$('#outline li.has-list').addClass('open in');
$('#outline li.has-list>i+ul').prev('i').remove();
});
});
});
+7 -5
View File
@@ -776,11 +776,13 @@ class apiModel extends model
/* Insert doclib. */
$lib = new stdclass();
$lib->type = 'api';
$lib->name = $name;
$lib->baseUrl = $baseUrl;
$lib->acl = 'open';
$lib->users = ',' . $currentAccount . ',';
$lib->type = 'api';
$lib->name = $name;
$lib->baseUrl = $baseUrl;
$lib->acl = 'open';
$lib->users = ',' . $currentAccount . ',';
$lib->addedBy = $currentAccount;
$lib->addedDate = helper::now();
$this->dao->insert(TABLE_DOCLIB)->data($lib)->autoCheck()
->batchCheck($this->config->api->createlib->requiredFields, 'notempty')
->check('name', 'unique', "`type` = 'api'")
+4 -6
View File
@@ -22,17 +22,15 @@
</div>
</div>
<div class="actions">
<?php echo html::a("javascript:fullScreen()", '<span class="icon-fullscreen"></span>', '', "title='{$lang->fullscreen}' class='btn btn-link fullscreen-btn'");?>
<?php
if(!$isRelease)
{
if(common::hasPriv('api', 'edit')) echo html::a(inlink('edit', "apiID=$api->id"), '<i class="icon-edit"></i>', '', "title='{$lang->api->edit}' class='btn btn-link' data-app='{$this->app->tab}'");
if(common::hasPriv('api', 'delete'))
{
$deleteURL = $this->createLink('api', 'delete', "apiID=$api->id");
echo html::a($deleteURL, '<i class="icon-trash"></i>', '', "title='{$lang->api->delete}' class='btn btn-link' target='hiddenwin'");
}
if(common::hasPriv('api', 'edit')) echo html::a(inlink('edit', "apiID=$api->id"), '<i class="icon-edit"></i>', '', "title='{$lang->api->edit}' class='btn btn-link' data-app='{$this->app->tab}'");
if(common::hasPriv('api', 'delete')) echo html::a(inLink('api', 'delete', "apiID=$api->id"), '<i class="icon-trash"></i>', '', "title='{$lang->api->delete}' class='btn btn-link' target='hiddenwin'");
}
?>
<a id="hisTrigger" href="###" class="btn btn-link" title=<?php echo $lang->history?>><span class="icon icon-clock"></span></a>
</div>
</div>
</div>
+1 -1
View File
@@ -919,7 +919,7 @@ class bug extends control
$projects = $this->loadModel('product')->getProjectPairsByProduct($productID, $bug->branch);
$this->session->set("project", key($projects), 'project');
$this->executeHooks($bugID);
/* Header and positon. */
+9 -6
View File
@@ -575,7 +575,7 @@ class chartModel extends model
* @access public
* @return array
*/
public function getSysOptions($type, $object = '', $field = '')
public function getSysOptions($type, $object = '', $field = '', $sql = '')
{
$options = array('' => '');
switch($type)
@@ -611,14 +611,17 @@ class chartModel extends model
$options = $this->dao->select("id, {$field}")->from($table)->fetchPairs();
}
break;
/*case 'string':
if($field)
case 'string':
if($field and $sql)
{
$table = zget($this->config->objectTables, $object);
$options = $this->dao->select("{$field}, {$field}")->from($table)->fetchPairs();
$cols = $this->dbh->query($sql)->fetchAll();
foreach($cols as $col)
{
$data = $col->$field;
$options[$data] = $data;
}
}
break;
*/
}
return $options;
+1 -1
View File
@@ -82,7 +82,7 @@
<div class='panel-title'>
<?php echo $chart->name;?>
<?php if(!empty($chart->desc)):?>
<a data-toggle='tooltip' data-placement='auto' title=<?php echo $chart->desc;?>><i class='icon-help'></i></a>
<a data-toggle='tooltip' data-placement='auto' title='<?php echo $chart->desc;?>'><i class='icon-help'></i></a>
<?php endif;?>
</div>
</div>
-1
View File
@@ -301,7 +301,6 @@ $lang->product->kanban = $lang->productCommon . ' Kanban';
$lang->project->report = 'Report';
$lang->report->weekly = 'Weekly';
$lang->report->annual = 'Annual Summary';
$lang->report->notice = new stdclass();
$lang->report->notice->help = 'Hinweis: Berichte wurde auf Basis der Suche generiert. Bitte suchen Sie in der Liste bevor Sie einen Bericht generieren.';
-1
View File
@@ -301,7 +301,6 @@ $lang->product->kanban = $lang->productCommon . ' Kanban';
$lang->project->report = 'Report';
$lang->report->weekly = 'Weekly';
$lang->report->annual = 'Annual Summary';
$lang->report->notice = new stdclass();
$lang->report->notice->help = 'Note: The report is generated on the results of browsing the list. Click, e.g. AssignedToMe, then click Create Report to generate a report based on AssignedToMe list.';
-1
View File
@@ -301,7 +301,6 @@ $lang->product->kanban = $lang->productCommon . ' Kanban';
$lang->project->report = 'Report';
$lang->report->weekly = 'Weekly';
$lang->report->annual = 'Annual Summary';
$lang->report->notice = new stdclass();
$lang->report->notice->help = 'Note : Le rapport est généré à partir des résultats de la liste consultée. Par exemple, cliquez sur AssignedToMe, puis Générer Rapport pour obtenir un rapport basé sur la liste de ce qui vous est assigné.';
-1
View File
@@ -301,7 +301,6 @@ $lang->product->kanban = $lang->productCommon . '看板';
$lang->project->report = '报告';
$lang->report->weekly = '周报';
$lang->report->annual = '年度总结';
$lang->report->notice = new stdclass();
$lang->report->notice->help = '注:统计报表的数据来源于列表页面的检索结果,生成统计报表前请先在列表页面进行检索。比如列表页面我们检索的是%tab%,那么报表就是基于之前检索的%tab%的结果集进行统计。';
-1
View File
@@ -258,7 +258,6 @@ $lang->product->kanban = $lang->productCommon . '看板';
$lang->project->report = '報告';
$lang->report->weekly = '周報';
$lang->report->annual = '年度總結';
$lang->report->notice = new stdclass();
$lang->report->notice->help = '註:統計報表的數據來源於列表頁面的檢索結果,生成統計報表前請先在列表頁面進行檢索。比如列表頁面我們檢索的是%tab%,那麼報表就是基于之前檢索的%tab%的結果集進行統計。';
+12
View File
@@ -37,6 +37,18 @@ $config->doc->iconList['word'] = 'word';
$config->doc->iconList['ppt'] = 'ppt';
$config->doc->iconList['excel'] = 'excel';
$config->doc->objectIconList['product'] = 'icon-product';
$config->doc->objectIconList['project'] = 'icon-project';
$config->doc->objectIconList['execution'] = 'icon-run';
$config->doc->objectIconList['mine'] = 'icon-contacts';
$config->doc->objectIconList['custom'] = 'icon-groups';
$config->doc->spaceMethod['mine'] = 'mySpace';
$config->doc->spaceMethod['product'] = 'productSpace';
$config->doc->spaceMethod['project'] = 'projectSpace';
$config->doc->spaceMethod['execution'] = 'projectSpace';
$config->doc->spaceMethod['custom'] = 'tableContents';
$config->doc->search['module'] = 'doc';
$config->doc->search['fields']['title'] = $lang->doc->title;
$config->doc->search['fields']['id'] = $lang->doc->id;
+11 -4
View File
@@ -55,7 +55,7 @@ class doc extends control
/**
* My space.
*
* @param string $type mine
* @param string $type mine|view|collect|createBy
* @param int $libID
* @param int $moduleID
* @param string $browseType all|draft|bysearch
@@ -81,6 +81,7 @@ class doc extends control
/* Build the search form. */
$browseType = strtolower($browseType);
$type = strtolower($type);
$queryID = $browseType == 'bysearch' ? (int)$param : 0;
$params = "libID=$libID&moduleID=$moduleID&browseType=bySearch&param=myQueryID&orderBy=$orderBy";
if($this->app->rawMethod == 'mySpace') $param = "type=$type&" . $params;
@@ -110,7 +111,7 @@ class doc extends control
$this->view->pager = $pager;
$this->view->type = $type;
$this->view->objectID = 0;
$this->view->canExport = 0;
$this->view->canExport = common::hasPriv('doc', 'mine2export');
$this->view->libType = 'lib';
$this->display();
@@ -155,7 +156,8 @@ class doc extends control
if($type == 'product') $objects = $this->product->getPairs();
if($type == 'project')
{
$objects = $this->project->getPairsByProgram('', 'all', false, 'order_asc', 'kanban');
$excludedModel = $this->config->vision == 'lite' ? '' : 'kanban';
$objects = $this->project->getPairsByProgram('', 'all', false, 'order_asc', $excludedModel);
if($this->app->tab == 'doc')
{
$this->view->executionPairs = array(0 => '') + $this->execution->getPairs($objectID, 'all', 'multiple,leaf,noprefix');
@@ -409,7 +411,8 @@ class doc extends control
$objects = array();
if($objectType == 'project')
{
$objects = $this->project->getPairsByProgram('', 'all', false, 'order_asc', 'kanban');
$excludedModel = $this->config->vision == 'lite' ? '' : 'kanban';
$objects = $this->project->getPairsByProgram('', 'all', false, 'order_asc', $excludedModel);
if($lib->type == 'execution')
{
$execution = $this->loadModel('execution')->getById($lib->execution);
@@ -428,6 +431,10 @@ class doc extends control
{
$objects = $this->loadModel('product')->getPairs();
}
elseif($objectType == 'mine')
{
$this->lang->doc->aclList = $this->lang->doclib->mySpaceAclList;
}
$moduleOptionMenu = $this->doc->getLibsOptionMenu($libs);
$moduleID = $moduleID ? (int)$moduleID : (int)$this->cookie->lastDocModule;
+1 -1
View File
@@ -47,7 +47,7 @@ span.dotted-line+a {display: block;}
.is-sorting > li ul {display: none!important;}
li.drag-shadow ul {display: none!important;}
.table .c-name > .doc-title {display: inline-block; max-width: 90%; overflow: hidden; background: transparent; padding-right:0px;}
.table .c-name > .doc-title {display: inline-block; max-width: calc(100% - 80px); overflow: hidden; background: transparent; padding-right:0px;}
.table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
.table .c-name > .ajaxCollect {float: right; position: relative; right: 10px; top: 0px;}
table.table > thead > tr {height: 32px;}
+2 -1
View File
@@ -53,5 +53,6 @@
.actions > .text {color: #8c8c8c; font-size: 14px;}
.flex-content {display: flex; width: 100%; height: 100%;}
.flex-content > #content {flex: auto; overflow-y: auto;}
.flex-content > #history {flex: 0 0 302px;;}
.flex-content > #history {flex: 0 0 302px; position: relative;}
.flex-content > #history > #closeIcon {position: absolute; right: 10px; top: 10px;}
.panel {margin-bottom: 0;}
+8 -1
View File
@@ -214,5 +214,12 @@ $(function()
$icon.removeClass('text-primary');
}
})
$('#history').find('.btn.pull-right').removeClass('pull-right');
$('#history').find('.btn.pull-right').removeClass('pull-right')
$('#history').append('<a id="closeIcon" class="btn btn-link"><i class="icon icon-close"></i></a>');
$('#closeIcon').on('click', function()
{
$('#history').addClass('hidden');
$('#hisTrigger').removeClass('text-primary');
})
})
+3 -1
View File
@@ -36,7 +36,7 @@ $lang->doclib->aclListB['open'] = 'Public';
$lang->doclib->aclListB['custom'] = 'Custom';
$lang->doclib->aclListB['private'] = 'Private';
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip'>(Only creators can access it)</span>";
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip text-muted'>(Only creators can access it)</span>";
$lang->doclib->aclList = array();
$lang->doclib->aclList['open'] = "Public <span class='acl-tip'>(Users who can access doccan access it)</span>";
@@ -122,6 +122,8 @@ $lang->doc->closed = 'Closed';
$lang->doc->saveDraft = 'Save Draft';
$lang->doc->defaultSave = 'Default Save: ';
$lang->doc->position = 'Position';
$lang->doc->person = 'Person';
$lang->doc->team = 'Team';
$lang->doc->moduleDoc = 'Nach Modulen';
$lang->doc->searchDoc = 'Suche';
+3 -1
View File
@@ -36,7 +36,7 @@ $lang->doclib->aclListB['open'] = 'Public';
$lang->doclib->aclListB['custom'] = 'Custom';
$lang->doclib->aclListB['private'] = 'Private';
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip'>(Only creators can access it)</span>";
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip text-muted'>(Only creators can access it)</span>";
$lang->doclib->aclList = array();
$lang->doclib->aclList['open'] = "Public <span class='acl-tip'>(Users who can access doccan access it)</span>";
@@ -122,6 +122,8 @@ $lang->doc->closed = 'Closed';
$lang->doc->saveDraft = 'Save Draft';
$lang->doc->defaultSave = 'Default Save: ';
$lang->doc->position = 'Position';
$lang->doc->person = 'Person';
$lang->doc->team = 'Team';
$lang->doc->moduleDoc = 'By Module';
$lang->doc->searchDoc = 'Search';
+3 -1
View File
@@ -36,7 +36,7 @@ $lang->doclib->aclListB['open'] = 'Public';
$lang->doclib->aclListB['custom'] = 'Person.';
$lang->doclib->aclListB['private'] = 'Privée';
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip'>(Only creators can access it)</span>";
$lang->doclib->mySpaceAclList['private'] = "Private <span class='acl-tip text-muted'>(Only creators can access it)</span>";
$lang->doclib->aclList = array();
$lang->doclib->aclList['open'] = "Public <span class='acl-tip'>(Users who can access doccan access it)</span>";
@@ -122,6 +122,8 @@ $lang->doc->closed = 'Closed';
$lang->doc->saveDraft = 'Save Draft';
$lang->doc->defaultSave = 'Default Save: ';
$lang->doc->position = 'Position';
$lang->doc->person = 'Person';
$lang->doc->team = 'Team';
$lang->doc->moduleDoc = 'Par Module';
$lang->doc->searchDoc = 'Rechercher';
+4 -2
View File
@@ -36,7 +36,7 @@ $lang->doclib->aclListB['open'] = '公开';
$lang->doclib->aclListB['custom'] = '自定义';
$lang->doclib->aclListB['private'] = '私有';
$lang->doclib->mySpaceAclList['private'] = "私有 <span class='acl-tip'>(仅创建者可访问)</span>";
$lang->doclib->mySpaceAclList['private'] = "私有<span class='acl-tip text-muted'>(仅创建者可访问)</span>";
$lang->doclib->aclList = array();
$lang->doclib->aclList['open'] = "公开 <span class='acl-tip'>(有文档视图权限即可访问)</span>";
@@ -83,7 +83,7 @@ $lang->doc->url = '文档URL';
$lang->doc->files = '附件';
$lang->doc->addedBy = '由谁添加';
$lang->doc->addedByAB = '创建者';
$lang->doc->addedDate = '创建时间';
$lang->doc->addedDate = '创建日期';
$lang->doc->editedBy = '修改者';
$lang->doc->editedDate = '修改日期';
$lang->doc->lastEditedBy = '最后更新者';
@@ -122,6 +122,8 @@ $lang->doc->closed = '已关闭';
$lang->doc->saveDraft = '存为草稿';
$lang->doc->defaultSave = '默认存入:';
$lang->doc->position = '所在位置';
$lang->doc->person = '个人';
$lang->doc->team = '团队';
$lang->doc->moduleDoc = '按模块浏览';
$lang->doc->searchDoc = '搜索';
+23 -8
View File
@@ -377,8 +377,9 @@ class docModel extends model
*/
public function getDocsByBrowseType($browseType, $queryID, $moduleID, $sort, $pager)
{
$allLibs = array_keys($this->getLibs('all'));
$docIdList = $this->getPrivDocs(0, $moduleID);
$allLibs = $this->getLibs('all');
$allLibIDList = array_keys($allLibs);
$docIdList = $this->getPrivDocs(0, $moduleID);
$files = $this->dao->select('*')->from(TABLE_FILE)
->where('objectType')->eq('doc')
@@ -418,7 +419,7 @@ class docModel extends model
$docs = $this->dao->select('*')->from(TABLE_DOC)
->where('deleted')->eq(0)
->andWhere($query)
->andWhere('lib')->in($allLibs)
->andWhere('lib')->in($allLibIDList)
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
->andWhere('addedBy', 1)->eq($this->app->user->account)
->orWhere('id')->in(array_keys($docIDList))
@@ -431,7 +432,7 @@ class docModel extends model
{
$docs = $this->dao->select('*')->from(TABLE_DOC)
->where('deleted')->eq(0)
->andWhere('lib')->in($allLibs)
->andWhere('lib')->in($allLibIDList)
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
->andWhere('addedBy')->eq($this->app->user->account)
->orderBy($sort)
@@ -448,7 +449,7 @@ class docModel extends model
$docs = $this->dao->select('*')->from(TABLE_DOC)
->where('deleted')->eq(0)
->andWhere('id')->in(array_keys($docIDList))
->andWhere('lib')->in($allLibs)
->andWhere('lib')->in($allLibIDList)
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
->orderBy($sort)
->page($pager)
@@ -460,7 +461,7 @@ class docModel extends model
->where('deleted')->eq(0)
->andWhere('id')->in($docIdList)
->beginIF($this->config->doc->notArticleType)->andWhere('type')->notIN($this->config->doc->notArticleType)->fi()
->andWhere('lib')->in($allLibs)
->andWhere('lib')->in($allLibIDList)
->orderBy('editedDate_desc')
->page($pager)
->fetchAll('id');
@@ -470,7 +471,7 @@ class docModel extends model
$docs = $this->dao->select('t1.*')->from(TABLE_DOC)->alias('t1')
->leftJoin(TABLE_DOCACTION)->alias('t2')->on("t1.id=t2.doc && t2.action='collect'")
->where('t1.deleted')->eq(0)
->andWhere('t1.lib')->in($allLibs)
->andWhere('t1.lib')->in($allLibIDList)
->beginIF($this->config->doc->notArticleType)->andWhere('t1.type')->notIN($this->config->doc->notArticleType)->fi()
->andWhere('t2.actor')->eq($this->app->user->account)
->orderBy($sort)
@@ -482,7 +483,8 @@ class docModel extends model
/* Get projects, executions and products by docIdList. */
list($projects, $executions, $products) = $this->getObjectsByDoc(array_keys($docs));
$mineLibs = $this->getAllLibsByType('mine');
$customLibs = $this->getAllLibsByType('custom');
$docContents = $this->dao->select('*')->from(TABLE_DOCCONTENT)->where('doc')->in(array_keys($docs))->orderBy('version,doc')->fetchAll('doc');
$modules = array();
@@ -493,6 +495,7 @@ class docModel extends model
if(!isset($modules[$doc->lib])) $modules[$doc->lib] = $this->tree->getOptionMenu($doc->lib, 'doc', 0, 0, 'nodeleted', 'all', ' > ');
$doc->moduleName = zget($modules[$doc->lib], $doc->module);
$doc->moduleName = ltrim($doc->moduleName, '/');
$doc->libName = zget($allLibs, $doc->lib);
foreach($objects as $type => $object)
{
if(!empty($doc->{$type}))
@@ -503,6 +506,18 @@ class docModel extends model
break;
}
}
if(isset($mineLibs[$doc->lib]))
{
$doc->objectID = 0;
$doc->objectName = $this->lang->doc->person;
$doc->objectType = 'mine';
}
elseif(isset($customLibs[$doc->lib]))
{
$doc->objectID = 0;
$doc->objectName = $this->lang->doc->team;
$doc->objectType = 'custom';
}
$docs[$index]->fileSize = 0;
if(isset($files[$index]))
+5 -8
View File
@@ -31,8 +31,12 @@
</div>
<div class="actions">
<span class='text'><?php echo$lang->doc->diff?></span>
<?php echo html::a("javascript:fullScreen()", '<span class="icon-fullscreen"></span>', '', "title='{$lang->fullscreen}' class='btn btn-link fullscreen-btn'");?>
<?php if(common::hasPriv('doc', 'collect')):?>
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'star' : 'star-empty';?>
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$doc->id&objectType=doc");?>" title="<?php echo $lang->doc->collect;?>" class='ajaxCollect btn btn-link'><?php echo html::image("static/svg/{$star}.svg", "class='$star'");?></a>
<?php endif;?>
<?php
echo html::a("javascript:fullScreen()", '<span class="icon-fullscreen"></span>', '', "title='{$lang->fullscreen}' class='btn btn-link fullscreen-btn'");
if(common::hasPriv('doc', 'edit'))
{
$iframe = '';
@@ -44,13 +48,6 @@
}
echo html::a(inlink('edit', "docID=$doc->id&comment=false&objectType=$objectType&objectID=$object->id&libID=$libID", '', $onlybody), '<span class="icon-edit"></span>', '', "title='{$lang->doc->edit}' class='btn btn-link $iframe' data-app='{$this->app->tab}'");
}
?>
<?php if(common::hasPriv('doc', 'collect')):?>
<?php $star = strpos($doc->collector, ',' . $this->app->user->account . ',') !== false ? 'star' : 'star-empty';?>
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$doc->id&objectType=doc");?>" title="<?php echo $lang->doc->collect;?>" class='ajaxCollect btn btn-link'><?php echo html::image("static/svg/{$star}.svg", "class='$star'");?></a>
<?php endif;?>
<?php
if(common::hasPriv('doc', 'delete'))
{
$deleteURL = $this->createLink('doc', 'delete', "docID=$doc->id&confirm=yes&from=lib");
+2 -2
View File
@@ -69,7 +69,7 @@
<tr>
<th><?php echo $lang->doc->project;?></th>
<td class='required'><?php echo html::select('project', $objects, isset($execution) ? $execution->project : $objectID, "class='form-control picker-select' onchange=loadExecutions(this.value)");?></td>
<?php if($this->app->tab == 'doc'):?>
<?php if($this->app->tab == 'doc' and $config->vision == 'rnd'):?>
<th><?php echo $lang->doc->execution?></th>
<td id='executionBox'><?php echo html::select('execution', $executions, isset($execution) ? $objectID : '', "class='form-control chosen' data-placeholder='{$lang->doc->placeholder->execution}' onchange='loadObjectModules(\"execution\", this.value)'")?></td>
<?php endif;?>
@@ -111,7 +111,7 @@
<tr>
<th class="th-control text-top"><?php echo $lang->doclib->control;?></th>
<td colspan='3' class='aclBox'>
<?php echo html::radio('acl', $lang->doc->aclList, 'open', "onchange='toggleAcl(this.value, \"doc\")'");?>
<?php echo html::radio('acl', $lang->doc->aclList, $objectType == 'mine' ? 'private' : 'open', "onchange='toggleAcl(this.value, \"doc\")'");?>
</td>
</tr>
<tr id='whiteListBox' class='hidden'>
+36 -3
View File
@@ -15,10 +15,16 @@ body {margin-bottom: 25px;}
#docListForm th.c-id {width: 72px;}
#docListForm th.c-user {width: 80px;}
#docListForm th.c-actions {width: 84px; padding-left: 15px;}
#docListForm .table .c-name > .doc-title {display: inline-block; max-width: 90%; overflow: hidden; background: transparent; padding-right:0px;}
#docListForm .c-module, #docListForm .c-object {width: 120px; overflow: hidden; white-space: nowrap; text-overflow: clip;}
#docListForm .table .c-name > .doc-title {display: inline-block; max-width: calc(100% - 80px); overflow: hidden; background: transparent; padding-right:0px;}
#docListForm .table .c-name > .draft {background-color:rgba(129, 102, 238, 0.12); color:#8166EE;}
#docListForm .table .c-name > .ajaxCollect {float: right; position: relative; right: 10px; top: 0px;}
#docListForm table.table > thead > tr {height: 32px;}
#docListForm .checkbox-primary {line-height: 16px;}
#docListForm table .checkbox-primary {top: -2px;}
#docListForm .checkbox-primary > label {height: 16px; line-height: 16px; padding-left: 16px;}
#docListForm .checkbox-primary > label:before {left: -1px; font-size: 10px;}
#docListForm .checkbox-primary > label:after {width: 12px; height: 12px;}
</style>
<?php if(common::checkNotCN()):?>
<style>
@@ -55,8 +61,11 @@ body {margin-bottom: 25px;}
<?php common::printOrderLink('id', $orderBy, $vars, $lang->idAB);?>
</th>
<th class="c-name"><?php common::printOrderLink('title', $orderBy, $vars, $lang->doc->title);?></th>
<th class="c-module"><?php common::printOrderLink('module', $orderBy, $vars, $lang->doc->position);?></th>
<?php if($type != 'mine'):?>
<th class='c-object'><?php echo $lang->doc->object;?></th>
<th class="c-module"><?php common::printOrderLink('module', $orderBy, $vars, $lang->doc->position);?></th>
<?php endif;?>
<?php if(!in_array($type, array('mine', 'createby'))):?>
<th class="c-user"><?php common::printOrderLink('addedBy', $orderBy, $vars, $lang->doc->addedByAB);?></th>
<?php endif;?>
<th class="c-date"><?php common::printOrderLink('addedDate', $orderBy, $vars, $lang->doc->addedDate);?></th>
@@ -101,8 +110,32 @@ body {margin-bottom: 25px;}
<a data-url="<?php echo $this->createLink('doc', 'collect', "objectID=$doc->id&objectType=doc");?>" title="<?php echo $collectTitle;?>" class='btn btn-link ajaxCollect'><?php echo html::image("static/svg/{$star}.svg", "class='$star'");?></a>
<?php endif;?>
</td>
<td class="c-module"><?php echo $doc->moduleName;?></td>
<?php if($type != 'mine'):?>
<td class="c-object" title='<?php echo $doc->objectName;?>'>
<?php $objectIcon = zget($config->doc->objectIconList, $doc->objectType);?>
<?php echo "<i class='icon $objectIcon'></i> " . $doc->objectName;?>
</td>
<td class="c-module">
<?php
$moduleDivide = $doc->moduleName ? ' > ' : '';
$moduleName = $doc->libName . $moduleDivide . $doc->moduleName;
$spaceMethod = zget($config->doc->spaceMethod, $doc->objectType);
$spaceParams = "libID={$doc->lib}&moduleID={$doc->module}";
if(in_array($doc->objectType, array('product', 'project', 'execution', 'custom'))) $spaceParams = "objectID={$doc->objectID}&$spaceParams";
if(in_array($doc->objectType, array('mine', 'custom'))) $spaceParams = "type={$doc->objectType}&$spaceParams";
if(common::hasPriv('doc', $spaceMethod))
{
echo html::a($this->createLink('doc', $spaceMethod, $spaceParams), $moduleName, '', "title='$moduleName' data-app='{$this->app->tab}'");
}
else
{
echo "<span>$moduleName</span>";
}
?>
</td>
<?php endif;?>
<?php if(!in_array($type, array('mine', 'createby'))):?>
<td class="c-user"><?php echo zget($users, $doc->addedBy);?></td>
<?php endif;?>
<td class="c-datetime"><?php echo formatTime($doc->addedDate, 'Y-m-d');?></td>
+8 -1
View File
@@ -2476,7 +2476,14 @@ class productModel extends model
}
elseif($module == 'feedback')
{
return helper::createLink('feedback', 'browse', "browseType=byProduct&productID=%s");
if($this->config->vision == 'rnd')
{
return helper::createLink('feedback', 'admin', "browseType=byProduct&productID=%s");
}
elseif($this->config->vision == 'lite')
{
return helper::createLink('feedback', 'browse', "browseType=byProduct&productID=%s");
}
}
elseif($module == 'ticket')
{
+2 -3
View File
@@ -238,14 +238,13 @@ class projectModel extends model
->groupBy('t1.root')
->fetchAll('root');
$condition = 't2.project as project';
$estimates = $this->dao->select("$condition, sum(estimate) as estimate")->from(TABLE_TASK)->alias('t1')
$estimates = $this->dao->select("t2.project as project, sum(estimate) as estimate")->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.execution = t2.id')
->where('t1.parent')->lt(1)
->andWhere('t2.project')->in($projectIdList)
->andWhere('t1.deleted')->eq(0)
->andWhere('t2.deleted')->eq(0)
->groupBy('project')
->groupBy('t2.project')
->fetchAll('project');
$this->app->loadClass('pager', $static = true);
+2 -2
View File
@@ -1469,7 +1469,7 @@ class repo extends control
}
}
$latestInDB = $this->dao->select('DISTINCT t1.*')->from(TABLE_REPOHISTORY)->alias('t1')
$latestInDB = $this->dao->select('t1.*')->from(TABLE_REPOHISTORY)->alias('t1')
->leftJoin(TABLE_REPOBRANCH)->alias('t2')->on('t1.id=t2.revision')
->where('t1.repo')->eq($repoID)
->beginIF($repo->SCM == 'Git' and $this->cookie->repoBranch)->andWhere('t2.branch')->eq($this->cookie->repoBranch)->fi()
@@ -1538,7 +1538,7 @@ class repo extends control
$this->repo->setRepoBranch($branch);
setcookie("syncBranch", $branch, 0, $this->config->webRoot, '', $this->config->cookieSecure, true);
$latestInDB = $this->dao->select('DISTINCT t1.*')->from(TABLE_REPOHISTORY)->alias('t1')
$latestInDB = $this->dao->select('t1.*')->from(TABLE_REPOHISTORY)->alias('t1')
->leftJoin(TABLE_REPOBRANCH)->alias('t2')->on('t1.id=t2.revision')
->where('t1.repo')->eq($repoID)
->beginIF(in_array($repo->SCM, $this->config->repo->gitTypeList) and $this->cookie->repoBranch)->andWhere('t2.branch')->eq($this->cookie->repoBranch)->fi()
+1 -1
View File
@@ -780,7 +780,7 @@ class repoModel extends model
->beginIF($begin)->andWhere('t1.time')->ge($begin)->fi()
->beginIF($end)->andWhere('t1.time')->le($end)->fi()
->orderBy('time desc');
if($entry == '/' or empty($entry))$comments->page($pager, 't1.id');
if($entry == '/' or empty($entry)) $comments->page($pager, 't1.id');
$comments = $comments->fetchAll('revision');
foreach($comments as $repoComment)
-7
View File
@@ -7,13 +7,6 @@ $config->report->dailyreminder->task = true;
$config->report->dailyreminder->todo = true;
$config->report->dailyreminder->testTask = true;
global $lang;
$config->report->pivotMenu = array();
$config->report->pivotMenu['product'] = array('link' => "{$lang->product->common}|report|preview|dimension=&group=product");
$config->report->pivotMenu['project'] = array('link' => "{$lang->project->common}|report|preview|dimension=&group=project");
$config->report->pivotMenu['test'] = array('link' => "{$lang->qa->common}|report|preview|dimension=&group=test");
$config->report->pivotMenu['staff'] = array('link' => "{$lang->system->common}|report|preview|dimension=&group=staff");
$config->report->annualData['minMonth'] = 2;
$config->report->annualData['colors'] = array('#0075A9', '#22AC38', '#CAAC32', '#2B4D6D', '#0071a4', '#00a0e9', '#7ecef4');
$config->report->annualData['itemMinWidth'] = array(1 => 3, 2 => 5, 3 => 7, 4 => 9, 5 => 11);
+1 -179
View File
@@ -44,185 +44,7 @@ class report extends control
*/
public function index()
{
$this->locate(inlink('preview'));
}
/**
* Preview a report.
*
* @param int $dimension
* @param string $group
* @param string $module
* @param string $method
* @param string $params
* @access public
* @return void
*/
public function preview($dimension = 0, $group = '', $module = 'report', $method = '', $params = '')
{
$this->prepare4Preview($dimension, $group, $module, $method, $params);
$this->display();
}
/**
* Project deviation report.
*
* @access public
* @return void
*/
public function projectDeviation($begin = 0, $end = 0)
{
$this->session->set('executionList', $this->app->getURI(true), 'execution');
$begin = date('Y-m-d', ($begin ? strtotime($begin) : time() - (date('j') - 1) * 24 * 3600));
$end = date('Y-m-d', ($end ? strtotime($end) : time() + (date('t') - date('j')) * 24 * 3600));
$this->view->title = $this->lang->report->projectDeviation;
$this->view->position[] = $this->lang->report->projectDeviation;
$this->view->executions = $this->report->getExecutions($begin, $end);
$this->view->begin = $begin;
$this->view->end = $end;
$this->view->submenu = 'project';
$this->display();
}
/**
* Product information report.
*
* @params string $conditions
* @access public
* @return void
*/
public function productSummary($conditions = '')
{
$this->app->loadLang('story');
$this->app->loadLang('product');
$this->app->loadLang('productplan');
$this->session->set('productList', $this->app->getURI(true), 'product');
$this->view->title = $this->lang->report->productSummary;
$this->view->position[] = $this->lang->report->productSummary;
$this->view->products = $this->report->getProducts($conditions);
$this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed');
$this->view->submenu = 'product';
$this->view->conditions = $conditions;
$this->display();
}
/**
* Bug create report.
*
* @param int $begin
* @param int $end
* @param int $product
* @param int $execution
* @access public
* @return void
*/
public function bugCreate($begin = 0, $end = 0, $product = 0, $execution = 0)
{
$this->app->loadLang('bug');
$begin = $begin == 0 ? date('Y-m-d', strtotime('last month', strtotime(date('Y-m',time()) . '-01 00:00:01'))) : date('Y-m-d', strtotime($begin));
$end = $end == 0 ? date('Y-m-d', strtotime('now')) : $end = date('Y-m-d', strtotime($end));
$this->view->title = $this->lang->report->bugCreate;
$this->view->position[] = $this->lang->report->bugCreate;
$this->view->begin = $begin;
$this->view->end = $end;
$this->view->bugs = $this->report->getBugs($begin, $end, $product, $execution);
$this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed');
$this->view->executions = array('' => '') + $this->report->getProjectExecutions();
$this->view->products = array('' => '') + $this->loadModel('product')->getPairs('', 0, '', 'all');
$this->view->execution = $execution;
$this->view->product = $product;
$this->view->submenu = 'test';
$this->display();
}
/**
* Bug assign report.
*
* @access public
* @return void
*/
public function bugAssign()
{
$this->session->set('productList', $this->app->getURI(true), 'product');
$this->view->title = $this->lang->report->bugAssign;
$this->view->position[] = $this->lang->report->bugAssign;
$this->view->submenu = 'test';
$this->view->assigns = $this->report->getBugAssign();
$this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed');
$this->display();
}
/**
* Workload report.
*
* @param string $begin
* @param string $end
* @param int $days
* @param int $workday
* @param int $dept
* @param int $assign
*
* @access public
* @return void
*/
public function workload($begin = '', $end = '', $days = 0, $workday = 0, $dept = 0, $assign = 'assign')
{
if($_POST)
{
$data = fixer::input('post')->get();
$begin = $data->begin;
$end = $data->end;
$dept = $data->dept;
$days = $data->days;
$assign = $data->assign;
$workday = $data->workday;
}
$this->app->loadConfig('execution');
$this->session->set('executionList', $this->app->getURI(true), 'execution');
$begin = $begin ? strtotime($begin) : time();
$end = $end ? strtotime($end) : time() + (7 * 24 * 3600);
$end += 24 * 3600;
$beginWeekDay = date('w', $begin);
$begin = date('Y-m-d', $begin);
$end = date('Y-m-d', $end);
if(empty($workday))$workday = $this->config->execution->defaultWorkhours;
$diffDays = helper::diffDate($end, $begin);
if($days > $diffDays) $days = $diffDays;
if(empty($days))
{
$weekDay = $beginWeekDay;
$days = $diffDays;
for($i = 0; $i < $diffDays; $i++,$weekDay++)
{
$weekDay = $weekDay % 7;
if(($this->config->execution->weekend == 2 and $weekDay == 6) or $weekDay == 0) $days --;
}
}
$this->view->title = $this->lang->report->workload;
$this->view->position[] = $this->lang->report->workload;
$this->view->workload = $this->report->getWorkload($dept, $assign);
$this->view->users = $this->loadModel('user')->getPairs('noletter|noclosed');
$this->view->depts = $this->loadModel('dept')->getOptionMenu();
$this->view->begin = $begin;
$this->view->end = date('Y-m-d', strtotime($end) - 24 * 3600);
$this->view->days = $days;
$this->view->workday = $workday;
$this->view->dept = $dept;
$this->view->assign = $assign;
$this->view->allHour = $days * $workday;
$this->view->submenu = 'staff';
$this->display();
$this->locate(inlink('annualData'));
}
/**
-5
View File
@@ -1,5 +0,0 @@
#begin {min-width: 85px;}
#end {min-width: 85px;}
#bug th {font-size: 12px;}
#bug th:nth-child(7) {width: 87px;}
#bug th:nth-child(10) {width: 100px;}
-38
View File
@@ -1,38 +0,0 @@
.choose-date span, .dp-choose-date {display: block; float: left; margin: 0 10px;}
.dp-applied {float: left;}
.choose-date span {line-height: 20px;}
.date {width: 80px;}
ul li {list-style: none;}
.side-col {padding-right: 20px; width: 15%;}
#sidebar>.cell {width: 100%;}
#productList p {margin: 2px 0;}
.table-bordered, .outer.with-side .main, .outer.with-side > form > .table, .outer.with-side > .table {border: none;}
#report-list.list-group {margin-bottom: 0;}
#report-list .list-group-item {padding: 8px 15px; border-left: none; border-right: none;}
#report-list .list-group-item:first-child {border-top: 1px;}
#report-list .list-group-item:last-child {border-bottom: 1px;}
#report-list .list-group-item.active {background: none; color: #333;}
.proversion a {color: #81511C;}
.main > .input-group {margin-bottom: 10px;}
.main > .input-group > .datepicker-wrapper {display: table-cell;}
.main > .input-group > .datepicker-wrapper > .form-control {padding: 5px 10px; height: 30px;}
.main > .input-group > .datepicker-wrapper:before {top: 4px;}
.main > .input-group > .datepicker-wrapper + .input-group-addon {border-left: none; border-right: none;}
td .deviation {padding-left: 20px; text-align: left;}
.up {color: red; padding-right: 2px;}
.down {color: green; padding-right: 2px;}
.zero {color: #66CD00;}
.u50 {color: #ED1C24;}
.u30 {color: #F37021;}
.u10 {color: #FAA61A;}
.u0 {color: #FFCB05;}
.d0 {color: #76B043;}
.d20 {color: #33A52E;}
.checkboxes {margin-bottom: 10px;}
.checkboxes .checkbox-primary {margin-bottom: 5px;}
.fixed-header-copy thead tr th {color: #fff !important;}
-4
View File
@@ -1,4 +0,0 @@
.main-position {position: relative;}
.toolbar-padding {padding-right: 100px;}
.child-position {position: absolute; right: 0;}
#reportGroups .active {background-color: #e9f2fb; color: #006af1;}
-5
View File
@@ -1,5 +0,0 @@
td.child {padding-left: 15px;}
.c-name {width: 200px;}
.c-count {width: 70px;}
#conditions {display: flex;}
#conditions .condition-options {margin-left: 16px;}
-2
View File
@@ -1,2 +0,0 @@
.c-hours, .c-deviation, .c-deviation-rate {width: 100px;}
.c-id {width: 70px;}
-1
View File
@@ -1 +0,0 @@
.c-hours, .c-count, .c-workload {width: 100px;}
View File
-22
View File
@@ -1,22 +0,0 @@
function changeParams(obj)
{
var begin = $('#conditions').find('#begin').val();
var end = $('#conditions').find('#end').val();
var product = $('#conditions').find('#product').val();
var execution = $('#conditions').find('#execution').val();
if(begin.indexOf('-') != -1)
{
var beginarray = begin.split("-");
var begin = '';
for(i=0 ; i < beginarray.length ; i++) begin = begin + beginarray[i];
}
if(end.indexOf('-') != -1)
{
var endarray = end.split("-");
var end = '';
for(i=0 ; i < endarray.length ; i++) end = end + endarray[i];
}
link = createLink('report', 'bugcreate', 'begin=' + begin + '&end=' + end + '&product=' + product + '&execution=' + execution);
location.href=link;
}
-10
View File
@@ -1,10 +0,0 @@
$('#conditions input:checkbox').change(function()
{
var conditions = '';
$('#conditions input:checkbox').each(function(i)
{
if($(this).prop('checked')) conditions += $(this).val() + ',';
})
conditions = conditions.substring(0, conditions.length - 1);
location.href = createLink('report', 'productSummary', 'conditions=' + conditions);
})
-34
View File
@@ -1,34 +0,0 @@
$(document).ready(function()
{
initChart();
$('.icon-exclamation-sign').hover(function(){
$('#desc').removeClass('hidden');
}, function(){
$('#desc').addClass('hidden');
});
});
function changeDate(begin, end)
{
if(begin.indexOf('-') != -1)
{
var beginarray = begin.split("-");
var begin = '';
for(i=0 ; i < beginarray.length ; i++)
{
begin = begin + beginarray[i];
}
}
if(end.indexOf('-') != -1)
{
var endarray = end.split("-");
var end = '';
for(i=0 ; i < endarray.length ; i++)
{
end = end + endarray[i];
}
}
link = createLink('report', 'projectdeviation', 'begin=' + begin + '&end=' + end);
location.href=link;
}
-84
View File
@@ -1,84 +0,0 @@
function changeParams(obj)
{
var begin = $('#conditions').find('#begin').val();
var end = $('#conditions').find('#end').val();
var workday = $('#conditions').find('#workday').val();
var dept = $('#conditions').find('#dept').val();
var assign = $('#conditions').find('#assign').val();
var days = diffDate(begin, end);
$('#days').val(days);
if(begin.indexOf('-') != -1)
{
var beginarray = begin.split("-");
var begin = '';
for(i = 0; i < beginarray.length; i++) begin = begin + beginarray[i];
}
if(end.indexOf('-') != -1)
{
var endarray = end.split("-");
var end = '';
for(i = 0 ; i < endarray.length ; i++) end = end + endarray[i];
}
var link = createLink('report', 'workload', 'begin=' + begin + '&end=' + end + '&days=' + days + '&workday=' + workday + '&dept=' + dept + '&assign=' + assign);
location.href = link;
}
/**
* Convert a date string to date object in js.
*
* @param string $date
* @access public
* @return date
*/
function convertStringToDate(dateString)
{
dateString = dateString.split('-');
return new Date(dateString[0], dateString[1] - 1, dateString[2]);
}
/**
* Compute the diff days of two date.
*
* @param string $date1
* @param string $date1
* @access public
* @return int
*/
function diffDate(date1, date2)
{
date1 = convertStringToDate(date1);
date2 = convertStringToDate(date2);
delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1;
weekEnds = 0;
for(i = 0; i < delta; i++)
{
if((weekend == 2 && date1.getDay() == 6) || date1.getDay() == 0) weekEnds ++;
date1 = date1.valueOf();
date1 += 1000 * 60 * 60 * 24;
date1 = new Date(date1);
}
return delta - weekEnds;
}
$(function()
{
var options =
{
language: config.clientLang,
weekStart: 1,
todayBtn: 1,
autoclose: 1,
todayHighlight: 1,
startView: 2,
forceParse: 0,
showMeridian: 1,
minView: 2,
format: 'yyyy-mm-dd',
startDate: new Date()
};
$('input#begin,input#end').fixedDate().datetimepicker(options);
});
+37 -42
View File
@@ -9,31 +9,27 @@
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = 'Home';
$lang->report->list = 'Liste';
$lang->report->preview = 'View Pivot Table';
$lang->report->item = 'Eintrag';
$lang->report->value = 'Wert';
$lang->report->percent = '%';
$lang->report->undefined = 'Undefiniert';
$lang->report->query = 'Abfrage';
$lang->report->annual = 'Annual Summary';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->viewEveryoneAnnual = 'View everyone annual summary';
$lang->report->index = 'Home';
$lang->report->list = 'Liste';
$lang->report->item = 'Eintrag';
$lang->report->value = 'Wert';
$lang->report->percent = '%';
$lang->report->undefined = 'Undefiniert';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->assign['noassign'] = 'Nicht zugeordnet';
$lang->report->assign['assign'] = 'Zugeordnet';
@@ -53,18 +49,6 @@ $lang->report->end = 'End';
$lang->report->dept = 'Abteilung';
$lang->report->deviationChart = "{$lang->projectCommon} Deviation Chart";
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = $lang->productCommon . ' Zusammenfassung|report|productsummary';
$lang->reportList->project->lists[10] = "{$lang->execution->common} Abweichnung|report|projectdeviation";
$lang->reportList->test->lists[10] = 'Bugs gemeldet|report|bugcreate';
$lang->reportList->test->lists[13] = 'Bugs zugeordnet|report|bugassign';
$lang->reportList->staff->lists[10] = 'Team Arbeitslast|report|workload';
$lang->report->id = 'ID';
$lang->report->execution = $lang->executionCommon;
$lang->report->product = $lang->productCommon;
@@ -110,12 +94,6 @@ $lang->report->mailTitle->task = " Aufgaben (%s),";
$lang->report->mailTitle->todo = " Todo (%s),";
$lang->report->mailTitle->testTask = " Test Aufgaben (%s),";
$lang->report->deviationDesc = 'According to the Closed Execution Deviation Rate = ((Total Cost - Total Estimate) / Total Estimate), the Deviation Rate is n/a when the Total Estimate is 0.';
$lang->report->proVersion = '<a href="https://www.zentao.net/page/enterprise.html" target="_blank">Testen Sie ZenTao Pro für mehr Informationen!</a>';
$lang->report->proVersionEn = '<a href="https://www.zentao.pm/" etarget="_blank">Testen Sie ZenTao Pro für mehr Informationen!</a>';
$lang->report->workloadDesc = 'Workload = the total left hours of all tasks of the user / selected days * hours per day.
For example: the begin and end date is January 1st to January 7th, and the total work days is 5 days, 8 hours per day. The Work load is all unfinished tasks assigned to this user to be finished in 5 days, 8 hours per day.';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s work summary in %s";
$lang->report->annualData->exportByZentao = "Export By ZenTao";
@@ -216,3 +194,20 @@ $lang->report->annualData->radarItems['execution'] = $lang->projectCommon;
$lang->report->annualData->radarItems['devel'] = "Development";
$lang->report->annualData->radarItems['qa'] = "QA";
$lang->report->annualData->radarItems['other'] = "Other";
$lang->report->companyRadar = "公司能力雷达图";
$lang->report->outputData = "产出数据";
$lang->report->outputTotal = "产出总数";
$lang->report->storyOutput = "需求产出";
$lang->report->planOutput = "计划产出";
$lang->report->releaseOutput = "发布产出";
$lang->report->executionOutput = "执行产出";
$lang->report->taskOutput = "任务产出";
$lang->report->bugOutput = "Bug产出";
$lang->report->caseOutput = "用例产出";
$lang->report->bugProgress = "Bug进展";
$lang->report->productProgress = "{$lang->productCommon}进展";
$lang->report->executionProgress = "执行进展";
$lang->report->projectProgress = "{$lang->projectCommon}进展";
$lang->report->yearProjectOverview = "年度{$lang->projectCommon}总览";
$lang->report->projectOverview = "截止目前{$lang->projectCommon}总览";
+37 -42
View File
@@ -9,31 +9,27 @@
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = 'Report Home';
$lang->report->list = 'Pivot Table';
$lang->report->preview = 'View Pivot Table';
$lang->report->item = 'Item';
$lang->report->value = 'Value';
$lang->report->percent = '%';
$lang->report->undefined = 'Undefined';
$lang->report->query = 'Query';
$lang->report->annual = 'Annual Summary';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->viewEveryoneAnnual = 'View everyone annual summary';
$lang->report->index = 'Report Home';
$lang->report->list = 'Pivot Table';
$lang->report->item = 'Item';
$lang->report->value = 'Value';
$lang->report->percent = '%';
$lang->report->undefined = 'Undefined';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->assign['noassign'] = 'Unassigned';
$lang->report->assign['assign'] = 'Assigned';
@@ -53,18 +49,6 @@ $lang->report->end = ' End';
$lang->report->dept = 'Department';
$lang->report->deviationChart = "{$lang->projectCommon} Deviation Chart";
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = $lang->productCommon . ' Summary|report|productsummary';
$lang->reportList->project->lists[10] = "{$lang->execution->common} Deviation|report|projectdeviation";
$lang->reportList->test->lists[10] = 'Bug Reported Summary|report|bugcreate';
$lang->reportList->test->lists[13] = 'Bug Assigned Summary|report|bugassign';
$lang->reportList->staff->lists[10] = 'Team Workload Summary|report|workload';
$lang->report->id = 'ID';
$lang->report->execution = $lang->execution->common;
$lang->report->product = $lang->productCommon;
@@ -110,12 +94,6 @@ $lang->report->mailTitle->task = " Task (%s),";
$lang->report->mailTitle->todo = " Todo (%s),";
$lang->report->mailTitle->testTask = " Request (%s),";
$lang->report->deviationDesc = 'According to the Closed Execution Deviation Rate = ((Total Cost - Total Estimate) / Total Estimate), the Deviation Rate is n/a when the Total Estimate is 0.';
$lang->report->proVersion = '<a href="https://www.zentao.net/page/enterprise.html" target="_blank">Try ZenTao Biz for more!</a>';
$lang->report->proVersionEn = '<a href="https://www.zentao.pm/" target="_blank">Try ZenTao Biz for more!</a>';
$lang->report->workloadDesc = 'Workload = the total left hours of all tasks of the user / selected days * hours per day.
For example: the begin and end date is January 1st to January 7th, and the total work days is 5 days, 8 hours per day. The Work load is all unfinished tasks assigned to this user to be finished in 5 days, 8 hours per day.';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s work summary in %s";
$lang->report->annualData->exportByZentao = "Export By ZenTao";
@@ -216,3 +194,20 @@ $lang->report->annualData->radarItems['execution'] = $lang->projectCommon;
$lang->report->annualData->radarItems['devel'] = "Development";
$lang->report->annualData->radarItems['qa'] = "QA";
$lang->report->annualData->radarItems['other'] = "Other";
$lang->report->companyRadar = "公司能力雷达图";
$lang->report->outputData = "产出数据";
$lang->report->outputTotal = "产出总数";
$lang->report->storyOutput = "需求产出";
$lang->report->planOutput = "计划产出";
$lang->report->releaseOutput = "发布产出";
$lang->report->executionOutput = "执行产出";
$lang->report->taskOutput = "任务产出";
$lang->report->bugOutput = "Bug产出";
$lang->report->caseOutput = "用例产出";
$lang->report->bugProgress = "Bug进展";
$lang->report->productProgress = "{$lang->productCommon}进展";
$lang->report->executionProgress = "执行进展";
$lang->report->projectProgress = "{$lang->projectCommon}进展";
$lang->report->yearProjectOverview = "年度{$lang->projectCommon}总览";
$lang->report->projectOverview = "截止目前{$lang->projectCommon}总览";
+37 -42
View File
@@ -9,31 +9,27 @@
* @version $Id: en.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = 'Accueil Rapports';
$lang->report->list = 'Rapports';
$lang->report->preview = 'View Pivot Table';
$lang->report->item = 'Item';
$lang->report->value = 'Valeur';
$lang->report->percent = '%';
$lang->report->undefined = 'N/D';
$lang->report->query = 'Requête';
$lang->report->annual = 'Résumé Annuel';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->viewEveryoneAnnual = 'View everyone annual summary';
$lang->report->index = 'Accueil Rapports';
$lang->report->list = 'Rapports';
$lang->report->item = 'Item';
$lang->report->value = 'Valeur';
$lang->report->percent = '%';
$lang->report->undefined = 'N/D';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'AFD8F8';
$lang->report->assign['noassign'] = 'Non affecté';
$lang->report->assign['assign'] = 'Affecté';
@@ -53,18 +49,6 @@ $lang->report->end = 'End';
$lang->report->dept = 'Compartiment';
$lang->report->deviationChart = "{$lang->projectCommon} Deviation Chart";
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = 'Résumé ' . $lang->productCommon . '|report|productsummary';
$lang->reportList->project->lists[10] = "Dérv {$lang->execution->common}|report|projectdeviation";
$lang->reportList->test->lists[10] = 'Résumé remontée Bugs|report|bugcreate';
$lang->reportList->test->lists[13] = 'Résumé affectation Bugs|report|bugassign';
$lang->reportList->staff->lists[10] = 'Résumé charge travail|report|workload';
$lang->report->id = 'ID';
$lang->report->execution = $lang->executionCommon;
$lang->report->product = $lang->productCommon;
@@ -110,12 +94,6 @@ $lang->report->mailTitle->task = " Tâches (%s),";
$lang->report->mailTitle->todo = " Agenda (%s),";
$lang->report->mailTitle->testTask = " Recettes (%s),";
$lang->report->deviationDesc = 'According to the Closed Execution Deviation Rate = ((Total Cost - Total Estimate) / Total Estimate), the Deviation Rate is n/a when the Total Estimate is 0.';
$lang->report->proVersion = '<a href="https://www.zentao.pm/page/vs.html" target="_blank">Essayez ZenTao Pro pour en savoir plus !</a>';
$lang->report->proVersionEn = '<a href="https://www.zentao.pm/page/vs.html" target="_blank">Try ZenTao Pro for more!</a>';
$lang->report->workloadDesc = 'Workload = the total left hours of all tasks of the user / selected days * hours per day.
For example: the begin and end date is January 1st to January 7th, and the total work days is 5 days, 8 hours per day. The Work load is all unfinished tasks assigned to this user to be finished in 5 days, 8 hours per day.';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s work summary in %s";
$lang->report->annualData->exportByZentao = "Export By ZenTao";
@@ -216,3 +194,20 @@ $lang->report->annualData->radarItems['execution'] = $lang->projectCommon;
$lang->report->annualData->radarItems['devel'] = "Development";
$lang->report->annualData->radarItems['qa'] = "QA";
$lang->report->annualData->radarItems['other'] = "Other";
$lang->report->companyRadar = "公司能力雷达图";
$lang->report->outputData = "产出数据";
$lang->report->outputTotal = "产出总数";
$lang->report->storyOutput = "需求产出";
$lang->report->planOutput = "计划产出";
$lang->report->releaseOutput = "发布产出";
$lang->report->executionOutput = "执行产出";
$lang->report->taskOutput = "任务产出";
$lang->report->bugOutput = "Bug产出";
$lang->report->caseOutput = "用例产出";
$lang->report->bugProgress = "Bug进展";
$lang->report->productProgress = "{$lang->productCommon}进展";
$lang->report->executionProgress = "执行进展";
$lang->report->projectProgress = "{$lang->projectCommon}进展";
$lang->report->yearProjectOverview = "年度{$lang->projectCommon}总览";
$lang->report->projectOverview = "截止目前{$lang->projectCommon}总览";
+36 -38
View File
@@ -9,29 +9,26 @@
* @version $Id: vi.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = 'Trang báo cáo';
$lang->report->list = 'Báo cáo';
$lang->report->preview = 'View Pivot Table';
$lang->report->item = 'Hạng mục';
$lang->report->value = 'Giá trị';
$lang->report->percent = '%';
$lang->report->undefined = 'Chưa định nghĩa';
$lang->report->query = 'Truy vấn';
$lang->report->annual = 'Tóm tắt theo năm';
$lang->report->project = 'Project';
$lang->report->index = 'Trang báo cáo';
$lang->report->list = 'Báo cáo';
$lang->report->item = 'Hạng mục';
$lang->report->value = 'Giá trị';
$lang->report->percent = '%';
$lang->report->undefined = 'Chưa định nghĩa';
$lang->report->project = 'Project';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->assign['noassign'] = 'Chưa giao';
$lang->report->assign['assign'] = 'Đã giao';
@@ -51,18 +48,6 @@ $lang->report->end = 'End';
$lang->report->dept = 'Phòng/Ban';
$lang->report->deviationChart = 'Biểu đồ chênh lệcthực hiệnh';
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = 'Tóm tắt '.$lang->productCommon . '|report|productsummary';
$lang->reportList->project->lists[10] = 'Chênh lệchthực hiện|reportprojectdeviation';
$lang->reportList->test->lists[10] = 'Báo cáo Bug|report|bugcreate';
$lang->reportList->test->lists[13] = 'Bàn giao Bug|report|bugassign';
$lang->reportList->staff->lists[10] = 'Lượng công việc đội nhóm|report|workload';
$lang->report->id = 'ID';
$lang->report->execution = $lang->executionCommon;
$lang->report->product = $lang->productCommon;
@@ -108,10 +93,6 @@ $lang->report->mailTitle->task = " %s) nhiệm vụ,";
$lang->report->mailTitle->todo = " (%s) việc,";
$lang->report->mailTitle->testTask = " (%s) yêu cầu,";
$lang->report->deviationDesc = 'According to the Closed Execution Deviation Rate = ((Total Cost - Total Estimate) / Total Estimate), the Deviation Rate is n/a when the Total Estimate is 0.';
$lang->report->proVersion = '<a href="https://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">Hãy thử ZenTao Pro để biết thêm!</a>';
$lang->report->proVersionEn = '<a href="http://api.zentao.pm/goto.php?item=proversion&from=reportpage" target="_blank">Hãy thử ZenTao Pro để biết thêm!</a>';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s work summary in %s";
$lang->report->annualData->exportByZentao = "Export By ZenTao";
@@ -209,3 +190,20 @@ $lang->report->annualData->radarItems['execution'] = "Project";
$lang->report->annualData->radarItems['devel'] = "Development";
$lang->report->annualData->radarItems['qa'] = "QA";
$lang->report->annualData->radarItems['other'] = "Other";
$lang->report->companyRadar = "公司能力雷达图";
$lang->report->outputData = "产出数据";
$lang->report->outputTotal = "产出总数";
$lang->report->storyOutput = "需求产出";
$lang->report->planOutput = "计划产出";
$lang->report->releaseOutput = "发布产出";
$lang->report->executionOutput = "执行产出";
$lang->report->taskOutput = "任务产出";
$lang->report->bugOutput = "Bug产出";
$lang->report->caseOutput = "用例产出";
$lang->report->bugProgress = "Bug进展";
$lang->report->productProgress = "{$lang->productCommon}进展";
$lang->report->executionProgress = "执行进展";
$lang->report->projectProgress = "{$lang->projectCommon}进展";
$lang->report->yearProjectOverview = "年度{$lang->projectCommon}总览";
$lang->report->projectOverview = "截止目前{$lang->projectCommon}总览";
+20 -42
View File
@@ -9,31 +9,27 @@
* @version $Id: zh-cn.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = '统计首页';
$lang->report->list = '透视表';
$lang->report->preview = '查看透视表';
$lang->report->item = '条目';
$lang->report->value = '值';
$lang->report->percent = '百分比';
$lang->report->undefined = '未设定';
$lang->report->query = '查询';
$lang->report->annual = '年度总结';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->viewEveryoneAnnual = '查看所有人年度总结';
$lang->report->index = '统计首页';
$lang->report->list = '透视表';
$lang->report->item = '条目';
$lang->report->value = '值';
$lang->report->percent = '百分比';
$lang->report->undefined = '未设定';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->assign['noassign'] = '未指派';
$lang->report->assign['assign'] = '已指派';
@@ -53,18 +49,6 @@ $lang->report->end = '结束日期';
$lang->report->dept = '部门';
$lang->report->deviationChart = "{$lang->execution->common}偏差曲线";
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = $lang->productCommon . '汇总表|report|productsummary';
$lang->reportList->project->lists[10] = "{$lang->execution->common}偏差报表|report|projectdeviation";
$lang->reportList->test->lists[10] = 'Bug创建表|report|bugcreate';
$lang->reportList->test->lists[13] = 'Bug指派表|report|bugassign';
$lang->reportList->staff->lists[10] = '员工负载表|report|workload';
$lang->report->id = '编号';
$lang->report->execution = $lang->execution->common;
$lang->report->product = $lang->productCommon;
@@ -110,12 +94,6 @@ $lang->report->mailTitle->task = " 任务(%s),";
$lang->report->mailTitle->todo = " 待办(%s),";
$lang->report->mailTitle->testTask = " 测试版本(%s),";
$lang->report->deviationDesc = '按照已关闭执行统计偏差率(偏差率 = (总消耗 - 总预计) / 总预计),总预计为0时偏差率为n/a。';
$lang->report->proVersion = '<a href="https://www.zentao.net/page/enterprise.html" target="_blank">更多精彩,尽在企业版!</a>';
$lang->report->proVersionEn = '<a href="https://www.zentao.pm/" target="_blank">Try ZenTao Biz for more!</a>';
$lang->report->workloadDesc = '工作负载=用户所有任务剩余工时之和/选择的时间天数*每天的工时。例如:起止时间设为1月1日~1月7日、工作日天数5天、每天工时8h,统计的是所有指派给该人员的未完成的任务,在5天内,每天8h的情况下的工作负载。';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s %s年工作汇总";
$lang->report->annualData->exportByZentao = "由禅道系统导出";
+20 -40
View File
@@ -9,29 +9,27 @@
* @version $Id: zh-tw.php 5080 2013-07-10 00:46:59Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
$lang->report->index = '統計首頁';
$lang->report->list = '透视表';
$lang->report->preview = '查看透视表';
$lang->report->item = '條目';
$lang->report->value = '值';
$lang->report->percent = '百分比';
$lang->report->undefined = '未設定';
$lang->report->query = '查詢';
$lang->report->annual = '年度總結';
$lang->report->project = '項目';
$lang->report->index = '統計首頁';
$lang->report->list = '透视表';
$lang->report->item = '條目';
$lang->report->value = '值';
$lang->report->percent = '百分比';
$lang->report->undefined = '未設定';
$lang->report->project = $lang->projectCommon;
$lang->report->PO = 'PO';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->colors[] = 'AFD8F8';
$lang->report->colors[] = 'F6BD0F';
$lang->report->colors[] = '8BBA00';
$lang->report->colors[] = 'FF8E46';
$lang->report->colors[] = '008E8E';
$lang->report->colors[] = 'D64646';
$lang->report->colors[] = '8E468E';
$lang->report->colors[] = '588526';
$lang->report->colors[] = 'B3AA00';
$lang->report->colors[] = '008ED6';
$lang->report->colors[] = '9D080D';
$lang->report->colors[] = 'A186BE';
$lang->report->assign['noassign'] = '未指派';
$lang->report->assign['assign'] = '已指派';
@@ -51,18 +49,6 @@ $lang->report->end = '結束日期';
$lang->report->dept = '部門';
$lang->report->deviationChart = "{$lang->execution->common}偏差曲綫";
$lang->reportList = new stdclass();
$lang->reportList->product = new stdclass();
$lang->reportList->project = new stdclass();
$lang->reportList->test = new stdclass();
$lang->reportList->staff = new stdclass();
$lang->reportList->product->lists[10] = $lang->productCommon . '彙總表|report|productsummary';
$lang->reportList->project->lists[10] = "{$lang->execution->common}偏差報表|report|projectdeviation";
$lang->reportList->test->lists[10] = 'Bug創建表|report|bugcreate';
$lang->reportList->test->lists[13] = 'Bug指派表|report|bugassign';
$lang->reportList->staff->lists[10] = '員工負載表|report|workload';
$lang->report->id = '編號';
$lang->report->execution = $lang->execution->common;
$lang->report->product = $lang->productCommon;
@@ -108,12 +94,6 @@ $lang->report->mailTitle->task = " 任務(%s),";
$lang->report->mailTitle->todo = " 待辦(%s),";
$lang->report->mailTitle->testTask = " 測試版本(%s),";
$lang->report->deviationDesc = '按照已關閉執行統計偏差率(偏差率 = (總消耗 - 總預計) / 總預計),總預計為0時偏差率為n/a。';
$lang->report->proVersion = '<a href="https://api.zentao.net/goto.php?item=proversion&from=reportpage" target="_blank">更多精彩,盡在專業版!</a>';
$lang->report->proVersionEn = '<a href="http://api.zentao.pm/goto.php?item=proversion&from=reportpage" target="_blank">Try ZenTao Pro for more!</a>';
$lang->report->workloadDesc = '工作負載=用戶所有任務剩餘工時之和/選擇的時間天數*每天的工時。例如:起止時間設為1月1日~1月7日、工作日天數5天、每天工時8h,統計的是所有指派給該人員的未完成的任務,在5天內,每天8h的情況下的工作負載。';
$lang->report->annualData = new stdclass();
$lang->report->annualData->title = "%s %s年工作彙總";
$lang->report->annualData->exportByZentao = "由禪道系統導出";
-384
View File
@@ -88,378 +88,6 @@ class reportModel extends model
return $dateList;
}
/**
* Get executions.
*
* @param string $begin
* @param string $end
* @access public
* @return array
*/
public function getExecutions($begin = 0, $end = 0)
{
$permission = common::hasPriv('report', 'showProject') or $this->app->user->admin;
$tasks = $this->dao->select('t1.*, IF(t3.multiple = "1", t2.name, "") as executionName, t3.name as projectName, t2.multiple')->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t1.project = t3.id')
->where('t1.status')->ne('cancel')
->andWhere('t1.deleted')->eq(0)
->beginIF(!$permission)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t2.deleted')->eq(0)
->andWhere('t1.parent')->lt(1)
->andWhere('t2.status')->eq('closed')
->beginIF($begin)->andWhere('t2.begin')->ge($begin)->fi()
->beginIF($end)->andWhere('t2.end')->le($end)->fi()
->orderBy('t2.end_desc')
->fetchAll();
$executions = array();
foreach($tasks as $task)
{
$executionID = $task->execution;
if(!isset($executions[$executionID]))
{
$executions[$executionID] = new stdclass();
$executions[$executionID]->estimate = 0;
$executions[$executionID]->consumed = 0;
}
$executions[$executionID]->projectID = $task->project;
$executions[$executionID]->projectName = $task->projectName;
$executions[$executionID]->multiple = $task->multiple;
$executions[$executionID]->name = $task->executionName;
$executions[$executionID]->estimate += $task->estimate;
$executions[$executionID]->consumed += $task->consumed;
}
return $executions;
}
/**
* Get products.
*
* @access public
* @return array
*/
public function getProducts($conditions, $storyType = 'story')
{
$permission = common::hasPriv('report', 'showProduct') or $this->app->user->admin;
$products = $this->dao->select('t1.id as id, t1.code, t1.name, t1.PO')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_PROGRAM)->alias('t2')->on('t1.program = t2.id')
->where('t1.deleted')->eq(0)
->andWhere('t1.shadow')->eq(0)
->andWhere('t1.vision')->eq('rnd')
->beginIF(strpos($conditions, 'closedProduct') === false)->andWhere('t1.status')->ne('closed')->fi()
->beginIF(!$permission)->andWhere('t1.id')->in($this->app->user->view->products)->fi()
->orderBy('t2.order_asc, t1.line_desc, t1.order_asc')
->fetchAll('id');
$plans = $this->dao->select('id, product, branch, parent, title, begin, end')->from(TABLE_PRODUCTPLAN)->where('deleted')->eq(0)->andWhere('product')->in(array_keys($products))
->beginIF(strpos($conditions, 'overduePlan') === false)->andWhere('end')->gt(date('Y-m-d'))->fi()
->orderBy('product,parent_desc,begin')
->fetchAll('id');
foreach($plans as $plan)
{
if($plan->parent > 0)
{
$parentPlan = zget($plans, $plan->parent, null);
if($parentPlan)
{
$products[$plan->product]->plans[$parentPlan->id] = $parentPlan;
unset($plans[$parentPlan->id]);
}
$plan->title = '>>' . $plan->title;
}
$products[$plan->product]->plans[$plan->id] = $plan;
}
$planStories = array();
$unplannedStories = array();
$stmt = $this->dao->select('id,plan,product,status')
->from(TABLE_STORY)
->where('deleted')->eq(0)
->andWhere('parent')->ge(0)
->beginIF($storyType)->andWhere('type')->eq($storyType)->fi()
->query();
while($story = $stmt->fetch())
{
if(empty($story->plan))
{
$unplannedStories[$story->id] = $story;
continue;
}
$storyPlans = array();
$storyPlans[] = $story->plan;
if(strpos($story->plan, ',') !== false) $storyPlans = explode(',', trim($story->plan, ','));
foreach($storyPlans as $planID)
{
if(isset($plans[$planID]))
{
$planStories[$story->id] = $story;
break;
}
}
}
foreach($planStories as $story)
{
$storyPlans = array();
$storyPlans[] = $story->plan;
if(strpos($story->plan, ',') !== false) $storyPlans = explode(',', trim($story->plan, ','));
foreach($storyPlans as $planID)
{
if(!isset($plans[$planID])) continue;
$plan = $plans[$planID];
$products[$plan->product]->plans[$planID]->status[$story->status] = isset($products[$plan->product]->plans[$planID]->status[$story->status]) ? $products[$plan->product]->plans[$planID]->status[$story->status] + 1 : 1;
}
}
foreach($unplannedStories as $story)
{
$product = $story->product;
if(isset($products[$product]))
{
if(!isset($products[$product]->plans[0]))
{
$products[$product]->plans[0] = new stdClass();
$products[$product]->plans[0]->title = $this->lang->report->unplanned;
$products[$product]->plans[0]->begin = '';
$products[$product]->plans[0]->end = '';
}
$products[$product]->plans[0]->status[$story->status] = isset($products[$product]->plans[0]->status[$story->status]) ? $products[$product]->plans[0]->status[$story->status] + 1 : 1;
}
}
unset($products['']);
return $products;
}
/**
* Get bugs
*
* @param int $begin
* @param int $end
* @param int $product
* @param int $execution
* @access public
* @return array
*/
public function getBugs($begin, $end, $product, $execution)
{
$end = date('Ymd', strtotime("$end +1 day"));
$bugs = $this->dao->select('id, resolution, openedBy, status')->from(TABLE_BUG)
->where('deleted')->eq(0)
->andWhere('openedDate')->ge($begin)
->andWhere('openedDate')->le($end)
->beginIF($product)->andWhere('product')->eq($product)->fi()
->beginIF($execution)->andWhere('execution')->eq($execution)->fi()
->fetchAll();
$bugCreate = array();
foreach($bugs as $bug)
{
$bugCreate[$bug->openedBy][$bug->resolution] = empty($bugCreate[$bug->openedBy][$bug->resolution]) ? 1 : $bugCreate[$bug->openedBy][$bug->resolution] + 1;
$bugCreate[$bug->openedBy]['all'] = empty($bugCreate[$bug->openedBy]['all']) ? 1 : $bugCreate[$bug->openedBy]['all'] + 1;
if($bug->status == 'resolved' or $bug->status == 'closed')
{
$bugCreate[$bug->openedBy]['resolved'] = empty($bugCreate[$bug->openedBy]['resolved']) ? 1 : $bugCreate[$bug->openedBy]['resolved'] + 1;
}
}
foreach($bugCreate as $account => $bug)
{
$validRate = 0;
if(isset($bug['fixed'])) $validRate += $bug['fixed'];
if(isset($bug['postponed'])) $validRate += $bug['postponed'];
$bugCreate[$account]['validRate'] = (isset($bug['resolved']) and $bug['resolved']) ? ($validRate / $bug['resolved']) : "0";
}
uasort($bugCreate, 'sortSummary');
return $bugCreate;
}
/**
* Get workload.
*
* @param int $dept
* @param string $assign
*
* @access public
* @return array
*/
public function getWorkload($dept = 0, $assign = 'assign')
{
$deptUsers = array();
if($dept) $deptUsers = $this->loadModel('dept')->getDeptUserPairs($dept);
if($assign == 'noassign')
{
$members = $this->dao->select('t1.account,t2.name,t2.multiple,t1.root,t3.id as project,t3.name as projectname')->from(TABLE_TEAM)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t2.id = t1.root')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t3.id = t2.project')
->where('t2.status')->notin('cancel, closed, done, suspended')
->beginIF($dept)->andWhere('t1.account')->in(array_keys($deptUsers))->fi()
->andWhere('t1.type')->eq('execution')
->andWhere("t1.account NOT IN(SELECT `assignedTo` FROM " . TABLE_TASK . " WHERE `execution` = t1.`root` AND `status` NOT IN('cancel, closed, done, pause') AND assignedTo != '' GROUP BY assignedTo)")
->andWhere('t2.deleted')->eq('0')
->fetchGroup('account', 'name');
$workload = array();
if(!empty($members))
{
foreach($members as $member => $executions)
{
$project = array();
if(!empty($executions))
{
foreach($executions as $name => $execution)
{
$project[$execution->projectname]['projectID'] = $execution->project;
$project[$execution->projectname]['execution'][$name]['executionID'] = $execution->root;
$project[$execution->projectname]['execution'][$name]['multiple'] = $execution->multiple;
$project[$execution->projectname]['execution'][$name]['count'] = 0;
$project[$execution->projectname]['execution'][$name]['manhour'] = 0;
$workload[$member]['total']['count'] = 0;
$workload[$member]['total']['manhour'] = 0;
}
}
$workload[$member]['task']['project'] = $project;
}
}
return $workload;
}
$stmt = $this->dao->select('t1.*, t2.name as executionName, t3.name as projectname, t2.multiple')->from(TABLE_TASK)->alias('t1')
->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution = t2.id')
->leftJoin(TABLE_PROJECT)->alias('t3')->on('t3.id = t2.project')
->where('t1.deleted')->eq(0)
->andWhere('t1.status')->in('wait,pause,doing')
->andWhere('t2.deleted')->eq(0)
->andWhere('t2.status')->in('wait,suspended,doing')
->andWhere('assignedTo')->ne('');
$allTasks = $stmt->fetchAll('id');
if(empty($allTasks)) return array();
$tasks = array();
if(empty($dept))
{
$tasks = $allTasks;
}
else
{
foreach($allTasks as $taskID => $task)
{
if(isset($deptUsers[$task->assignedTo])) $tasks[$taskID] = $task;
}
}
/* Fix bug for children. */
$parents = array();
$taskIdList = array();
$taskGroups = array();
foreach($tasks as $task)
{
if($task->parent > 0) $parents[$task->parent] = $task->parent;
$taskGroups[$task->assignedTo][$task->id] = $task;
}
$stmt = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($allTasks))
->beginIF($dept)->andWhere('account')->in(array_keys($deptUsers))->fi()
->query();
$multiTaskTeams = array();
while($taskTeam = $stmt->fetch())
{
$account = $taskTeam->account;
if(!isset($multiTaskTeams[$account][$taskTeam->task]))
{
$multiTaskTeams[$account][$taskTeam->task] = $taskTeam;
}
else
{
$multiTaskTeams[$account][$taskTeam->task]->estimate += $taskTeam->estimate;
$multiTaskTeams[$account][$taskTeam->task]->consumed += $taskTeam->consumed;
$multiTaskTeams[$account][$taskTeam->task]->left += $taskTeam->left;
}
}
foreach($multiTaskTeams as $assignedTo => $taskTeams)
{
foreach($taskTeams as $taskTeam)
{
$userTask = clone $allTasks[$taskTeam->task];
$userTask->estimate = $taskTeam->estimate;
$userTask->consumed = $taskTeam->consumed;
$userTask->left = $taskTeam->left;
$taskGroups[$assignedTo][$taskTeam->task] = $userTask;
}
}
$workload = array();
foreach($taskGroups as $user => $userTasks)
{
if($user)
{
$project = array();
foreach($userTasks as $task)
{
if(isset($parents[$task->id])) continue;
$project[$task->projectname]['projectID'] = isset($project[$task->projectname]['projectID']) ? $project[$task->projectname]['projectID'] : $task->project;
$project[$task->projectname]['execution'][$task->executionName]['executionID'] = isset($project[$task->projectname]['execution'][$task->executionName]['executionID']) ? $project[$task->projectname]['execution'][$task->executionName]['executionID'] : $task->execution;
$project[$task->projectname]['execution'][$task->executionName]['multiple'] = isset($project[$task->projectname]['execution'][$task->executionName]['multiple']) ? $project[$task->projectname]['execution'][$task->executionName]['multiple'] : $task->multiple;
$project[$task->projectname]['execution'][$task->executionName]['count'] = isset($project[$task->projectname]['execution'][$task->executionName]['count']) ? $project[$task->projectname]['execution'][$task->executionName]['count'] + 1 : 1;
$project[$task->projectname]['execution'][$task->executionName]['manhour'] = isset($project[$task->projectname]['execution'][$task->executionName]['manhour']) ? $project[$task->projectname]['execution'][$task->executionName]['manhour'] + $task->left : $task->left;
$workload[$user]['total']['count'] = isset($workload[$user]['total']['count']) ? $workload[$user]['total']['count'] + 1 : 1;
$workload[$user]['total']['manhour'] = isset($workload[$user]['total']['manhour']) ? $workload[$user]['total']['manhour'] + $task->left : $task->left;
}
if(empty($project)) continue;
$workload[$user]['task']['project'] = $project;
}
}
unset($workload['closed']);
return $workload;
}
/**
* Get bug assign.
*
* @access public
* @return array
*/
public function getBugAssign()
{
$bugs = $this->dao->select('t1.*, t2.name AS productName')->from(TABLE_BUG)->alias('t1')
->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id')
->where('t1.deleted')->eq(0)
->andWhere('t1.status')->eq('active')
->andWhere('t2.deleted')->eq(0)
->fetchGroup('assignedTo');
$productProjects = $this->dao->select('t2.product, t2.project')->from(TABLE_PROJECT)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
->where('t1.type')->eq('project')
->andWhere('t1.hasProduct')->eq(0)
->fetchPairs();
$assign = array();
foreach($bugs as $user => $userBugs)
{
if($user)
{
foreach($userBugs as $bug)
{
$assign[$user]['bug'][$bug->productName]['count'] = isset($assign[$user]['bug'][$bug->productName]['count']) ? $assign[$user]['bug'][$bug->productName]['count'] + 1 : 1;
$assign[$user]['bug'][$bug->productName]['productID'] = $bug->product;
$assign[$user]['bug'][$bug->productName]['projectID'] = zget($productProjects, $bug->product, 0);
$assign[$user]['total']['count'] = isset($assign[$user]['total']['count']) ? $assign[$user]['total']['count'] + 1 : 1;
}
}
}
unset($assign['closed']);
return $assign;
}
/**
* Get System URL.
*
@@ -1240,15 +868,3 @@ class reportModel extends model
return $pairs;
}
}
/**
* @param $pre
* @param $next
*
* @return int
*/
function sortSummary($pre, $next)
{
if($pre['validRate'] == $next['validRate']) return 0;
return $pre['validRate'] > $next['validRate'] ? -1 : 1;
}
@@ -1,31 +0,0 @@
<div class="sidebar-toggle">
<i class="icon icon-angle-left"></i>
</div>
<div class="cell">
<div class='panel'>
<div class='panel-heading'>
<div class='panel-title'><?php echo $lang->report->list;?></div>
</div>
<div class='panel-body'>
<div class='list-group'>
<?php
ksort($lang->reportList->$submenu->lists);
foreach($lang->reportList->$submenu->lists as $list)
{
$list .= '|';
list($label, $module, $method, $params) = explode('|', $list);
$class = $label == $title ? 'selected' : '';
if(common::hasPriv($module, $method)) echo html::a($this->createLink($module, $method, $params), '<i class="icon icon-file-text"></i> ' . $label, '', "class='$class' title='$label'");
}
?>
</div>
</div>
</div>
<?php if($this->config->edition == 'open'):?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>BIZ</strong> &nbsp;<span class='text-important'><?php echo (!empty($config->isINT)) ? $lang->report->proVersionEn : $lang->report->proVersion;?></span>
</div>
</div>
<?php endif;?>
</div>
-62
View File
@@ -1,62 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 235px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<?php include 'blockreportlist.html.php';?>
</div>
<div class='main-col'>
<?php if(empty($assigns)):?>
<div class="cell">
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
<?php else:?>
<div class='cell'>
<div class='panel'>
<div class="panel-heading">
<div class="panel-title"><?php echo $title;?></div>
<nav class="panel-actions btn-toolbar"></nav>
</div>
<div data-ride='table'>
<table class='table table-condensed table-striped table-bordered table-fixed no-margin' id='bugAssign'>
<thead>
<tr class='colhead text-center'>
<th><?php echo $lang->report->user;?></th>
<th><?php echo $lang->report->product;?></th>
<th><?php echo $lang->report->bugTotal;?></th>
<th><?php echo $lang->report->total;?></th>
</tr>
</thead>
<tbody>
<?php foreach($assigns as $account => $assign):?>
<?php if(!array_key_exists($account, $users)) continue;?>
<tr class="a-center text-center">
<td rowspan="<?php echo count($assign['bug']);?>"><?php echo $users[$account];?></td>
<?php $id = 1;?>
<?php foreach($assign['bug'] as $product => $count):?>
<?php if($id != 1) echo '<tr class="a-center text-center">';?>
<td>
<?php $viewLink = empty($count['projectID']) ? $this->createLink('product', 'view', "product={$count['productID']}") : $this->createLink('project', 'view', "projectID={$count['projectID']}");?>
<?php echo html::a($viewLink, $product);?>
</td>
<td><?php echo $count['count'];?></td>
<?php if($id == 1):?>
<td rowspan="<?php echo count($assign['bug']);?>">
<?php echo $assign['total']['count'];?>
</td>
<?php endif;?>
<?php if($id != 1) echo '</tr>'; $id ++;?>
<?php endforeach;?>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
-85
View File
@@ -1,85 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 235px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<?php include 'blockreportlist.html.php';?>
</div>
<div class='main-col'>
<div class='cell'>
<div class="row" id='conditions'>
<div class='col-sm-4'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->bugOpenedDate;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('begin', $begin, "class='form-control form-date' onchange='changeParams(this)'");?></div>
<span class='input-group-addon'><?php echo $lang->report->to;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('end', $end, "class='form-control form-date' onchange='changeParams(this)'");?></div>
</div>
</div>
<div class='col-sm-4'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->product;?></span>
<?php echo html::select('product', $products, $product, "class='form-control chosen' onchange='changeParams(this)'");?>
</div>
</div>
<div class='col-sm-4'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->execution->common;?></span>
<?php echo html::select('execution', $executions, $execution, "class='form-control chosen' onchange='changeParams(this)'");?>
</div>
</div>
</div>
</div>
<?php if(empty($bugs)):?>
<div class="cell">
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
</div>
<?php else:?>
<div class='cell'>
<div class='panel'>
<div class="panel-heading">
<div class="panel-title"><?php echo $title;?></div>
<nav class="panel-actions btn-toolbar"></nav>
</div>
<div data-ride='table'>
<table class='table table-condensed table-striped table-bordered table-fixed no-margin' id="bug">
<thead>
<tr class='colhead text-center'>
<th><?php echo $lang->bug->openedBy;?></th>
<th><?php echo $lang->bug->unResolved;?></th>
<?php foreach($lang->bug->resolutionList as $resolutionType => $resolution):?>
<?php if(empty($resolutionType)) continue;?>
<th><?php echo $resolution;?></th>
<?php endforeach;?>
<th title='<?php echo $lang->report->validRateTips;?>'><?php echo $lang->report->validRate;?></th>
<th><?php echo $lang->report->total;?></th>
</tr>
</thead>
<tbody>
<?php foreach($bugs as $user => $bug):?>
<?php if(!isset($users[$user])) continue;?>
<tr class="text-center">
<td><?php echo $users[$user];?></td>
<td><?php echo isset($bug['']) ? $bug[''] : 0;?></td>
<?php foreach($lang->bug->resolutionList as $resolutionType => $resolution):?>
<?php if(empty($resolutionType)) continue;?>
<td><?php echo isset($bug[$resolutionType]) ? $bug[$resolutionType] : 0;?></td>
<?php endforeach;?>
<td title='<?php echo $lang->report->validRateTips;?>'><?php echo round($bug['validRate'] * 100, 2) . '%';?></td>
<td><?php echo $bug['all'];?></td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
</div>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
-55
View File
@@ -1,55 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<script>
$('#subNavbar li').not('[data-id=<?php echo $group;?>]').removeClass('active');
</script>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 210px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<?php js::set('dimension', $dimension);?>
<?php js::set('group', $group);?>
<div id="mainMenu" class='clearfix main-position'>
<div class='btn-toolBar pull-left toolbar-padding'>
<?php foreach($this->config->report->pivotMenu as $id => $menuInfo):?>
<?php list($menuName, $menuModule, $menuMethod, $menuParams) = explode('|', $menuInfo['link']);?>
<?php $activeClass = ($id == $group) ? ' btn-active-text' : '';?>
<?php echo html::a(inlink($menuMethod, $menuParams), $menuName, '', "class='btn btn-link {$activeClass}' id='{$group}Tab'");?>
<?php endforeach;?>
</div>
</div>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<div class="sidebar-toggle">
<i class="icon icon-angle-left"></i>
</div>
<div class="cell">
<div class='panel'>
<div class='panel-heading'>
<div class='panel-title'><?php echo $lang->report->list;?></div>
</div>
<div class='panel-body'>
<div class='list-group'>
<?php echo $sidebar;?>
</div>
</div>
</div>
<?php if($this->config->edition == 'open'):?>
<div class='panel panel-body' style='padding: 10px 6px'>
<div class='text proversion'>
<strong class='text-danger small text-latin'>BIZ</strong> &nbsp;<span class='text-important'><?php echo (!empty($config->isINT)) ? $lang->report->proVersionEn : $lang->report->proVersion;?></span>
</div>
</div>
<?php endif;?>
</div>
</div>
<div class='main-col'>
<?php if(empty($module) || empty($method)):?>
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
<?php else:?>
<?php echo $this->fetch($module, $method, $params);?>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
-114
View File
@@ -1,114 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<?php if(common::checkNotCN()):?>
<style>#conditions .col-xs { width: 126px; }</style>
<?php endif;?>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 235px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<?php include 'blockreportlist.html.php';?>
</div>
<div class='main-col'>
<?php if(empty($products)):?>
<div class="cell">
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
</div>
<?php else:?>
<div class='cell'>
<div class='panel'>
<div class="panel-heading">
<div class="panel-title">
<div id='conditions'>
<div><?php echo $title;?></div>
<div class='condition-options'>
<div class="checkbox-primary inline-block">
<input type="checkbox" name="closedProduct" value="closedProduct" id="closedProduct" <?php if(strpos($conditions, 'closedProduct') !== false) echo "checked='checked'"?> />
<label for="closedProduct"><?php echo $lang->report->closedProduct?></label>
</div>
<div class="checkbox-primary inline-block">
<input type="checkbox" name="overduePlan" value="overduePlan" id="overduePlan" <?php if(strpos($conditions, 'overduePlan') !== false) echo "checked='checked'"?> />
<label for="overduePlan"><?php echo $lang->report->overduePlan?></label>
</div>
</div>
</div>
</div>
<nav class="panel-actions btn-toolbar"></nav>
</div>
<div data-ride='table'>
<table class='table table-condensed table-striped table-bordered table-fixed no-margin' id='productList'>
<thead>
<tr>
<th><?php echo $lang->product->name;?></th>
<th class='c-user'><?php echo $lang->report->PO;?></th>
<th><?php echo $lang->productplan->common;?></th>
<th class="c-date"><?php echo $lang->productplan->begin;?></th>
<th class="c-date"><?php echo $lang->productplan->end;?></th>
<th class="c-count"><?php echo $lang->story->statusList['draft'];?></th>
<th class="c-count"><?php echo $lang->story->statusList['reviewing'];?></th>
<th class="c-count"><?php echo $lang->story->statusList['active'];?></th>
<th class="c-count"><?php echo $lang->story->statusList['changing'];?></th>
<th class="c-count"><?php echo $lang->story->statusList['closed'];?></th>
<th class="c-count"><?php echo $lang->report->total;?></th>
</tr>
</thead>
<tbody>
<?php $color = false;?>
<?php foreach($products as $product):?>
<tr class="text-center">
<?php $count = isset($product->plans) ? count($product->plans) : 1;?>
<td class='c-name text-left' title="<?php echo $product->name;?>" rowspan="<?php echo $count;?>"><?php echo "<p>" . html::a($this->createLink('product', 'view', "product=$product->id"), $product->name) . "</p>";?></td>
<td class='text-left' rowspan="<?php echo $count;?>"><?php echo "<p>" . zget($users, $product->PO) . '</p>';?></td>
<?php if(isset($product->plans)):?>
<?php $id = 1;?>
<?php foreach($product->plans as $plan):?>
<?php $class = $color ? 'rowcolor' : '';?>
<?php if($id != 1) echo "<tr class='text-center'>"?>
<?php $child = (isset($plan->parent) and $plan->parent > 0 and isset($product->plans[$plan->parent])) ? ' child' : '';?>
<td align='left' class="text-left <?php echo $class . $child;?>" title="<?php echo $plan->title;?>"><?php echo $plan->title;?></td>
<td class="<?php echo $class;?>"><?php echo $plan->begin == '2030-01-01' ? $lang->productplan->future : $plan->begin;?></td>
<td class="<?php echo $class;?>"><?php echo $plan->end == '2030-01-01' ? $lang->productplan->future : $plan->end;?></td>
<?php
$draftCount = isset($plan->status['draft']) ? $plan->status['draft'] : 0;
$reviewingCount = isset($plan->status['reviewing']) ? $plan->status['reviewing'] : 0;
$activeCount = isset($plan->status['active']) ? $plan->status['active'] : 0;
$changedCount = isset($plan->status['changing']) ? $plan->status['changing'] : 0;
$closedCount = isset($plan->status['closed']) ? $plan->status['closed'] : 0;
?>
<td class="<?php echo $class;?>"><?php echo $draftCount;?></td>
<td class="<?php echo $class;?>"><?php echo $reviewingCount;?></td>
<td class="<?php echo $class;?>"><?php echo $activeCount;?></td>
<td class="<?php echo $class;?>"><?php echo $changedCount;?></td>
<td class="<?php echo $class;?>"><?php echo $closedCount;?></td>
<td class="<?php echo $class;?>"><?php echo $draftCount + $reviewingCount + $activeCount + $changedCount + $closedCount;?></td>
<?php if($id != 1) echo "</tr>"?>
<?php $id ++;?>
<?php $color = !$color;?>
<?php endforeach;?>
<?php else:?>
<?php $class = $color ? 'rowcolor' : '';?>
<td class="<?php echo $class;?>"></td>
<td class="<?php echo $class;?>"></td>
<td class="<?php echo $class;?>"></td>
<td class="<?php echo $class;?>">0</td>
<td class="<?php echo $class;?>">0</td>
<td class="<?php echo $class;?>">0</td>
<td class="<?php echo $class;?>">0</td>
<td class="<?php echo $class;?>">0</td>
<td class="<?php echo $class;?>">0</td>
<?php $color = !$color;?>
<?php endif;?>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
</div>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
@@ -1,188 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<?php include '../../common/view/chart.html.php';?>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 235px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<?php $chartData = array('labels' => array(), 'data' => array());?>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<?php include 'blockreportlist.html.php';?>
</div>
<div class='main-col'>
<div class='cell'>
<div class="row" id='conditions'>
<div class='w-220px col-md-3 col-sm-6'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->execution . $lang->report->begin;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('date', $begin, "class='form-control form-date' onchange='changeDate(this.value, \"$end\")'");?></div>
</div>
</div>
<div class='w-220px col-md-3 col-sm-6'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->execution . $lang->report->end;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('date', $end, "class='form-control form-date' onchange='changeDate(\"$begin\", this.value)'");?></div>
</div>
</div>
</div>
</div>
<?php if(empty($executions)):?>
<div class="cell">
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
</div>
<?php else:?>
<div class='cell'>
<div class='panel'>
<div class="panel-heading">
<div class="panel-title">
<?php echo $title;?>
<i class="icon icon-exclamation-sign icon-rotate-180"></i>
<span class="hidden" id="desc"><?php echo $lang->report->deviationDesc;?></span>
</div>
<nav class="panel-actions btn-toolbar"></nav>
</div>
<div data-ride='table'>
<table class='table table-condensed table-striped table-bordered table-fixed no-margin' id='executionList'>
<thead>
<tr class='colhead'>
<th class='c-id'><?php echo $lang->report->id;?></th>
<th><?php echo $lang->report->project;?></th>
<th><?php echo $lang->report->execution;?></th>
<th class="c-hours"><?php echo $lang->report->estimate;?></th>
<th class="c-hours"><?php echo $lang->report->consumed;?></th>
<th class="c-deviation"><?php echo $lang->report->deviation;?></th>
<th class="c-deviation-rate"><?php echo $lang->report->deviationRate;?></th>
</tr>
</thead>
<tbody>
<?php foreach($executions as $id => $execution):?>
<tr class="text-center">
<td><?php echo $id;?></td>
<td class="text-left" title="<?php echo $execution->projectName;?>">
<?php echo $execution->name ? $execution->projectName : html::a($this->createLink('project', 'index', "projectID=$execution->projectID"), $execution->projectName);?>
</td>
<td class="text-left" title="<?php echo $execution->name;?>">
<?php if($execution->multiple):?>
<?php echo $execution->name ? html::a($this->createLink('execution', 'view', "executionID=$id"), $execution->name) : '';?>
<?php else:?>
<?php echo $lang->null;?>
<?php endif;?>
</td>
<td><?php echo round($execution->estimate, 2);?></td>
<td><?php echo round($execution->consumed, 2);?></td>
<?php $deviation = round($execution->consumed - $execution->estimate, 2);?>
<td class="deviation">
<?php
if($deviation > 0)
{
echo '<span class="up">&uarr;</span>' . $deviation;
}
else if($deviation < 0)
{
echo '<span class="down">&darr;</span>' . abs($deviation);
}
else
{
echo '<span class="zero">0</span>';
}
?>
</td>
<td class="deviation">
<?php
$num = $execution->estimate ? round($deviation / $execution->estimate * 100, 2) : 'n/a';
if($num >= 50)
{
echo '<span class="u50">' . $num . '%</span>';
}
elseif($num >= 30)
{
echo '<span class="u30">' . $num . '%</span>';
}
elseif($num >= 10)
{
echo '<span class="u10">' . $num . '%</span>';
}
elseif($num > 0)
{
echo '<span class="u0">' . abs($num) . '%</span>';
}
elseif($num <= -20)
{
echo '<span class="d20">' . abs($num) . '%</span>';
}
elseif($num < 0)
{
echo '<span class="d0">' . abs($num) . '%</span>';
}
elseif($num == 'n/a')
{
echo '<span class="zero">' . $num . '</span>';
}
else
{
echo '<span class="zero">' . abs($num) . '%</span>';
}
$chartData['labels'][] = $execution->name;
$chartData['data'][] = $deviation;
?>
</td>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
<?php endif;?>
<?php if(!empty($chartData)):?>
<div class="cell">
<?php
if(count($chartData['labels']) > 30)
{
$chartData['labels'] = array_slice($chartData['labels'], 0, 30);
$chartData['data'] = array_slice($chartData['data'], 0, 30);
}
?>
<div class='panel'>
<div class='panel-heading'>
<div class='panel-title'><?php echo $lang->report->deviationChart?></div>
</div>
<div class='panel-body'>
<canvas id='deviationChart' width='800' height='300' data-bezier-curve='false' data-responsive='true'></canvas>
</div>
</div>
</div>
<?php endif;?>
</div>
</div>
<script>
function initChart()
{
var data =
{
labels: <?php echo json_encode($chartData['labels'])?>,
datasets: [
{
label: "",
color: "#0033CC",
pointStrokeColor: '#0033CC',
pointHighlightStroke: '0033CC',
data: <?php echo json_encode($chartData['data'])?>
}]
};
var burnChart = $("#deviationChart").lineChart(data,
{
animation: !($.zui.browser && $.zui.browser.ie === 8),
pointDotStrokeWidth: 0,
pointDotRadius: 1,
datasetFill: false,
datasetStroke: true,
scaleShowBeyondLine: false,
tooltipTemplate: "<%if (label){%><%=label%>: <%}%><%= value %>h"
});
}
</script>
<?php include '../../common/view/footer.html.php';?>
-127
View File
@@ -1,127 +0,0 @@
<?php include '../../common/view/header.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<?php if($this->config->edition != 'open'):?>
<style>#mainContent > .side-col.col-lg{width: 210px}</style>
<style>.hide-sidebar #sidebar{width: 0 !important}</style>
<?php endif;?>
<?php js::set('weekend', $config->execution->weekend);?>
<div id='mainContent' class='main-row'>
<div class='side-col col-lg' id='sidebar'>
<?php include 'blockreportlist.html.php';?>
</div>
<div class='main-col'>
<div class='cell'>
<form method='post'>
<div class="row" id='conditions'>
<div class='col-sm-2'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->dept;?></span>
<?php echo html::select('dept', $depts, $dept, "class='form-control chosen' onchange='changeParams(this)'");?>
</div>
</div>
<div class='col-sm-4'>
<div class='input-group input-group-sm'>
<span class='input-group-addon'><?php echo $lang->report->beginAndEnd;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('begin', $begin, "class='form-control' style='padding-right:10px' onchange='changeParams(this)'");?></div>
<span class='input-group-addon fix-border'><?php echo $lang->report->to;?></span>
<div class='datepicker-wrapper datepicker-date'><?php echo html::input('end', $end, "class='form-control' style='padding-right:10px' onchange='changeParams(this)'");?></div>
</div>
</div>
<div class='col-sm-2'>
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->diffDays;?></span>
<?php echo html::input('days', $days, "class='form-control' style='text-align:center'");?>
</div>
</div>
<div class='col-sm-4'>
<div class="row">
<div class="col-sm-5">
<div class='input-group'>
<span class='input-group-addon'><?php echo $lang->report->workday;?></span>
<?php echo html::input('workday', $workday, "class='form-control'");?>
</div>
</div>
<div class="col-sm-4">
<?php echo html::select('assign', $lang->report->assign, $assign, "class='form-control' onchange='changeParams(this)'");?>
</div>
<div class="col-sm-3">
<?php echo html::submitButton($lang->report->query, '', 'btn btn-primary btn-block');?>
</div>
</div>
</div>
</div>
</form>
</div>
<?php if(empty($workload)):?>
<div class="cell">
<div class="table-empty-tip">
<p><span class="text-muted"><?php echo $lang->error->noData;?></span></p>
</div>
</div>
<?php else:?>
<div class='cell'>
<div class='panel'>
<div class="panel-heading">
<div class="panel-title"><?php echo $title;?>
<a data-toggle='tooltip' title='<?php echo $lang->report->workloadDesc;?>'><i class='icon-help'></i></a>
</div>
<nav class="panel-actions btn-toolbar"></nav>
</div>
<div data-ride='table'>
<table class='table table-condensed table-striped table-bordered table-fixed no-margin' id="workload">
<thead>
<tr class='colhead text-center'>
<th class="c-user"><?php echo $lang->report->user;?></th>
<th class="c-project"><?php echo $lang->report->project ;?>
<th><?php echo $lang->report->execution;?></th>
<th class="c-count"><?php echo $lang->report->task;?></th>
<th class="c-hours"><?php echo $lang->report->remain;?></th>
<th class="c-count"><?php echo $lang->report->taskTotal;?></th>
<th class="c-hours"><?php echo $lang->report->manhourTotal;?></th>
<th class="c-workload"><?php echo $lang->report->workloadAB;?></th>
</tr>
</thead>
<tbody>
<?php $color = false;?>
<?php foreach($workload as $account => $load):?>
<?php if(!isset($users[$account])) continue;?>
<tr class="text-center">
<?php $userTimes = 1; $userCount = 0;?>
<?php foreach($load['task']['project'] as $projectName => $info) foreach($info['execution'] as $executionName => $executionInfo) $userCount ++;?>
<td class="<?php echo $class;?>" rowspan="<?php echo $userCount;?>"><?php echo $users[$account];?></td>
<?php foreach($load['task']['project'] as $projectName => $info):?>
<?php $projectTimes = 1; $projectCount = 0;?>
<?php foreach($info['execution'] as $executionName => $executionInfo) $projectCount ++ ;?>
<?php foreach($info['execution'] as $executionName => $executionInfo):?>
<?php if($projectTimes != 1 || $userTimes != 1) echo "<tr>";?>
<?php if($projectTimes == 1):?>
<td class="text-center" rowspan="<?php echo $projectCount;?>" title="<?php echo $projectName;?>"><?php echo html::a($this->createLink('project', 'view', "projectID={$info['projectID']}"), $projectName);?></td>
<?php endif;?>
<?php if($executionInfo['multiple']):?>
<td class="text-center" title="<?php echo $executionName;?>"><?php echo html::a($this->createLink('execution', 'view', "executionID={$executionInfo['executionID']}"), $executionName);?></td>
<?php else:?>
<td class='text-center'><?php echo $lang->null;?></td>
<?php endif;?>
<td class="text-center"><?php echo $executionInfo['count'];?></td>
<td class="text-center"><?php echo $executionInfo['manhour'];?></td>
<?php if($userTimes == 1):?>
<td rowspan="<?php echo $userCount;?>"><?php echo $load['total']['count'];?></td>
<td rowspan="<?php echo $userCount;?>"><?php echo $load['total']['manhour'];?></td>
<td rowspan="<?php echo $userCount;?>"><?php echo round($load['total']['manhour'] / $allHour * 100, 2) . '%';?></td>
<?php endif;?>
<?php if($projectTimes != 1 || $userTimes != 1) echo "</tr>";?>
<?php $projectTimes ++; $userTimes ++;?>
<?php $color = !$color;?>
<?php endforeach;?>
<?php endforeach;?>
</tr>
<?php endforeach;?>
</tbody>
</table>
</div>
</div>
</div>
<?php endif;?>
</div>
</div>
<?php include '../../common/view/footer.html.php';?>
-139
View File
@@ -1,139 +0,0 @@
<?php
class reportZen extends report
{
/**
* Prepare for preview a report.
*
* @param int $dimension
* @param string $group
* @param string $module
* @param string $method
* @param string $params
* @access public
* @return void
*/
public function prepare4Preview($dimension, $group, $module, $method, $params)
{
$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);
if(!empty($module) && !empty($method) && !common::hasPriv($module, $method)) common::deny('report', $method);
$this->view->sidebar = $this->getSidebar($dimension, $group, $module, $method, $params);
$this->view->dimension = $dimension;
$this->view->group = $group;
$this->view->module = $module;
$this->view->method = $method;
$this->view->params = $params;
if(empty($this->view->title)) $this->view->title = $this->lang->report->list;
}
/**
* Get default dimension of report.
*
* @access public
* @return int
*/
public function getDefaultDimension()
{
return 1;
}
/**
* Get default group of a dimension.
*
* @param int $dimension
* @access public
* @return string
*/
public function getDefaultGroup($dimension)
{
foreach($this->lang->reportList as $group => $list)
{
if(empty($list->lists)) continue;
foreach($list->lists as $item)
{
$items = explode('|', $item);
if(count($items) < 3) continue;
list($label, $module, $method) = $items;
if(common::hasPriv($module, $method)) return $group;
}
}
return '';
}
/**
* Get default module name and method name and params of report in a group.
*
* @param int $dimension
* @param string $group
* @access public
* @return array
*/
public function getDefaultMethod($dimension, $group)
{
if(empty($this->lang->reportList->$group->lists)) return array('', '', '');
foreach($this->lang->reportList->$group->lists as $item)
{
$items = explode('|', $item . '|');
if(count($items) < 4) continue;
list($label, $module, $method, $params) = $items;
if(common::hasPriv($module, $method)) return array($module, $method, $params);
}
return array('', '', '');
}
/**
* Get sidebar of report.
*
* @param int $dimension
* @param string $group
* @param string $module
* @param string $method
* @param string $params
* @access public
* @return string
*/
public function getSidebar($dimension, $group, $module, $method, $params)
{
if(empty($this->lang->reportList->$group->lists)) return '';
$sidebar = '';
$module = strtolower($module);
$method = strtolower($method);
ksort($this->lang->reportList->$group->lists);
foreach($this->lang->reportList->$group->lists as $item)
{
$items = explode('|', $item . '|');
if(count($items) < 4) continue;
list($label, $moduleName, $methodName, $params) = $items;
$class = '';
if($module == strtolower($moduleName) && $method == strtolower($methodName))
{
$class = 'selected';
$this->view->title = $label;
}
$params = helper::safe64Encode($params);
if(common::hasPriv($moduleName, $methodName)) $sidebar .= html::a(helper::createLink('report', 'preview', "dimension=$dimension&group=$group&module=$moduleName&method=$methodName&params=$params"), '<i class="icon icon-file-text"></i> ' . $label, '', "class='$class' title='$label'");
}
return $sidebar;
}
}
+39
View File
@@ -418,6 +418,25 @@ $config->delete['18_0'][] = 'extension/max/repo/ext/control/ajaxgetbranchesandta
$config->delete['18_0'][] = 'extension/max/repo/ext/control/ajaxgetbranchesandtags.php';
$config->delete['18_0'][] = 'extension/max/repo/ext/control/editbug.php';
$config->delete['18_0'][] = 'extension/max/repo/ext/view/ajaxgetcommitinfo.html.php';
$config->delete['18_4'][] = 'module/report/css/bugcreate.css';
$config->delete['18_4'][] = 'module/report/css/common.css';
$config->delete['18_4'][] = 'module/report/css/preview.css';
$config->delete['18_4'][] = 'module/report/css/productsummary.css';
$config->delete['18_4'][] = 'module/report/css/projectdeviation.css';
$config->delete['18_4'][] = 'module/report/css/workload.css';
$config->delete['18_4'][] = 'module/report/js/bugassign.js';
$config->delete['18_4'][] = 'module/report/js/bugcreate.js';
$config->delete['18_4'][] = 'module/report/js/productsummary.js';
$config->delete['18_4'][] = 'module/report/js/projectdeviation.js';
$config->delete['18_4'][] = 'module/report/js/workload.js';
$config->delete['18_4'][] = 'module/report/view/blockreportlist.html.php';
$config->delete['18_4'][] = 'module/report/view/bugassign.html.php';
$config->delete['18_4'][] = 'module/report/view/bugcreate.html.php';
$config->delete['18_4'][] = 'module/report/view/preview.html.php';
$config->delete['18_4'][] = 'module/report/view/productsummary.html.php';
$config->delete['18_4'][] = 'module/report/view/projectdeviation.html.php';
$config->delete['18_4'][] = 'module/report/view/workload.html.php';
$config->delete['18_4'][] = 'module/report/zen.php';
$config->delete['18_4'][] = 'extension/max/report/ext/control/projectsummary.php';
$config->delete['18_4'][] = 'extension/max/report/ext/control/projectworkload.php';
$config->delete['18_4'][] = 'extension/max/report/ext/control/customeredreport.php';
@@ -429,6 +448,26 @@ $config->delete['18_4'][] = 'extension/max/report/ext/view/projectworkload.html.
$config->delete['18_4'][] = 'extension/max/report/ext/view/customeredreport.html.php';
$config->delete['18_4'][] = 'extension/max/report/ext/view/instancetemplate.html.php';
$config->delete['18_4'][] = 'extension/max/report/ext/view/blockreportlist.html.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/zh-cn/export.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/en/export.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/de/export.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/fr/export.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/zh-tw/export.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/zh-cn/crystal.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/en/crystal.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/de/crystal.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/fr/crystal.php';
$config->delete['18_4'][] = 'extension/biz/group/ext/lang/zh-tw/crystal.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/zh-cn/export.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/en/export.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/de/export.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/fr/export.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/zh-tw/export.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/zh-cn/crystal.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/en/crystal.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/de/crystal.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/fr/crystal.php';
$config->delete['18_4'][] = 'extension/max/group/ext/lang/zh-tw/crystal.php';
$config->upgrade->openModules = array('action', 'admin', 'api', 'automation', 'backup', 'block', 'branch', 'budget', 'bug', 'build', 'caselib', 'chart', 'ci', 'client', 'common', 'company', 'compile', 'convert', 'cron', 'custom', 'datatable', 'dept', 'design', 'dev', 'dimension', 'doc', 'durationestimation', 'entry', 'execution', 'extension', 'file', 'git', 'gitlab', 'group', 'holiday', 'im', 'index', 'index.html', 'install', 'issue', 'jenkins', 'job', 'kanban', 'license', 'mail', 'message', 'misc', 'mr', 'my', 'personnel', 'pipeline', 'product', 'productplan', 'productset', 'program', 'programplan', 'project', 'projectbuild', 'projectplan', 'projectrelease', 'projectstory', 'pivot', 'qa', 'release', 'repo', 'report', 'risk', 'score', 'screen', 'search', 'setting', 'sonarqube', 'sso', 'stage', 'stakeholder', 'story', 'subject', 'svn', 'task', 'testcase', 'testreport', 'testsuite', 'testtask', 'todo', 'tree', 'tutorial', 'upgrade', 'user', 'webhook', 'weekly', 'workestimation', 'gitea', 'gogs', 'transfer', 'zahost', 'zanode', 'editor');
+1
View File
@@ -8214,6 +8214,7 @@ class upgradeModel extends model
$dimension = new stdclass();
$dimension->name = $this->lang->dimension->default;
$dimension->code = 'efficiency';
$dimension->desc = '';
$dimension->createdBy = 'system';
$dimension->createdDate = helper::now();
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More