diff --git a/VERSION b/VERSION index c8a04b091e..eb97ac6557 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -17.8 +18.0.beta1 diff --git a/api/v1/entries/programs.php b/api/v1/entries/programs.php index 3ca08a90f1..ebe875576e 100644 --- a/api/v1/entries/programs.php +++ b/api/v1/entries/programs.php @@ -22,7 +22,7 @@ class programsEntry extends entry $_COOKIE['showClosed'] = $this->param('showClosed', 0); $mergeChildren = $this->param('mergeChildren', 0); - $this->config->systemMode = 'new'; + $this->config->systemMode = 'ALM'; $fields = $this->param('fields', ''); if(stripos(strtolower(",{$fields},"), ",dropmenu,") !== false) return $this->getDropMenu(); diff --git a/api/v1/entries/projects.php b/api/v1/entries/projects.php index d2e514136e..f47dfeb56f 100644 --- a/api/v1/entries/projects.php +++ b/api/v1/entries/projects.php @@ -26,7 +26,7 @@ class projectsEntry extends entry $_COOKIE['involved'] = $this->param('involved', 0); - $this->config->systemMode = 'new'; + $this->config->systemMode = 'ALM'; if($programID) { diff --git a/api/v1/entries/testresults.php b/api/v1/entries/testresults.php index 365e9f79c9..d6fa1c6b8f 100644 --- a/api/v1/entries/testresults.php +++ b/api/v1/entries/testresults.php @@ -60,18 +60,24 @@ class testresultsEntry extends entry $case = $this->loadModel('testcase')->getByID($caseID); $runID = $this->param('runID', 0); $version = $this->param('version', $case->version); + $steps = $this->getStepIDList($runID, $caseID, $version); $this->setPost('case', $caseID); + $this->setPost('version', $version); /* Set steps and expects. */ if(isset($this->requestBody->steps)) { $results = array(); $reals = array(); - foreach($this->requestBody->steps as $step) + foreach($this->requestBody->steps as $index => $step) { - $results[] = $step->result; - $reals[] = $step->real; + /* When post data more than case steps, break after take useful data. */ + if($index + 1 > count($steps)) break; + + $stepID = $steps[$index]; + $results[$stepID] = $step->result; + $reals[$stepID] = $step->real; } $this->setPost('steps', $results); $this->setPost('reals', $reals); @@ -85,4 +91,35 @@ class testresultsEntry extends entry return $this->send(200, array()); } + + /** + * Get steps key. + * + * @param int $runID + * @access public + * @return array + */ + public function getStepIDList($runID, $caseID, $version) + { + if($runID) + { + $run = $this->testtask->getRunById($runID); + } + else + { + $run = new stdclass(); + $run->case = $this->loadModel('testcase')->getById($caseID, $version); + } + + foreach($run->case->steps as $key => $step) + { + /* Unset step if step is a group. */ + if($step->type == 'group') + { + unset($run->case->steps[$key]); + } + } + + return array_keys($run->case->steps); + } } diff --git a/api/v1/entries/user.php b/api/v1/entries/user.php index d419d970d4..87782cf8c3 100644 --- a/api/v1/entries/user.php +++ b/api/v1/entries/user.php @@ -408,8 +408,12 @@ class userEntry extends entry $this->setPost('gender', $gender); $password = $this->request('password', zget($_POST, 'password', '')); - $this->setPost('password1', md5($password)); - $this->setPost('password2', md5($password)); + if($password) + { + $this->setPost('password1', md5($password)); + $this->setPost('password2', md5($password)); + $this->setPost('passwordStrength', 2); + } $this->setPost('verifyPassword', md5($this->app->user->password . $this->app->session->rand)); $control = $this->loadController('user', 'edit'); diff --git a/config/config.php b/config/config.php index 6429afecfa..683b749f39 100644 --- a/config/config.php +++ b/config/config.php @@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}} if(!function_exists('getWebRoot')){function getWebRoot(){}} /* 基本设置。Basic settings. */ -$config->version = '17.8'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. +$config->version = '18.0.beta1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it. $config->liteVersion = '1.2'; // 迅捷版版本。 The version of Lite. $config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP. $config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time. @@ -24,7 +24,7 @@ $config->timezone = 'Asia/Shanghai'; // 时区设置。 The tim $config->webRoot = ''; // URL根目录。 The root path of the url. $config->customSession = false; // 是否开启自定义session的存储路径。Whether custom the session save path. $config->edition = 'open'; // 设置系统的edition,可选值:open|biz|max。Set edition, optional: open|biz|max. -$config->tabSession = true; // 是否开启浏览器新标签独立session. +$config->tabSession = false; // 是否开启浏览器新标签独立session. /* 框架路由相关设置。Routing settings. */ $config->requestType = 'PATH_INFO'; // 请求类型:PATH_INFO|PATHINFO2|GET。 The request type: PATH_INFO|PATH_INFO2|GET. diff --git a/config/filter.php b/config/filter.php index 40fd3fd9e2..d12e06a8b2 100755 --- a/config/filter.php +++ b/config/filter.php @@ -71,6 +71,7 @@ $filter->mr = new stdclass(); $filter->ci = new stdclass(); $filter->tree = new stdclass(); $filter->productplan = new stdclass(); +$filter->projectplan = new stdclass(); $filter->kanban = new stdclass(); $filter->index->index = new stdclass(); @@ -173,6 +174,7 @@ $filter->ci->checkCompileStatus = new stdclass(); $filter->execution->export = new stdclass(); $filter->tree->browse = new stdclass(); $filter->productplan->browse = new stdclass(); +$filter->projectplan->browse = new stdclass(); $filter->kanban->space = new stdclass(); $filter->execution->kanban = new stdclass(); $filter->execution->all = new stdclass(); @@ -300,6 +302,7 @@ $filter->story->track->cookie['preBranch'] = 'reg::word'; $filter->story->track->cookie['preProductID'] = 'int'; $filter->productplan->browse->cookie['viewType'] = 'code'; +$filter->projectplan->browse->cookie['viewType'] = 'code'; $filter->task->create->cookie['lastTaskModule'] = 'int'; $filter->task->export->cookie['checkedItem'] = 'reg::checked'; diff --git a/config/zentaopms.php b/config/zentaopms.php index b8cb8b4e24..1dae225193 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -398,13 +398,16 @@ $config->objectTables['apistruct'] = TABLE_APISTRUCT; $config->objectTables['repo'] = TABLE_REPO; $config->objectTables['dataview'] = TABLE_DATAVIEW; -$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions'); +$config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions'); +$config->disabledFeatures = ''; +$config->closedFeatures = ''; $config->pipelineTypeList = array('gitlab', 'gogs', 'gitea', 'jenkins', 'sonarqube'); /* Program privs.*/ $config->programPriv = new stdclass(); -$config->programPriv->scrum = array('story', 'projectstory', 'projectrelease', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask'); +$config->programPriv->noSprint = array('task', 'story', 'tree', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'stakeholder', 'projectrelease', 'requirement'); +$config->programPriv->scrum = array('story', 'requirement', 'productplan', 'tree', 'projectplan', 'projectstory', 'projectrelease', 'project', 'execution', 'build', 'bug', 'testcase', 'testreport', 'doc', 'repo', 'meeting', 'stakeholder', 'testtask'); $config->programPriv->waterfall = array_merge($config->programPriv->scrum, array('task', 'workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'issue', 'risk', 'opportunity', 'measrecord', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport')); $config->waterfallModules = array('workestimation', 'durationestimation', 'budget', 'programplan', 'review', 'reviewissue', 'weekly', 'cm', 'milestone', 'design', 'opportunity', 'auditplan', 'trainplan', 'gapanalysis', 'pssp', 'researchplan', 'researchreport'); @@ -413,3 +416,10 @@ $config->showMainMenu = true; $config->maxPriValue = '256'; $config->importWhiteList = array('user', 'task', 'story', 'bug', 'testcase', 'feedback', 'ticket'); + +$config->featureGroup = new stdclass(); +$config->featureGroup->product = array('roadmap', 'track', 'UR'); +$config->featureGroup->scrum = array(); +$config->featureGroup->waterfall = array('track'); +$config->featureGroup->assetlib = array(); +$config->featureGroup->other = array('devops', 'kanban'); diff --git a/db/api/16.0/api b/db/api/16.0/api index d50c8f91f8..a25051af3b 100644 --- a/db/api/16.0/api +++ b/db/api/16.0/api @@ -3173,7 +3173,7 @@ a:77:{i:0;O:8:"stdClass":24:{s:2:"id";s:3:"491";s:7:"product";s:1:"0";s:3:"lib"; ] }";s:8:"response";s:1922:"[{"field":"total","paramsType":"int","required":true,"desc":"发布总数","structType":"json","sub":1,"key":"kwoitgd8i6d4ereus2r","children":[]},{"field":"releases","paramsType":"array","required":true,"desc":"发布列表","structType":"json","sub":1,"key":"kwoix2ay87a7rvwc50o","children":[{"field":"id","paramsType":"int","required":"","desc":"发布编号","structType":"json","sub":2,"key":"kwoixo68mf68m49r4","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":2,"key":"kwoj0p620tjei4sseipn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwoj0yeg796dwhrt5i2","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwoj166tm1vkys8lkdn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"build","paramsType":"int","required":"","desc":"所属版本","structType":"json","sub":2,"key":"kwoj1fhpegz8347bce","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"name","paramsType":"string","required":"","desc":"发布名称","structType":"json","sub":2,"key":"kwoj1qcorzww56dwb","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"date","paramsType":"date","required":"","desc":"发布日期","structType":"json","sub":2,"key":"kwoj1xztoy69p6pzbz8","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":2,"key":"kwoj2nf2roxjds47o0a","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | terminate 停止维护)","structType":"json","sub":2,"key":"kwoj3ep06mmsacezqxb","parentKey":"kwoix2ay87a7rvwc50o","children":[]}]}]";s:12:"commonParams";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:30";s:8:"editedBy";s:5:"admin";s:10:"editedDate";s:19:"2022-06-28 09:51:30";s:7:"deleted";s:1:"0";}i:67;O:8:"stdClass":24:{s:2:"id";s:3:"422";s:7:"product";s:1:"0";s:3:"lib";s:2:"24";s:6:"module";s:3:"108";s:5:"title";s:12:"删除用户";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:50:"{ "message": "success" -}";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwon2kh7itd8zwes7no","children":[]}]";s:12:"commonParams";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:30";s:8:"editedBy";s:5:"admin";s:10:"editedDate";s:19:"2022-06-28 09:51:30";s:7:"deleted";s:1:"0";}i:68;O:8:"stdClass":24:{s:2:"id";s:3:"423";s:7:"product";s:1:"0";s:3:"lib";s:2:"24";s:6:"module";s:3:"108";s:5:"title";s:12:"创建用户";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:777:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"account","paramsType":"string","required":true,"desc":"账号","structType":"json","sub":1,"key":"l41zlm7syi7tpslnib","children":[]},{"field":"password","paramsType":"string","required":true,"desc":"密码","structType":"json","sub":1,"key":"l41zteb0u7pqb5432d","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":1,"key":"l41zthpk4jhr9vixiz3","children":[]},{"field":"visions","paramsType":"array","required":"","desc":"界面 [“rnd”, “lite”],(综合研发界面 rnd, 迅捷界面 lite)。默认是rnd","structType":"json","sub":1,"key":"l41ztwgamfcn0dxx40s","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:136:"{"account": "usertest", "password": "123qwe!@#", "realname": "测试用户"}";s:15:"responseExample";s:1648:"{ +}";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwon2kh7itd8zwes7no","children":[]}]";s:12:"commonParams";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:30";s:8:"editedBy";s:5:"admin";s:10:"editedDate";s:19:"2022-06-28 09:51:30";s:7:"deleted";s:1:"0";}i:68;O:8:"stdClass":24:{s:2:"id";s:3:"423";s:7:"product";s:1:"0";s:3:"lib";s:2:"24";s:6:"module";s:3:"108";s:5:"title";s:12:"创建用户";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:777:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"account","paramsType":"string","required":true,"desc":"账号","structType":"json","sub":1,"key":"l41zlm7syi7tpslnib","children":[]},{"field":"password","paramsType":"string","required":true,"desc":"密码","structType":"json","sub":1,"key":"l41zteb0u7pqb5432d","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":1,"key":"l41zthpk4jhr9vixiz3","children":[]},{"field":"visions","paramsType":"array","required":"","desc":"界面 [“rnd”, “lite”],(研发综合界面 rnd, 运营管理界面 lite)。默认是rnd","structType":"json","sub":1,"key":"l41ztwgamfcn0dxx40s","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:136:"{"account": "usertest", "password": "123qwe!@#", "realname": "测试用户"}";s:15:"responseExample";s:1648:"{ "id": 8, "company": 0, "type": "inside", @@ -3528,4 +3528,4 @@ a:77:{i:0;O:8:"stdClass":24:{s:2:"id";s:3:"491";s:7:"product";s:1:"0";s:3:"lib"; "deleted": false, "likesCount": 0, "files": [] -}";s:8:"response";s:5111:"[{"field":"id","paramsType":"int","required":true,"desc":"反馈id","structType":"json","sub":1,"key":"l4xqgm1z3wbmee39xzp","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"l4xqk0wzir5o76xkme","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属分类","structType":"json","sub":1,"key":"l4xqk3ktpg3f151behi","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"标题","structType":"json","sub":1,"key":"l4xqk3hhxna5tbt2m1","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(story 需求 | task 任务 | bug Bug | todo 代办 | advice 建议) 全新项目集模式还有(issue 问题 | risk 风险 | opportunity 机会)","structType":"json","sub":1,"key":"l4xqk3cu0hiagqyplbyc","children":[]},{"field":"solution","paramsType":"string","required":true,"desc":"处理结果(unclosed 未关闭 | all 全部 | public公开 | tostory 转任务 | totask 转任务 | tobug 转Bug | totodo 转代办 | review 待评审 | assigntome 指派给我)","structType":"json","sub":1,"key":"l4xqk396tlpfwig7ssg","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":1,"key":"l4xqk351jq4sboxnkp","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 待处理 | commenting 处理中 | replied 已处理 | closed 已关闭)","structType":"json","sub":1,"key":"l4xqk31fzcbwp527oa","children":[]},{"field":"subStatus","paramsType":"string","required":true,"desc":"子状态","structType":"json","sub":1,"key":"l4xqk2t8y6xy3ke1my","children":[]},{"field":"public","paramsType":"int","required":true,"desc":"公开","structType":"json","sub":1,"key":"l4xqk2i5g76vwkscgn9","children":[]},{"field":"notify","paramsType":"int","required":true,"desc":"通知","structType":"json","sub":1,"key":"l4xqk2dph2blv3r03s6","children":[]},{"field":"notifyEmail","paramsType":"string","required":true,"desc":"通知邮箱","structType":"json","sub":1,"key":"l4xqk28o87gr8gkr1o3","children":[]},{"field":"likes","paramsType":"string","required":true,"desc":"点赞人","structType":"json","sub":1,"key":"l4xqk24t7lpiel2furj","children":[]},{"field":"result","paramsType":"int","required":true,"desc":"转化结果","structType":"json","sub":1,"key":"l4xqk20spgg6edtsvuh","children":[]},{"field":"faq","paramsType":"int","required":true,"desc":"FAQ","structType":"json","sub":1,"key":"l4xqk1x42zm9hsil02j","children":[]},{"field":"openedBy","paramsType":"14","required":true,"desc":"创建人","structType":"json","sub":1,"key":"l4xqk1srddeaylm2c8a","children":[]},{"field":"openedDate","paramsType":"date","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"l4xqk1o4njumkkuez7f","children":[]},{"field":"reviewedBy","paramsType":"string","required":true,"desc":"由谁评审","structType":"json","sub":1,"key":"l4xqk1jrjd639en7zu","children":[]},{"field":"reviewedDate","paramsType":"date","required":true,"desc":"评审时间","structType":"json","sub":1,"key":"l4xqm1udjtd76144lno","children":[]},{"field":"processedBy","paramsType":"string","required":true,"desc":"由谁处理","structType":"json","sub":1,"key":"l4xqm1pp4wz7xq16nk4","children":[]},{"field":"processedDate","paramsType":"date","required":true,"desc":"处理时间","structType":"json","sub":1,"key":"l4xqm1kzpp0qmm2sye","children":[]},{"field":"closedBy","paramsType":"string","required":true,"desc":"由谁关闭","structType":"json","sub":1,"key":"l4xqm1gjmsi0olf6uk","children":[]},{"field":"closedDate","paramsType":"date","required":true,"desc":"关闭时间","structType":"json","sub":1,"key":"l4xqm1d9f489ea9tpdt","children":[]},{"field":"closedReason","paramsType":"string","required":true,"desc":"关闭原因","structType":"json","sub":1,"key":"l4xqm19rdtnon53thf4","children":[]},{"field":"editedBy","paramsType":"14","required":true,"desc":"最后处理人","structType":"json","sub":1,"key":"l4xqm15cfh7xhj4po0p","children":[]},{"field":"editedDate","paramsType":"date","required":true,"desc":"最后修改时间","structType":"json","sub":1,"key":"l4xqm11o23c3milu6jz","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"l4xqm0xxjdcrk3htpaf","children":[]},{"field":"assignedDate","paramsType":"date","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"l4xqm0u50d6lezeqalxa","children":[]},{"field":"feedbackBy","paramsType":"string","required":true,"desc":"反馈者","structType":"json","sub":1,"key":"l4xqm0qvlgry762yrc","children":[]},{"field":"mailto","paramsType":"array","required":true,"desc":"抄送给","structType":"json","sub":1,"key":"l4xqm0mc4mn1s7casf9","children":[]},{"field":"deleted","paramsType":"int","required":true,"desc":"已删除","structType":"json","sub":1,"key":"l4xqk1g536zioezwsw","children":[]},{"field":"likesCount","paramsType":"int","required":true,"desc":"点赞总数","structType":"json","sub":1,"key":"l4xqk1bofdecinia5u","children":[]}]";s:12:"commonParams";N;s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 13:43:01";s:8:"editedBy";s:5:"admin";s:10:"editedDate";s:19:"2022-06-28 13:43:01";s:7:"deleted";s:1:"0";}} \ No newline at end of file +}";s:8:"response";s:5111:"[{"field":"id","paramsType":"int","required":true,"desc":"反馈id","structType":"json","sub":1,"key":"l4xqgm1z3wbmee39xzp","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"l4xqk0wzir5o76xkme","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属分类","structType":"json","sub":1,"key":"l4xqk3ktpg3f151behi","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"标题","structType":"json","sub":1,"key":"l4xqk3hhxna5tbt2m1","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(story 需求 | task 任务 | bug Bug | todo 代办 | advice 建议) 全新项目集模式还有(issue 问题 | risk 风险 | opportunity 机会)","structType":"json","sub":1,"key":"l4xqk3cu0hiagqyplbyc","children":[]},{"field":"solution","paramsType":"string","required":true,"desc":"处理结果(unclosed 未关闭 | all 全部 | public公开 | tostory 转任务 | totask 转任务 | tobug 转Bug | totodo 转代办 | review 待评审 | assigntome 指派给我)","structType":"json","sub":1,"key":"l4xqk396tlpfwig7ssg","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":1,"key":"l4xqk351jq4sboxnkp","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 待处理 | commenting 处理中 | replied 已处理 | closed 已关闭)","structType":"json","sub":1,"key":"l4xqk31fzcbwp527oa","children":[]},{"field":"subStatus","paramsType":"string","required":true,"desc":"子状态","structType":"json","sub":1,"key":"l4xqk2t8y6xy3ke1my","children":[]},{"field":"public","paramsType":"int","required":true,"desc":"公开","structType":"json","sub":1,"key":"l4xqk2i5g76vwkscgn9","children":[]},{"field":"notify","paramsType":"int","required":true,"desc":"通知","structType":"json","sub":1,"key":"l4xqk2dph2blv3r03s6","children":[]},{"field":"notifyEmail","paramsType":"string","required":true,"desc":"通知邮箱","structType":"json","sub":1,"key":"l4xqk28o87gr8gkr1o3","children":[]},{"field":"likes","paramsType":"string","required":true,"desc":"点赞人","structType":"json","sub":1,"key":"l4xqk24t7lpiel2furj","children":[]},{"field":"result","paramsType":"int","required":true,"desc":"转化结果","structType":"json","sub":1,"key":"l4xqk20spgg6edtsvuh","children":[]},{"field":"faq","paramsType":"int","required":true,"desc":"FAQ","structType":"json","sub":1,"key":"l4xqk1x42zm9hsil02j","children":[]},{"field":"openedBy","paramsType":"14","required":true,"desc":"创建人","structType":"json","sub":1,"key":"l4xqk1srddeaylm2c8a","children":[]},{"field":"openedDate","paramsType":"date","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"l4xqk1o4njumkkuez7f","children":[]},{"field":"reviewedBy","paramsType":"string","required":true,"desc":"由谁评审","structType":"json","sub":1,"key":"l4xqk1jrjd639en7zu","children":[]},{"field":"reviewedDate","paramsType":"date","required":true,"desc":"评审时间","structType":"json","sub":1,"key":"l4xqm1udjtd76144lno","children":[]},{"field":"processedBy","paramsType":"string","required":true,"desc":"由谁处理","structType":"json","sub":1,"key":"l4xqm1pp4wz7xq16nk4","children":[]},{"field":"processedDate","paramsType":"date","required":true,"desc":"处理时间","structType":"json","sub":1,"key":"l4xqm1kzpp0qmm2sye","children":[]},{"field":"closedBy","paramsType":"string","required":true,"desc":"由谁关闭","structType":"json","sub":1,"key":"l4xqm1gjmsi0olf6uk","children":[]},{"field":"closedDate","paramsType":"date","required":true,"desc":"关闭时间","structType":"json","sub":1,"key":"l4xqm1d9f489ea9tpdt","children":[]},{"field":"closedReason","paramsType":"string","required":true,"desc":"关闭原因","structType":"json","sub":1,"key":"l4xqm19rdtnon53thf4","children":[]},{"field":"editedBy","paramsType":"14","required":true,"desc":"最后处理人","structType":"json","sub":1,"key":"l4xqm15cfh7xhj4po0p","children":[]},{"field":"editedDate","paramsType":"date","required":true,"desc":"最后修改时间","structType":"json","sub":1,"key":"l4xqm11o23c3milu6jz","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"l4xqm0xxjdcrk3htpaf","children":[]},{"field":"assignedDate","paramsType":"date","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"l4xqm0u50d6lezeqalxa","children":[]},{"field":"feedbackBy","paramsType":"string","required":true,"desc":"反馈者","structType":"json","sub":1,"key":"l4xqm0qvlgry762yrc","children":[]},{"field":"mailto","paramsType":"array","required":true,"desc":"抄送给","structType":"json","sub":1,"key":"l4xqm0mc4mn1s7casf9","children":[]},{"field":"deleted","paramsType":"int","required":true,"desc":"已删除","structType":"json","sub":1,"key":"l4xqk1g536zioezwsw","children":[]},{"field":"likesCount","paramsType":"int","required":true,"desc":"点赞总数","structType":"json","sub":1,"key":"l4xqk1bofdecinia5u","children":[]}]";s:12:"commonParams";N;s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 13:43:01";s:8:"editedBy";s:5:"admin";s:10:"editedDate";s:19:"2022-06-28 13:43:01";s:7:"deleted";s:1:"0";}} diff --git a/db/api/16.0/apispec b/db/api/16.0/apispec index 6a7d8d718f..3243ea1c89 100644 --- a/db/api/16.0/apispec +++ b/db/api/16.0/apispec @@ -372,7 +372,7 @@ a:185:{i:0;O:8:"stdClass":19:{s:2:"id";s:4:"1602";s:3:"doc";s:3:"498";s:6:"modul "progress": 0 } ] -}";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:52:44";}i:8;O:8:"stdClass":19:{s:2:"id";s:4:"1594";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:506:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:9;O:8:"stdClass":19:{s:2:"id";s:4:"1593";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:324:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:10;O:8:"stdClass":19:{s:2:"id";s:4:"1592";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:118:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:306:"[{"field":"products","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:11;O:8:"stdClass":19:{s:2:"id";s:4:"1591";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:12;O:8:"stdClass":19:{s:2:"id";s:4:"1590";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:13;O:8:"stdClass":19:{s:2:"id";s:4:"1589";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:14;O:8:"stdClass":19:{s:2:"id";s:4:"1588";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:310:"[{"field":"programs","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:15;O:8:"stdClass":19:{s:2:"id";s:4:"1585";s:3:"doc";s:3:"491";s:6:"module";s:3:"117";s:5:"title";s:11:"获取Token";s:4:"path";s:7:"/tokens";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:343:"{"header":[],"params":[{"field":"account","paramsType":"string","required":"","desc":"登录名","structType":"json","sub":1,"key":"kw4dijiqp90k7dq8qbf","children":[]},{"field":"password","paramsType":"string","required":"","desc":"密码","structType":"json","sub":1,"key":"kw4dizdkfwino1m0kro","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"token","paramsType":"string","required":"","desc":"","structType":"json","sub":1,"key":"kw4dg646mwx29eklxea","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:16;O:8:"stdClass":19:{s:2:"id";s:4:"1586";s:3:"doc";s:3:"491";s:6:"module";s:3:"117";s:5:"title";s:11:"获取Token";s:4:"path";s:7:"/tokens";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:343:"{"header":[],"params":[{"field":"account","paramsType":"string","required":"","desc":"登录名","structType":"json","sub":1,"key":"kw4dijiqp90k7dq8qbf","children":[]},{"field":"password","paramsType":"string","required":"","desc":"密码","structType":"json","sub":1,"key":"kw4dizdkfwino1m0kro","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"token","paramsType":"string","required":"","desc":"","structType":"json","sub":1,"key":"kw4dg646mwx29eklxea","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:17;O:8:"stdClass":19:{s:2:"id";s:4:"1587";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:221:"{"header":[{"field":"Authorization","required":"","desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:310:"[{"field":"programs","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:18;O:8:"stdClass":19:{s:2:"id";s:4:"1583";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2552:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":"","desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:19;O:8:"stdClass":19:{s:2:"id";s:4:"1584";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2580:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:20;O:8:"stdClass":19:{s:2:"id";s:4:"1581";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:126:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2757:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:21;O:8:"stdClass":19:{s:2:"id";s:4:"1582";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:126:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2751:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:22;O:8:"stdClass":19:{s:2:"id";s:4:"1580";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1798:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:23;O:8:"stdClass":19:{s:2:"id";s:4:"1578";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:427:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:24;O:8:"stdClass":19:{s:2:"id";s:4:"1579";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2828:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:25;O:8:"stdClass":19:{s:2:"id";s:4:"1573";s:3:"doc";s:3:"484";s:6:"module";s:3:"105";s:5:"title";s:12:"删除产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:0:"";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:26;O:8:"stdClass":19:{s:2:"id";s:4:"1574";s:3:"doc";s:3:"484";s:6:"module";s:3:"105";s:5:"title";s:12:"删除产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:149:"[{"field":"message","paramsType":"string","required":"","desc":"响应信息","structType":"json","sub":1,"key":"kwep4cva4cif20tiujh","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:27;O:8:"stdClass":19:{s:2:"id";s:4:"1575";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:143:"[{"field":"product","paramsType":"object","required":"","desc":"产品","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:28;O:8:"stdClass":19:{s:2:"id";s:4:"1576";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:29;O:8:"stdClass":19:{s:2:"id";s:4:"1577";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:30;O:8:"stdClass":19:{s:2:"id";s:4:"1572";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1238:"{"header":[{"field":"Authorization","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:143:"[{"field":"product","paramsType":"object","required":"","desc":"产品","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:31;O:8:"stdClass":19:{s:2:"id";s:4:"1571";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1790:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:32;O:8:"stdClass":19:{s:2:"id";s:4:"1569";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:118:"{"header":[{"field":"Token","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2757:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:33;O:8:"stdClass":19:{s:2:"id";s:4:"1570";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:34;O:8:"stdClass":19:{s:2:"id";s:4:"1567";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:722:"[{"field":"id","paramsType":"int","required":"","desc":"产品编号","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwepiu5b7zqhgwu8wj","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品编号","structType":"json","sub":1,"key":"kwepj3aqr9fcf3sxhg","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwepjbzwqokucxl2w8j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwepjtej2thsu79qjcl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:35;O:8:"stdClass":19:{s:2:"id";s:4:"1568";s:3:"doc";s:3:"485";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目列表";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:249:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"page","required":"","desc":"第几页,默认为1"},{"field":"limit","required":"","desc":"每页项目数量,默认20"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3236:"[{"field":"page","paramsType":"int","required":true,"desc":"页数","structType":"json","sub":1,"key":"kwepn09crq6071ynk39","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"项目总数","structType":"json","sub":1,"key":"kwepyybc5we2w598ibg","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页项目数","structType":"json","sub":1,"key":"kwepzdnsd4xwbaat25e","children":[]},{"field":"projects","paramsType":"array","required":true,"desc":"项目列表","structType":"json","sub":1,"key":"kwepzhon1eyy05eejdn","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目id","structType":"json","sub":2,"key":"kweq1dfnp8eh7r7iarr","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":2,"key":"kweq1ga5d68zei0ffeq","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":2,"key":"kweq1n7k0c4wiw1my1wg","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum敏捷 | waterfall 瀑布)","structType":"json","sub":2,"key":"kweq1r1ng9lpml2qjwf","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":2,"key":"kweq3mtnyr7z923os4p","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":2,"key":"kweq4mtv4lvfzned8wx","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kweq59rgtd8wyhdbezd","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kweq64ftnnaafzu0xzf","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kweq6g0h0fp91q8m0wud","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":2,"key":"kweq6p6ys7t3pp47pbk","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kweqa21ref4dr0cumt","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kweqahob402lqf6srqo","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目经理","structType":"json","sub":2,"key":"kweqau21by2agzz7a5","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"progress","paramsType":"int","required":"","desc":"进度","structType":"json","sub":2,"key":"kweqb7r9zjm2sd372qp","parentKey":"kwepzhon1eyy05eejdn","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:36;O:8:"stdClass":19:{s:2:"id";s:4:"1565";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1984:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:37;O:8:"stdClass":19:{s:2:"id";s:4:"1566";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"8";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2580:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:38;O:8:"stdClass":19:{s:2:"id";s:4:"1563";s:3:"doc";s:3:"481";s:6:"module";s:1:"0";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:549:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2593:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kwfrtbe11x80yhs04ss","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfrth2o1b8yeez8klk","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:39;O:8:"stdClass":19:{s:2:"id";s:4:"1564";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1984:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:40;O:8:"stdClass":19:{s:2:"id";s:4:"1560";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:36:"获取某一项目下的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:41;O:8:"stdClass":19:{s:2:"id";s:4:"1561";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:30:"获取项目下的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:42;O:8:"stdClass":19:{s:2:"id";s:4:"1562";s:3:"doc";s:3:"482";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目详情";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2834:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfo61d427ebc01qyw8","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfo750e6nu14s1mpxo","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfo7gn93qxvrutdfuv","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算金额","structType":"json","sub":1,"key":"kwfosq5ey0h0ssr36vg","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfosy3p0juy0e9og43l","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfotny2ubdkbqbpiip","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfouazlja2v88n8g5d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfoul4jhmzjlurvua","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfouql1fu3zun911pt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfoutlhiryhz2e5g6","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfovhzh6k9cbh96xck","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":1,"key":"kwfow3wzv9ad5nj9k7","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfoxh13qwv0h2xg86","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfoxsionkxeggc337","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfoy1iw9f2sicm3xcd","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfoynhiwfkyhof0x8a","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfoz9lmw38ehk68bh","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfp0tsvhw6xxldplua","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:43;O:8:"stdClass":19:{s:2:"id";s:4:"1558";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:27:"获取项目的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:44;O:8:"stdClass":19:{s:2:"id";s:4:"1559";s:3:"doc";s:3:"479";s:6:"module";s:3:"106";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1841:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"formData","sub":1,"key":"kwfzx1b9z1ojzx148v8","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"formData","sub":1,"key":"kwg07xvv8hp8q72a70p","children":[]},{"field":"parent","paramsType":"int","required":false,"desc":"所属项目集","structType":"formData","sub":1,"key":"kwg0876le09j7dkyxjq","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"formData","sub":1,"key":"kwg0fzqc762wxgjyyxl","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"formData","sub":1,"key":"kwg0j7akglo9o1sdd8g","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"formData","sub":1,"key":"kwg0jl5ymm7o4x0k5ta","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"formData","sub":1,"key":"kwg0ka6ohdjnpp56c","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"formData","sub":1,"key":"kwg0kyn82ahibxdaa3p","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"formData","sub":1,"key":"kwg0m88gcrace3xs9ha","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"formData","sub":1,"key":"kwg0mvcgpb19a34lxz8","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"formData","sub":1,"key":"kwg0nw28t57nw6ls9g","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1823:"[{"field":"id","paramsType":"int","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfzx1bfez3bi3z1uh8","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwg0qqa1i6liuc5na2","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwg0qz7loa7d85ykp7s","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwg0r91vhgfn2bfb9p7","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwg0rpuoxyjz9pqxgt","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"json","sub":1,"key":"kwg0rzy9s219ge93f3","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg0s9wyql076w7sul","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg0sk1ewbnq8cubqut","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"json","sub":1,"key":"kwg0srchfyqmpfcw8n4","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg0syv0vmyry7bpo99","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg0t6hoeif88dy86s","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"json","sub":1,"key":"kwg0td9u9zcfm6pbbp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:45;O:8:"stdClass":19:{s:2:"id";s:4:"1555";s:3:"doc";s:3:"477";s:6:"module";s:3:"106";s:5:"title";s:12:"删除项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"响应信息","structType":"json","sub":1,"key":"kwg0v2vgszk0z27cw5q","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:46;O:8:"stdClass":19:{s:2:"id";s:4:"1556";s:3:"doc";s:3:"478";s:6:"module";s:1:"0";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2403:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers[]","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"迭代ID","structType":"json","sub":1,"key":"kwg10yk5xgj4vd2u9g","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:47;O:8:"stdClass":19:{s:2:"id";s:4:"1557";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2403:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers[]","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"迭代ID","structType":"json","sub":1,"key":"kwg10yk5xgj4vd2u9g","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:48;O:8:"stdClass":19:{s:2:"id";s:4:"1553";s:3:"doc";s:3:"476";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集详情";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2129:"[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":1,"key":"kwj8m09ldh61qyuvm0i","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":1,"key":"kwj8n4tt3bns0zay97x","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwj8o0cl9hp8wndzcuj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwj8oc20vnok8xd1sq","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwj8oldpyvgy82o6xk","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwj8p80rykze7d8f1nq","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwj8pv6l3t4gggocbrt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwj8qc97rkkuiiwht","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwj8qfwqmbns6nnn7o","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwj8qxwggzcmnlu9mji","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwj8rbp90dreozj1a1x5","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwj8rhee6ww3gy35x4q","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwj8s8pc8uk89exry8i","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwj8sovnzv5fweyv8dq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:49;O:8:"stdClass":19:{s:2:"id";s:4:"1554";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:549:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2593:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kwfrtbe11x80yhs04ss","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfrth2o1b8yeez8klk","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:50;O:8:"stdClass":19:{s:2:"id";s:4:"1552";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1948:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwg36vzj96jttee311e","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwg370yykmrgig69fyd","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:51;O:8:"stdClass":19:{s:2:"id";s:4:"1548";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:0:"";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:52;O:8:"stdClass":19:{s:2:"id";s:4:"1549";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:272:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"formData","sub":1,"key":"kwjamt59yshdio7t6t","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:53;O:8:"stdClass":19:{s:2:"id";s:4:"1550";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:54;O:8:"stdClass":19:{s:2:"id";s:4:"1551";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1949:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwg36vzj96jttee311e","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwg370yykmrgig69fyd","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:55;O:8:"stdClass":19:{s:2:"id";s:4:"1547";s:3:"doc";s:3:"474";s:6:"module";s:3:"104";s:5:"title";s:15:"删除项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:145:"[{"field":"message","paramsType":"string","required":true,"desc":"success","structType":"json","sub":1,"key":"kwj9ixknz4l5k1u4qc","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:56;O:8:"stdClass":19:{s:2:"id";s:4:"1546";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:57;O:8:"stdClass":19:{s:2:"id";s:4:"1545";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1681:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单,只有acl = private才生效","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:58;O:8:"stdClass":19:{s:2:"id";s:4:"1541";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:137:"[{"field":"id","paramsType":"int","required":"","desc":"执行ID","structType":"json","sub":1,"key":"kwjeuc2q9pt9x1wqxzp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:59;O:8:"stdClass":19:{s:2:"id";s:4:"1542";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf5z9zdnjy9hf99r","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:60;O:8:"stdClass":19:{s:2:"id";s:4:"1543";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2738:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf8jyxc2bl5hv8aj","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwjf92n2g29wmh5ksod","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjf93oiywvp8qfjso8","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjf94h8eksswfob90d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjf94n4h5rwsrx9jav","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjf94t8t1k232wb97k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwjf95ea8g3jtdwqbhm","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjfak4falp1oiafj0r","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjfakg8r1npyuij5vr","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwjfakm4mre55vpxd3s","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjfay8pduj3pwg4ni","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjfaye22chyvo2td35","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjfayiuu0rcwpgnzt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjfbfsr0ew9qa91j58k","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjfbfx3nzyg61vz4s","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwjfbp66qz2vh1h4ib","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjfbpav4pod9grs3p6","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjfdqkkbnm8q6il7rl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:61;O:8:"stdClass":19:{s:2:"id";s:4:"1544";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2477:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"array","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:62;O:8:"stdClass":19:{s:2:"id";s:4:"1539";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"编辑执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:63;O:8:"stdClass":19:{s:2:"id";s:4:"1540";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"编辑执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:64;O:8:"stdClass":19:{s:2:"id";s:4:"1536";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgyer9dnn0cdmvfbg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgyibi4lkkpze9ru","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:65;O:8:"stdClass":19:{s:2:"id";s:4:"1537";s:3:"doc";s:3:"469";s:6:"module";s:3:"107";s:5:"title";s:12:"删除执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"删除结果","structType":"json","sub":1,"key":"kwjg44slxzhtkdd71df","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:66;O:8:"stdClass":19:{s:2:"id";s:4:"1538";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"修改执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgxee7xz31l6mlr38","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgxmx4kfy4ru55g7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:67;O:8:"stdClass":19:{s:2:"id";s:4:"1531";s:3:"doc";s:3:"462";s:6:"module";s:3:"116";s:5:"title";s:24:"修改需求其他字段";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1250:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwk0memxgm8j6r50dji","children":[]},{"field":"source","paramsType":"string","required":"","desc":"来源","structType":"json","sub":1,"key":"kwk0n6trlfwg2zn30um","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwk0nkk4tyy9dpgjin","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk0nwqvxy0o082smxs","children":[]},{"field":"category","paramsType":"string","required":"","desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwk0oag6m7pcw8u5q8r","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwk0pnppcprvzgtbbes","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk0pxdmfkb55hpaqcn","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:68;O:8:"stdClass":19:{s:2:"id";s:4:"1532";s:3:"doc";s:3:"471";s:6:"module";s:3:"116";s:5:"title";s:24:"获取项目需求列表";s:4:"path";s:21:"/projects/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:69;O:8:"stdClass":19:{s:2:"id";s:4:"1533";s:3:"doc";s:3:"467";s:6:"module";s:3:"116";s:5:"title";s:24:"获取执行需求列表";s:4:"path";s:23:"/executions/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:70;O:8:"stdClass":19:{s:2:"id";s:4:"1534";s:3:"doc";s:3:"468";s:6:"module";s:3:"116";s:5:"title";s:12:"创建需求";s:4:"path";s:8:"/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1591:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzb7t7r80zxre07ar","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzfpcu6lw92hz2ypn","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzfpzyj9dm3wtixpi","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型","structType":"json","sub":1,"key":"kwjzfqrjtzrsmg53nlp","children":[]},{"field":"spec","paramsType":"string","required":false,"desc":"需求描述","structType":"json","sub":1,"key":"kwjzj6ur2wul1s780xf","children":[]},{"field":"verify","paramsType":"string","required":false,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzjwan8b55385dp7u","children":[]},{"field":"source","paramsType":"string","required":"","desc":"需求来源","structType":"json","sub":1,"key":"kwjzlbfd0s6dmbypy9gr","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwjzm2bpuz7rpwww18o","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwjzmbg8o60ltfbezl","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwjzn2tj3muq5pd3hh3","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2954:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:71;O:8:"stdClass":19:{s:2:"id";s:4:"1535";s:3:"doc";s:3:"470";s:6:"module";s:3:"116";s:5:"title";s:24:"获取产品需求列表";s:4:"path";s:21:"/products/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3931:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:72;O:8:"stdClass":19:{s:2:"id";s:4:"1529";s:3:"doc";s:3:"465";s:6:"module";s:3:"116";s:5:"title";s:18:"获取需求详情";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:73;O:8:"stdClass":19:{s:2:"id";s:4:"1530";s:3:"doc";s:3:"466";s:6:"module";s:3:"116";s:5:"title";s:12:"变更需求";s:4:"path";s:19:"/stories/:id/change";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:554:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":false,"desc":"需求标题","structType":"json","sub":1,"key":"kwk00sadykqdnjov0b","children":[]},{"field":"spec","paramsType":"string","required":"","desc":"需求描述","structType":"json","sub":1,"key":"kwk056l687emefzib2d","children":[]},{"field":"verify","paramsType":"string","required":"","desc":"验收标准","structType":"json","sub":1,"key":"kwk0752wcpdf6vob37","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:74;O:8:"stdClass":19:{s:2:"id";s:4:"1526";s:3:"doc";s:3:"460";s:6:"module";s:3:"115";s:5:"title";s:12:"创建任务";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1768:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":true,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:75;O:8:"stdClass":19:{s:2:"id";s:4:"1527";s:3:"doc";s:3:"463";s:6:"module";s:3:"116";s:5:"title";s:12:"删除需求";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk0vedlh1unhcrpw1o","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:76;O:8:"stdClass":19:{s:2:"id";s:4:"1528";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4998:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"string","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"string","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:77;O:8:"stdClass":19:{s:2:"id";s:4:"1524";s:3:"doc";s:3:"461";s:6:"module";s:3:"115";s:5:"title";s:18:"获取任务详情";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:78;O:8:"stdClass":19:{s:2:"id";s:4:"1525";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:79;O:8:"stdClass":19:{s:2:"id";s:4:"1522";s:3:"doc";s:3:"458";s:6:"module";s:3:"115";s:5:"title";s:12:"删除任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk46ho92f9wizfabt5","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:80;O:8:"stdClass":19:{s:2:"id";s:4:"1523";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:81;O:8:"stdClass":19:{s:2:"id";s:4:"1521";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4563:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:82;O:8:"stdClass":19:{s:2:"id";s:4:"1520";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"id","paramsType":"boolean","required":true,"desc":"","structType":"json","sub":1,"key":"kwk8a3rn3q7kucvzl7l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:83;O:8:"stdClass":19:{s:2:"id";s:4:"1518";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:84;O:8:"stdClass":19:{s:2:"id";s:4:"1519";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:85;O:8:"stdClass":19:{s:2:"id";s:4:"1516";s:3:"doc";s:3:"454";s:6:"module";s:3:"114";s:5:"title";s:15:"获取Bug详情";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:86;O:8:"stdClass":19:{s:2:"id";s:4:"1517";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:87;O:8:"stdClass":19:{s:2:"id";s:4:"1515";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:88;O:8:"stdClass":19:{s:2:"id";s:4:"1514";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3251:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:89;O:8:"stdClass":19:{s:2:"id";s:4:"1510";s:3:"doc";s:3:"451";s:6:"module";s:3:"114";s:5:"title";s:9:"删除Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk9c8mm1zeqn7olev7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:90;O:8:"stdClass":19:{s:2:"id";s:4:"1511";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4348:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"object","required":"","desc":"状态","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[{"field":"code","paramsType":"string","required":"","desc":"状态编号","structType":"json","sub":3,"key":"kwkaxv4ydl52rkoa88q","parentKey":"kwkax2enp5573iuu8ba","children":[]},{"field":"name","paramsType":"string","required":"","desc":"状态名称","structType":"json","sub":3,"key":"kwkay6a25nug5uorjc9","parentKey":"kwkax2enp5573iuu8ba","children":[]}]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:91;O:8:"stdClass":19:{s:2:"id";s:4:"1505";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:92;O:8:"stdClass":19:{s:2:"id";s:4:"1506";s:3:"doc";s:3:"446";s:6:"module";s:3:"113";s:5:"title";s:12:"删除用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:150:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwkdlveesckcian2f3","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:93;O:8:"stdClass":19:{s:2:"id";s:4:"1507";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2277:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":false,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":false,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":false,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":false,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:94;O:8:"stdClass":19:{s:2:"id";s:4:"1508";s:3:"doc";s:3:"453";s:6:"module";s:3:"113";s:5:"title";s:12:"创建用例";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2272:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:95;O:8:"stdClass":19:{s:2:"id";s:4:"1509";s:3:"doc";s:3:"453";s:6:"module";s:3:"113";s:5:"title";s:12:"创建用例";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1918:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":"","desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:96;O:8:"stdClass":19:{s:2:"id";s:4:"1512";s:3:"doc";s:3:"455";s:6:"module";s:3:"114";s:5:"title";s:9:"修改Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:97;O:8:"stdClass":19:{s:2:"id";s:4:"1513";s:3:"doc";s:3:"455";s:6:"module";s:3:"114";s:5:"title";s:9:"修改Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3251:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:98;O:8:"stdClass":19:{s:2:"id";s:4:"1503";s:3:"doc";s:3:"447";s:6:"module";s:3:"112";s:5:"title";s:24:"获取产品计划列表";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1837:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwkdu9u3nq24026pwgg","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"计划总数","structType":"json","sub":1,"key":"kwkdxi22uneoz4p8x08","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页计划数","structType":"json","sub":1,"key":"kwkdxv7e0j0uy24giu5o","children":[]},{"field":"plans","paramsType":"array","required":true,"desc":"计划列表","structType":"json","sub":1,"key":"kwkdy4xe4p5q26x01rr","children":[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":2,"key":"kwlhip9vn4t9nfztco","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlhjfmq70053oa8abu","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlhkazknb10o404to","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":2,"key":"kwlhkqk9ciasdit96i9","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":2,"key":"kwlhp0xjdbokajs0khh","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"开始日期","structType":"json","sub":2,"key":"kwlhpa2osmeebpybzlm","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"结束日期","structType":"json","sub":2,"key":"kwlhpfi39kxh5o1tltq","parentKey":"kwkdy4xe4p5q26x01rr","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:99;O:8:"stdClass":19:{s:2:"id";s:4:"1504";s:3:"doc";s:3:"449";s:6:"module";s:3:"113";s:5:"title";s:18:"获取用例详情";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:100;O:8:"stdClass":19:{s:2:"id";s:4:"1497";s:3:"doc";s:3:"442";s:6:"module";s:3:"112";s:5:"title";s:12:"删除计划";s:4:"path";s:17:"/productsplan/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwlxic3c6pbcuxjkqvj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:101;O:8:"stdClass":19:{s:2:"id";s:4:"1498";s:3:"doc";s:3:"445";s:6:"module";s:3:"112";s:5:"title";s:18:"获取计划详情";s:4:"path";s:17:"/productplans/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:102;O:8:"stdClass":19:{s:2:"id";s:4:"1499";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:851:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:103;O:8:"stdClass":19:{s:2:"id";s:4:"1500";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:851:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:104;O:8:"stdClass":19:{s:2:"id";s:4:"1501";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1170:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:105;O:8:"stdClass":19:{s:2:"id";s:4:"1502";s:3:"doc";s:3:"454";s:6:"module";s:3:"114";s:5:"title";s:15:"获取Bug详情";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3447:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":1,"key":"kwlo9u1dnswxyo677ic","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:106;O:8:"stdClass":19:{s:2:"id";s:4:"1493";s:3:"doc";s:3:"439";s:6:"module";s:1:"0";s:5:"title";s:27:"产品计划取消关联Bug";s:4:"path";s:28:"/productplans/:id/unlinkbugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:285:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"bugs","paramsType":"array","required":true,"desc":"取消关联的Bug ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmxfdfiy4iqik4b1x","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:107;O:8:"stdClass":19:{s:2:"id";s:4:"1494";s:3:"doc";s:3:"443";s:6:"module";s:3:"112";s:5:"title";s:24:"产品计划关联需求";s:4:"path";s:29:"/productplans/:id/linkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:287:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":"","desc":"新增关联的需求,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx6dfdg2j09r3dkrg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:108;O:8:"stdClass":19:{s:2:"id";s:4:"1496";s:3:"doc";s:3:"444";s:6:"module";s:3:"112";s:5:"title";s:12:"修改计划";s:4:"path";s:17:"/productplans/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:109;O:8:"stdClass":19:{s:2:"id";s:4:"1495";s:3:"doc";s:3:"443";s:6:"module";s:1:"0";s:5:"title";s:24:"产品计划关联需求";s:4:"path";s:29:"/productplans/:id/linkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:287:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":"","desc":"新增关联的需求,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx6dfdg2j09r3dkrg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:110;O:8:"stdClass":19:{s:2:"id";s:4:"1491";s:3:"doc";s:3:"441";s:6:"module";s:1:"0";s:5:"title";s:30:"产品计划取消关联需求";s:4:"path";s:31:"/productplans/:id/unlinkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:290:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":true,"desc":"取消关联的需求ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx9dutojxd449eo2","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:111;O:8:"stdClass":19:{s:2:"id";s:4:"1492";s:3:"doc";s:3:"440";s:6:"module";s:1:"0";s:5:"title";s:21:"产品计划关联Bug";s:4:"path";s:22:"/products/:id/linkBugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:219:"{"header":[],"params":[{"field":"bugs","paramsType":"array","required":true,"desc":"关联的Bug ID,比如 [1, 2]","structType":"formData","sub":1,"key":"kwmxbsyeboy1wo7i21","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:112;O:8:"stdClass":19:{s:2:"id";s:4:"1490";s:3:"doc";s:3:"441";s:6:"module";s:3:"112";s:5:"title";s:30:"产品计划取消关联需求";s:4:"path";s:31:"/productplans/:id/unlinkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:290:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":true,"desc":"取消关联的需求ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx9dutojxd449eo2","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:113;O:8:"stdClass":19:{s:2:"id";s:4:"1486";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2280:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:114;O:8:"stdClass":19:{s:2:"id";s:4:"1489";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2271:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"string","required":"","desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:115;O:8:"stdClass":19:{s:2:"id";s:4:"1487";s:3:"doc";s:3:"438";s:6:"module";s:3:"109";s:5:"title";s:24:"获取执行版本列表";s:4:"path";s:22:"/executions/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:116;O:8:"stdClass":19:{s:2:"id";s:4:"1488";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1474:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1643:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:117;O:8:"stdClass":19:{s:2:"id";s:4:"1475";s:3:"doc";s:3:"428";s:6:"module";s:3:"108";s:5:"title";s:18:"获取我的信息";s:4:"path";s:5:"/user";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2875:"[{"field":"profile","paramsType":"object","required":true,"desc":"","structType":"json","sub":1,"key":"kwojur4idf2tpw1bkbe","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwok6cs05lxpmx6y6rr","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":2,"key":"kwok6og0ahx6f597mrd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwok7dh7htxbxpri6vd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwok7nqb31mthbt314r","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwok7zsnesbib3xqyoe","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":2,"key":"kwok8cwjolnijrajn1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":2,"key":"kwok8rkw8a2qaxo6zmg","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":2,"key":"kwok8zxnqkju8zu00v","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":2,"key":"kwok9agk5itm5fdge68","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号码","structType":"json","sub":2,"key":"kwok9rg5pat2s9dtj1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"json","sub":2,"key":"kwok9zaqjcudthvaepl","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号码","structType":"json","sub":2,"key":"kwokab6bp730tfrb0d","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"address","paramsType":"string","required":"","desc":"住址","structType":"json","sub":2,"key":"kwokau91tuhpeglrsf8","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":2,"key":"kwokb1tdzkuodmano","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"admin","paramsType":"boolean","required":true,"desc":"是否管理员","structType":"json","sub":2,"key":"kwokby1uzx691aq2per","parentKey":"kwojur4idf2tpw1bkbe","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:118;O:8:"stdClass":19:{s:2:"id";s:4:"1484";s:3:"doc";s:3:"435";s:6:"module";s:3:"109";s:5:"title";s:12:"修改版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:119;O:8:"stdClass":19:{s:2:"id";s:4:"1485";s:3:"doc";s:3:"434";s:6:"module";s:3:"109";s:5:"title";s:18:"获取版本详情";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:120;O:8:"stdClass":19:{s:2:"id";s:4:"1483";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:17:"/producttesttasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:348:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:121;O:8:"stdClass":19:{s:2:"id";s:4:"1479";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:122;O:8:"stdClass":19:{s:2:"id";s:4:"1480";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1849:"[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":1,"key":"kwohs2y3qvmtjra64a","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwoi42b454iu4jm0gy2","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwoi4d86f1dtrl88ivw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":1,"key":"kwoi4y4umklckqtw02s","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwoi5dao0i9y2m9l7byb","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":1,"key":"kwoi5pkrmti70ofie28","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型(integrate 集成测试 | system 系统测试 | acceptance 验收测试 | performance 性能测试 | safety 安全测试)","structType":"json","sub":1,"key":"kwoi60vq1qds4eic0tz","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":1,"key":"kwoi9orjbpmdakv07yl","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwoigqrt0dz13j7aaq4","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":1,"key":"kwoih8m0gxlep05qzd","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":1,"key":"kwoihh018oo0afnumpa","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":1,"key":"kwoihnqfavvu8h5qvgw","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:123;O:8:"stdClass":19:{s:2:"id";s:4:"1481";s:3:"doc";s:3:"432";s:6:"module";s:3:"109";s:5:"title";s:12:"删除版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwo7byji89l4i5wg66o","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:124;O:8:"stdClass":19:{s:2:"id";s:4:"1482";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:125;O:8:"stdClass":19:{s:2:"id";s:4:"1476";s:3:"doc";s:3:"430";s:6:"module";s:3:"111";s:5:"title";s:24:"获取产品发布列表";s:4:"path";s:22:"/products/:id/releases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1922:"[{"field":"total","paramsType":"int","required":true,"desc":"发布总数","structType":"json","sub":1,"key":"kwoitgd8i6d4ereus2r","children":[]},{"field":"releases","paramsType":"array","required":true,"desc":"发布列表","structType":"json","sub":1,"key":"kwoix2ay87a7rvwc50o","children":[{"field":"id","paramsType":"int","required":"","desc":"发布编号","structType":"json","sub":2,"key":"kwoixo68mf68m49r4","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":2,"key":"kwoj0p620tjei4sseipn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwoj0yeg796dwhrt5i2","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwoj166tm1vkys8lkdn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"build","paramsType":"int","required":"","desc":"所属版本","structType":"json","sub":2,"key":"kwoj1fhpegz8347bce","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"name","paramsType":"string","required":"","desc":"发布名称","structType":"json","sub":2,"key":"kwoj1qcorzww56dwb","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"date","paramsType":"date","required":"","desc":"发布日期","structType":"json","sub":2,"key":"kwoj1xztoy69p6pzbz8","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":2,"key":"kwoj2nf2roxjds47o0a","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | terminate 停止维护)","structType":"json","sub":2,"key":"kwoj3ep06mmsacezqxb","parentKey":"kwoix2ay87a7rvwc50o","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:126;O:8:"stdClass":19:{s:2:"id";s:4:"1477";s:3:"doc";s:3:"431";s:6:"module";s:3:"110";s:5:"title";s:24:"获取项目的测试单";s:4:"path";s:23:"/projects/:id/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:127;O:8:"stdClass":19:{s:2:"id";s:4:"1478";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:17:"/producttesttasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:128;O:8:"stdClass":19:{s:2:"id";s:4:"1472";s:3:"doc";s:3:"426";s:6:"module";s:3:"108";s:5:"title";s:18:"获取用户信息";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2208:"[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":1,"key":"kwokmq24kmolleus9x9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":1,"key":"kwokrgreuuuyzj5c49","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":1,"key":"kwoks11oshvdjjpzmh","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":1,"key":"kwoksascw5wdxcs105","children":[]},{"field":"role","paramsType":"string","required":true,"desc":"角色","structType":"json","sub":1,"key":"kwoksp2qtxhke2b7cxg","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":1,"key":"kwokt0i49jk6okyn5ka","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":1,"key":"kwoktbs7holvbwi4jou","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":1,"key":"kwoktj7s3gj6nw8den1","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":1,"key":"kwoktuj281h3lt16ffh","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":1,"key":"kwoku4lbjkh9agwwanj","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"json","sub":1,"key":"kwokujyylq66r5u7ysr","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号","structType":"json","sub":1,"key":"kwokus0te91bm0uvsyu","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号","structType":"json","sub":1,"key":"kwokvahwulyb6p9xi2p","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号","structType":"json","sub":1,"key":"kwokx3nt6jded4mka4j","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":1,"key":"kwokxdwdqrd418iuh6","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:129;O:8:"stdClass":19:{s:2:"id";s:4:"1473";s:3:"doc";s:3:"424";s:6:"module";s:3:"108";s:5:"title";s:18:"修改用户信息";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:993:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"dept","paramsType":"int","required":false,"desc":"所属部门","structType":"formData","sub":1,"key":"kwokybar4esd0jcjxnn","children":[]},{"field":"role","paramsType":"string","required":"","desc":"角色","structType":"formData","sub":1,"key":"kwolfs4ejv8rpfxwxi","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号","structType":"formData","sub":1,"key":"kwolg35t6c62lq7xl3f","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"formData","sub":1,"key":"kwolgbtpo9gn6aeyu1m","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"formData","sub":1,"key":"kwolgncl0r147rnb6gpe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"formData","sub":1,"key":"kwolgyqz0ps10l1rc4e","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:130;O:8:"stdClass":19:{s:2:"id";s:4:"1474";s:3:"doc";s:3:"427";s:6:"module";s:3:"111";s:5:"title";s:24:"获取项目发布列表";s:4:"path";s:22:"/projects/:id/releases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:131;O:8:"stdClass":19:{s:2:"id";s:4:"1470";s:3:"doc";s:3:"422";s:6:"module";s:3:"108";s:5:"title";s:12:"删除用户";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwon2kh7itd8zwes7no","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:132;O:8:"stdClass":19:{s:2:"id";s:4:"1471";s:3:"doc";s:3:"425";s:6:"module";s:3:"108";s:5:"title";s:18:"获取用户列表";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:225:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[{"field":"page","required":true,"desc":"当前页数"},{"field":"limit","required":true,"desc":"每页用户数"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1649:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwokiko3tqr7zhsdid","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用户总数","structType":"json","sub":1,"key":"kwokjkhdr8n8tswzih","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用户数","structType":"json","sub":1,"key":"kwokjrgscuffi7jg4z","children":[]},{"field":"users","paramsType":"array","required":true,"desc":"用户列表","structType":"json","sub":1,"key":"kwokk4toesq4391ph7r","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwokkfl6o5svxnpzula","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwokkkhmgrv4fegsr9","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwokl0ng7td5nvyc7gq","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwokl9uxlprwwwqh91r","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"role","paramsType":"string","required":false,"desc":"角色","structType":"json","sub":2,"key":"kwokliwf9cm0f6f4k16","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"json","sub":2,"key":"kwoklrpr2krc5ajrbj","parentKey":"kwokk4toesq4391ph7r","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:133;O:8:"stdClass":19:{s:2:"id";s:4:"1468";s:3:"doc";s:3:"428";s:6:"module";s:3:"108";s:5:"title";s:24:"获取我的个人信息";s:4:"path";s:5:"/user";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2875:"[{"field":"profile","paramsType":"object","required":true,"desc":"","structType":"json","sub":1,"key":"kwojur4idf2tpw1bkbe","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwok6cs05lxpmx6y6rr","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":2,"key":"kwok6og0ahx6f597mrd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwok7dh7htxbxpri6vd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwok7nqb31mthbt314r","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwok7zsnesbib3xqyoe","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":2,"key":"kwok8cwjolnijrajn1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":2,"key":"kwok8rkw8a2qaxo6zmg","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":2,"key":"kwok8zxnqkju8zu00v","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":2,"key":"kwok9agk5itm5fdge68","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号码","structType":"json","sub":2,"key":"kwok9rg5pat2s9dtj1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"json","sub":2,"key":"kwok9zaqjcudthvaepl","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号码","structType":"json","sub":2,"key":"kwokab6bp730tfrb0d","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"address","paramsType":"string","required":"","desc":"住址","structType":"json","sub":2,"key":"kwokau91tuhpeglrsf8","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":2,"key":"kwokb1tdzkuodmano","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"admin","paramsType":"boolean","required":true,"desc":"是否管理员","structType":"json","sub":2,"key":"kwokby1uzx691aq2per","parentKey":"kwojur4idf2tpw1bkbe","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:134;O:8:"stdClass":19:{s:2:"id";s:4:"1469";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"9";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3993:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"object","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"用户ID","structType":"json","sub":3,"key":"kwopi2wws0ddwmos2bk","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"account","paramsType":"string","required":"","desc":"用户名","structType":"json","sub":3,"key":"kwopi2l2iodsea0my7o","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":3,"key":"kwopi1wtyve0w4yt3rj","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":3,"key":"kwopi0s2pja7h71d2ti","parentKey":"kwbiwzxpqpd682l27ke","children":[]}]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"object","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"用户ID","structType":"json","sub":3,"key":"kwopgz4i1060sf427paf","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"account","paramsType":"string","required":"","desc":"用户名","structType":"json","sub":3,"key":"kwopgyl848xmhjscro3","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":3,"key":"kwopgxumikuyewjtd2b","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":3,"key":"kwopgrd26t2xxz5rd0l","parentKey":"kwbiy8g88gdd05pvdom","children":[]}]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:135;O:8:"stdClass":19:{s:2:"id";s:4:"1467";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2260:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:136;O:8:"stdClass":19:{s:2:"id";s:4:"1466";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:2:"10";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2570:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"1","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:137;O:8:"stdClass":19:{s:2:"id";s:4:"1465";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2250:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:138;O:8:"stdClass":19:{s:2:"id";s:4:"1463";s:3:"doc";s:3:"476";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集详情";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2264:"[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":1,"key":"kwj8m09ldh61qyuvm0i","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":1,"key":"kwj8n4tt3bns0zay97x","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwj8o0cl9hp8wndzcuj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwj8oc20vnok8xd1sq","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwj8oldpyvgy82o6xk","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwj8p80rykze7d8f1nq","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwj8pv6l3t4gggocbrt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwj8qc97rkkuiiwht","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwj8qfwqmbns6nnn7o","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwj8qxwggzcmnlu9mji","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwj8rbp90dreozj1a1x5","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwj8rhee6ww3gy35x4q","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwj8s8pc8uk89exry8i","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwj8sovnzv5fweyv8dq","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwpqwwrxn0q9ffdgu1","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:139;O:8:"stdClass":19:{s:2:"id";s:4:"1464";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:1681:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单,只有acl = private才生效","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2250:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:140;O:8:"stdClass":19:{s:2:"id";s:4:"1461";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:141;O:8:"stdClass":19:{s:2:"id";s:4:"1462";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:118:"{"header":[{"field":"Token","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2737:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:142;O:8:"stdClass":19:{s:2:"id";s:4:"1460";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1775:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:143;O:8:"stdClass":19:{s:2:"id";s:4:"1459";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:144;O:8:"stdClass":19:{s:2:"id";s:4:"1458";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:997:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属父计划","structType":"json","sub":1,"key":"kwpt6y4rnazkel3pod","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:145;O:8:"stdClass":19:{s:2:"id";s:4:"1456";s:3:"doc";s:3:"470";s:6:"module";s:3:"116";s:5:"title";s:24:"获取产品需求列表";s:4:"path";s:21:"/products/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:146;O:8:"stdClass":19:{s:2:"id";s:4:"1457";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:147;O:8:"stdClass":19:{s:2:"id";s:4:"1455";s:3:"doc";s:3:"467";s:6:"module";s:3:"116";s:5:"title";s:24:"获取执行需求列表";s:4:"path";s:23:"/executions/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:148;O:8:"stdClass":19:{s:2:"id";s:4:"1454";s:3:"doc";s:3:"471";s:6:"module";s:3:"116";s:5:"title";s:24:"获取项目需求列表";s:4:"path";s:21:"/projects/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:149;O:8:"stdClass":19:{s:2:"id";s:4:"1453";s:3:"doc";s:3:"468";s:6:"module";s:3:"116";s:5:"title";s:12:"创建需求";s:4:"path";s:8:"/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1591:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzb7t7r80zxre07ar","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzfpcu6lw92hz2ypn","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzfpzyj9dm3wtixpi","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型","structType":"json","sub":1,"key":"kwjzfqrjtzrsmg53nlp","children":[]},{"field":"spec","paramsType":"string","required":false,"desc":"需求描述","structType":"json","sub":1,"key":"kwjzj6ur2wul1s780xf","children":[]},{"field":"verify","paramsType":"string","required":false,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzjwan8b55385dp7u","children":[]},{"field":"source","paramsType":"string","required":"","desc":"需求来源","structType":"json","sub":1,"key":"kwjzlbfd0s6dmbypy9gr","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwjzm2bpuz7rpwww18o","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwjzmbg8o60ltfbezl","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwjzn2tj3muq5pd3hh3","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:150;O:8:"stdClass":19:{s:2:"id";s:4:"1452";s:3:"doc";s:3:"466";s:6:"module";s:3:"116";s:5:"title";s:12:"变更需求";s:4:"path";s:19:"/stories/:id/change";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:554:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":false,"desc":"需求标题","structType":"json","sub":1,"key":"kwk00sadykqdnjov0b","children":[]},{"field":"spec","paramsType":"string","required":"","desc":"需求描述","structType":"json","sub":1,"key":"kwk056l687emefzib2d","children":[]},{"field":"verify","paramsType":"string","required":"","desc":"验收标准","structType":"json","sub":1,"key":"kwk0752wcpdf6vob37","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:151;O:8:"stdClass":19:{s:2:"id";s:4:"1451";s:3:"doc";s:3:"465";s:6:"module";s:3:"116";s:5:"title";s:18:"获取需求详情";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:152;O:8:"stdClass":19:{s:2:"id";s:4:"1449";s:3:"doc";s:3:"479";s:6:"module";s:3:"106";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1846:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"formData","sub":1,"key":"kwfzx1b9z1ojzx148v8","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"formData","sub":1,"key":"kwg07xvv8hp8q72a70p","children":[]},{"field":"parent","paramsType":"int","required":false,"desc":"所属项目集","structType":"formData","sub":1,"key":"kwg0876le09j7dkyxjq","children":[]},{"field":"PM","paramsType":"int","required":"","desc":"项目负责人","structType":"formData","sub":1,"key":"kwg0fzqc762wxgjyyxl","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"formData","sub":1,"key":"kwg0j7akglo9o1sdd8g","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"formData","sub":1,"key":"kwg0jl5ymm7o4x0k5ta","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"formData","sub":1,"key":"kwg0ka6ohdjnpp56c","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"formData","sub":1,"key":"kwg0kyn82ahibxdaa3p","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"formData","sub":1,"key":"kwg0m88gcrace3xs9ha","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"formData","sub":1,"key":"kwg0mvcgpb19a34lxz8","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"formData","sub":1,"key":"kwg0nw28t57nw6ls9g","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1818:"[{"field":"id","paramsType":"int","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfzx1bfez3bi3z1uh8","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwg0qqa1i6liuc5na2","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwg0qz7loa7d85ykp7s","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwg0r91vhgfn2bfb9p7","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwg0rpuoxyjz9pqxgt","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"json","sub":1,"key":"kwg0rzy9s219ge93f3","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg0s9wyql076w7sul","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg0sk1ewbnq8cubqut","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"json","sub":1,"key":"kwg0srchfyqmpfcw8n4","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg0syv0vmyry7bpo99","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg0t6hoeif88dy86s","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"json","sub":1,"key":"kwg0td9u9zcfm6pbbp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:153;O:8:"stdClass":19:{s:2:"id";s:4:"1450";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1979:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:154;O:8:"stdClass":19:{s:2:"id";s:4:"1446";s:3:"doc";s:3:"438";s:6:"module";s:3:"109";s:5:"title";s:24:"获取执行版本列表";s:4:"path";s:22:"/executions/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2275:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:155;O:8:"stdClass":19:{s:2:"id";s:4:"1447";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2275:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:156;O:8:"stdClass":19:{s:2:"id";s:4:"1448";s:3:"doc";s:3:"482";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目详情";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2824:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfo61d427ebc01qyw8","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfo750e6nu14s1mpxo","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfo7gn93qxvrutdfuv","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算金额","structType":"json","sub":1,"key":"kwfosq5ey0h0ssr36vg","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfosy3p0juy0e9og43l","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfotny2ubdkbqbpiip","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfouazlja2v88n8g5d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfoul4jhmzjlurvua","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfouql1fu3zun911pt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfoutlhiryhz2e5g6","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfovhzh6k9cbh96xck","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":1,"key":"kwfow3wzv9ad5nj9k7","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfoxh13qwv0h2xg86","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfoxsionkxeggc337","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfoy1iw9f2sicm3xcd","children":[]},{"field":"PM","paramsType":"1","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfoynhiwfkyhof0x8a","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfoz9lmw38ehk68bh","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfp0tsvhw6xxldplua","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:157;O:8:"stdClass":19:{s:2:"id";s:4:"1444";s:3:"doc";s:3:"435";s:6:"module";s:3:"109";s:5:"title";s:12:"修改版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:158;O:8:"stdClass":19:{s:2:"id";s:4:"1445";s:3:"doc";s:3:"434";s:6:"module";s:3:"109";s:5:"title";s:18:"获取版本详情";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:159;O:8:"stdClass":19:{s:2:"id";s:4:"1443";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1482:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:160;O:8:"stdClass":19:{s:2:"id";s:4:"1441";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:27:"获取项目的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2213:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:161;O:8:"stdClass":19:{s:2:"id";s:4:"1442";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2760:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgyer9dnn0cdmvfbg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgyibi4lkkpze9ru","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:162;O:8:"stdClass":19:{s:2:"id";s:4:"1440";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4978:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"1","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"1","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:163;O:8:"stdClass":19:{s:2:"id";s:4:"1439";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2713:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf8jyxc2bl5hv8aj","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwjf92n2g29wmh5ksod","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjf93oiywvp8qfjso8","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjf94h8eksswfob90d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjf94n4h5rwsrx9jav","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjf94t8t1k232wb97k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwjf95ea8g3jtdwqbhm","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjfak4falp1oiafj0r","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjfakg8r1npyuij5vr","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwjfakm4mre55vpxd3s","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjfay8pduj3pwg4ni","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjfaye22chyvo2td35","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjfayiuu0rcwpgnzt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjfbfsr0ew9qa91j58k","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjfbfx3nzyg61vz4s","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwjfbp66qz2vh1h4ib","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjfbpav4pod9grs3p6","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjfdqkkbnm8q6il7rl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:164;O:8:"stdClass":19:{s:2:"id";s:4:"1438";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:5154:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"1","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"1","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"mailto","paramsType":"array","required":"","desc":"抄送给","structType":"json","sub":2,"key":"kwt666j22gcx1g3sx63","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:165;O:8:"stdClass":19:{s:2:"id";s:4:"1437";s:3:"doc";s:3:"460";s:6:"module";s:3:"115";s:5:"title";s:12:"创建任务";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2067:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":true,"desc":"指派给","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"formData","sub":1,"key":"kwt6a17uomk2c6xhjs","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"formData","sub":1,"key":"kwt6a1sp0c8naqpkajj","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4244:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]},{"field":"team","paramsType":"array","required":true,"desc":"团队,应用于多人任务","structType":"json","sub":1,"key":"kwt8yls7al1zdn067zn","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:166;O:8:"stdClass":19:{s:2:"id";s:4:"1436";s:3:"doc";s:3:"461";s:6:"module";s:3:"115";s:5:"title";s:18:"获取任务详情";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:167;O:8:"stdClass":19:{s:2:"id";s:4:"1435";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4075:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"1","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:168;O:8:"stdClass":19:{s:2:"id";s:4:"1434";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4563:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:169;O:8:"stdClass":19:{s:2:"id";s:4:"1433";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:5844:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":2,"key":"kwtbqoa9vqb7f21srse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"assignedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":2,"key":"kwtbr15ttoimxdswkrp","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":2,"key":"kwtbrhatv8b7tmo9ku","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":2,"key":"kwtbrwq0a2lla3pd2o","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":2,"key":"kwtbsjcl1go23ol6x9n","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":2,"key":"kwtbsrk3rnmf8jsrllp","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":2,"key":"kwtbts64oocm7bnt20m","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:170;O:8:"stdClass":19:{s:2:"id";s:4:"1432";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4317:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:171;O:8:"stdClass":19:{s:2:"id";s:4:"1431";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4317:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:172;O:8:"stdClass":19:{s:2:"id";s:4:"1430";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4514:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":1,"key":"kwtdcy67h7ab3mrs7r","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:173;O:8:"stdClass":19:{s:2:"id";s:4:"1429";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4343:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"object","required":"","desc":"状态","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[{"field":"code","paramsType":"string","required":"","desc":"状态编号","structType":"json","sub":3,"key":"kwkaxv4ydl52rkoa88q","parentKey":"kwkax2enp5573iuu8ba","children":[]},{"field":"name","paramsType":"string","required":"","desc":"状态名称","structType":"json","sub":3,"key":"kwkay6a25nug5uorjc9","parentKey":"kwkax2enp5573iuu8ba","children":[]}]},{"field":"openedBy","paramsType":"1","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:174;O:8:"stdClass":19:{s:2:"id";s:4:"1428";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2277:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":false,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":false,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":false,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":false,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:175;O:8:"stdClass":19:{s:2:"id";s:4:"1427";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:176;O:8:"stdClass":19:{s:2:"id";s:4:"1426";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3129:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:177;O:8:"stdClass":19:{s:2:"id";s:4:"1424";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1844:"[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":1,"key":"kwohs2y3qvmtjra64a","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwoi42b454iu4jm0gy2","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwoi4d86f1dtrl88ivw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":1,"key":"kwoi4y4umklckqtw02s","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwoi5dao0i9y2m9l7byb","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":1,"key":"kwoi5pkrmti70ofie28","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型(integrate 集成测试 | system 系统测试 | acceptance 验收测试 | performance 性能测试 | safety 安全测试)","structType":"json","sub":1,"key":"kwoi60vq1qds4eic0tz","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":1,"key":"kwoi9orjbpmdakv07yl","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwoigqrt0dz13j7aaq4","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":1,"key":"kwoih8m0gxlep05qzd","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":1,"key":"kwoihh018oo0afnumpa","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":1,"key":"kwoihnqfavvu8h5qvgw","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:178;O:8:"stdClass":19:{s:2:"id";s:4:"1425";s:3:"doc";s:3:"431";s:6:"module";s:3:"110";s:5:"title";s:24:"获取项目的测试单";s:4:"path";s:23:"/projects/:id/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3129:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:179;O:8:"stdClass":19:{s:2:"id";s:4:"1422";s:3:"doc";s:3:"449";s:6:"module";s:3:"113";s:5:"title";s:18:"获取用例详情";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3271:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(wait 待评审 | normal 正常 | blocked 被阻塞 | investigate 研究中)","structType":"json","sub":1,"key":"kwtxzea0ytpl9vcbwgf","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:180;O:8:"stdClass":19:{s:2:"id";s:4:"1423";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4076:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 待评审 | normal 正常 | blocked 被阻塞 | investigate 研究中)","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:181;O:8:"stdClass":19:{s:2:"id";s:4:"1418";s:3:"doc";s:3:"423";s:6:"module";s:3:"108";s:5:"title";s:12:"创建用户";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:777:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"account","paramsType":"string","required":true,"desc":"账号","structType":"json","sub":1,"key":"l41zlm7syi7tpslnib","children":[]},{"field":"password","paramsType":"string","required":true,"desc":"密码","structType":"json","sub":1,"key":"l41zteb0u7pqb5432d","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":1,"key":"l41zthpk4jhr9vixiz3","children":[]},{"field":"visions","paramsType":"array","required":"","desc":"界面 [“rnd”, “lite”],(综合研发界面 rnd, 迅捷界面 lite)。默认是rnd","structType":"json","sub":1,"key":"l41ztwgamfcn0dxx40s","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:136:"{"account": "usertest", "password": "123qwe!@#", "realname": "测试用户"}";s:15:"responseExample";s:1648:"{ +}";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:52:44";}i:8;O:8:"stdClass":19:{s:2:"id";s:4:"1594";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:506:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:9;O:8:"stdClass":19:{s:2:"id";s:4:"1593";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:324:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:10;O:8:"stdClass":19:{s:2:"id";s:4:"1592";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:118:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:306:"[{"field":"products","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:11;O:8:"stdClass":19:{s:2:"id";s:4:"1591";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:12;O:8:"stdClass":19:{s:2:"id";s:4:"1590";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:13;O:8:"stdClass":19:{s:2:"id";s:4:"1589";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:309:"[{"field":"programs","paramsType":"array","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:14;O:8:"stdClass":19:{s:2:"id";s:4:"1588";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:310:"[{"field":"programs","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:15;O:8:"stdClass":19:{s:2:"id";s:4:"1585";s:3:"doc";s:3:"491";s:6:"module";s:3:"117";s:5:"title";s:11:"获取Token";s:4:"path";s:7:"/tokens";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:343:"{"header":[],"params":[{"field":"account","paramsType":"string","required":"","desc":"登录名","structType":"json","sub":1,"key":"kw4dijiqp90k7dq8qbf","children":[]},{"field":"password","paramsType":"string","required":"","desc":"密码","structType":"json","sub":1,"key":"kw4dizdkfwino1m0kro","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"token","paramsType":"string","required":"","desc":"","structType":"json","sub":1,"key":"kw4dg646mwx29eklxea","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:16;O:8:"stdClass":19:{s:2:"id";s:4:"1586";s:3:"doc";s:3:"491";s:6:"module";s:3:"117";s:5:"title";s:11:"获取Token";s:4:"path";s:7:"/tokens";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:343:"{"header":[],"params":[{"field":"account","paramsType":"string","required":"","desc":"登录名","structType":"json","sub":1,"key":"kw4dijiqp90k7dq8qbf","children":[]},{"field":"password","paramsType":"string","required":"","desc":"密码","structType":"json","sub":1,"key":"kw4dizdkfwino1m0kro","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"token","paramsType":"string","required":"","desc":"","structType":"json","sub":1,"key":"kw4dg646mwx29eklxea","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:17;O:8:"stdClass":19:{s:2:"id";s:4:"1587";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:221:"{"header":[{"field":"Authorization","required":"","desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:310:"[{"field":"programs","paramsType":"object","required":"","desc":"","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:18;O:8:"stdClass":19:{s:2:"id";s:4:"1583";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2552:"[{"field":"programs","paramsType":"array","required":"","desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":"","desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:19;O:8:"stdClass":19:{s:2:"id";s:4:"1584";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:223:"{"header":[{"field":"Authorization","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2580:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:20;O:8:"stdClass":19:{s:2:"id";s:4:"1581";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:126:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2757:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:21;O:8:"stdClass":19:{s:2:"id";s:4:"1582";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:126:"{"header":[{"field":"Authorization","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2751:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:22;O:8:"stdClass":19:{s:2:"id";s:4:"1580";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1798:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:23;O:8:"stdClass":19:{s:2:"id";s:4:"1578";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:427:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:24;O:8:"stdClass":19:{s:2:"id";s:4:"1579";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2828:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:25;O:8:"stdClass":19:{s:2:"id";s:4:"1573";s:3:"doc";s:3:"484";s:6:"module";s:3:"105";s:5:"title";s:12:"删除产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:0:"";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:26;O:8:"stdClass":19:{s:2:"id";s:4:"1574";s:3:"doc";s:3:"484";s:6:"module";s:3:"105";s:5:"title";s:12:"删除产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:149:"[{"field":"message","paramsType":"string","required":"","desc":"响应信息","structType":"json","sub":1,"key":"kwep4cva4cif20tiujh","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:27;O:8:"stdClass":19:{s:2:"id";s:4:"1575";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:143:"[{"field":"product","paramsType":"object","required":"","desc":"产品","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:28;O:8:"stdClass":19:{s:2:"id";s:4:"1576";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:29;O:8:"stdClass":19:{s:2:"id";s:4:"1577";s:3:"doc";s:3:"487";s:6:"module";s:1:"0";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:128:"{"header":[{"field":"Authorization","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:30;O:8:"stdClass":19:{s:2:"id";s:4:"1572";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1238:"{"header":[{"field":"Authorization","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:143:"[{"field":"product","paramsType":"object","required":"","desc":"产品","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:31;O:8:"stdClass":19:{s:2:"id";s:4:"1571";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1790:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:32;O:8:"stdClass":19:{s:2:"id";s:4:"1569";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:118:"{"header":[{"field":"Token","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2757:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:33;O:8:"stdClass":19:{s:2:"id";s:4:"1570";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3038:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"object","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[{"field":"account","paramsType":"string","required":false,"desc":"账户名","structType":"json","sub":2,"key":"kwemc1rwia6gu1osie","parentKey":"kwembkw9f5tak8d1gtg","children":[]}]},{"field":"QD","paramsType":"object","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemcts82g2znqe1ksn","parentKey":"kwemckatgwyg58ed9ic","children":[]}]},{"field":"RD","paramsType":"object","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[{"field":"account","paramsType":"object","required":"","desc":"账户名","structType":"json","sub":2,"key":"kwemojw7zl28rgjv73d","parentKey":"kwemo4zyvvjyf5lpte","children":[]}]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"object","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[{"field":"account","paramsType":"object","required":true,"desc":"账户名","structType":"json","sub":2,"key":"kwemwh1vt58lmzn2yz","parentKey":"kwemsw3yed4knmaqwwr","children":[]},{"field":"realname","paramsType":"object","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwemtbmet7dcakejvk","parentKey":"kwemsw3yed4knmaqwwr","children":[]}]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:34;O:8:"stdClass":19:{s:2:"id";s:4:"1567";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:722:"[{"field":"id","paramsType":"int","required":"","desc":"产品编号","structType":"json","sub":1,"key":"kwemz2ndif7hbq1tt0l","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwepiu5b7zqhgwu8wj","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品编号","structType":"json","sub":1,"key":"kwepj3aqr9fcf3sxhg","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwepjbzwqokucxl2w8j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwepjtej2thsu79qjcl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:35;O:8:"stdClass":19:{s:2:"id";s:4:"1568";s:3:"doc";s:3:"485";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目列表";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:249:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"page","required":"","desc":"第几页,默认为1"},{"field":"limit","required":"","desc":"每页项目数量,默认20"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3236:"[{"field":"page","paramsType":"int","required":true,"desc":"页数","structType":"json","sub":1,"key":"kwepn09crq6071ynk39","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"项目总数","structType":"json","sub":1,"key":"kwepyybc5we2w598ibg","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页项目数","structType":"json","sub":1,"key":"kwepzdnsd4xwbaat25e","children":[]},{"field":"projects","paramsType":"array","required":true,"desc":"项目列表","structType":"json","sub":1,"key":"kwepzhon1eyy05eejdn","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目id","structType":"json","sub":2,"key":"kweq1dfnp8eh7r7iarr","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":2,"key":"kweq1ga5d68zei0ffeq","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":2,"key":"kweq1n7k0c4wiw1my1wg","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum敏捷 | waterfall 瀑布)","structType":"json","sub":2,"key":"kweq1r1ng9lpml2qjwf","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":2,"key":"kweq3mtnyr7z923os4p","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":2,"key":"kweq4mtv4lvfzned8wx","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kweq59rgtd8wyhdbezd","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kweq64ftnnaafzu0xzf","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kweq6g0h0fp91q8m0wud","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":2,"key":"kweq6p6ys7t3pp47pbk","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kweqa21ref4dr0cumt","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kweqahob402lqf6srqo","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目经理","structType":"json","sub":2,"key":"kweqau21by2agzz7a5","parentKey":"kwepzhon1eyy05eejdn","children":[]},{"field":"progress","paramsType":"int","required":"","desc":"进度","structType":"json","sub":2,"key":"kweqb7r9zjm2sd372qp","parentKey":"kwepzhon1eyy05eejdn","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:36;O:8:"stdClass":19:{s:2:"id";s:4:"1565";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1984:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:37;O:8:"stdClass":19:{s:2:"id";s:4:"1566";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"8";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2580:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:38;O:8:"stdClass":19:{s:2:"id";s:4:"1563";s:3:"doc";s:3:"481";s:6:"module";s:1:"0";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:549:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2593:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kwfrtbe11x80yhs04ss","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfrth2o1b8yeez8klk","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:39;O:8:"stdClass":19:{s:2:"id";s:4:"1564";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1984:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:40;O:8:"stdClass":19:{s:2:"id";s:4:"1560";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:36:"获取某一项目下的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:41;O:8:"stdClass":19:{s:2:"id";s:4:"1561";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:30:"获取项目下的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:42;O:8:"stdClass":19:{s:2:"id";s:4:"1562";s:3:"doc";s:3:"482";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目详情";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2834:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfo61d427ebc01qyw8","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfo750e6nu14s1mpxo","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfo7gn93qxvrutdfuv","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算金额","structType":"json","sub":1,"key":"kwfosq5ey0h0ssr36vg","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfosy3p0juy0e9og43l","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfotny2ubdkbqbpiip","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfouazlja2v88n8g5d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfoul4jhmzjlurvua","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfouql1fu3zun911pt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfoutlhiryhz2e5g6","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfovhzh6k9cbh96xck","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":1,"key":"kwfow3wzv9ad5nj9k7","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfoxh13qwv0h2xg86","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfoxsionkxeggc337","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfoy1iw9f2sicm3xcd","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfoynhiwfkyhof0x8a","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfoz9lmw38ehk68bh","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfp0tsvhw6xxldplua","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:43;O:8:"stdClass":19:{s:2:"id";s:4:"1558";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:27:"获取项目的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2218:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:44;O:8:"stdClass":19:{s:2:"id";s:4:"1559";s:3:"doc";s:3:"479";s:6:"module";s:3:"106";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1841:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"formData","sub":1,"key":"kwfzx1b9z1ojzx148v8","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"formData","sub":1,"key":"kwg07xvv8hp8q72a70p","children":[]},{"field":"parent","paramsType":"int","required":false,"desc":"所属项目集","structType":"formData","sub":1,"key":"kwg0876le09j7dkyxjq","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"formData","sub":1,"key":"kwg0fzqc762wxgjyyxl","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"formData","sub":1,"key":"kwg0j7akglo9o1sdd8g","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"formData","sub":1,"key":"kwg0jl5ymm7o4x0k5ta","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"formData","sub":1,"key":"kwg0ka6ohdjnpp56c","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"formData","sub":1,"key":"kwg0kyn82ahibxdaa3p","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"formData","sub":1,"key":"kwg0m88gcrace3xs9ha","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"formData","sub":1,"key":"kwg0mvcgpb19a34lxz8","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"formData","sub":1,"key":"kwg0nw28t57nw6ls9g","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1823:"[{"field":"id","paramsType":"int","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfzx1bfez3bi3z1uh8","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwg0qqa1i6liuc5na2","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwg0qz7loa7d85ykp7s","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwg0r91vhgfn2bfb9p7","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwg0rpuoxyjz9pqxgt","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"json","sub":1,"key":"kwg0rzy9s219ge93f3","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg0s9wyql076w7sul","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg0sk1ewbnq8cubqut","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"json","sub":1,"key":"kwg0srchfyqmpfcw8n4","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg0syv0vmyry7bpo99","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg0t6hoeif88dy86s","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"json","sub":1,"key":"kwg0td9u9zcfm6pbbp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:45;O:8:"stdClass":19:{s:2:"id";s:4:"1555";s:3:"doc";s:3:"477";s:6:"module";s:3:"106";s:5:"title";s:12:"删除项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"响应信息","structType":"json","sub":1,"key":"kwg0v2vgszk0z27cw5q","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:46;O:8:"stdClass":19:{s:2:"id";s:4:"1556";s:3:"doc";s:3:"478";s:6:"module";s:1:"0";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2403:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers[]","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"迭代ID","structType":"json","sub":1,"key":"kwg10yk5xgj4vd2u9g","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:47;O:8:"stdClass":19:{s:2:"id";s:4:"1557";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2403:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers[]","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"迭代ID","structType":"json","sub":1,"key":"kwg10yk5xgj4vd2u9g","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:48;O:8:"stdClass":19:{s:2:"id";s:4:"1553";s:3:"doc";s:3:"476";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集详情";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2129:"[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":1,"key":"kwj8m09ldh61qyuvm0i","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":1,"key":"kwj8n4tt3bns0zay97x","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwj8o0cl9hp8wndzcuj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwj8oc20vnok8xd1sq","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwj8oldpyvgy82o6xk","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwj8p80rykze7d8f1nq","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwj8pv6l3t4gggocbrt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwj8qc97rkkuiiwht","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwj8qfwqmbns6nnn7o","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwj8qxwggzcmnlu9mji","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwj8rbp90dreozj1a1x5","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwj8rhee6ww3gy35x4q","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwj8s8pc8uk89exry8i","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwj8sovnzv5fweyv8dq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:49;O:8:"stdClass":19:{s:2:"id";s:4:"1554";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:549:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2593:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kwfrtbe11x80yhs04ss","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfrth2o1b8yeez8klk","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:50;O:8:"stdClass":19:{s:2:"id";s:4:"1552";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1948:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwg36vzj96jttee311e","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwg370yykmrgig69fyd","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:51;O:8:"stdClass":19:{s:2:"id";s:4:"1548";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:0:"";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:0:"";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:52;O:8:"stdClass":19:{s:2:"id";s:4:"1549";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:272:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"formData","sub":1,"key":"kwjamt59yshdio7t6t","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:53;O:8:"stdClass":19:{s:2:"id";s:4:"1550";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:54;O:8:"stdClass":19:{s:2:"id";s:4:"1551";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1949:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwg36vzj96jttee311e","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwg370yykmrgig69fyd","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:55;O:8:"stdClass":19:{s:2:"id";s:4:"1547";s:3:"doc";s:3:"474";s:6:"module";s:3:"104";s:5:"title";s:15:"删除项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:145:"[{"field":"message","paramsType":"string","required":true,"desc":"success","structType":"json","sub":1,"key":"kwj9ixknz4l5k1u4qc","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:56;O:8:"stdClass":19:{s:2:"id";s:4:"1546";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:57;O:8:"stdClass":19:{s:2:"id";s:4:"1545";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1681:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单,只有acl = private才生效","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2259:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:58;O:8:"stdClass":19:{s:2:"id";s:4:"1541";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:137:"[{"field":"id","paramsType":"int","required":"","desc":"执行ID","structType":"json","sub":1,"key":"kwjeuc2q9pt9x1wqxzp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:59;O:8:"stdClass":19:{s:2:"id";s:4:"1542";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:138:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf5z9zdnjy9hf99r","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:60;O:8:"stdClass":19:{s:2:"id";s:4:"1543";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2738:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf8jyxc2bl5hv8aj","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwjf92n2g29wmh5ksod","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjf93oiywvp8qfjso8","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjf94h8eksswfob90d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjf94n4h5rwsrx9jav","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjf94t8t1k232wb97k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwjf95ea8g3jtdwqbhm","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjfak4falp1oiafj0r","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjfakg8r1npyuij5vr","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwjfakm4mre55vpxd3s","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjfay8pduj3pwg4ni","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjfaye22chyvo2td35","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjfayiuu0rcwpgnzt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjfbfsr0ew9qa91j58k","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjfbfx3nzyg61vz4s","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwjfbp66qz2vh1h4ib","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjfbpav4pod9grs3p6","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjfdqkkbnm8q6il7rl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:61;O:8:"stdClass":19:{s:2:"id";s:4:"1544";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2477:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"array","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:62;O:8:"stdClass":19:{s:2:"id";s:4:"1539";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"编辑执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:63;O:8:"stdClass":19:{s:2:"id";s:4:"1540";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"编辑执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:64;O:8:"stdClass":19:{s:2:"id";s:4:"1536";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgyer9dnn0cdmvfbg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgyibi4lkkpze9ru","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:65;O:8:"stdClass":19:{s:2:"id";s:4:"1537";s:3:"doc";s:3:"469";s:6:"module";s:3:"107";s:5:"title";s:12:"删除执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"删除结果","structType":"json","sub":1,"key":"kwjg44slxzhtkdd71df","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:66;O:8:"stdClass":19:{s:2:"id";s:4:"1538";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"修改执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgxee7xz31l6mlr38","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgxmx4kfy4ru55g7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:67;O:8:"stdClass":19:{s:2:"id";s:4:"1531";s:3:"doc";s:3:"462";s:6:"module";s:3:"116";s:5:"title";s:24:"修改需求其他字段";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1250:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwk0memxgm8j6r50dji","children":[]},{"field":"source","paramsType":"string","required":"","desc":"来源","structType":"json","sub":1,"key":"kwk0n6trlfwg2zn30um","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwk0nkk4tyy9dpgjin","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk0nwqvxy0o082smxs","children":[]},{"field":"category","paramsType":"string","required":"","desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwk0oag6m7pcw8u5q8r","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwk0pnppcprvzgtbbes","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk0pxdmfkb55hpaqcn","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:68;O:8:"stdClass":19:{s:2:"id";s:4:"1532";s:3:"doc";s:3:"471";s:6:"module";s:3:"116";s:5:"title";s:24:"获取项目需求列表";s:4:"path";s:21:"/projects/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:69;O:8:"stdClass":19:{s:2:"id";s:4:"1533";s:3:"doc";s:3:"467";s:6:"module";s:3:"116";s:5:"title";s:24:"获取执行需求列表";s:4:"path";s:23:"/executions/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:70;O:8:"stdClass":19:{s:2:"id";s:4:"1534";s:3:"doc";s:3:"468";s:6:"module";s:3:"116";s:5:"title";s:12:"创建需求";s:4:"path";s:8:"/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1591:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzb7t7r80zxre07ar","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzfpcu6lw92hz2ypn","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzfpzyj9dm3wtixpi","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型","structType":"json","sub":1,"key":"kwjzfqrjtzrsmg53nlp","children":[]},{"field":"spec","paramsType":"string","required":false,"desc":"需求描述","structType":"json","sub":1,"key":"kwjzj6ur2wul1s780xf","children":[]},{"field":"verify","paramsType":"string","required":false,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzjwan8b55385dp7u","children":[]},{"field":"source","paramsType":"string","required":"","desc":"需求来源","structType":"json","sub":1,"key":"kwjzlbfd0s6dmbypy9gr","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwjzm2bpuz7rpwww18o","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwjzmbg8o60ltfbezl","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwjzn2tj3muq5pd3hh3","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2954:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:71;O:8:"stdClass":19:{s:2:"id";s:4:"1535";s:3:"doc";s:3:"470";s:6:"module";s:3:"116";s:5:"title";s:24:"获取产品需求列表";s:4:"path";s:21:"/products/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3931:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:72;O:8:"stdClass":19:{s:2:"id";s:4:"1529";s:3:"doc";s:3:"465";s:6:"module";s:3:"116";s:5:"title";s:18:"获取需求详情";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:73;O:8:"stdClass":19:{s:2:"id";s:4:"1530";s:3:"doc";s:3:"466";s:6:"module";s:3:"116";s:5:"title";s:12:"变更需求";s:4:"path";s:19:"/stories/:id/change";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:554:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":false,"desc":"需求标题","structType":"json","sub":1,"key":"kwk00sadykqdnjov0b","children":[]},{"field":"spec","paramsType":"string","required":"","desc":"需求描述","structType":"json","sub":1,"key":"kwk056l687emefzib2d","children":[]},{"field":"verify","paramsType":"string","required":"","desc":"验收标准","structType":"json","sub":1,"key":"kwk0752wcpdf6vob37","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:74;O:8:"stdClass":19:{s:2:"id";s:4:"1526";s:3:"doc";s:3:"460";s:6:"module";s:3:"115";s:5:"title";s:12:"创建任务";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1768:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":true,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:75;O:8:"stdClass":19:{s:2:"id";s:4:"1527";s:3:"doc";s:3:"463";s:6:"module";s:3:"116";s:5:"title";s:12:"删除需求";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk0vedlh1unhcrpw1o","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:76;O:8:"stdClass":19:{s:2:"id";s:4:"1528";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4998:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"string","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"string","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:77;O:8:"stdClass":19:{s:2:"id";s:4:"1524";s:3:"doc";s:3:"461";s:6:"module";s:3:"115";s:5:"title";s:18:"获取任务详情";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:78;O:8:"stdClass":19:{s:2:"id";s:4:"1525";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:79;O:8:"stdClass":19:{s:2:"id";s:4:"1522";s:3:"doc";s:3:"458";s:6:"module";s:3:"115";s:5:"title";s:12:"删除任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk46ho92f9wizfabt5","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:80;O:8:"stdClass":19:{s:2:"id";s:4:"1523";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:81;O:8:"stdClass":19:{s:2:"id";s:4:"1521";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4563:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:82;O:8:"stdClass":19:{s:2:"id";s:4:"1520";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:135:"[{"field":"id","paramsType":"boolean","required":true,"desc":"","structType":"json","sub":1,"key":"kwk8a3rn3q7kucvzl7l","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:83;O:8:"stdClass":19:{s:2:"id";s:4:"1518";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:84;O:8:"stdClass":19:{s:2:"id";s:4:"1519";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:85;O:8:"stdClass":19:{s:2:"id";s:4:"1516";s:3:"doc";s:3:"454";s:6:"module";s:3:"114";s:5:"title";s:15:"获取Bug详情";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:86;O:8:"stdClass":19:{s:2:"id";s:4:"1517";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:87;O:8:"stdClass":19:{s:2:"id";s:4:"1515";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:88;O:8:"stdClass":19:{s:2:"id";s:4:"1514";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3251:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:89;O:8:"stdClass":19:{s:2:"id";s:4:"1510";s:3:"doc";s:3:"451";s:6:"module";s:3:"114";s:5:"title";s:9:"删除Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwk9c8mm1zeqn7olev7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:90;O:8:"stdClass":19:{s:2:"id";s:4:"1511";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4348:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"object","required":"","desc":"状态","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[{"field":"code","paramsType":"string","required":"","desc":"状态编号","structType":"json","sub":3,"key":"kwkaxv4ydl52rkoa88q","parentKey":"kwkax2enp5573iuu8ba","children":[]},{"field":"name","paramsType":"string","required":"","desc":"状态名称","structType":"json","sub":3,"key":"kwkay6a25nug5uorjc9","parentKey":"kwkax2enp5573iuu8ba","children":[]}]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:91;O:8:"stdClass":19:{s:2:"id";s:4:"1505";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:92;O:8:"stdClass":19:{s:2:"id";s:4:"1506";s:3:"doc";s:3:"446";s:6:"module";s:3:"113";s:5:"title";s:12:"删除用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:150:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwkdlveesckcian2f3","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:93;O:8:"stdClass":19:{s:2:"id";s:4:"1507";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2277:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":false,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":false,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":false,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":false,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:94;O:8:"stdClass":19:{s:2:"id";s:4:"1508";s:3:"doc";s:3:"453";s:6:"module";s:3:"113";s:5:"title";s:12:"创建用例";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2272:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:95;O:8:"stdClass":19:{s:2:"id";s:4:"1509";s:3:"doc";s:3:"453";s:6:"module";s:3:"113";s:5:"title";s:12:"创建用例";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1918:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":"","desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:96;O:8:"stdClass":19:{s:2:"id";s:4:"1512";s:3:"doc";s:3:"455";s:6:"module";s:3:"114";s:5:"title";s:9:"修改Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:97;O:8:"stdClass":19:{s:2:"id";s:4:"1513";s:3:"doc";s:3:"455";s:6:"module";s:3:"114";s:5:"title";s:9:"修改Bug";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3251:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:98;O:8:"stdClass":19:{s:2:"id";s:4:"1503";s:3:"doc";s:3:"447";s:6:"module";s:3:"112";s:5:"title";s:24:"获取产品计划列表";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1837:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwkdu9u3nq24026pwgg","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"计划总数","structType":"json","sub":1,"key":"kwkdxi22uneoz4p8x08","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页计划数","structType":"json","sub":1,"key":"kwkdxv7e0j0uy24giu5o","children":[]},{"field":"plans","paramsType":"array","required":true,"desc":"计划列表","structType":"json","sub":1,"key":"kwkdy4xe4p5q26x01rr","children":[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":2,"key":"kwlhip9vn4t9nfztco","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlhjfmq70053oa8abu","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlhkazknb10o404to","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":2,"key":"kwlhkqk9ciasdit96i9","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":2,"key":"kwlhp0xjdbokajs0khh","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"开始日期","structType":"json","sub":2,"key":"kwlhpa2osmeebpybzlm","parentKey":"kwkdy4xe4p5q26x01rr","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"结束日期","structType":"json","sub":2,"key":"kwlhpfi39kxh5o1tltq","parentKey":"kwkdy4xe4p5q26x01rr","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:99;O:8:"stdClass":19:{s:2:"id";s:4:"1504";s:3:"doc";s:3:"449";s:6:"module";s:3:"113";s:5:"title";s:18:"获取用例详情";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:100;O:8:"stdClass":19:{s:2:"id";s:4:"1497";s:3:"doc";s:3:"442";s:6:"module";s:3:"112";s:5:"title";s:12:"删除计划";s:4:"path";s:17:"/productsplan/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwlxic3c6pbcuxjkqvj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:101;O:8:"stdClass":19:{s:2:"id";s:4:"1498";s:3:"doc";s:3:"445";s:6:"module";s:3:"112";s:5:"title";s:18:"获取计划详情";s:4:"path";s:17:"/productplans/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:102;O:8:"stdClass":19:{s:2:"id";s:4:"1499";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:851:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:103;O:8:"stdClass":19:{s:2:"id";s:4:"1500";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:851:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:104;O:8:"stdClass":19:{s:2:"id";s:4:"1501";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1170:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:105;O:8:"stdClass":19:{s:2:"id";s:4:"1502";s:3:"doc";s:3:"454";s:6:"module";s:3:"114";s:5:"title";s:15:"获取Bug详情";s:4:"path";s:9:"/bugs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3447:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":"","desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":"","desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":1,"key":"kwlo9u1dnswxyo677ic","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:106;O:8:"stdClass":19:{s:2:"id";s:4:"1493";s:3:"doc";s:3:"439";s:6:"module";s:1:"0";s:5:"title";s:27:"产品计划取消关联Bug";s:4:"path";s:28:"/productplans/:id/unlinkbugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:285:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"bugs","paramsType":"array","required":true,"desc":"取消关联的Bug ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmxfdfiy4iqik4b1x","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:107;O:8:"stdClass":19:{s:2:"id";s:4:"1494";s:3:"doc";s:3:"443";s:6:"module";s:3:"112";s:5:"title";s:24:"产品计划关联需求";s:4:"path";s:29:"/productplans/:id/linkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:287:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":"","desc":"新增关联的需求,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx6dfdg2j09r3dkrg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:108;O:8:"stdClass":19:{s:2:"id";s:4:"1496";s:3:"doc";s:3:"444";s:6:"module";s:3:"112";s:5:"title";s:12:"修改计划";s:4:"path";s:17:"/productplans/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:109;O:8:"stdClass":19:{s:2:"id";s:4:"1495";s:3:"doc";s:3:"443";s:6:"module";s:1:"0";s:5:"title";s:24:"产品计划关联需求";s:4:"path";s:29:"/productplans/:id/linkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:287:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":"","desc":"新增关联的需求,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx6dfdg2j09r3dkrg","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:110;O:8:"stdClass":19:{s:2:"id";s:4:"1491";s:3:"doc";s:3:"441";s:6:"module";s:1:"0";s:5:"title";s:30:"产品计划取消关联需求";s:4:"path";s:31:"/productplans/:id/unlinkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:290:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":true,"desc":"取消关联的需求ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx9dutojxd449eo2","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:111;O:8:"stdClass":19:{s:2:"id";s:4:"1492";s:3:"doc";s:3:"440";s:6:"module";s:1:"0";s:5:"title";s:21:"产品计划关联Bug";s:4:"path";s:22:"/products/:id/linkBugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:219:"{"header":[],"params":[{"field":"bugs","paramsType":"array","required":true,"desc":"关联的Bug ID,比如 [1, 2]","structType":"formData","sub":1,"key":"kwmxbsyeboy1wo7i21","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:112;O:8:"stdClass":19:{s:2:"id";s:4:"1490";s:3:"doc";s:3:"441";s:6:"module";s:3:"112";s:5:"title";s:30:"产品计划取消关联需求";s:4:"path";s:31:"/productplans/:id/unlinkstories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:290:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"stories","paramsType":"array","required":true,"desc":"取消关联的需求ID,比如 [1, 2]","structType":"json","sub":1,"key":"kwmx9dutojxd449eo2","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:113;O:8:"stdClass":19:{s:2:"id";s:4:"1486";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2280:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:114;O:8:"stdClass":19:{s:2:"id";s:4:"1489";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2271:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"string","required":"","desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:115;O:8:"stdClass":19:{s:2:"id";s:4:"1487";s:3:"doc";s:3:"438";s:6:"module";s:3:"109";s:5:"title";s:24:"获取执行版本列表";s:4:"path";s:22:"/executions/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:116;O:8:"stdClass":19:{s:2:"id";s:4:"1488";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:1474:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1643:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:117;O:8:"stdClass":19:{s:2:"id";s:4:"1475";s:3:"doc";s:3:"428";s:6:"module";s:3:"108";s:5:"title";s:18:"获取我的信息";s:4:"path";s:5:"/user";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2875:"[{"field":"profile","paramsType":"object","required":true,"desc":"","structType":"json","sub":1,"key":"kwojur4idf2tpw1bkbe","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwok6cs05lxpmx6y6rr","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":2,"key":"kwok6og0ahx6f597mrd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwok7dh7htxbxpri6vd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwok7nqb31mthbt314r","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwok7zsnesbib3xqyoe","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":2,"key":"kwok8cwjolnijrajn1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":2,"key":"kwok8rkw8a2qaxo6zmg","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":2,"key":"kwok8zxnqkju8zu00v","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":2,"key":"kwok9agk5itm5fdge68","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号码","structType":"json","sub":2,"key":"kwok9rg5pat2s9dtj1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"json","sub":2,"key":"kwok9zaqjcudthvaepl","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号码","structType":"json","sub":2,"key":"kwokab6bp730tfrb0d","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"address","paramsType":"string","required":"","desc":"住址","structType":"json","sub":2,"key":"kwokau91tuhpeglrsf8","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":2,"key":"kwokb1tdzkuodmano","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"admin","paramsType":"boolean","required":true,"desc":"是否管理员","structType":"json","sub":2,"key":"kwokby1uzx691aq2per","parentKey":"kwojur4idf2tpw1bkbe","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:118;O:8:"stdClass":19:{s:2:"id";s:4:"1484";s:3:"doc";s:3:"435";s:6:"module";s:3:"109";s:5:"title";s:12:"修改版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:119;O:8:"stdClass":19:{s:2:"id";s:4:"1485";s:3:"doc";s:3:"434";s:6:"module";s:3:"109";s:5:"title";s:18:"获取版本详情";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:120;O:8:"stdClass":19:{s:2:"id";s:4:"1483";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:17:"/producttesttasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:348:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:121;O:8:"stdClass":19:{s:2:"id";s:4:"1479";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:122;O:8:"stdClass":19:{s:2:"id";s:4:"1480";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1849:"[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":1,"key":"kwohs2y3qvmtjra64a","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwoi42b454iu4jm0gy2","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwoi4d86f1dtrl88ivw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":1,"key":"kwoi4y4umklckqtw02s","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwoi5dao0i9y2m9l7byb","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":1,"key":"kwoi5pkrmti70ofie28","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型(integrate 集成测试 | system 系统测试 | acceptance 验收测试 | performance 性能测试 | safety 安全测试)","structType":"json","sub":1,"key":"kwoi60vq1qds4eic0tz","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":1,"key":"kwoi9orjbpmdakv07yl","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwoigqrt0dz13j7aaq4","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":1,"key":"kwoih8m0gxlep05qzd","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":1,"key":"kwoihh018oo0afnumpa","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":1,"key":"kwoihnqfavvu8h5qvgw","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:123;O:8:"stdClass":19:{s:2:"id";s:4:"1481";s:3:"doc";s:3:"432";s:6:"module";s:3:"109";s:5:"title";s:12:"删除版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwo7byji89l4i5wg66o","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:124;O:8:"stdClass":19:{s:2:"id";s:4:"1482";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:125;O:8:"stdClass":19:{s:2:"id";s:4:"1476";s:3:"doc";s:3:"430";s:6:"module";s:3:"111";s:5:"title";s:24:"获取产品发布列表";s:4:"path";s:22:"/products/:id/releases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1922:"[{"field":"total","paramsType":"int","required":true,"desc":"发布总数","structType":"json","sub":1,"key":"kwoitgd8i6d4ereus2r","children":[]},{"field":"releases","paramsType":"array","required":true,"desc":"发布列表","structType":"json","sub":1,"key":"kwoix2ay87a7rvwc50o","children":[{"field":"id","paramsType":"int","required":"","desc":"发布编号","structType":"json","sub":2,"key":"kwoixo68mf68m49r4","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"project","paramsType":"int","required":"","desc":"所属项目","structType":"json","sub":2,"key":"kwoj0p620tjei4sseipn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwoj0yeg796dwhrt5i2","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwoj166tm1vkys8lkdn","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"build","paramsType":"int","required":"","desc":"所属版本","structType":"json","sub":2,"key":"kwoj1fhpegz8347bce","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"name","paramsType":"string","required":"","desc":"发布名称","structType":"json","sub":2,"key":"kwoj1qcorzww56dwb","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"date","paramsType":"date","required":"","desc":"发布日期","structType":"json","sub":2,"key":"kwoj1xztoy69p6pzbz8","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":2,"key":"kwoj2nf2roxjds47o0a","parentKey":"kwoix2ay87a7rvwc50o","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | terminate 停止维护)","structType":"json","sub":2,"key":"kwoj3ep06mmsacezqxb","parentKey":"kwoix2ay87a7rvwc50o","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:126;O:8:"stdClass":19:{s:2:"id";s:4:"1477";s:3:"doc";s:3:"431";s:6:"module";s:3:"110";s:5:"title";s:24:"获取项目的测试单";s:4:"path";s:23:"/projects/:id/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:127;O:8:"stdClass":19:{s:2:"id";s:4:"1478";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:17:"/producttesttasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:128;O:8:"stdClass":19:{s:2:"id";s:4:"1472";s:3:"doc";s:3:"426";s:6:"module";s:3:"108";s:5:"title";s:18:"获取用户信息";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2208:"[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":1,"key":"kwokmq24kmolleus9x9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":1,"key":"kwokrgreuuuyzj5c49","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":1,"key":"kwoks11oshvdjjpzmh","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":1,"key":"kwoksascw5wdxcs105","children":[]},{"field":"role","paramsType":"string","required":true,"desc":"角色","structType":"json","sub":1,"key":"kwoksp2qtxhke2b7cxg","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":1,"key":"kwokt0i49jk6okyn5ka","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":1,"key":"kwoktbs7holvbwi4jou","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":1,"key":"kwoktj7s3gj6nw8den1","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":1,"key":"kwoktuj281h3lt16ffh","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":1,"key":"kwoku4lbjkh9agwwanj","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"json","sub":1,"key":"kwokujyylq66r5u7ysr","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号","structType":"json","sub":1,"key":"kwokus0te91bm0uvsyu","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号","structType":"json","sub":1,"key":"kwokvahwulyb6p9xi2p","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号","structType":"json","sub":1,"key":"kwokx3nt6jded4mka4j","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":1,"key":"kwokxdwdqrd418iuh6","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:129;O:8:"stdClass":19:{s:2:"id";s:4:"1473";s:3:"doc";s:3:"424";s:6:"module";s:3:"108";s:5:"title";s:18:"修改用户信息";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:993:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"dept","paramsType":"int","required":false,"desc":"所属部门","structType":"formData","sub":1,"key":"kwokybar4esd0jcjxnn","children":[]},{"field":"role","paramsType":"string","required":"","desc":"角色","structType":"formData","sub":1,"key":"kwolfs4ejv8rpfxwxi","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号","structType":"formData","sub":1,"key":"kwolg35t6c62lq7xl3f","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"formData","sub":1,"key":"kwolgbtpo9gn6aeyu1m","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"formData","sub":1,"key":"kwolgncl0r147rnb6gpe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"formData","sub":1,"key":"kwolgyqz0ps10l1rc4e","children":[]}],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:130;O:8:"stdClass":19:{s:2:"id";s:4:"1474";s:3:"doc";s:3:"427";s:6:"module";s:3:"111";s:5:"title";s:24:"获取项目发布列表";s:4:"path";s:22:"/projects/:id/releases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2:"[]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:131;O:8:"stdClass":19:{s:2:"id";s:4:"1470";s:3:"doc";s:3:"422";s:6:"module";s:3:"108";s:5:"title";s:12:"删除用户";s:4:"path";s:10:"/users/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:6:"DELETE";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:112:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:151:"[{"field":"message","paramsType":"string","required":true,"desc":"结果信息","structType":"json","sub":1,"key":"kwon2kh7itd8zwes7no","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:132;O:8:"stdClass":19:{s:2:"id";s:4:"1471";s:3:"doc";s:3:"425";s:6:"module";s:3:"108";s:5:"title";s:18:"获取用户列表";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:225:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"","query":[{"field":"page","required":true,"desc":"当前页数"},{"field":"limit","required":true,"desc":"每页用户数"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1649:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwokiko3tqr7zhsdid","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用户总数","structType":"json","sub":1,"key":"kwokjkhdr8n8tswzih","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用户数","structType":"json","sub":1,"key":"kwokjrgscuffi7jg4z","children":[]},{"field":"users","paramsType":"array","required":true,"desc":"用户列表","structType":"json","sub":1,"key":"kwokk4toesq4391ph7r","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwokkfl6o5svxnpzula","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwokkkhmgrv4fegsr9","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwokl0ng7td5nvyc7gq","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwokl9uxlprwwwqh91r","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"role","paramsType":"string","required":false,"desc":"角色","structType":"json","sub":2,"key":"kwokliwf9cm0f6f4k16","parentKey":"kwokk4toesq4391ph7r","children":[]},{"field":"email","paramsType":"string","required":"","desc":"邮箱","structType":"json","sub":2,"key":"kwoklrpr2krc5ajrbj","parentKey":"kwokk4toesq4391ph7r","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:133;O:8:"stdClass":19:{s:2:"id";s:4:"1468";s:3:"doc";s:3:"428";s:6:"module";s:3:"108";s:5:"title";s:24:"获取我的个人信息";s:4:"path";s:5:"/user";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2875:"[{"field":"profile","paramsType":"object","required":true,"desc":"","structType":"json","sub":1,"key":"kwojur4idf2tpw1bkbe","children":[{"field":"id","paramsType":"int","required":true,"desc":"用户编号","structType":"json","sub":2,"key":"kwok6cs05lxpmx6y6rr","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"类型(inside 内部用户 | outside 外部用户)","structType":"json","sub":2,"key":"kwok6og0ahx6f597mrd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"dept","paramsType":"int","required":true,"desc":"所属部门","structType":"json","sub":2,"key":"kwok7dh7htxbxpri6vd","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"用户名","structType":"json","sub":2,"key":"kwok7nqb31mthbt314r","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"realname","paramsType":"string","required":true,"desc":"真实姓名","structType":"json","sub":2,"key":"kwok7zsnesbib3xqyoe","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"nickname","paramsType":"string","required":"","desc":"昵称","structType":"json","sub":2,"key":"kwok8cwjolnijrajn1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":2,"key":"kwok8rkw8a2qaxo6zmg","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"birthday","paramsType":"date","required":"","desc":"生日","structType":"json","sub":2,"key":"kwok8zxnqkju8zu00v","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"gender","paramsType":"string","required":"","desc":"性别(f 女性 | m 男性)","structType":"json","sub":2,"key":"kwok9agk5itm5fdge68","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"mobile","paramsType":"string","required":"","desc":"手机号码","structType":"json","sub":2,"key":"kwok9rg5pat2s9dtj1","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"phone","paramsType":"string","required":"","desc":"电话号码","structType":"json","sub":2,"key":"kwok9zaqjcudthvaepl","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"weixin","paramsType":"string","required":"","desc":"微信号码","structType":"json","sub":2,"key":"kwokab6bp730tfrb0d","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"address","paramsType":"string","required":"","desc":"住址","structType":"json","sub":2,"key":"kwokau91tuhpeglrsf8","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"join","paramsType":"date","required":"","desc":"加入日期","structType":"json","sub":2,"key":"kwokb1tdzkuodmano","parentKey":"kwojur4idf2tpw1bkbe","children":[]},{"field":"admin","paramsType":"boolean","required":true,"desc":"是否管理员","structType":"json","sub":2,"key":"kwokby1uzx691aq2per","parentKey":"kwojur4idf2tpw1bkbe","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:134;O:8:"stdClass":19:{s:2:"id";s:4:"1469";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"9";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3993:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"object","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"用户ID","structType":"json","sub":3,"key":"kwopi2wws0ddwmos2bk","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"account","paramsType":"string","required":"","desc":"用户名","structType":"json","sub":3,"key":"kwopi2l2iodsea0my7o","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":3,"key":"kwopi1wtyve0w4yt3rj","parentKey":"kwbiwzxpqpd682l27ke","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":3,"key":"kwopi0s2pja7h71d2ti","parentKey":"kwbiwzxpqpd682l27ke","children":[]}]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"object","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":"","desc":"用户ID","structType":"json","sub":3,"key":"kwopgz4i1060sf427paf","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"account","paramsType":"string","required":"","desc":"用户名","structType":"json","sub":3,"key":"kwopgyl848xmhjscro3","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"avatar","paramsType":"string","required":"","desc":"头像","structType":"json","sub":3,"key":"kwopgxumikuyewjtd2b","parentKey":"kwbiy8g88gdd05pvdom","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":3,"key":"kwopgrd26t2xxz5rd0l","parentKey":"kwbiy8g88gdd05pvdom","children":[]}]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:135;O:8:"stdClass":19:{s:2:"id";s:4:"1467";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2260:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:136;O:8:"stdClass":19:{s:2:"id";s:4:"1466";s:3:"doc";s:3:"490";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集列表";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:2:"10";s:6:"params";s:215:"{"header":[{"field":"Token","required":true,"desc":"访问凭证Token"}],"params":[],"paramsType":"json","query":[{"field":"order","required":"","desc":"排序,默认order_asc;排序字段+下划线+asc/desc"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2570:"[{"field":"programs","paramsType":"array","required":true,"desc":"项目集列表","structType":"json","sub":1,"key":"kw5nu7zo9vjed0b8xnj","children":[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":2,"key":"kw5oko39ful5ibh4xos","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":2,"key":"kwbijc4xmi7da0s2v3h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":2,"key":"kwbijs25uh1oerv14o","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY/USD)","structType":"json","sub":2,"key":"kwbiljpvwx1s9subl6h","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwbim4qiu70li1lj2sg","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":2,"key":"kwbin0zq2jnrf2hheqk","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":2,"key":"kwbin1zr9rft0cqsn7","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":2,"key":"kwbinosclp6c0ziw75b","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集,顶层项目集的parent为0","structType":"json","sub":2,"key":"kwbivepwxrt80u7jdnj","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"由谁创建","structType":"json","sub":2,"key":"kwbiwzxpqpd682l27ke","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbixdfmz87xqj9c6dm","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"PM","paramsType":"1","required":true,"desc":"项目集负责人","structType":"json","sub":2,"key":"kwbiy8g88gdd05pvdom","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"进度","structType":"json","sub":2,"key":"kwbiyml3zn2zd5mdv0c","parentKey":"kw5nu7zo9vjed0b8xnj","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:137;O:8:"stdClass":19:{s:2:"id";s:4:"1465";s:3:"doc";s:3:"481";s:6:"module";s:3:"104";s:5:"title";s:15:"修改项目集";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:1650:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2250:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:138;O:8:"stdClass":19:{s:2:"id";s:4:"1463";s:3:"doc";s:3:"476";s:6:"module";s:3:"104";s:5:"title";s:21:"获取项目集详情";s:4:"path";s:13:"/programs/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2264:"[{"field":"id","paramsType":"int","required":true,"desc":"项目集ID","structType":"json","sub":1,"key":"kwj8m09ldh61qyuvm0i","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目集名称","structType":"json","sub":1,"key":"kwj8n4tt3bns0zay97x","children":[]},{"field":"PM","paramsType":"string","required":true,"desc":"负责人","structType":"json","sub":1,"key":"kwj8o0cl9hp8wndzcuj","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwj8oc20vnok8xd1sq","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwj8oldpyvgy82o6xk","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwj8p80rykze7d8f1nq","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwj8pv6l3t4gggocbrt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwj8qc97rkkuiiwht","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwj8qfwqmbns6nnn7o","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwj8qxwggzcmnlu9mji","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwj8rbp90dreozj1a1x5","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwj8rhee6ww3gy35x4q","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwj8s8pc8uk89exry8i","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwj8sovnzv5fweyv8dq","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwpqwwrxn0q9ffdgu1","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:139;O:8:"stdClass":19:{s:2:"id";s:4:"1464";s:3:"doc";s:3:"475";s:6:"module";s:3:"104";s:5:"title";s:15:"创建项目集";s:4:"path";s:9:"/programs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:1681:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":false,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrrcafi41oii1yyu","children":[]},{"field":"parent","paramsType":"string","required":"","desc":"父项目集,0表示没有父项目集","structType":"json","sub":1,"key":"kwfrrjy5fy9cr7cbhxt","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwfrrp78h46nsupgqg","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"预算金额","structType":"json","sub":1,"key":"kwg2zi8y395k1sa5qw","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg2zu8lqoggv7wrofn","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目集描述","structType":"json","sub":1,"key":"kwg32uanzx7ssr24qb","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"预计开始日期","structType":"json","sub":1,"key":"kwg331xpdglirubloc","children":[]},{"field":"end","paramsType":"date","required":"","desc":"预计结束日期","structType":"json","sub":1,"key":"kwg339ez5y4fapvyz02","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg387hniakqx94yjh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单,只有acl = private才生效","structType":"json","sub":1,"key":"kwg38nt998kadpp0kk7","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2250:"[{"field":"id","paramsType":"int","required":true,"desc":"","structType":"json","sub":1,"key":"kwfrq9ewoxebsfy1yc","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfrt5svntvrbex1a1","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kwfrufdxs4insbwp7os","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfrupqa2is097je3r1","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父项目集","structType":"json","sub":1,"key":"kwfrv68kj5pq1ev7y1a","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfrvpa06s9odxqr733","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfrvwl8yp43br33c0j","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfrw1x78s1r66etxjn","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfrw6lojs101m01t6","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目集描述","structType":"json","sub":1,"key":"kwfrwkdf096g5nvumqrp","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfrx6jpg8tpusd54te","children":[]},{"field":"openedDate","paramsType":"string","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfrxh8vp3p541ha0q","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"负责人","structType":"json","sub":1,"key":"kwfrxyttm6qlete3n3h","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfry99qckte6qguao","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfryty0hgpjch2k40u","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:140;O:8:"stdClass":19:{s:2:"id";s:4:"1461";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:141;O:8:"stdClass":19:{s:2:"id";s:4:"1462";s:3:"doc";s:3:"489";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品列表";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:118:"{"header":[{"field":"Token","required":"","desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2737:"[{"field":"products","paramsType":"array","required":true,"desc":"","structType":"json","sub":1,"key":"kwaewshi65nnjs135n3","children":[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwaey51uz6sfrk555m","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":2,"key":"kwbj1dqg65pvugs5h2s","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":2,"key":"kwbj2a1ihackyh03q49","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":2,"key":"kwbj2h0rn057wustk7o","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":2,"key":"kwbnpypoba6t1ms7oaf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":2,"key":"kwbp9dclulc73a3tg","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":2,"key":"kwbp9pc1t1nvj4j2wd","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":2,"key":"kwbpalk5bnobb0mtp98","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":2,"key":"kwbpb2vft6si1ctgwf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"产品描述","structType":"json","sub":2,"key":"kwbpdiepohshkv3sx2","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":2,"key":"kwbpdpivj06ph39fui","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":2,"key":"kwbpf2zg4f4bms64ubf","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwbpfo85ji5yl8vqee","parentKey":"kwaewshi65nnjs135n3","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwbpfwmgpdtmdxctovi","parentKey":"kwaewshi65nnjs135n3","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:142;O:8:"stdClass":19:{s:2:"id";s:4:"1460";s:3:"doc";s:3:"488";s:6:"module";s:3:"105";s:5:"title";s:12:"创建产品";s:4:"path";s:9:"/products";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1775:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbq19ffg59cbooyb","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwbq1dizm75sgcgnd9f","children":[]},{"field":"code","paramsType":"int","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbq1xl9s30o2e1awjo","children":[]},{"field":"line","paramsType":"int","required":false,"desc":"所属产品线","structType":"json","sub":1,"key":"kwbq2ftqrqrmg8cyj7t","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbq33qsopavnj72ntb","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbq3kbijyjhoy0se99","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbq412yll94vpa635p","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | )","structType":"json","sub":1,"key":"kwbq49zapa2fswh58f","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbqcmbo088hh0l8o91","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbqdai6v9pl61o6xab","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbqe9ye70wc961572o","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2289:"[{"field":"id","paramsType":"int","required":"","desc":"产品ID","structType":"json","sub":1,"key":"kwbpz5jh94vauhx9ga6","children":[]},{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwbqhljxnscdsph7jh","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwbqhueedi6o9jyr80g","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwbqi7fmwnjsrds8i3j","children":[]},{"field":"line","paramsType":"int","required":"","desc":"产品线","structType":"json","sub":1,"key":"kwbqk1pemf4rfcleksf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwbqo9fjuslzzbejx6","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(normal 正常 | closed 结束)","structType":"json","sub":1,"key":"kwbqqfgzincm6qkym3","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwbr0v2vhqrrqh8y6l","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwbr107xvu791yqyaxk","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwbr10vxlfbpvdlvor9","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwbr1lszosgjhp2c0zh","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwbr1uny368imqpppbd","children":[]},{"field":"createdBy","paramsType":"string","required":"","desc":"创建人","structType":"json","sub":1,"key":"kwbr24x72kgwwnbt8jh","children":[]},{"field":"createdDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":1,"key":"kwbr2agkwi1th2cc9l","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwbr2x4zzb1jbw5g5qk","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:143;O:8:"stdClass":19:{s:2:"id";s:4:"1459";s:3:"doc";s:3:"486";s:6:"module";s:3:"105";s:5:"title";s:12:"编辑产品";s:4:"path";s:12:"/product/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1230:"{"header":[{"field":"Token","required":"","desc":"访问凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"产品名称","structType":"json","sub":1,"key":"kwen3dckicyphhnz","children":[]},{"field":"code","paramsType":"string","required":"","desc":"产品代号","structType":"json","sub":1,"key":"kwen3izzrkun21x6ga","children":[]},{"field":"type","paramsType":"string","required":"","desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwen45d40m14utr25tg","children":[]},{"field":"line","paramsType":"int","required":"","desc":"所属产品线","structType":"json","sub":1,"key":"kwen8jf7leyksxip3f8","children":[]},{"field":"program","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwen8ty05syldw0juiy","children":[]},{"field":"status","paramsType":"string","required":"","desc":"产品状态(normal 正常 | closed 已关闭)","structType":"json","sub":1,"key":"kwencqbvtud2pfbrfjp","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"产品描述,富文本","structType":"json","sub":1,"key":"kwenfpizvxhggi9clqj","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:144;O:8:"stdClass":19:{s:2:"id";s:4:"1458";s:3:"doc";s:3:"448";s:6:"module";s:3:"112";s:5:"title";s:12:"创建计划";s:4:"path";s:19:"/products/:id/plans";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:997:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwlofhasdc5r52f3zp7","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlog1lmm7va7ihz6an","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"计划开始日期","structType":"json","sub":1,"key":"kwloh88yj5u3t8kq4a","children":[]},{"field":"end","paramsType":"date","required":"","desc":"计划结束日期","structType":"json","sub":1,"key":"kwlohkkne6ybkae8336","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"计划描述","structType":"json","sub":1,"key":"kwloho1edlbudimc34","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属父计划","structType":"json","sub":1,"key":"kwpt6y4rnazkel3pod","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4860:"[{"field":"id","paramsType":"int","required":true,"desc":"计划ID","structType":"json","sub":1,"key":"kwlhrcrfi2xj4a62e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwlmz4gitedfpssasja","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属计划","structType":"json","sub":1,"key":"kwlmzc773nvr59kw736","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父计划","structType":"json","sub":1,"key":"kwlmzjztqlfbdz67yjd","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"计划名称","structType":"json","sub":1,"key":"kwlmzrpuc5w1v5hdspt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"计划描述","structType":"json","sub":1,"key":"kwln11j3ha0x59mb88i","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwln1eiso46b54s2ynk","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwln1lq8mh88c0mh9eb","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwln7u0pzbm5hejg55p","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwlnv2b9eaqtv1opvi9","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwlnv1ckmcorf5xh5nh","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwlnuu1rrcji72o5bp","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlnustvp5his9hg0k8","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwlnusdi4n7tlyrxq5i","parentKey":"kwln7u0pzbm5hejg55p","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"需求优先级","structType":"json","sub":2,"key":"kwlnugayc1hvz68y70n","parentKey":"kwln7u0pzbm5hejg55p","children":[]}]},{"field":"bugs","paramsType":"array","required":true,"desc":"关联Bug","structType":"json","sub":1,"key":"kwln7vth71prs7ovxyx","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwlo0r00wprxatyh2rr","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":2,"key":"kwlo0qwez7pl64gduo","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwlo0qrzicutoh87hkp","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwlo0qnpw1evw5zyu1r","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwlo0qin2gc4tvq62ve","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":2,"key":"kwlo0qe0eefu1me7yi","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwlo0q8lxzh0wwfowsb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwlo0q4lpj91nh6pb4","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"Bug优先级","structType":"json","sub":2,"key":"kwlo0pztvmii6tauqb","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型","structType":"json","sub":2,"key":"kwlo0pvam3ulnfcmgbh","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"Bug复现步骤","structType":"json","sub":2,"key":"kwlo0phljctpu1lvu7","parentKey":"kwln7vth71prs7ovxyx","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"Bug状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":2,"key":"kwlo0p3iqvltmpqdw3","parentKey":"kwln7vth71prs7ovxyx","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:145;O:8:"stdClass":19:{s:2:"id";s:4:"1456";s:3:"doc";s:3:"470";s:6:"module";s:3:"116";s:5:"title";s:24:"获取产品需求列表";s:4:"path";s:21:"/products/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:146;O:8:"stdClass":19:{s:2:"id";s:4:"1457";s:3:"doc";s:3:"487";s:6:"module";s:3:"105";s:5:"title";s:18:"获取产品详情";s:4:"path";s:13:"/products/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2120:"[{"field":"id","paramsType":"int","required":true,"desc":"产品ID","structType":"json","sub":1,"key":"kwbr4qcbgcop3s3ohg5","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"产品名称","structType":"json","sub":1,"key":"kwbr6h84h8rp18cru57","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"产品代号","structType":"json","sub":1,"key":"kwbs6sx5bpk1z0kf7ak","children":[]},{"field":"program","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwellfvj3lxhcmg4wfo","children":[]},{"field":"line","paramsType":"int","required":true,"desc":"所属产品线","structType":"json","sub":1,"key":"kwelm02uvxu130ubux","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"产品类型(normal 正常 | branch 多分支 | platform 多平台)","structType":"json","sub":1,"key":"kwelnh4d6pqibi436x9","children":[]},{"field":"PO","paramsType":"1","required":false,"desc":"产品负责人","structType":"json","sub":1,"key":"kwembkw9f5tak8d1gtg","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwemckatgwyg58ed9ic","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwemo4zyvvjyf5lpte","children":[]},{"field":"desc","paramsType":"object","required":"","desc":"产品描述","structType":"json","sub":1,"key":"kwemrk1txqrm14ww5c","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwemrs7sej0jr0cdabb","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwemsftfsdxa86i4dq","children":[]},{"field":"createdBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwemsw3yed4knmaqwwr","children":[]},{"field":"createdDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwemu7xhxrhubvtg1i","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:147;O:8:"stdClass":19:{s:2:"id";s:4:"1455";s:3:"doc";s:3:"467";s:6:"module";s:3:"116";s:5:"title";s:24:"获取执行需求列表";s:4:"path";s:23:"/executions/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:148;O:8:"stdClass":19:{s:2:"id";s:4:"1454";s:3:"doc";s:3:"471";s:6:"module";s:3:"116";s:5:"title";s:24:"获取项目需求列表";s:4:"path";s:21:"/projects/:id/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3926:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwjy2s87db9a596fbgb","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"需求总数","structType":"json","sub":1,"key":"kwjy7hkvjkmtt0mkcy","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页需求数","structType":"json","sub":1,"key":"kwjy7ld0ndd1vxicpo","children":[]},{"field":"stories","paramsType":"array","required":true,"desc":"需求列表","structType":"json","sub":1,"key":"kwjy8zyh4dzndly12en","children":[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":2,"key":"kwjy99j7nbctxlys6e","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwjyact3snp2jqp3tn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwjyaun7ybre2f0dmep","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":2,"key":"kwjyb9uzo2dcbc3hmn","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":2,"key":"kwjybqd5ld21pj2rnx7","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":2,"key":"kwjyccenpnjohdldyyp","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":2,"key":"kwjyhkx6iqoqjdcagt","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":2,"key":"kwjyi8ihn1ufbkfpy0j","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":2,"key":"kwjyixbqtw6vvzlpae","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":2,"key":"kwjyquptlmh4pfyzo9a","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwjyrsb3vu6gxup5vpa","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"estimate","paramsType":"int","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwjz0s2pc0sv9wzyh1b","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":2,"key":"kwjz15ozrkdagpj8dfe","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwjz2eyko6qx1ixausl","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwjz2oj2beho2ph9fug","parentKey":"kwjy8zyh4dzndly12en","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":2,"key":"kwjz341v9rmo4xdxt9m","parentKey":"kwjy8zyh4dzndly12en","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:149;O:8:"stdClass":19:{s:2:"id";s:4:"1453";s:3:"doc";s:3:"468";s:6:"module";s:3:"116";s:5:"title";s:12:"创建需求";s:4:"path";s:8:"/stories";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1591:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzb7t7r80zxre07ar","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzfpcu6lw92hz2ypn","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzfpzyj9dm3wtixpi","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"需求类型","structType":"json","sub":1,"key":"kwjzfqrjtzrsmg53nlp","children":[]},{"field":"spec","paramsType":"string","required":false,"desc":"需求描述","structType":"json","sub":1,"key":"kwjzj6ur2wul1s780xf","children":[]},{"field":"verify","paramsType":"string","required":false,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzjwan8b55385dp7u","children":[]},{"field":"source","paramsType":"string","required":"","desc":"需求来源","structType":"json","sub":1,"key":"kwjzlbfd0s6dmbypy9gr","children":[]},{"field":"sourceNote","paramsType":"string","required":"","desc":"来源备注","structType":"json","sub":1,"key":"kwjzm2bpuz7rpwww18o","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"json","sub":1,"key":"kwjzmbg8o60ltfbezl","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwjzn2tj3muq5pd3hh3","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:150;O:8:"stdClass":19:{s:2:"id";s:4:"1452";s:3:"doc";s:3:"466";s:6:"module";s:3:"116";s:5:"title";s:12:"变更需求";s:4:"path";s:19:"/stories/:id/change";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:554:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"title","paramsType":"string","required":false,"desc":"需求标题","structType":"json","sub":1,"key":"kwk00sadykqdnjov0b","children":[]},{"field":"spec","paramsType":"string","required":"","desc":"需求描述","structType":"json","sub":1,"key":"kwk056l687emefzib2d","children":[]},{"field":"verify","paramsType":"string","required":"","desc":"验收标准","structType":"json","sub":1,"key":"kwk0752wcpdf6vob37","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:151;O:8:"stdClass":19:{s:2:"id";s:4:"1451";s:3:"doc";s:3:"465";s:6:"module";s:3:"116";s:5:"title";s:18:"获取需求详情";s:4:"path";s:12:"/stories/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2949:"[{"field":"id","paramsType":"int","required":true,"desc":"需求ID","structType":"json","sub":1,"key":"kwjzak1x6332sumet2x","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwjzqgmor28xkpxto2","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwjzqh9m591hxaz9r75","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属产品模块","structType":"json","sub":1,"key":"kwjzqhdz9o96s49biap","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来自于Bug","structType":"json","sub":1,"key":"kwjzqhisj4xgerdefa","children":[]},{"field":"source","paramsType":"string","required":true,"desc":"需求来源(customer 客户 | user 用户 | po 产品经理 | market 市场)","structType":"json","sub":1,"key":"kwjzqhnjwye1lyvbs7s","children":[]},{"field":"sourceNote","paramsType":"string","required":true,"desc":"来源备注","structType":"json","sub":1,"key":"kwjzqhs1sci48ds40c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwjzqhvzgnhlyglh3wl","children":[]},{"field":"category","paramsType":"string","required":true,"desc":"类型(feature 功能 | interface 接口 | performance 性能 | safe 安全 | experience 体验 | improve 改进 | other 其他)","structType":"json","sub":1,"key":"kwjzqi0g6kz5b3qtqyj","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"阶段(wait 未开始 | planned 已计划 | projected 已立项 | developing 研发中 | developed 研发完毕 | testing 测试中 | tested 测试完毕 | verified 已验收 | released 已发布 | closed 已关闭)","structType":"json","sub":1,"key":"kwjzqi5fa420z4rcoz9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwjzsm7e02zv28lg7woq","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwjzsmcosfo5u84ljn","children":[]},{"field":"verify","paramsType":"string","required":true,"desc":"验收标准","structType":"json","sub":1,"key":"kwjzsz8r796vs9psimw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(draft 草稿 | active 激活 | closed 已关闭 | changed 已变更)","structType":"json","sub":1,"key":"kwjzszdgvko3irxwjg","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjzszihkde9vnt4gu","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjzszwssmv2dzhyad","children":[]},{"field":"toBug","paramsType":"int","required":true,"desc":"转为Bug","structType":"json","sub":1,"key":"kwjzu1eeg2nbghkse4e","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:152;O:8:"stdClass":19:{s:2:"id";s:4:"1449";s:3:"doc";s:3:"479";s:6:"module";s:3:"106";s:5:"title";s:12:"修改项目";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1846:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"formData","sub":1,"key":"kwfzx1b9z1ojzx148v8","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"formData","sub":1,"key":"kwg07xvv8hp8q72a70p","children":[]},{"field":"parent","paramsType":"int","required":false,"desc":"所属项目集","structType":"formData","sub":1,"key":"kwg0876le09j7dkyxjq","children":[]},{"field":"PM","paramsType":"int","required":"","desc":"项目负责人","structType":"formData","sub":1,"key":"kwg0fzqc762wxgjyyxl","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"formData","sub":1,"key":"kwg0j7akglo9o1sdd8g","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"formData","sub":1,"key":"kwg0jl5ymm7o4x0k5ta","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"formData","sub":1,"key":"kwg0ka6ohdjnpp56c","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"formData","sub":1,"key":"kwg0kyn82ahibxdaa3p","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"formData","sub":1,"key":"kwg0m88gcrace3xs9ha","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"formData","sub":1,"key":"kwg0mvcgpb19a34lxz8","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"formData","sub":1,"key":"kwg0nw28t57nw6ls9g","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1818:"[{"field":"id","paramsType":"int","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfzx1bfez3bi3z1uh8","children":[]},{"field":"name","paramsType":"string","required":"","desc":"项目名称","structType":"json","sub":1,"key":"kwg0qqa1i6liuc5na2","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集","structType":"json","sub":1,"key":"kwg0qz7loa7d85ykp7s","children":[]},{"field":"code","paramsType":"string","required":"","desc":"项目代号","structType":"json","sub":1,"key":"kwg0r91vhgfn2bfb9p7","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"项目负责人","structType":"json","sub":1,"key":"kwg0rpuoxyjz9pqxgt","children":[]},{"field":"budget","paramsType":"int","required":"","desc":"项目预算金额","structType":"json","sub":1,"key":"kwg0rzy9s219ge93f3","children":[]},{"field":"budgetUnit","paramsType":"string","required":"","desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwg0s9wyql076w7sul","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg0sk1ewbnq8cubqut","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"项目描述","structType":"json","sub":1,"key":"kwg0srchfyqmpfcw8n4","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwg0syv0vmyry7bpo99","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg0t6hoeif88dy86s","children":[]},{"field":"auth","paramsType":"string","required":"","desc":"权限控制(extend 继承 | reset 重新定义)","structType":"json","sub":1,"key":"kwg0td9u9zcfm6pbbp","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:153;O:8:"stdClass":19:{s:2:"id";s:4:"1450";s:3:"doc";s:3:"483";s:6:"module";s:3:"106";s:5:"title";s:12:"创建项目";s:4:"path";s:9:"/projects";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1217:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqeeu4uyul5ro6o7","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqeneavf594nhj4cm","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqeulf61fh20gafsy","children":[]},{"field":"products","paramsType":"array","required":true,"desc":"关联产品,比如 [1, 2],不能为空。","structType":"json","sub":1,"key":"kweqfbdfm7z71875r1l","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqlpdkud5rs421do9","children":[]},{"field":"model","paramsType":"string","required":"","desc":"项目模型,默认为scrum","structType":"json","sub":1,"key":"kweqndhs3nd3a1jd9r4","children":[]},{"field":"parent","paramsType":"int","required":"","desc":"所属项目集,默认为0","structType":"json","sub":1,"key":"kweqvrk6mjr9vygujza","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1979:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kweqd0yk9o8xi8kyi4i","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kweqn4iti067eqz5d2m","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"预算金额","structType":"json","sub":1,"key":"kweqols3u9m0s05ylyk","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kweque9jrz74gf76dh","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kweqv1x01dpu3by4dfb","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kweqvb5i8r2yr4640yh","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目代号","structType":"json","sub":1,"key":"kweqwlz88yba26zd50g","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kweqwvifjrxbgg1l76j","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kweqy196dogt0m3o9ge","children":[]},{"field":"realBegan","paramsType":"date","required":"","desc":"实际开始日期","structType":"json","sub":1,"key":"kweqyb2s8lsmedm0pa","children":[]},{"field":"realEnd","paramsType":"date","required":"","desc":"实际结束日期","structType":"json","sub":1,"key":"kweqympfb0h7cuwvrhk","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kweqzck8664cy70yxx","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwer3319sfmmlqu6bj","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:154;O:8:"stdClass":19:{s:2:"id";s:4:"1446";s:3:"doc";s:3:"438";s:6:"module";s:3:"109";s:5:"title";s:24:"获取执行版本列表";s:4:"path";s:22:"/executions/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2275:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:155;O:8:"stdClass":19:{s:2:"id";s:4:"1447";s:3:"doc";s:3:"437";s:6:"module";s:3:"109";s:5:"title";s:24:"获取项目版本列表";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2275:"[{"field":"total","paramsType":"int","required":true,"desc":"版本总数","structType":"json","sub":1,"key":"kwmyb8ah69n34ud7byj","children":[]},{"field":"builds","paramsType":"array","required":true,"desc":"版本列表","structType":"json","sub":1,"key":"kwmyfzso9xlwrewva09","children":[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":2,"key":"kwmyg8wtmjt3nozwbg","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwmygixbcmxd4muro6n","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwmyguwt460u2kk0prv","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwmyh5h4gmzu0a1wcfo","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwmytj1w34spkshhkvh","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":2,"key":"kwmytschv6r9wxvsyu","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"scmPath","paramsType":"string","required":false,"desc":"源代码地址","structType":"json","sub":2,"key":"kwmyu6z4bqhsow6lj85","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"json","sub":2,"key":"kwmyup6xrfdcxg37ka9","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":2,"key":"kwmyv13p7r29ufidypd","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":2,"key":"kwn0gspeyiwvehtcoul","parentKey":"kwmyfzso9xlwrewva09","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":2,"key":"kwn0hyd6pgkz36ecip","parentKey":"kwmyfzso9xlwrewva09","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:156;O:8:"stdClass":19:{s:2:"id";s:4:"1448";s:3:"doc";s:3:"482";s:6:"module";s:3:"106";s:5:"title";s:18:"获取项目详情";s:4:"path";s:13:"/projects/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2824:"[{"field":"id","paramsType":"int","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfo61d427ebc01qyw8","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"所属项目集","structType":"json","sub":1,"key":"kwfo750e6nu14s1mpxo","children":[]},{"field":"model","paramsType":"string","required":true,"desc":"项目模型(scrum 敏捷 | waterfall 瀑布)","structType":"json","sub":1,"key":"kwfo7gn93qxvrutdfuv","children":[]},{"field":"budget","paramsType":"int","required":true,"desc":"项目预算金额","structType":"json","sub":1,"key":"kwfosq5ey0h0ssr36vg","children":[]},{"field":"budgetUnit","paramsType":"string","required":true,"desc":"预算币种(CNY | USD)","structType":"json","sub":1,"key":"kwfosy3p0juy0e9og43l","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"项目名称","structType":"json","sub":1,"key":"kwfotny2ubdkbqbpiip","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"项目编号","structType":"json","sub":1,"key":"kwfouazlja2v88n8g5d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwfoul4jhmzjlurvua","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwfouql1fu3zun911pt","children":[]},{"field":"realBegan","paramsType":"date","required":true,"desc":"实际开始日期","structType":"json","sub":1,"key":"kwfoutlhiryhz2e5g6","children":[]},{"field":"realEnd","paramsType":"date","required":true,"desc":"实际结束日期","structType":"json","sub":1,"key":"kwfovhzh6k9cbh96xck","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"项目状态(wait 未开始 | doing 进行中 | suspend 已挂起 | closed 已关闭)","structType":"json","sub":1,"key":"kwfow3wzv9ad5nj9k7","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"项目描述","structType":"json","sub":1,"key":"kwfoxh13qwv0h2xg86","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwfoxsionkxeggc337","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwfoy1iw9f2sicm3xcd","children":[]},{"field":"PM","paramsType":"1","required":true,"desc":"项目负责人","structType":"json","sub":1,"key":"kwfoynhiwfkyhof0x8a","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(open 公开 | private 私有)","structType":"json","sub":1,"key":"kwfoz9lmw38ehk68bh","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单","structType":"json","sub":1,"key":"kwfp0tsvhw6xxldplua","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:157;O:8:"stdClass":19:{s:2:"id";s:4:"1444";s:3:"doc";s:3:"435";s:6:"module";s:3:"109";s:5:"title";s:12:"修改版本";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:158;O:8:"stdClass":19:{s:2:"id";s:4:"1445";s:3:"doc";s:3:"434";s:6:"module";s:3:"109";s:5:"title";s:18:"获取版本详情";s:4:"path";s:11:"/builds/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:116:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:159;O:8:"stdClass":19:{s:2:"id";s:4:"1443";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:1482:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:160;O:8:"stdClass":19:{s:2:"id";s:4:"1441";s:3:"doc";s:3:"480";s:6:"module";s:3:"107";s:5:"title";s:27:"获取项目的执行列表";s:4:"path";s:23:"/project/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2213:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwfmsr4svpcdc2c2ip","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"执行总数","structType":"json","sub":1,"key":"kwfs34t9ez00cfhwvtb","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页执行数","structType":"json","sub":1,"key":"kwfs38d1l0cv32ltd5g","children":[]},{"field":"executions","paramsType":"array","required":true,"desc":"执行列表","structType":"json","sub":1,"key":"kwfs3bkjolf2peoxqw","children":[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":2,"key":"kwfs4vl61prpc0matzc","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":2,"key":"kwfs62skb2z6s4c97b8","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":2,"key":"kwfs6fsdl1n419fikci","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":2,"key":"kwfs6s8xhzflp7mj1es","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":2,"key":"kwfs6ysbrdp5gen40zl","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"执行状态()","structType":"json","sub":2,"key":"kwfs7dvazclp95vjg7i","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwfs7xcoz84e7aykmq","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwfs81w4lltagz6uys","parentKey":"kwfs3bkjolf2peoxqw","children":[]},{"field":"progress","paramsType":"int","required":true,"desc":"当前进度","structType":"json","sub":2,"key":"kwfs8lc8in8pr5m7sib","parentKey":"kwfs3bkjolf2peoxqw","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:161;O:8:"stdClass":19:{s:2:"id";s:4:"1442";s:3:"doc";s:3:"478";s:6:"module";s:3:"107";s:5:"title";s:12:"创建执行";s:4:"path";s:24:"/projects/:id/executions";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2760:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"1","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgyer9dnn0cdmvfbg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgyibi4lkkpze9ru","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:162;O:8:"stdClass":19:{s:2:"id";s:4:"1440";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4978:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"1","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"1","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:163;O:8:"stdClass":19:{s:2:"id";s:4:"1439";s:3:"doc";s:3:"473";s:6:"module";s:3:"107";s:5:"title";s:18:"查看执行详情";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2713:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwjf8jyxc2bl5hv8aj","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwjf92n2g29wmh5ksod","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjf93oiywvp8qfjso8","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjf94h8eksswfob90d","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjf94n4h5rwsrx9jav","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjf94t8t1k232wb97k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwjf95ea8g3jtdwqbhm","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjfak4falp1oiafj0r","children":[]},{"field":"PO","paramsType":"1","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjfakg8r1npyuij5vr","children":[]},{"field":"PM","paramsType":"1","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwjfakm4mre55vpxd3s","children":[]},{"field":"QD","paramsType":"1","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjfay8pduj3pwg4ni","children":[]},{"field":"RD","paramsType":"1","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjfaye22chyvo2td35","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjfayiuu0rcwpgnzt","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjfbfsr0ew9qa91j58k","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjfbfx3nzyg61vz4s","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwjfbp66qz2vh1h4ib","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjfbpav4pod9grs3p6","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjfdqkkbnm8q6il7rl","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:164;O:8:"stdClass":19:{s:2:"id";s:4:"1438";s:3:"doc";s:3:"464";s:6:"module";s:3:"115";s:5:"title";s:24:"获取执行任务列表";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:5154:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk22il6ih0mk45ynee","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"任务总数","structType":"json","sub":1,"key":"kwk25yw9h6c88on2gs","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页任务数","structType":"json","sub":1,"key":"kwk26cwonr1ceb1x48c","children":[]},{"field":"tasks","paramsType":"array","required":true,"desc":"任务列表","structType":"json","sub":1,"key":"kwk26oe1cfci0axln9","children":[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":2,"key":"kwk271yyl81fr3z1csq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk274lazo9w2l9j6n","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk27pzko2gd2knetm","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk280tgjkgb3bfaq4f","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":2,"key":"kwk28a0ibuxaqm0lsfk","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":2,"key":"kwk29366nqs15bgkvzf","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":2,"key":"kwk29dnj11da7xaxn1dd","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk2ekkj0nkpzt8y9i8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":2,"key":"kwk2esg1kesozl3y0cr","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":2,"key":"kwk2f2t8bulpj1shv5i","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"截止日期","structType":"json","sub":2,"key":"kwk2fb47qitn6rfvpl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":2,"key":"kwk2gjlv6yypt7pdt1q","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":2,"key":"kwk2h2nkp8vdklny1rb","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务详情","structType":"json","sub":2,"key":"kwk2iravy5agz6tuyg8","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk2jsnk9ia94nzmczp","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk2k5d9vo25bjb9hpc","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":2,"key":"kwk2mi8pqtelze3sods","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":2,"key":"kwk2mv8g9w191nzqwd5","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"realStarted","paramsType":"datetime","required":true,"desc":"实际开始时间","structType":"json","sub":2,"key":"kwk2n31558xty9l48p6","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedBy","paramsType":"1","required":false,"desc":"由谁完成","structType":"json","sub":2,"key":"kwk2rp61lk5obs480gq","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"finishedDate","paramsType":"datetime","required":false,"desc":"完成时间","structType":"json","sub":2,"key":"kwk2rq9q421wtd219ci","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedBy","paramsType":"1","required":false,"desc":"由谁关闭","structType":"json","sub":2,"key":"kwk2tiw1ld6srch5jl","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"closedDate","paramsType":"datetime","required":false,"desc":"关闭时间","structType":"json","sub":2,"key":"kwk2tozwkawb70vq2da","parentKey":"kwk26oe1cfci0axln9","children":[]},{"field":"mailto","paramsType":"array","required":"","desc":"抄送给","structType":"json","sub":2,"key":"kwt666j22gcx1g3sx63","parentKey":"kwk26oe1cfci0axln9","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:165;O:8:"stdClass":19:{s:2:"id";s:4:"1437";s:3:"doc";s:3:"460";s:6:"module";s:3:"115";s:5:"title";s:12:"创建任务";s:4:"path";s:21:"/executions/:id/tasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:2067:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":true,"desc":"指派给","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"formData","sub":1,"key":"kwt6a17uomk2c6xhjs","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"formData","sub":1,"key":"kwt6a1sp0c8naqpkajj","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4244:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]},{"field":"team","paramsType":"array","required":true,"desc":"团队,应用于多人任务","structType":"json","sub":1,"key":"kwt8yls7al1zdn067zn","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:166;O:8:"stdClass":19:{s:2:"id";s:4:"1436";s:3:"doc";s:3:"461";s:6:"module";s:3:"115";s:5:"title";s:18:"获取任务详情";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4095:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"string","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"string","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"string","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:167;O:8:"stdClass":19:{s:2:"id";s:4:"1435";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4075:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"1","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:168;O:8:"stdClass":19:{s:2:"id";s:4:"1434";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4563:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:169;O:8:"stdClass":19:{s:2:"id";s:4:"1433";s:3:"doc";s:3:"459";s:6:"module";s:3:"114";s:5:"title";s:21:"获取产品Bug列表";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:5844:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk7eduw8zanbk9e6ht","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwk7pmjg8bx9ks5nsdk","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwk7pp5rjiki3jhrqle","children":[]},{"field":"bugs","paramsType":"array","required":true,"desc":"Bug列表","structType":"json","sub":1,"key":"kwk7q10gli3djouo26c","children":[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":2,"key":"kwk7qqlrf6qsab9fmhm","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwk7qzuq0oj0uidcf22","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwk7rseae435am146u","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":2,"key":"kwk7s28age0knpphuk8","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwk7sbfgc2u9vfys535","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwk7ssk9hsnhc1jacyb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toTask","paramsType":"int","required":true,"desc":"转为任务","structType":"json","sub":2,"key":"kwk7t6cv3ijumgtosse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"toStory","paramsType":"int","required":true,"desc":"转为需求","structType":"json","sub":2,"key":"kwk7u9hhuk9imxkru49","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":2,"key":"kwk7uqb51qjre1zitzb","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"keywords","paramsType":"string","required":true,"desc":"关键字","structType":"json","sub":2,"key":"kwk7vlp4zqjj0c4imok","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":2,"key":"kwk7vvdcae2kc4wvix9","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwk7w5ganzfmj1j1x1","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":2,"key":"kwk7wk6xujzgiw0wo48","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":2,"key":"kwk803zry1ramko62gs","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":2,"key":"kwk848lg0liivvjhbc8p","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"steps","paramsType":"string","required":true,"desc":"重现步骤","structType":"json","sub":2,"key":"kwk84q6nkrbk25cc99q","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":2,"key":"kwk857q69enhdu23efr","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":2,"key":"kwk85lg2fc6z3rexd4","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwk86fotnf13zmf0en","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwk87b3qoug8jgtbdjg","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"截止日期","structType":"json","sub":2,"key":"kwk87tq3dxyomivkxs6","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":2,"key":"kwtbqoa9vqb7f21srse","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"assignedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":2,"key":"kwtbr15ttoimxdswkrp","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":2,"key":"kwtbrhatv8b7tmo9ku","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":2,"key":"kwtbrwq0a2lla3pd2o","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":2,"key":"kwtbsjcl1go23ol6x9n","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":2,"key":"kwtbsrk3rnmf8jsrllp","parentKey":"kwk7q10gli3djouo26c","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":2,"key":"kwtbts64oocm7bnt20m","parentKey":"kwk7q10gli3djouo26c","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:170;O:8:"stdClass":19:{s:2:"id";s:4:"1432";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4317:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:171;O:8:"stdClass":19:{s:2:"id";s:4:"1431";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"6";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4317:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:172;O:8:"stdClass":19:{s:2:"id";s:4:"1430";s:3:"doc";s:3:"456";s:6:"module";s:3:"114";s:5:"title";s:9:"创建Bug";s:4:"path";s:18:"/products/:id/bugs";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"7";s:6:"params";s:2501:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":1,"key":"kwk8aqb89rtg6cglkie","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"json","sub":1,"key":"kwk8bltwrldt1wgchnm","children":[]},{"field":"execution","paramsType":"int","required":"","desc":"所属执行","structType":"json","sub":1,"key":"kwk8bvemkvpxfdwwxy","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk8c7sybpxtka3kowi","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwk8crrf3fiqj00xivb","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk8d0a47z72hrd0o9i","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk8ddaj9c4lek4vez","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk8dmjemjpf2bn97an","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk8f6cl5ykqt41zk7s","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk8fgo4lqfxxjvdn3e","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk8fpxtwg5me792glg","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk8g0hztx0ofv70fy","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk8gemtbllui458dm","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk8gutklfhqqj3ilkf","children":[]},{"field":"openedBuild","paramsType":"array","required":"","desc":"影响版本","structType":"json","sub":1,"key":"kwk8ib5qsuuqbsf1iur","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4514:"[{"field":"id","paramsType":"int","required":true,"desc":"Bug ID","structType":"json","sub":1,"key":"kwk8xdeull75i2kwmsc","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwk8xmknfik26dkmycn","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwk922tvb2h0uasmm08","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk92jra5kpmzq4jtj5","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwk92tvgygxc0o40qo","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk9337e0ptpx29g28ln","children":[]},{"field":"toTask","paramsType":"boolean","required":"","desc":"转为任务","structType":"json","sub":1,"key":"kwk93c39rt0sgpm82no","children":[]},{"field":"toStory","paramsType":"boolean","required":"","desc":"转为需求","structType":"json","sub":1,"key":"kwk93grgd74t8m9nild","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"Bug标题","structType":"json","sub":1,"key":"kwk93oo1wzuqt58wwp","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键字","structType":"json","sub":1,"key":"kwk93y5cozg5crw2uyf","children":[]},{"field":"severity","paramsType":"int","required":true,"desc":"严重程度","structType":"json","sub":1,"key":"kwk9476xpfedgaf852g","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk94fp1l7dy6hzh1qq","children":[]},{"field":"type","paramsType":"string","required":"","desc":"Bug类型(codeerror 代码错误 | config 配置相关 | install 安装部署 | security 安全相关 | performance 性能问题 | standard 标准规范 | automation |测试脚本 | designdefect 设计缺陷 | others 其他)","structType":"json","sub":1,"key":"kwk94olautm2qx8bo0d","children":[]},{"field":"os","paramsType":"string","required":"","desc":"操作系统","structType":"json","sub":1,"key":"kwk94xg2mnjnw4alypf","children":[]},{"field":"browser","paramsType":"string","required":"","desc":"浏览器","structType":"json","sub":1,"key":"kwk9566paqsrfqx9mk7","children":[]},{"field":"steps","paramsType":"string","required":"","desc":"重现步骤","structType":"json","sub":1,"key":"kwk95fals8zmsirxa1","children":[]},{"field":"task","paramsType":"int","required":"","desc":"相关任务","structType":"json","sub":1,"key":"kwk95o8svqhwas7tvp","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关需求","structType":"json","sub":1,"key":"kwk95y26wdspfvfn33n","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk967690ddf5geqegzg","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk96ggevpdw00iv46o","children":[]},{"field":"deadline","paramsType":"date","required":"","desc":"截止日期","structType":"json","sub":1,"key":"kwk96nz9ct92dakrmq","children":[]},{"field":"assignedTo","paramsType":"1","required":"","desc":"指派给","structType":"json","sub":1,"key":"kwtbxz7soft90d6fnke","children":[]},{"field":"assgnedDate","paramsType":"datetime","required":"","desc":"指派时间","structType":"json","sub":1,"key":"kwtby03fouineb88qc","children":[]},{"field":"resolvedBy","paramsType":"1","required":"","desc":"由谁解决","structType":"json","sub":1,"key":"kwtby0lkg4929a72gjs","children":[]},{"field":"resolvedDate","paramsType":"datetime","required":"","desc":"解决时间","structType":"json","sub":1,"key":"kwtbynzmtg2sre0lwps","children":[]},{"field":"resolvedBuild","paramsType":"string","required":"","desc":"解决版本","structType":"json","sub":1,"key":"kwtbyokpoegco7yc8d","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwtc0ep34n5r0k2f8cf","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwtc0fquc5yf55mpcm","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(active 激活 | resolved 已解决 | closed 已关闭)","structType":"json","sub":1,"key":"kwtdcy67h7ab3mrs7r","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:173;O:8:"stdClass":19:{s:2:"id";s:4:"1429";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4343:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":"","desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":"","desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"object","required":"","desc":"状态","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[{"field":"code","paramsType":"string","required":"","desc":"状态编号","structType":"json","sub":3,"key":"kwkaxv4ydl52rkoa88q","parentKey":"kwkax2enp5573iuu8ba","children":[]},{"field":"name","paramsType":"string","required":"","desc":"状态名称","structType":"json","sub":3,"key":"kwkay6a25nug5uorjc9","parentKey":"kwkax2enp5573iuu8ba","children":[]}]},{"field":"openedBy","paramsType":"1","required":"","desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":"","desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:174;O:8:"stdClass":19:{s:2:"id";s:4:"1428";s:3:"doc";s:3:"450";s:6:"module";s:3:"113";s:5:"title";s:12:"修改用例";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:2277:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"json","sub":1,"key":"kwkb585nh9kq7cvquwf","children":[]},{"field":"module","paramsType":"int","required":false,"desc":"所属模块","structType":"json","sub":1,"key":"kwkb5gnh9rqsunyb7w","children":[]},{"field":"story","paramsType":"int","required":false,"desc":"所属需求","structType":"json","sub":1,"key":"kwkb5vnpernt7n7qr1","children":[]},{"field":"title","paramsType":"string","required":false,"desc":"用例标题","structType":"json","sub":1,"key":"kwkb67fcgbtqwt9t1n","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkbdbba1q8y7ciotzw","children":[]},{"field":"stage","paramsType":"string","required":"","desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkbgfsltq5w0sv7p9c","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":1,"key":"kwkbgqjsa1jgzrmg4vn","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwkbihae0iunh2kdnnxu","children":[]},{"field":"steps","paramsType":"array","required":false,"desc":"用例步骤","structType":"json","sub":1,"key":"kwkbiv37ihuyv1ugzs","children":[{"field":"desc","paramsType":"string","required":false,"desc":"步骤","structType":"json","sub":2,"key":"kwkc323gs0rax2k3dr","parentKey":"kwkbiv37ihuyv1ugzs","children":[]},{"field":"expect","paramsType":"string","required":false,"desc":"期望","structType":"json","sub":2,"key":"kwkc2unsakue1k30x9","parentKey":"kwkbiv37ihuyv1ugzs","children":[]}]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":1,"key":"kwkbjwoa4v710jbgcms","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3054:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:175;O:8:"stdClass":19:{s:2:"id";s:4:"1427";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3134:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"string","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:176;O:8:"stdClass":19:{s:2:"id";s:4:"1426";s:3:"doc";s:3:"433";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单列表";s:4:"path";s:10:"/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:459:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[{"field":"page","required":false,"desc":"当前页数,默认为1"},{"field":"limit","required":false,"desc":"每页测试单数,默认20个"},{"field":"order","required":false,"desc":"排序,默认 id_desc 按照id倒序"},{"field":"product","required":"","desc":"所属产品"},{"field":"branch","required":"","desc":"所属分支"}]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3129:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:177;O:8:"stdClass":19:{s:2:"id";s:4:"1424";s:3:"doc";s:3:"429";s:6:"module";s:3:"110";s:5:"title";s:21:"获取测试单详情";s:4:"path";s:14:"/testtasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1844:"[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":1,"key":"kwohs2y3qvmtjra64a","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwoi42b454iu4jm0gy2","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwoi4d86f1dtrl88ivw","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":1,"key":"kwoi4y4umklckqtw02s","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwoi5dao0i9y2m9l7byb","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":1,"key":"kwoi5pkrmti70ofie28","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型(integrate 集成测试 | system 系统测试 | acceptance 验收测试 | performance 性能测试 | safety 安全测试)","structType":"json","sub":1,"key":"kwoi60vq1qds4eic0tz","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":1,"key":"kwoi9orjbpmdakv07yl","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":1,"key":"kwoigqrt0dz13j7aaq4","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":1,"key":"kwoih8m0gxlep05qzd","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":1,"key":"kwoihh018oo0afnumpa","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"描述","structType":"json","sub":1,"key":"kwoihnqfavvu8h5qvgw","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:178;O:8:"stdClass":19:{s:2:"id";s:4:"1425";s:3:"doc";s:3:"431";s:6:"module";s:3:"110";s:5:"title";s:24:"获取项目的测试单";s:4:"path";s:23:"/projects/:id/testtasks";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3129:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页面","structType":"json","sub":1,"key":"kwo8ucgi1qbiaae0r5g","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"Bug总数","structType":"json","sub":1,"key":"kwo8ylqaacg8y7cb8b","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页Bug数","structType":"json","sub":1,"key":"kwo9046hkmpcyzx2v4g","children":[]},{"field":"testtasks","paramsType":"array","required":true,"desc":"测试单列表","structType":"json","sub":1,"key":"kwo90jo2wiqkcj2scf","children":[{"field":"id","paramsType":"int","required":true,"desc":"测试单编号","structType":"json","sub":2,"key":"kwo9188usj7n1ypugb8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":2,"key":"kwo91fs9wlmq36edrq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwo91gbs4lbogx6x3n7","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"测试单名称","structType":"json","sub":2,"key":"kwo91goa75b2azrowyj","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":2,"key":"kwo923z994jrii35ild","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"build","paramsType":"int","required":true,"desc":"所属版本","structType":"json","sub":2,"key":"kwo9244im88g3ytyoji","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"type","paramsType":"string","required":"","desc":"类型","structType":"json","sub":2,"key":"kwo92gxzu39f8r2oec8","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"owner","paramsType":"1","required":"","desc":"负责人","structType":"json","sub":2,"key":"kwo92hhy3l0aft9p0ws","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"json","sub":2,"key":"kwo93wl5werxqr8dobr","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"begin","paramsType":"date","required":"","desc":"开始日期","structType":"json","sub":2,"key":"kwo94u9sz3j1xwiusrl","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"end","paramsType":"date","required":"","desc":"结束日期","structType":"json","sub":2,"key":"kwo950hwe55wyfih99t","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"描述","structType":"json","sub":2,"key":"kwo95vdgd2ftem8xbxq","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已关闭 | blocked 被阻塞)","structType":"json","sub":2,"key":"kwo968gmepovbs7hvxu","parentKey":"kwo90jo2wiqkcj2scf","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":2,"key":"kwo986kmt9w834kdmzs","parentKey":"kwo90jo2wiqkcj2scf","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:179;O:8:"stdClass":19:{s:2:"id";s:4:"1422";s:3:"doc";s:3:"449";s:6:"module";s:3:"113";s:5:"title";s:18:"获取用例详情";s:4:"path";s:14:"/testcases/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"2";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:3271:"[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":1,"key":"kwkc2rk8pm0jqqb5p4e","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwkcew5dn6k84l1b2w","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属分支","structType":"json","sub":1,"key":"kwkcfe0icj4821ilk0a","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwkcfnyket632bglf8d","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"相关需求","structType":"json","sub":1,"key":"kwkcfxczmv2ceuh1fr","children":[]},{"field":"storyVersion","paramsType":"int","required":true,"desc":"需求版本","structType":"json","sub":1,"key":"kwkcgcbnskreyy1oltq","children":[]},{"field":"title","paramsType":"string","required":true,"desc":"需求标题","structType":"json","sub":1,"key":"kwkcgtezpflujhz1lg8","children":[]},{"field":"precondition","paramsType":"string","required":true,"desc":"前置条件","structType":"json","sub":1,"key":"kwkch57jxjil6a7eise","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwkchabrzuz0zbf84b","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":1,"key":"kwkchpw4m40vhbp5z9","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":1,"key":"kwkcihgaceclorkxpy","children":[]},{"field":"steps","paramsType":"array","required":true,"desc":"用例步骤列表","structType":"json","sub":1,"key":"kwkcissin2l8deqtjo","children":[{"field":"desc","paramsType":"string","required":true,"desc":"步骤","structType":"json","sub":2,"key":"kwkck2mbvdyprzp4ji","parentKey":"kwkcissin2l8deqtjo","children":[]},{"field":"expect","paramsType":"string","required":true,"desc":"期望","structType":"json","sub":2,"key":"kwkcjt8o3jey849nf2n","parentKey":"kwkcissin2l8deqtjo","children":[]}]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":1,"key":"kwkcm29boc0ev1phqul","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":1,"key":"kwkcm7yt26ijdjj8rum","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwkcmxk7j2t3yftrf7","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwkcmxxoua9sk0sgagd","children":[]},{"field":"status","paramsType":"string","required":"","desc":"状态(wait 待评审 | normal 正常 | blocked 被阻塞 | investigate 研究中)","structType":"json","sub":1,"key":"kwtxzea0ytpl9vcbwgf","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:180;O:8:"stdClass":19:{s:2:"id";s:4:"1423";s:3:"doc";s:3:"452";s:6:"module";s:3:"113";s:5:"title";s:24:"获取产品用例列表";s:4:"path";s:23:"/products/:id/testcases";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"GET";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:120:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4076:"[{"field":"page","paramsType":"int","required":true,"desc":"当前页数","structType":"json","sub":1,"key":"kwk9g1dojwbroymrcws","children":[]},{"field":"total","paramsType":"int","required":true,"desc":"用例总数","structType":"json","sub":1,"key":"kwkahlaakbout0bp6fn","children":[]},{"field":"limit","paramsType":"int","required":true,"desc":"每页用例数","structType":"json","sub":1,"key":"kwkahlgmogbrc7psek","children":[]},{"field":"testcases","paramsType":"array","required":true,"desc":"用例列表","structType":"json","sub":1,"key":"kwkai7c6gyotx0jcuyo","children":[{"field":"id","paramsType":"int","required":true,"desc":"用例ID","structType":"json","sub":2,"key":"kwkaimzfdgn2x7b9m8r","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":2,"key":"kwkaiwknw27spdo17d","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"branch","paramsType":"int","required":"","desc":"所属分支","structType":"json","sub":2,"key":"kwkamrbw5phoosjotue","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"module","paramsType":"int","required":"","desc":"所有模块","structType":"json","sub":2,"key":"kwkan7k2pxrj00bk8ak","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"story","paramsType":"int","required":"","desc":"相关研发需求","structType":"json","sub":2,"key":"kwkanjh2c1x7mpvmsqo","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"storyVersion","paramsType":"int","required":"","desc":"需求版本","structType":"json","sub":2,"key":"kwkao2n2ft4n19f1jcu","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"title","paramsType":"string","required":"","desc":"用例标题","structType":"json","sub":2,"key":"kwkarhs99mt7mbrg2gs","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"precondition","paramsType":"string","required":"","desc":"前置条件","structType":"json","sub":2,"key":"kwkas0x38pi6gs6z4cj","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"keywords","paramsType":"string","required":"","desc":"关键词","structType":"json","sub":2,"key":"kwkasbwzd2tn1leos8u","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":2,"key":"kwkaskmf0g3yfcecg0x","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"用例类型(feature 功能测试 | performance 性能测试 | config 配置相关 | install 安装部署 | security 安全相关 | interface 接口测试 | unit 单元测试 | other 其他)","structType":"json","sub":2,"key":"kwkassfkmsmqc55n94m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"stage","paramsType":"string","required":true,"desc":"适用阶段(unittest 单元测试阶段 | feature 功能测试阶段 | intergrate 集成测试阶段 | system 系统测试阶段 | smoke 冒烟测试阶段 | bvt 版本验证阶段)","structType":"json","sub":2,"key":"kwkavbir1xzs1p0zat8","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 待评审 | normal 正常 | blocked 被阻塞 | investigate 研究中)","structType":"json","sub":2,"key":"kwkax2enp5573iuu8ba","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":2,"key":"kwkayfdu351ai2383im","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":2,"key":"kwkayqk5u0rb5qof06m","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"json","sub":2,"key":"kwkaz9zrf2m6ossk686","parentKey":"kwkai7c6gyotx0jcuyo","children":[]},{"field":"fromCaseID","paramsType":"int","required":"","desc":"来自于用例","structType":"json","sub":2,"key":"kwkazwf5s3mg7p8fyr","parentKey":"kwkai7c6gyotx0jcuyo","children":[]}]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:181;O:8:"stdClass":19:{s:2:"id";s:4:"1418";s:3:"doc";s:3:"423";s:6:"module";s:3:"108";s:5:"title";s:12:"创建用户";s:4:"path";s:6:"/users";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"1";s:6:"params";s:777:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"account","paramsType":"string","required":true,"desc":"账号","structType":"json","sub":1,"key":"l41zlm7syi7tpslnib","children":[]},{"field":"password","paramsType":"string","required":true,"desc":"密码","structType":"json","sub":1,"key":"l41zteb0u7pqb5432d","children":[]},{"field":"realname","paramsType":"string","required":"","desc":"真实姓名","structType":"json","sub":1,"key":"l41zthpk4jhr9vixiz3","children":[]},{"field":"visions","paramsType":"array","required":"","desc":"界面 [“rnd”, “lite”],(研发综合界面 rnd, 运营管理界面 lite)。默认是rnd","structType":"json","sub":1,"key":"l41ztwgamfcn0dxx40s","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:136:"{"account": "usertest", "password": "123qwe!@#", "realname": "测试用户"}";s:15:"responseExample";s:1648:"{ "id": 8, "company": 0, "type": "inside", @@ -415,4 +415,4 @@ a:185:{i:0;O:8:"stdClass":19:{s:2:"id";s:4:"1602";s:3:"doc";s:3:"498";s:6:"modul "deleted": "0", "clientStatus": "offline", "clientLang": "zh-cn" -}";s:8:"response";s:907:"[{"field":"id","paramsType":"int","required":true,"desc":"用户id","structType":"json","sub":1,"key":"l41zlm7x9w72ahehfvi","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"登录名","structType":"json","sub":1,"key":"l420073u3zm6mcp1t79","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"内部用户 inside, 外部用户 outside","structType":"json","sub":1,"key":"l41zy79w4kmzkxsv9tp","children":[]},{"field":"gender","paramsType":"string","required":true,"desc":"f 女性, m 男性","structType":"json","sub":1,"key":"l41zypdr7jz9gutju1f","children":[]},{"field":"dept","paramsType":"int","required":"","desc":"部门ID","structType":"json","sub":1,"key":"l41zzkudg6597xn5s6u","children":[]},{"field":"realname","paramsType":"string","required":false,"desc":"真实姓名","structType":"json","sub":1,"key":"l41zzx8g3lx8dwwm0ml","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:182;O:8:"stdClass":19:{s:2:"id";s:4:"1420";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"修改执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgxee7xz31l6mlr38","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgxmx4kfy4ru55g7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:183;O:8:"stdClass":19:{s:2:"id";s:4:"1421";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1482:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:184;O:8:"stdClass":19:{s:2:"id";s:4:"1419";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4075:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"1","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}} \ No newline at end of file +}";s:8:"response";s:907:"[{"field":"id","paramsType":"int","required":true,"desc":"用户id","structType":"json","sub":1,"key":"l41zlm7x9w72ahehfvi","children":[]},{"field":"account","paramsType":"string","required":true,"desc":"登录名","structType":"json","sub":1,"key":"l420073u3zm6mcp1t79","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"内部用户 inside, 外部用户 outside","structType":"json","sub":1,"key":"l41zy79w4kmzkxsv9tp","children":[]},{"field":"gender","paramsType":"string","required":true,"desc":"f 女性, m 男性","structType":"json","sub":1,"key":"l41zypdr7jz9gutju1f","children":[]},{"field":"dept","paramsType":"int","required":"","desc":"部门ID","structType":"json","sub":1,"key":"l41zzkudg6597xn5s6u","children":[]},{"field":"realname","paramsType":"string","required":false,"desc":"真实姓名","structType":"json","sub":1,"key":"l41zzx8g3lx8dwwm0ml","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:182;O:8:"stdClass":19:{s:2:"id";s:4:"1420";s:3:"doc";s:3:"472";s:6:"module";s:3:"107";s:5:"title";s:12:"修改执行";s:4:"path";s:15:"/executions/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"5";s:6:"params";s:2401:"{"header":[{"field":"Token","required":true,"desc":"认证凭证"}],"params":[{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwg1ms08tbuujh4amd","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwg1oztyy48dm8m7ykk","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwg1pb011jy7te3dhil","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwg1piwmz4iad8atw8g","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwg1po8c6g02wciwc8k","children":[]},{"field":"days","paramsType":"int","required":"","desc":"可用工作日","structType":"json","sub":1,"key":"kwg1py9vcmy6q1qt3vs","children":[]},{"field":"lifetime","paramsType":"string","required":"","desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwg1qxpt6mhzoy5sxm","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwg1rogihd6h959v8en","children":[]},{"field":"PM","paramsType":"string","required":"","desc":"迭代负责人","structType":"json","sub":1,"key":"kwg1u5uwk6dty43r8yq","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwg1ud1wtozclb1wa7","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwg1ujvuqtad5zav3z","children":[]},{"field":"teamMembers","paramsType":"array","required":"","desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwg1ur6sq8cfjlizc8m","children":[]},{"field":"desc","paramsType":"string","required":"","desc":"迭代描述","structType":"json","sub":1,"key":"kwg1vny7cdpckj9m7w5","children":[]},{"field":"acl","paramsType":"string","required":"","desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwg1wz0cs5bpn14c1x","children":[]},{"field":"whitelist","paramsType":"array","required":"","desc":"白名单","structType":"json","sub":1,"key":"kwg21q5ul24mkz2654r","children":[]}],"paramsType":"json","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:2780:"[{"field":"id","paramsType":"int","required":true,"desc":"执行ID","structType":"json","sub":1,"key":"kwje93s0z2ssy5ly0fe","children":[]},{"field":"project","paramsType":"boolean","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwje9v54b34cthkc1of","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"执行名称","structType":"json","sub":1,"key":"kwjea30ar0z9hsc1urn","children":[]},{"field":"code","paramsType":"string","required":true,"desc":"执行代号","structType":"json","sub":1,"key":"kwjeabewhizyxsjf4cg","children":[]},{"field":"days","paramsType":"int","required":true,"desc":"可用工作日","structType":"json","sub":1,"key":"kwjearrn1hjcssfmckq","children":[]},{"field":"begin","paramsType":"date","required":true,"desc":"计划开始日期","structType":"json","sub":1,"key":"kwjeb0e477czkhdc37b","children":[]},{"field":"end","paramsType":"date","required":true,"desc":"计划结束日期","structType":"json","sub":1,"key":"kwjeb7kflmn5w24jp7r","children":[]},{"field":"lifetime","paramsType":"string","required":true,"desc":"类型(short 短期 | long 长期 | ops 运维)","structType":"json","sub":1,"key":"kwjebm589usadvn8bd","children":[]},{"field":"PO","paramsType":"string","required":"","desc":"产品负责人","structType":"json","sub":1,"key":"kwjebvvo35mmg93g23t","children":[]},{"field":"PM","paramsType":"string","required":false,"desc":"迭代负责人","structType":"json","sub":1,"key":"kwjec64i8fbsgsk6o16","children":[]},{"field":"QD","paramsType":"string","required":"","desc":"测试负责人","structType":"json","sub":1,"key":"kwjec75526g0hq0afpu","children":[]},{"field":"RD","paramsType":"string","required":"","desc":"发布负责人","structType":"json","sub":1,"key":"kwjeckfrxddq94il8xn","children":[]},{"field":"teamMembers","paramsType":"array","required":true,"desc":"团队成员 [\"admin\"]","structType":"json","sub":1,"key":"kwjecwu03ma77kxt3a5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"迭代描述","structType":"json","sub":1,"key":"kwjedoygiwsq148p2kg","children":[]},{"field":"acl","paramsType":"string","required":true,"desc":"访问控制(private 私有 | open 继承项目权限)","structType":"json","sub":1,"key":"kwjedzd69dldudhd355","children":[]},{"field":"whitelist","paramsType":"array","required":true,"desc":"白名单,acl = private时生效","structType":"json","sub":1,"key":"kwjee3inl8cabnd73lj","children":[]},{"field":"openedBy","paramsType":"string","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwjgxee7xz31l6mlr38","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwjgxmx4kfy4ru55g7","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:183;O:8:"stdClass":19:{s:2:"id";s:4:"1421";s:3:"doc";s:3:"436";s:6:"module";s:3:"109";s:5:"title";s:12:"创建版本";s:4:"path";s:20:"/projects/:id/builds";s:8:"protocol";s:4:"HTTP";s:6:"method";s:4:"POST";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"3";s:6:"params";s:1482:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"formData","sub":1,"key":"kwn2hke2m16i7h452cb","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"formData","sub":1,"key":"kwn2l3dui8vpwwx9y8f","children":[]},{"field":"branch","paramsType":"int","required":false,"desc":"所属分支","structType":"formData","sub":1,"key":"kwn2lkz5au17o6goi1o","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"formData","sub":1,"key":"kwn2nomwzdoima7e2hb","children":[]},{"field":"builder","paramsType":"string","required":true,"desc":"构建者","structType":"formData","sub":1,"key":"kwn36kwqb4zzjppzwv7","children":[]},{"field":"date","paramsType":"date","required":"","desc":"打包日期","structType":"formData","sub":1,"key":"kwn374he8b8lbg24sze","children":[]},{"field":"scmPath","paramsType":"string","required":"","desc":"源代码地址","structType":"formData","sub":1,"key":"kwn37q7exee3380qxw","children":[]},{"field":"filePath","paramsType":"string","required":"","desc":"下载地址","structType":"formData","sub":1,"key":"kwn38kxvzw8oql3u0qh","children":[]},{"field":"desc","paramsType":"string","required":false,"desc":"版本描述","structType":"formData","sub":1,"key":"kwn39igbbcz2nsjctqr","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:1638:"[{"field":"id","paramsType":"int","required":true,"desc":"版本ID","structType":"json","sub":1,"key":"kwn2hke96i5njkoy06m","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属项目","structType":"json","sub":1,"key":"kwn3iu5ilw20yqn6gao","children":[]},{"field":"product","paramsType":"int","required":true,"desc":"所属产品","structType":"json","sub":1,"key":"kwn3jaea9a00bqeziw","children":[]},{"field":"branch","paramsType":"int","required":true,"desc":"所属产品分支(主分支为0)","structType":"json","sub":1,"key":"kwn3jkc5xrijl3g11rg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwn3jzf0144tenen2fal","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"版本名称","structType":"json","sub":1,"key":"kwn3kjjk0v3i8tduutf","children":[]},{"field":"scmPath","paramsType":"string","required":true,"desc":"源代码地址","structType":"json","sub":1,"key":"kwn3kyosy9ygwek0o2s","children":[]},{"field":"filePath","paramsType":"string","required":true,"desc":"下载地址","structType":"json","sub":1,"key":"kwn3l8b97lgsvxg2xd5","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"版本描述","structType":"json","sub":1,"key":"kwn3lgm8punjni3qcdc","children":[]},{"field":"builder","paramsType":"1","required":true,"desc":"构建者","structType":"json","sub":1,"key":"kwn3m6hi7t4ywwrh596","children":[]},{"field":"date","paramsType":"date","required":true,"desc":"打包日期","structType":"json","sub":1,"key":"kwn3mcpyk6lwlh5msa8","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}i:184;O:8:"stdClass":19:{s:2:"id";s:4:"1419";s:3:"doc";s:3:"457";s:6:"module";s:3:"115";s:5:"title";s:12:"修改任务";s:4:"path";s:10:"/tasks/:id";s:8:"protocol";s:4:"HTTP";s:6:"method";s:3:"PUT";s:11:"requestType";s:16:"application/json";s:12:"responseType";s:0:"";s:6:"status";s:4:"done";s:5:"owner";s:5:"admin";s:4:"desc";s:0:"";s:7:"version";s:1:"4";s:6:"params";s:1781:"{"header":[{"field":"Token","required":true,"desc":"认证凭证Token"}],"params":[{"field":"module","paramsType":"int","required":"","desc":"所属模块","structType":"formData","sub":1,"key":"kwk2vtnfxn98pr2h8yf","children":[]},{"field":"story","paramsType":"int","required":"","desc":"关联需求","structType":"formData","sub":1,"key":"kwk2xlvcr1gkg6izip","children":[]},{"field":"fromBug","paramsType":"int","required":"","desc":"来自于Bug","structType":"formData","sub":1,"key":"kwk2xviqx2ak237g4yi","children":[]},{"field":"name","paramsType":"string","required":false,"desc":"任务名称","structType":"formData","sub":1,"key":"kwk2yavrfjddi4941np","children":[]},{"field":"type","paramsType":"string","required":false,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"formData","sub":1,"key":"kwk2yhq6v5epv4ino7","children":[]},{"field":"assignedTo","paramsType":"array","required":false,"desc":"指派给,[\"admin\"]","structType":"formData","sub":1,"key":"kwk2zis5zbu6jepnl5","children":[]},{"field":"pri","paramsType":"int","required":"","desc":"优先级","structType":"formData","sub":1,"key":"kwk2zvwesy6jyygqm2","children":[]},{"field":"estimate","paramsType":"float","required":"","desc":"预计工时","structType":"formData","sub":1,"key":"kwk305ekgwbjv0gzb4p","children":[]},{"field":"estStarted","paramsType":"date","required":false,"desc":"预计开始日期","structType":"formData","sub":1,"key":"kwk32zmfpl4kmya3l5h","children":[]},{"field":"deadline","paramsType":"date","required":false,"desc":"预计结束日期","structType":"formData","sub":1,"key":"kwk335gooe4o9gndxb","children":[]}],"paramsType":"formData","query":[]}";s:13:"paramsExample";s:0:"";s:15:"responseExample";s:0:"";s:8:"response";s:4075:"[{"field":"id","paramsType":"int","required":true,"desc":"任务ID","structType":"json","sub":1,"key":"kwk2vtnjuurgha4gkcc","children":[]},{"field":"project","paramsType":"int","required":true,"desc":"所属任务","structType":"json","sub":1,"key":"kwk37ng942x5k9g1xxm","children":[]},{"field":"parent","paramsType":"int","required":true,"desc":"父任务","structType":"json","sub":1,"key":"kwk382nnpny9ddvyndg","children":[]},{"field":"execution","paramsType":"int","required":true,"desc":"所属执行","structType":"json","sub":1,"key":"kwk38e5so8kannzevsl","children":[]},{"field":"module","paramsType":"int","required":true,"desc":"所属模块","structType":"json","sub":1,"key":"kwk3imzj095g74m8ff5k","children":[]},{"field":"story","paramsType":"int","required":true,"desc":"关联需求","structType":"json","sub":1,"key":"kwk3iw6rp6bbt5gq3kh","children":[]},{"field":"fromBug","paramsType":"int","required":true,"desc":"来源于Bug","structType":"json","sub":1,"key":"kwk3j8pscep4xnuzprg","children":[]},{"field":"name","paramsType":"string","required":true,"desc":"任务名称","structType":"json","sub":1,"key":"kwk3mzbxzc62ksy2659","children":[]},{"field":"type","paramsType":"string","required":true,"desc":"任务类型(design 设计 | devel 开发 | request 需求 | test 测试 | study 研究 | discuss 讨论 | ui 界面 | affair 事务 | misc 其他)","structType":"json","sub":1,"key":"kwk3sprxj3d2vj0mat","children":[]},{"field":"pri","paramsType":"int","required":true,"desc":"优先级","structType":"json","sub":1,"key":"kwk3ukxrnn0ie0rc3oh","children":[]},{"field":"estimate","paramsType":"float","required":true,"desc":"预计工时","structType":"json","sub":1,"key":"kwk3v3epr2gpzmkdcmk","children":[]},{"field":"consumed","paramsType":"float","required":true,"desc":"消耗工时","structType":"json","sub":1,"key":"kwk3vjxjszs3uqmmvvm","children":[]},{"field":"left","paramsType":"float","required":true,"desc":"剩余工时","structType":"json","sub":1,"key":"kwk3vu4gwz2vrlwpqd","children":[]},{"field":"deadline","paramsType":"date","required":true,"desc":"预计结束日期","structType":"json","sub":1,"key":"kwk3w6k2qqt6ad9fj6f","children":[]},{"field":"status","paramsType":"string","required":true,"desc":"状态(wait 未开始 | doing 进行中 | done 已完成 | closed 已关闭 | cancel 已取消)","structType":"json","sub":1,"key":"kwk3wq0acq6kcla9bxl","children":[]},{"field":"desc","paramsType":"string","required":true,"desc":"任务描述","structType":"json","sub":1,"key":"kwk3zv7ssgfg2nko2d","children":[]},{"field":"openedBy","paramsType":"1","required":true,"desc":"创建人","structType":"json","sub":1,"key":"kwk407dr61cugmxhlyv","children":[]},{"field":"openedDate","paramsType":"datetime","required":true,"desc":"创建时间","structType":"json","sub":1,"key":"kwk40d9j5001v5ztro","children":[]},{"field":"assignedTo","paramsType":"1","required":true,"desc":"指派给","structType":"json","sub":1,"key":"kwk40sbi2gb6wlayec8","children":[]},{"field":"assignedDate","paramsType":"datetime","required":true,"desc":"指派时间","structType":"json","sub":1,"key":"kwk40wjuji9duwfxwg","children":[]},{"field":"estStarted","paramsType":"date","required":true,"desc":"预计开始日期","structType":"json","sub":1,"key":"kwk41sqvjzmwj2l6k0c","children":[]},{"field":"realStarted","paramsType":"datetime","required":"","desc":"实际开始时间","structType":"json","sub":1,"key":"kwk41tggydumzmjjov","children":[]},{"field":"finishedBy","paramsType":"1","required":"","desc":"由谁完成","structType":"json","sub":1,"key":"kwk41tldxm6egute0hf","children":[]},{"field":"finishedDate","paramsType":"datetime","required":"","desc":"完成时间","structType":"json","sub":1,"key":"kwk41tq3oy1wfxwdm0a","children":[]},{"field":"closedBy","paramsType":"1","required":"","desc":"由谁关闭","structType":"json","sub":1,"key":"kwk42tximh8mftw3o2h","children":[]},{"field":"closedDate","paramsType":"datetime","required":"","desc":"关闭时间","structType":"json","sub":1,"key":"kwk42u2nz10u8prmjqe","children":[]}]";s:7:"addedBy";s:5:"admin";s:9:"addedDate";s:19:"2022-06-28 09:51:31";}} diff --git a/db/bi.sql b/db/bi.sql new file mode 100644 index 0000000000..bd646f4477 --- /dev/null +++ b/db/bi.sql @@ -0,0 +1,47 @@ +ALTER TABLE `zt_chart` ADD `group` mediumint(8) unsigned NOT NULL default '0' AFTER `type`; +ALTER TABLE `zt_chart` ADD `editedBy` varchar(30) NOT NULL AFTER `createdDate`; +ALTER TABLE `zt_chart` ADD `editedDate` datetime NOT NULL AFTER `editedBy`; + +ALTER TABLE `zt_chart` MODIFY COLUMN `desc` text NOT NULL; + +CREATE TABLE IF NOT EXISTS `zt_dimension` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `code` (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +ALTER TABLE `zt_report` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; +ALTER TABLE `zt_chart` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; +ALTER TABLE `zt_dashboard` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; + +UPDATE `zt_chart` SET `dimension` = 1 WHERE `dimension` = 0; +UPDATE `zt_report` SET `dimension` = 1 WHERE `dimension` = 0; +UPDATE `zt_dashboard` SET `dimension` = 1 WHERE `dimension` = 0; + +CREATE TABLE IF NOT EXISTS `zt_dataview` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `group` mediumint(8) unsigned NOT NULL, + `name` varchar(155) NOT NULL, + `code` varchar(50) NOT NULL, + `view` varchar(57) NOT NULL, + `sql` text NOT NULL, + `fields` mediumtext NOT NULL, + `objects` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +UPDATE `zt_grouppriv` SET `module` = 'dataview' WHERE `module` = 'dataset' AND `method` in ('create', 'browse', 'edit', 'delete'); +DELETE FROM `zt_grouppriv` WHERE `module` = 'dataset' AND `method` = 'view'; diff --git a/db/standard/zentao17.7.sql b/db/standard/zentao17.7.sql index 32e0edfa70..68e0850ff9 100644 --- a/db/standard/zentao17.7.sql +++ b/db/standard/zentao17.7.sql @@ -1489,7 +1489,7 @@ CREATE TABLE `zt_kanban` ( `showWIP` enum('0','1') NOT NULL DEFAULT '1', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `object` varchar(255) NOT NULL, `alignment` varchar(10) NOT NULL DEFAULT 'center', @@ -2187,7 +2187,7 @@ CREATE TABLE `zt_project` ( `displayCards` smallint(6) NOT NULL DEFAULT '0', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`), diff --git a/db/standard/zentao17.8.sql b/db/standard/zentao17.8.sql index 32e0edfa70..68e0850ff9 100644 --- a/db/standard/zentao17.8.sql +++ b/db/standard/zentao17.8.sql @@ -1489,7 +1489,7 @@ CREATE TABLE `zt_kanban` ( `showWIP` enum('0','1') NOT NULL DEFAULT '1', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `object` varchar(255) NOT NULL, `alignment` varchar(10) NOT NULL DEFAULT 'center', @@ -2187,7 +2187,7 @@ CREATE TABLE `zt_project` ( `displayCards` smallint(6) NOT NULL DEFAULT '0', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', `colWidth` smallint(4) NOT NULL DEFAULT '264', - `minColWidth` smallint(4) NOT NULL DEFAULT '180', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', `deleted` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`id`), diff --git a/db/standard/zentao18.0.beta1.sql b/db/standard/zentao18.0.beta1.sql new file mode 100644 index 0000000000..2f014929d2 --- /dev/null +++ b/db/standard/zentao18.0.beta1.sql @@ -0,0 +1,4080 @@ +CREATE TABLE `zt_account` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `type` varchar(255) NOT NULL, + `provider` varchar(255) NOT NULL, + `adminURI` varchar(255) NOT NULL, + `account` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `email` varchar(255) NOT NULL, + `mobile` varchar(255) NOT NULL, + `extra` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `status` varchar(30) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `name` (`name`), + KEY `provider` (`provider`), + KEY `status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_acl` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `objectType` char(30) NOT NULL, + `objectID` mediumint(9) NOT NULL DEFAULT '0', + `type` char(40) NOT NULL DEFAULT 'whitelist', + `source` char(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_action` ( + `id` int(9) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL DEFAULT '', + `objectID` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` text NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `actor` varchar(100) NOT NULL DEFAULT '', + `action` varchar(80) NOT NULL DEFAULT '', + `date` datetime NOT NULL, + `comment` text NOT NULL, + `extra` text, + `read` enum('0','1') NOT NULL DEFAULT '0', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `efforted` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `date` (`date`), + KEY `actor` (`actor`), + KEY `project` (`project`), + KEY `action` (`action`), + KEY `objectID` (`objectID`) +) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_activity` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `process` mediumint(9) NOT NULL, + `name` varchar(255) NOT NULL, + `optional` varchar(255) NOT NULL, + `tailorNorm` varchar(255) NOT NULL, + `content` mediumtext NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `order` mediumint(8) DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_api` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `product` varchar(255) NOT NULL DEFAULT '', + `lib` int(10) unsigned NOT NULL DEFAULT '0', + `module` int(10) unsigned NOT NULL DEFAULT '0', + `title` varchar(100) NOT NULL DEFAULT '', + `path` varchar(255) NOT NULL DEFAULT '', + `protocol` varchar(10) NOT NULL DEFAULT '', + `method` varchar(10) NOT NULL DEFAULT '', + `requestType` varchar(100) NOT NULL DEFAULT '', + `responseType` varchar(100) NOT NULL DEFAULT '', + `status` varchar(20) NOT NULL DEFAULT '', + `owner` varchar(30) NOT NULL DEFAULT '0', + `desc` mediumtext NULL, + `version` smallint(5) unsigned NOT NULL DEFAULT '0', + `params` text, + `paramsExample` text, + `responseExample` text, + `response` text, + `commonParams` text, + `addedBy` varchar(30) NOT NULL DEFAULT '0', + `addedDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL DEFAULT '0', + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=70 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_api_lib_release` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `lib` int(10) unsigned NOT NULL DEFAULT '0', + `desc` varchar(255) NOT NULL DEFAULT '', + `version` varchar(255) NOT NULL DEFAULT '', + `snap` mediumtext NOT NULL, + `addedBy` varchar(30) NOT NULL DEFAULT '0', + `addedDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_apispec` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `doc` int(10) unsigned NOT NULL DEFAULT '0', + `module` int(10) unsigned NOT NULL DEFAULT '0', + `title` varchar(100) NOT NULL DEFAULT '', + `path` varchar(255) NOT NULL DEFAULT '', + `protocol` varchar(10) NOT NULL DEFAULT '', + `method` varchar(10) NOT NULL DEFAULT '', + `requestType` varchar(100) NOT NULL DEFAULT '', + `responseType` varchar(100) NOT NULL DEFAULT '', + `status` varchar(20) NOT NULL DEFAULT '', + `owner` varchar(255) NOT NULL DEFAULT '0', + `desc` mediumtext NULL, + `version` smallint(5) unsigned NOT NULL DEFAULT '0', + `params` text, + `paramsExample` text, + `responseExample` text, + `response` text, + `addedBy` varchar(30) NOT NULL DEFAULT '0', + `addedDate` datetime DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=176 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_apistruct` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `lib` int(10) unsigned NOT NULL DEFAULT '0', + `name` varchar(30) NOT NULL DEFAULT '', + `type` varchar(50) NOT NULL DEFAULT '', + `desc` mediumtext NOT NULL DEFAULT '', + `version` smallint(5) unsigned NOT NULL DEFAULT '0', + `attribute` text, + `addedBy` varchar(30) NOT NULL DEFAULT '0', + `addedDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL DEFAULT '0', + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_apistruct_spec` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `type` varchar(50) NOT NULL DEFAULT '', + `desc` varchar(255) NOT NULL DEFAULT '', + `attribute` text, + `version` smallint(5) unsigned NOT NULL DEFAULT '0', + `addedBy` varchar(30) NOT NULL DEFAULT '0', + `addedDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approval` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `flow` mediumint(8) NOT NULL, + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `nodes` mediumtext NOT NULL, + `version` mediumint(9) NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'doing', + `result` varchar(20) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalflow` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `code` varchar(100) NOT NULL, + `desc` mediumtext NOT NULL, + `version` mediumint(8) NOT NULL DEFAULT '1', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `type` varchar(30) NOT NULL, + `deleted` tinyint(4) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalflowobject` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `root` int(8) NOT NULL, + `flow` int(8) NOT NULL, + `objectType` char(30) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `extra` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalflowspec` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `flow` mediumint(8) NOT NULL, + `version` mediumint(8) NOT NULL, + `nodes` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalnode` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `approval` mediumint(8) NOT NULL, + `type` enum('review','cc') NOT NULL, + `title` varchar(255) NOT NULL, + `account` char(30) NOT NULL, + `node` varchar(100) NOT NULL, + `reviewType` varchar(100) NOT NULL DEFAULT 'manual', + `multipleType` enum('and','or') NOT NULL DEFAULT 'and', + `prev` mediumtext NOT NULL, + `next` mediumtext NOT NULL, + `status` varchar(20) NOT NULL DEFAULT 'wait', + `result` varchar(10) NOT NULL, + `date` date NOT NULL, + `opinion` mediumtext NOT NULL, + `extra` mediumtext NOT NULL, + `reviewedBy` char(30) NOT NULL, + `reviewedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `idx_reviewed_date` (`reviewedDate`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalobject` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `approval` int(8) NOT NULL, + `objectType` char(30) NOT NULL, + `objectID` mediumint(8) NOT NULL, + `extra` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_approvalrole` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `code` char(30) NOT NULL, + `name` varchar(255) NOT NULL, + `desc` text NOT NULL, + `users` longtext NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_asset` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `status` varchar(30) NOT NULL, + `type` varchar(30) NOT NULL, + `group` varchar(128) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_assetlib` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `type` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `order` SMALLINT UNSIGNED NOT NULL DEFAULT '0', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_attend` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `date` date NOT NULL, + `signIn` time NOT NULL, + `signOut` time NOT NULL, + `status` varchar(30) NOT NULL DEFAULT '', + `ip` varchar(15) NOT NULL, + `device` varchar(30) NOT NULL, + `client` varchar(20) NOT NULL, + `manualIn` time NOT NULL, + `manualOut` time NOT NULL, + `reason` varchar(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `reviewStatus` varchar(30) NOT NULL DEFAULT '', + `reviewedBy` char(30) NOT NULL, + `reviewedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `attend` (`date`,`account`), + KEY `account` (`account`), + KEY `date` (`date`), + KEY `status` (`status`), + KEY `reason` (`reason`), + KEY `reviewStatus` (`reviewStatus`), + KEY `reviewedBy` (`reviewedBy`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_attendstat` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `month` char(10) NOT NULL DEFAULT '', + `normal` decimal(12,2) NOT NULL DEFAULT '0.00', + `late` decimal(12,2) NOT NULL DEFAULT '0.00', + `early` decimal(12,2) NOT NULL DEFAULT '0.00', + `absent` decimal(12,2) NOT NULL DEFAULT '0.00', + `trip` decimal(12,2) NOT NULL DEFAULT '0.00', + `egress` decimal(12,2) NOT NULL DEFAULT '0.00', + `lieu` decimal(12,2) NOT NULL DEFAULT '0.00', + `paidLeave` decimal(12,2) NOT NULL DEFAULT '0.00', + `unpaidLeave` decimal(12,2) NOT NULL DEFAULT '0.00', + `timeOvertime` decimal(12,2) NOT NULL DEFAULT '0.00', + `restOvertime` decimal(12,2) NOT NULL DEFAULT '0.00', + `holidayOvertime` decimal(12,2) NOT NULL DEFAULT '0.00', + `deserve` decimal(12,2) NOT NULL DEFAULT '0.00', + `actual` decimal(12,2) NOT NULL DEFAULT '0.00', + `status` char(30) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + UNIQUE KEY `attend` (`month`,`account`), + KEY `account` (`account`), + KEY `month` (`month`), + KEY `status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_auditcl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `model` char(30) NOT NULL DEFAULT 'waterfall', + `practiceArea` char(30) NOT NULL, + `type` char(30) NOT NULL, + `title` varchar(255) NOT NULL, + `objectType` char(30) NOT NULL, + `objectID` int(10) DEFAULT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_auditplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `dateType` char(30) DEFAULT NULL, + `config` text, + `objectID` mediumint(9) NOT NULL, + `objectType` char(30) NOT NULL, + `process` mediumint(9) NOT NULL, + `processType` char(30) NOT NULL, + `checkDate` date NOT NULL, + `checkedBy` varchar(30) NOT NULL, + `realCheckDate` date NOT NULL, + `result` char(30) NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `checkBy` varchar(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_auditresult` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `auditplan` mediumint(8) NOT NULL, + `listID` mediumint(8) NOT NULL, + `result` char(30) NOT NULL, + `checkedBy` varchar(30) NOT NULL, + `checkedDate` date NOT NULL, + `comment` text NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_baseimage` ( + `id` smallint(7) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `path` varchar(255) NOT NULL DEFAULT '', + `osType` varchar(50) NOT NULL DEFAULT '', + `os` varchar(50) NOT NULL DEFAULT '', + `osCategory` varchar(50) NOT NULL DEFAULT '', + `osArch` varchar(50) NOT NULL DEFAULT '', + `osLang` varchar(50) NOT NULL DEFAULT '', + `suggestCore` tinyint(1) unsigned NOT NULL DEFAULT '0', + `suggestMemory` mediumint(6) unsigned NOT NULL DEFAULT '0', + `suggestVolume` mediumint(6) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_baseimagebrowser` ( + `vmBackingID` int(10) NOT NULL, + `browserID` int(10) NOT NULL, + PRIMARY KEY (`vmBackingID`,`browserID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_basicmeas` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `purpose` varchar(50) NOT NULL, + `scope` char(30) NOT NULL, + `object` char(30) NOT NULL, + `name` varchar(90) NOT NULL, + `code` char(30) NOT NULL, + `unit` varchar(10) NOT NULL, + `configure` text, + `params` text, + `definition` text, + `source` varchar(255) DEFAULT NULL, + `collectType` varchar(30) NOT NULL, + `collectConf` text NOT NULL, + `execTime` varchar(30) NOT NULL, + `collectedBy` varchar(10) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `order` mediumint(8) unsigned NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_block` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `module` varchar(20) NOT NULL, + `type` char(30) NOT NULL, + `title` varchar(100) NOT NULL, + `source` varchar(20) NOT NULL, + `block` varchar(30) NOT NULL, + `params` text NOT NULL, + `order` tinyint(3) unsigned NOT NULL DEFAULT '0', + `grid` tinyint(3) unsigned NOT NULL DEFAULT '0', + `height` smallint(5) unsigned NOT NULL DEFAULT '0', + `hidden` tinyint(1) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `account_vision_module_type_order` (`account`,`vision`,`module`,`type`,`order`), + KEY `account` (`account`) +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_branch` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `default` enum('0','1') NOT NULL DEFAULT '0', + `status` enum('active','closed') NOT NULL DEFAULT 'active', + `desc` varchar(255) NOT NULL, + `createdDate` date NOT NULL, + `closedDate` date NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_browser` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL DEFAULT '', + `type` varchar(255) NOT NULL DEFAULT '', + `version` varchar(255) NOT NULL DEFAULT '', + `lang` varchar(255) NOT NULL DEFAULT '', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_budget` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `stage` char(30) NOT NULL, + `subject` mediumint(8) NOT NULL, + `amount` char(30) NOT NULL, + `name` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `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, + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `execution` mediumint(8) unsigned NOT NULL DEFAULT '0', + `plan` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toTask` mediumint(8) unsigned NOT NULL DEFAULT '0', + `toStory` mediumint(8) NOT NULL DEFAULT '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `severity` tinyint(4) NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `os` varchar(255) NOT NULL DEFAULT '', + `browser` varchar(255) NOT NULL DEFAULT '', + `hardware` varchar(30) NOT NULL, + `found` varchar(30) NOT NULL DEFAULT '', + `steps` mediumtext NOT NULL, + `status` enum('active','resolved','closed') NOT NULL DEFAULT 'active', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `confirmed` tinyint(1) NOT NULL DEFAULT '0', + `activatedCount` smallint(6) NOT NULL, + `activatedDate` datetime NOT NULL, + `feedbackBy` varchar(100) NOT NULL, + `notifyEmail` varchar(100) NOT NULL, + `mailto` text, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedBuild` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `deadline` date NOT NULL, + `resolvedBy` varchar(30) NOT NULL DEFAULT '', + `resolution` varchar(30) NOT NULL DEFAULT '', + `resolvedBuild` varchar(30) NOT NULL DEFAULT '', + `resolvedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `duplicateBug` mediumint(8) unsigned NOT NULL, + `linkBug` varchar(255) NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `caseVersion` smallint(6) NOT NULL DEFAULT '1', + `feedback` mediumint(8) unsigned NOT NULL DEFAULT '0', + `result` mediumint(8) unsigned NOT NULL, + `repo` mediumint(8) unsigned NOT NULL, + `mr` mediumint(8) unsigned NOT NULL, + `entry` text NOT NULL, + `lines` varchar(10) NOT NULL, + `v1` varchar(40) NOT NULL, + `v2` varchar(40) NOT NULL, + `repoType` varchar(30) NOT NULL DEFAULT '', + `issueKey` varchar(50) NOT NULL DEFAULT '', + `testtask` mediumint(8) unsigned NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `execution` (`execution`), + KEY `status` (`status`), + KEY `plan` (`plan`), + KEY `story` (`story`), + KEY `case` (`case`), + KEY `toStory` (`toStory`), + KEY `result` (`result`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_build` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `execution` mediumint(8) unsigned NOT NULL DEFAULT '0', + `builds` varchar(255) NOT NULL, + `name` char(150) NOT NULL, + `scmPath` char(255) NOT NULL, + `filePath` char(255) NOT NULL, + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `builder` char(30) NOT NULL DEFAULT '', + `desc` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `execution` (`execution`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_burn` ( + `execution` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `estimate` float NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + `storyPoint` float NOT NULL, + PRIMARY KEY (`execution`,`date`,`task`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_case` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `execution` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` mediumint(8) unsigned NOT NULL DEFAULT '0', + `story` mediumint(30) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `title` varchar(255) NOT NULL, + `precondition` text NOT NULL, + `keywords` varchar(255) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '3', + `type` char(30) NOT NULL DEFAULT '1', + `auto` varchar(10) NOT NULL DEFAULT 'no', + `frame` varchar(10) NOT NULL, + `stage` varchar(255) NOT NULL, + `howRun` varchar(30) NOT NULL, + `scriptedBy` varchar(30) NOT NULL, + `scriptedDate` date NOT NULL, + `scriptStatus` varchar(30) NOT NULL, + `scriptLocation` varchar(255) NOT NULL, + `status` char(30) NOT NULL DEFAULT '1', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `frequency` enum('1','2','3') NOT NULL DEFAULT '1', + `order` tinyint(30) unsigned NOT NULL DEFAULT '0', + `openedBy` char(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` date NOT NULL, + `lastEditedBy` char(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `linkCase` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL, + `fromCaseID` mediumint(8) unsigned NOT NULL, + `fromCaseVersion` mediumint(8) unsigned NOT NULL DEFAULT '1', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `story` (`story`), + KEY `fromBug` (`fromBug`), + KEY `module` (`module`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_casestep` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(3) unsigned NOT NULL DEFAULT '0', + `type` varchar(10) NOT NULL DEFAULT 'step', + `desc` text NOT NULL, + `expect` text NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_cfd` ( + `id` int(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, + `execution` int(8) NOT NULL, + `type` char(30) NOT NULL, + `name` char(30) NOT NULL, + `count` smallint NOT NULL, + `date` date NOT NULL, + UNIQUE KEY `execution_type_name_date` (`execution`,`type`,`name`,`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_cmcl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` char(30) NOT NULL, + `title` int(11) NOT NULL, + `contents` text NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `order` int(11) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_company` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(120) DEFAULT NULL, + `phone` char(20) DEFAULT NULL, + `fax` char(20) DEFAULT NULL, + `address` char(120) DEFAULT NULL, + `zipcode` char(10) DEFAULT NULL, + `website` char(120) DEFAULT NULL, + `backyard` char(120) DEFAULT NULL, + `guest` enum('1','0') NOT NULL DEFAULT '0', + `admins` char(255) DEFAULT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_compile` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `job` mediumint(8) unsigned NOT NULL, + `queue` mediumint(8) NOT NULL, + `status` varchar(255) NOT NULL, + `logs` text, + `atTime` varchar(10) NOT NULL, + `testtask` mediumint(8) unsigned NOT NULL, + `tag` varchar(255) NOT NULL, + `times` tinyint(3) unsigned NOT NULL DEFAULT '0', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `updateDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_config` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `owner` char(30) NOT NULL DEFAULT '', + `module` varchar(30) NOT NULL, + `section` char(30) NOT NULL DEFAULT '', + `key` char(30) NOT NULL DEFAULT '', + `value` longtext NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`vision`,`owner`,`module`,`section`,`key`) +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_cron` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `m` varchar(20) NOT NULL, + `h` varchar(20) NOT NULL, + `dom` varchar(20) NOT NULL, + `mon` varchar(20) NOT NULL, + `dow` varchar(20) NOT NULL, + `command` text NOT NULL, + `remark` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `buildin` tinyint(1) NOT NULL DEFAULT '0', + `status` varchar(20) NOT NULL, + `lastTime` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `lastTime` (`lastTime`) +) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_deploy` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `begin` datetime NOT NULL, + `end` datetime NOT NULL, + `name` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `status` varchar(20) NOT NULL, + `owner` char(30) NOT NULL, + `members` text NOT NULL, + `notify` text NOT NULL, + `cases` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `result` varchar(20) NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_chart` ( + `id` mediumint NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `dataset` varchar(30) NOT NULL, + `desc` mediumtext NOT NULL, + `settings` mediumtext NOT NULL, + `filters` mediumtext NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_dashboard` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `module` mediumint NOT NULL, + `desc` mediumtext NOT NULL, + `layout` mediumtext NOT NULL, + `filters` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_dataset` ( + `id` mediumint unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(155) NOT NULL, + `sql` text NOT NULL, + `fields` mediumtext NOT NULL, + `objects` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` tinyint NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_deployproduct` ( + `deploy` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `release` mediumint(8) unsigned NOT NULL, + `package` varchar(255) NOT NULL, + UNIQUE KEY `deploy_product_release` (`deploy`,`product`,`release`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_deployscope` ( + `deploy` mediumint(8) unsigned NOT NULL, + `service` mediumint(8) unsigned NOT NULL, + `hosts` text NOT NULL, + `remove` text NOT NULL, + `add` text NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_deploystep` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `deploy` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `begin` datetime NOT NULL, + `end` datetime NOT NULL, + `stage` varchar(30) NOT NULL, + `content` text NOT NULL, + `status` varchar(30) NOT NULL, + `assignedTo` char(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `finishedBy` char(30) NOT NULL, + `finishedDate` datetime NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_dept` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(60) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(4) unsigned NOT NULL DEFAULT '0', + `position` char(30) NOT NULL DEFAULT '', + `function` char(255) NOT NULL DEFAULT '', + `manager` char(30) NOT NULL DEFAULT '', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `path` (`path`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_design` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` varchar(255) NOT NULL, + `product` varchar(255) NOT NULL, + `commit` text NOT NULL, + `commitedBy` varchar(30) NOT NULL, + `execution` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `story` char(30) NOT NULL, + `desc` mediumtext NOT NULL, + `version` smallint(6) NOT NULL, + `type` char(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_designspec` ( + `design` mediumint(8) NOT NULL, + `version` smallint(6) NOT NULL, + `name` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `files` varchar(255) NOT NULL, + UNIQUE KEY `design` (`design`,`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doc` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `lib` varchar(30) NOT NULL, + `template` varchar(30) NOT NULL, + `templateType` varchar(30) NOT NULL, + `chapterType` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `parent` smallint(5) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `views` smallint(5) unsigned NOT NULL, + `assetLib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `assetLibType` varchar(30) NOT NULL DEFAULT '', + `from` mediumint(8) unsigned NOT NULL DEFAULT '0', + `fromVersion` smallint(6) NOT NULL DEFAULT '1', + `draft` longtext NOT NULL, + `collector` text NOT NULL, + `addedBy` varchar(30) NOT NULL, + `addedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `approvedDate` date NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `mailto` text, + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `version` smallint(5) unsigned NOT NULL DEFAULT '1', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `execution` (`execution`), + KEY `lib` (`lib`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doccontent` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `doc` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `digest` varchar(255) NOT NULL, + `content` longtext NOT NULL, + `files` text NOT NULL, + `type` varchar(10) NOT NULL, + `version` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `doc_version` (`doc`,`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_doclib` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `product` mediumint(8) unsigned NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `name` varchar(60) NOT NULL, + `baseUrl` varchar(255) NOT NULL DEFAULT '', + `acl` varchar(10) NOT NULL DEFAULT 'open', + `groups` varchar(255) NOT NULL, + `users` text NOT NULL, + `main` enum('0','1') NOT NULL DEFAULT '0', + `collector` text NOT NULL, + `desc` mediumtext NOT NULL, + `order` tinyint(5) unsigned NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `execution` (`execution`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_domain` ( + `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `domain` varchar(255) NOT NULL, + `adminURI` varchar(255) NOT NULL, + `resolverURI` varchar(255) NOT NULL, + `register` varchar(255) NOT NULL, + `expiredDate` datetime NOT NULL, + `renew` varchar(255) NOT NULL, + `account` varchar(255) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `domain` (`domain`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_durationestimation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `stage` mediumint(9) NOT NULL, + `workload` varchar(255) NOT NULL, + `worktimeRate` varchar(255) NOT NULL, + `people` varchar(255) NOT NULL, + `startDate` date NOT NULL, + `endDate` date NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_effort` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `product` text NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `account` varchar(30) NOT NULL, + `work` text, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `date` date NOT NULL, + `left` float NOT NULL, + `consumed` float NOT NULL, + `begin` smallint(4) unsigned zerofill NOT NULL, + `end` smallint(4) unsigned zerofill NOT NULL, + `order` tinyint unsigned NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `execution` (`execution`), + KEY `objectID` (`objectID`), + KEY `date` (`date`), + KEY `account` (`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_entry` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `account` varchar(30) NOT NULL DEFAULT '', + `code` varchar(20) NOT NULL, + `key` varchar(32) NOT NULL, + `freePasswd` enum('0','1') NOT NULL DEFAULT '0', + `ip` varchar(100) NOT NULL, + `desc` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `calledTime` int(10) unsigned NOT NULL DEFAULT '0', + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_expect` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `userID` mediumint(8) NOT NULL, + `project` mediumint(8) NOT NULL DEFAULT '0', + `expect` text NOT NULL, + `progress` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_extension` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(150) NOT NULL, + `code` varchar(30) NOT NULL, + `version` varchar(50) NOT NULL, + `author` varchar(100) NOT NULL, + `desc` mediumtext NOT NULL, + `license` text NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'extension', + `site` varchar(150) NOT NULL, + `zentaoCompatible` varchar(100) NOT NULL, + `installedTime` datetime NOT NULL, + `depends` varchar(100) NOT NULL, + `dirs` mediumtext NOT NULL, + `files` mediumtext NOT NULL, + `status` varchar(20) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`), + KEY `name` (`name`), + KEY `installedTime` (`installedTime`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_faq` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `module` mediumint(9) NOT NULL, + `product` mediumint(9) NOT NULL, + `question` varchar(255) NOT NULL, + `answer` text NOT NULL, + `addedtime` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_feedback` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `module` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `type` char(30) NOT NULL, + `solution` char(30) NOT NULL, + `desc` text NOT NULL, + `pri` tinyint unsigned NOT NULL DEFAULT 2, + `status` varchar(30) NOT NULL, + `subStatus` varchar(30) NOT NULL DEFAULT '', + `public` enum('0','1') NOT NULL DEFAULT '0', + `notify` enum('0','1') NOT NULL DEFAULT '0', + `notifyEmail` varchar(100) NOT NULL, + `source` varchar(255) NOT NULL, + `likes` text NOT NULL, + `result` mediumint(8) unsigned NOT NULL, + `faq` mediumint(8) unsigned NOT NULL, + `openedBy` char(30) NOT NULL, + `openedDate` datetime NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` datetime NOT NULL, + `processedBy` char(30) NOT NULL, + `processedDate` datetime NOT NULL, + `closedBy` char(30) NOT NULL, + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedTo` varchar(255) NOT NULL, + `assignedDate` datetime NOT NULL, + `feedbackBy` varchar(100) NOT NULL, + `repeatFeedback` mediumint(8) NOT NULL DEFAULT 0, + `mailto` varchar(255) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_feedbackview` ( + `account` char(30) NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + UNIQUE KEY `account_product` (`account`,`product`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_file` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `pathname` char(100) NOT NULL, + `title` varchar(255) NOT NULL, + `extension` char(30) NOT NULL, + `size` int(10) unsigned NOT NULL DEFAULT '0', + `objectType` char(30) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `addedBy` char(30) NOT NULL DEFAULT '', + `addedDate` datetime NOT NULL, + `downloads` mediumint(8) unsigned NOT NULL DEFAULT '0', + `extra` varchar(255) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `objectType` (`objectType`), + KEY `objectID` (`objectID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_gapanalysis` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `account` varchar(30) NOT NULL, + `role` varchar(20) NOT NULL, + `analysis` mediumtext NOT NULL, + `needTrain` enum('no','yes') NOT NULL DEFAULT 'no', + `createdBy` char(30) DEFAULT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `project_account` (`project`,`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_group` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `name` char(30) NOT NULL, + `role` char(30) NOT NULL DEFAULT '', + `desc` char(255) NOT NULL DEFAULT '', + `acl` text, + `developer` enum('0','1') NOT NULL DEFAULT '1', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_grouppriv` ( + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` char(30) NOT NULL DEFAULT '', + `method` char(30) NOT NULL DEFAULT '', + UNIQUE KEY `group` (`group`,`module`,`method`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_history` ( + `id` int(9) unsigned NOT NULL AUTO_INCREMENT, + `action` mediumint(8) unsigned NOT NULL DEFAULT '0', + `field` varchar(30) NOT NULL DEFAULT '', + `old` text NOT NULL, + `new` text NOT NULL, + `diff` mediumtext NOT NULL, + PRIMARY KEY (`id`), + KEY `action` (`action`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_holiday` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(30) NOT NULL DEFAULT '', + `type` enum('holiday','working') NOT NULL DEFAULT 'holiday', + `desc` mediumtext NOT NULL, + `year` char(4) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + PRIMARY KEY (`id`), + KEY `year` (`year`), + KEY `name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_host` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `assetID` mediumint(8) unsigned NOT NULL, + `admin` smallint(5) unsigned NOT NULL DEFAULT '0', + `serverRoom` mediumint(8) unsigned NOT NULL, + `cabinet` varchar(128) NOT NULL, + `serverModel` varchar(256) NOT NULL, + `hardwareType` varchar(64) NOT NULL, + `hostType` enum('physical','virtual') NOT NULL, + `cpuBrand` varchar(128) NOT NULL, + `cpuModel` varchar(128) NOT NULL, + `cpuNumber` varchar(16) NOT NULL, + `cpuCores` varchar(30) NOT NULL, + `cpuRate` varchar(30) NOT NULL, + `memory` varchar(30) NOT NULL, + `diskType` varchar(30) NOT NULL, + `diskSize` varchar(30) NOT NULL, + `unit` enum('GB','TB') NOT NULL DEFAULT 'GB', + `privateIP` varchar(128) NOT NULL, + `publicIP` varchar(128) NOT NULL, + `nic` varchar(128) NOT NULL, + `mac` varchar(128) NOT NULL, + `osName` varchar(64) NOT NULL, + `osVersion` varchar(64) NOT NULL, + `webserver` varchar(128) NOT NULL, + `database` varchar(128) NOT NULL, + `language` varchar(16) NOT NULL, + `status` varchar(50) NOT NULL, + `agentPort` varchar(10) NOT NULL, + `instanceNum` tinyint(4) NOT NULL DEFAULT '0', + `pri` smallint(5) unsigned NOT NULL DEFAULT '0', + `heartbeatTime` datetime NOT NULL, + `tags` varchar(50) NOT NULL DEFAULT '', + `provider` varchar(255) NOT NULL DEFAULT '', + `bridgeID` varchar(255) NOT NULL DEFAULT '', + `cloudKey` varchar(255) NOT NULL DEFAULT '', + `cloudSecret` varchar(255) NOT NULL DEFAULT '', + `cloudRegion` varchar(255) NOT NULL DEFAULT '', + `cloudNamespace` varchar(255) NOT NULL DEFAULT '', + `cloudUser` varchar(255) NOT NULL DEFAULT '', + `cloudAccount` varchar(255) NOT NULL DEFAULT '', + `cloudPassword` varchar(255) NOT NULL DEFAULT '', + `couldVPC` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_chat` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `gid` char(40) NOT NULL DEFAULT '', + `name` varchar(60) NOT NULL DEFAULT '', + `type` varchar(20) NOT NULL DEFAULT 'group', + `admins` varchar(255) NOT NULL DEFAULT '', + `committers` varchar(255) NOT NULL DEFAULT '', + `subject` mediumint(8) unsigned NOT NULL DEFAULT '0', + `public` enum('0','1') NOT NULL DEFAULT '0', + `createdBy` varchar(30) NOT NULL DEFAULT '', + `createdDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `ownedBy` varchar(30) NOT NULL DEFAULT '', + `editedBy` varchar(30) NOT NULL DEFAULT '', + `editedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `mergedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `lastActiveTime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `lastMessage` int(11) unsigned NOT NULL DEFAULT '0', + `lastMessageIndex` int(11) unsigned NOT NULL DEFAULT 0, + `dismissDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `pinnedMessages` text NOT NULL, + `mergedChats` text NOT NULL DEFAULT '', + `adminInvite` enum('0','1') NOT NULL DEFAULT '0', + `avatar` text NOT NULL DEFAULT '', + `archiveDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + KEY `gid` (`gid`), + KEY `name` (`name`), + KEY `type` (`type`), + KEY `public` (`public`), + KEY `createdBy` (`createdBy`), + KEY `editedBy` (`editedBy`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_chat_message_index` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `gid` char(40) NOT NULL, + `tableName` char(64) NOT NULL, + `start` int(11) unsigned NOT NULL, + `end` int(11) unsigned NOT NULL, + `startIndex` int(11) unsigned NOT NULL, + `endIndex` int(11) unsigned NOT NULL, + `startDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `endDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `count` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `chattable` (`gid`,`tableName`), + KEY `start` (`start`), + KEY `end` (`end`), + KEY `startDate` (`startDate`), + KEY `endDate` (`endDate`), + KEY `chatstartindex` (`gid`,`startIndex`), + KEY `chatendindex` (`gid`,`endIndex`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_chatuser` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `cgid` char(40) NOT NULL DEFAULT '', + `user` mediumint(8) NOT NULL DEFAULT '0', + `order` smallint(5) NOT NULL DEFAULT '0', + `star` enum('0','1') NOT NULL DEFAULT '0', + `hide` enum('0','1') NOT NULL DEFAULT '0', + `mute` enum('0','1') NOT NULL DEFAULT '0', + `freeze` enum('0','1') NOT NULL DEFAULT '0', + `join` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `quit` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `category` varchar(40) NOT NULL DEFAULT '', + `lastReadMessage` int(11) unsigned NOT NULL DEFAULT '0', + `lastReadMessageIndex` int(11) unsigned NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `chatuser` (`cgid`,`user`), + KEY `cgid` (`cgid`), + KEY `user` (`user`), + KEY `order` (`order`), + KEY `star` (`star`), + KEY `hide` (`hide`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_client` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `version` char(30) NOT NULL DEFAULT '', + `desc` varchar(100) NOT NULL DEFAULT '', + `changeLog` text NOT NULL, + `strategy` varchar(10) NOT NULL DEFAULT '', + `downloads` text NOT NULL, + `createdDate` datetime NOT NULL, + `createdBy` varchar(30) NOT NULL DEFAULT '', + `editedDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL DEFAULT '', + `status` enum('released','wait') NOT NULL DEFAULT 'wait', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_conference` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `rid` char(40) NOT NULL DEFAULT '', + `cgid` char(40) NOT NULL DEFAULT '', + `status` enum('closed','open') NOT NULL DEFAULT 'closed', + `participants` text NOT NULL, + `invitee` text NOT NULL, + `openedBy` mediumint(8) NOT NULL DEFAULT '0', + `openedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_conferenceaction` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `rid` char(40) NOT NULL DEFAULT '', + `type` enum('create','invite','join','leave','close','publish') NOT NULL DEFAULT 'create', + `data` text NOT NULL, + `user` mediumint(8) NOT NULL DEFAULT '0', + `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `device` char(40) NOT NULL DEFAULT 'default', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_message` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `gid` char(40) NOT NULL DEFAULT '', + `cgid` char(40) NOT NULL DEFAULT '', + `user` varchar(30) NOT NULL DEFAULT '', + `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `index` int(11) unsigned NOT NULL DEFAULT 0, + `type` enum('normal','broadcast','notify','bulletin') NOT NULL DEFAULT 'normal', + `content` text NOT NULL, + `contentType` enum('text','plain','emotion','image','file','object','code') NOT NULL DEFAULT 'text', + `data` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `mgid` (`gid`), + KEY `mcgid` (`cgid`), + KEY `muser` (`user`), + KEY `mtype` (`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_message_backup` ( + `id` int(11) unsigned NOT NULL, + `gid` char(40) NOT NULL DEFAULT '', + `cgid` char(40) NOT NULL DEFAULT '', + `user` varchar(30) NOT NULL DEFAULT '', + `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `index` int(11) unsigned NOT NULL DEFAULT 0, + `type` enum('normal','broadcast','notify') NOT NULL DEFAULT 'normal', + `content` text NOT NULL, + `contentType` enum('text','plain','emotion','image','file','object','code') NOT NULL DEFAULT 'text', + `data` text NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0' +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_message_index` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `tableName` char(64) NOT NULL, + `start` int(11) unsigned NOT NULL, + `end` int(11) unsigned NOT NULL, + `startDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `endDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `chats` text NOT NULL, + PRIMARY KEY (`id`), + KEY `tableName` (`tableName`), + KEY `start` (`start`), + KEY `end` (`end`), + KEY `startDate` (`startDate`), + KEY `endDate` (`endDate`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_messagestatus` ( + `user` mediumint(8) NOT NULL DEFAULT '0', + `message` int(11) unsigned NOT NULL, + `status` enum('waiting','sent','readed','deleted') NOT NULL DEFAULT 'waiting', + UNIQUE KEY `user` (`user`,`message`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_queue` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` char(30) NOT NULL, + `content` text NOT NULL, + `addDate` datetime NOT NULL, + `processDate` datetime NOT NULL, + `result` text NOT NULL, + `status` char(30) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_im_userdevice` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `user` mediumint(8) NOT NULL DEFAULT '0', + `device` char(40) NOT NULL DEFAULT 'default', + `deviceID` char(40) NOT NULL DEFAULT '', + `token` char(64) NOT NULL DEFAULT '', + `validUntil` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `lastLogin` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `lastLogout` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + PRIMARY KEY (`id`), + UNIQUE KEY `userdevice` (`user`,`device`), + KEY `user` (`user`), + KEY `lastLogin` (`lastLogin`), + KEY `lastLogout` (`lastLogout`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_intervention` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `activity` mediumint(8) NOT NULL, + `status` char(30) NOT NULL, + `partake` text NOT NULL, + `begin` date NOT NULL, + `realBegin` date NOT NULL, + `situation` varchar(255) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `project` (`project`,`activity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_issue` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `resolvedBy` varchar(30) NOT NULL, + `project` varchar(255) NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `pri` char(30) NOT NULL, + `severity` char(30) NOT NULL, + `type` char(30) NOT NULL, + `activity` varchar(255) NOT NULL, + `deadline` date NOT NULL, + `resolution` char(30) NOT NULL, + `resolutionComment` text NOT NULL, + `objectID` varchar(255) NOT NULL, + `resolvedDate` date NOT NULL, + `status` varchar(30) NOT NULL, + `owner` varchar(255) NOT NULL, + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `from` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `activateBy` varchar(30) NOT NULL, + `activateDate` date NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` date NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `approvedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_job` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(50) NOT NULL, + `repo` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `frame` varchar(20) NOT NULL, + `engine` varchar(20) NOT NULL, + `server` mediumint(8) unsigned NOT NULL, + `pipeline` varchar(500) NOT NULL, + `triggerType` varchar(255) NOT NULL, + `sonarqubeServer` mediumint(8) unsigned NOT NULL, + `projectKey` varchar(255) NOT NULL, + `svnDir` varchar(255) NOT NULL, + `atDay` varchar(255) DEFAULT NULL, + `atTime` varchar(10) DEFAULT NULL, + `customParam` text NOT NULL, + `comment` varchar(255) DEFAULT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `lastExec` datetime DEFAULT NULL, + `lastStatus` varchar(255) DEFAULT NULL, + `lastTag` varchar(255) DEFAULT NULL, + `lastSyncDate` datetime DEFAULT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanban` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `space` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `owner` varchar(30) NOT NULL, + `team` text NOT NULL, + `desc` mediumtext NOT NULL, + `acl` char(30) NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `archived` enum('0','1') NOT NULL DEFAULT '1', + `performable` enum('0','1') NOT NULL DEFAULT '0', + `status` enum('active','closed') NOT NULL DEFAULT 'active', + `order` mediumint(8) NOT NULL DEFAULT '0', + `displayCards` smallint(6) NOT NULL DEFAULT '0', + `showWIP` enum('0','1') NOT NULL DEFAULT '1', + `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', + `colWidth` smallint(4) NOT NULL DEFAULT '264', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', + `maxColWidth` smallint(4) NOT NULL DEFAULT '384', + `object` varchar(255) NOT NULL, + `alignment` varchar(10) NOT NULL DEFAULT 'center', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `closedBy` char(30) NOT NULL, + `closedDate` datetime NOT NULL, + `activatedBy` char(30) NOT NULL, + `activatedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbancard` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `kanban` mediumint(8) unsigned NOT NULL, + `region` mediumint(8) unsigned NOT NULL, + `group` mediumint(8) unsigned NOT NULL, + `fromID` mediumint(8) unsigned NOT NULL, + `fromType` varchar(30) NOT NULL, + `name` varchar(255) NOT NULL, + `status` varchar(30) NOT NULL DEFAULT 'doing', + `pri` mediumint(8) unsigned NOT NULL, + `assignedTo` text NOT NULL, + `desc` mediumtext NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `estimate` float unsigned NOT NULL, + `progress` float unsigned NOT NULL DEFAULT '0', + `color` char(7) NOT NULL, + `acl` char(30) NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `order` mediumint(8) NOT NULL DEFAULT '0', + `archived` enum('0','1') NOT NULL DEFAULT '0', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `archivedBy` char(30) NOT NULL, + `archivedDate` datetime NOT NULL, + `assignedBy` char(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbancell` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `kanban` mediumint(8) NOT NULL, + `lane` mediumint(8) NOT NULL, + `column` mediumint(8) NOT NULL, + `type` char(30) NOT NULL, + `cards` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `card_group` (`kanban`,`type`,`lane`,`column`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbancolumn` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `parent` mediumint(8) NOT NULL DEFAULT '0', + `type` char(30) NOT NULL, + `region` mediumint(8) unsigned NOT NULL, + `group` mediumint(8) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL DEFAULT '', + `color` char(30) NOT NULL, + `limit` smallint(6) NOT NULL DEFAULT '-1', + `order` mediumint(8) NOT NULL DEFAULT '0', + `archived` enum('0','1') NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbangroup` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `kanban` mediumint(8) unsigned NOT NULL, + `region` mediumint(8) unsigned NOT NULL, + `order` smallint(6) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbanlane` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `execution` mediumint(8) NOT NULL DEFAULT '0', + `type` char(30) NOT NULL, + `region` mediumint(8) unsigned NOT NULL, + `group` mediumint(8) unsigned NOT NULL, + `groupby` char(30) NOT NULL, + `extra` char(30) NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `color` char(30) NOT NULL, + `order` smallint(6) NOT NULL DEFAULT '0', + `lastEditedTime` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbanregion` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `space` mediumint(8) unsigned NOT NULL, + `kanban` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `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, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_kanbanspace` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `type` varchar(50) NOT NULL, + `owner` varchar(30) NOT NULL, + `team` text NOT NULL, + `desc` mediumtext NOT NULL, + `acl` char(30) NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `status` enum('active','closed') NOT NULL DEFAULT 'active', + `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, + `closedBy` char(30) NOT NULL, + `closedDate` datetime NOT NULL, + `activatedBy` char(30) NOT NULL, + `activatedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_lang` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `lang` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `section` varchar(30) NOT NULL, + `key` varchar(60) NOT NULL, + `value` text NOT NULL, + `system` enum('0','1') NOT NULL DEFAULT '1', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + PRIMARY KEY (`id`), + UNIQUE KEY `lang` (`lang`,`module`,`section`,`key`,`vision`) +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_leave` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `year` char(4) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `start` time NOT NULL, + `finish` time NOT NULL, + `hours` float(4,1) unsigned NOT NULL DEFAULT '0.0', + `backDate` datetime NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `status` varchar(30) NOT NULL DEFAULT '', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `reviewedBy` char(30) NOT NULL, + `reviewedDate` datetime NOT NULL, + `level` tinyint(3) NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `reviewers` text NOT NULL, + `backReviewers` text NOT NULL, + PRIMARY KEY (`id`), + KEY `year` (`year`), + KEY `type` (`type`), + KEY `status` (`status`), + KEY `createdBy` (`createdBy`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_lieu` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `year` char(4) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `start` time NOT NULL, + `finish` time NOT NULL, + `hours` float(4,1) unsigned NOT NULL DEFAULT '0.0', + `overtime` char(255) NOT NULL, + `trip` char(255) NOT NULL, + `desc` text NOT NULL, + `status` varchar(30) NOT NULL DEFAULT '', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `reviewedBy` char(30) NOT NULL, + `reviewedDate` datetime NOT NULL, + `level` tinyint(3) NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `reviewers` text NOT NULL, + PRIMARY KEY (`id`), + KEY `year` (`year`), + KEY `status` (`status`), + KEY `createdBy` (`createdBy`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_log` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `action` mediumint(8) unsigned NOT NULL, + `date` datetime NOT NULL, + `url` varchar(255) NOT NULL, + `contentType` varchar(30) NOT NULL, + `data` text NOT NULL, + `result` text NOT NULL, + PRIMARY KEY (`id`), + KEY `objectType` (`objectType`), + KEY `obejctID` (`objectID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_measqueue` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL, + `mid` mediumint(8) unsigned NOT NULL, + `status` varchar(255) NOT NULL, + `logs` text, + `execTime` varchar(10) NOT NULL, + `params` text, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `updateDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_measrecords` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `type` varchar(30) NOT NULL, + `mid` mediumint(8) NOT NULL, + `measCode` char(50) NOT NULL DEFAULT '', + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `params` text NOT NULL, + `year` char(4) NOT NULL, + `month` char(6) NOT NULL, + `week` char(8) NOT NULL, + `day` char(8) NOT NULL, + `value` varchar(255) NOT NULL, + `date` date NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `project` (`project`), + KEY `time` (`year`,`month`,`day`,`week`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_meastemplate` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `model` char(30) NOT NULL, + `name` varchar(255) NOT NULL, + `content` mediumtext NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_meeting` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) NOT NULL, + `execution` mediumint(8) NOT NULL, + `name` varchar(255) NOT NULL, + `type` varchar(255) NOT NULL, + `begin` time NOT NULL, + `end` time NOT NULL, + `dept` mediumint(8) NOT NULL, + `mode` varchar(255) NOT NULL, + `host` varchar(30) NOT NULL, + `participant` text NOT NULL, + `date` date NOT NULL, + `room` int(11) NOT NULL, + `minutes` text NOT NULL, + `minutedBy` varchar(30) NOT NULL, + `minutedDate` datetime NOT NULL, + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(8) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_meetingroom` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `position` varchar(30) NOT NULL, + `seats` int(11) NOT NULL, + `equipment` varchar(255) NOT NULL, + `openTime` varchar(255) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_module` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` char(60) NOT NULL DEFAULT '', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `type` char(30) NOT NULL, + `from` mediumint(8) unsigned NOT NULL DEFAULT '0', + `owner` varchar(30) NOT NULL, + `collector` text NOT NULL, + `short` varchar(30) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `root` (`root`), + KEY `type` (`type`), + KEY `path` (`path`) +) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_mr` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `hostID` mediumint(8) unsigned NOT NULL, + `sourceProject` varchar(50) NOT NULL, + `sourceBranch` varchar(100) NOT NULL, + `targetProject` varchar(50) NOT NULL, + `targetBranch` varchar(100) NOT NULL, + `mriid` int(10) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `description` text NOT NULL, + `assignee` varchar(255) NOT NULL, + `reviewer` varchar(255) NOT NULL, + `approver` varchar(255) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `status` char(30) NOT NULL, + `mergeStatus` char(30) NOT NULL, + `approvalStatus` char(30) NOT NULL, + `needApproved` enum('0','1') NOT NULL DEFAULT '0', + `needCI` enum('0','1') NOT NULL DEFAULT '0', + `repoID` mediumint(8) unsigned NOT NULL, + `jobID` mediumint(8) unsigned NOT NULL, + `compileID` mediumint(8) unsigned NOT NULL, + `compileStatus` char(30) NOT NULL, + `removeSourceBranch` enum('0','1') NOT NULL DEFAULT '0', + `synced` enum('0','1') NOT NULL DEFAULT '1', + `syncError` varchar(255) NOT NULL, + `hasNoConflict` enum('0','1') NOT NULL DEFAULT '0', + `diffs` longtext, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_mrapproval` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `mrID` mediumint(8) unsigned NOT NULL, + `account` varchar(255) NOT NULL, + `date` datetime NOT NULL, + `action` char(30) NOT NULL, + `comment` text NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_nc` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `auditplan` mediumint(8) NOT NULL, + `listID` mediumint(8) NOT NULL, + `title` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `type` char(30) NOT NULL, + `status` varchar(30) NOT NULL DEFAULT 'active', + `severity` char(30) NOT NULL, + `deadline` date NOT NULL, + `resolvedBy` varchar(30) NOT NULL, + `resolution` char(30) NOT NULL, + `resolvedDate` date NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` date NOT NULL, + `parent` mediumint(8) unsigned NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` date NOT NULL, + `activateDate` date NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_notify` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `objectType` varchar(50) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `action` mediumint(9) NOT NULL, + `toList` varchar(255) NOT NULL, + `ccList` text NOT NULL, + `subject` varchar(255) NOT NULL, + `data` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `sendTime` datetime NOT NULL, + `status` varchar(10) NOT NULL DEFAULT 'wait', + `failReason` text NOT NULL, + PRIMARY KEY (`id`), + KEY `objectType_toList_status` (`objectType`,`toList`,`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_oauth` ( + `account` varchar(30) NOT NULL, + `openID` varchar(255) NOT NULL, + `providerType` varchar(30) NOT NULL, + `providerID` mediumint(8) unsigned NOT NULL, + KEY `account` (`account`), + KEY `providerType` (`providerType`), + KEY `providerID` (`providerID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_object` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) NOT NULL, + `from` mediumint(8) NOT NULL, + `title` varchar(255) NOT NULL, + `category` char(30) NOT NULL, + `version` varchar(255) NOT NULL, + `type` enum('reviewed','taged') NOT NULL, + `range` text NOT NULL, + `data` text NOT NULL, + `storyEst` char(30) NOT NULL, + `taskEst` char(30) NOT NULL, + `requestEst` char(30) NOT NULL, + `testEst` char(30) NOT NULL, + `devEst` char(30) NOT NULL, + `designEst` char(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_opportunity` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `source` char(30) NOT NULL, + `type` char(30) NOT NULL, + `strategy` char(30) NOT NULL, + `status` varchar(30) NOT NULL DEFAULT 'active', + `impact` mediumint(8) NOT NULL, + `chance` mediumint(8) NOT NULL, + `ratio` mediumint(8) NOT NULL, + `pri` char(30) NOT NULL, + `identifiedDate` date NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` date NOT NULL, + `approvedDate` date NOT NULL, + `prevention` mediumtext NOT NULL, + `plannedClosedDate` date NOT NULL, + `actualClosedDate` date NOT NULL, + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `from` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `activatedBy` varchar(30) NOT NULL, + `activatedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` datetime NOT NULL, + `canceledBy` varchar(30) NOT NULL, + `canceledDate` datetime NOT NULL, + `cancelReason` char(30) NOT NULL, + `hangupedBy` varchar(30) NOT NULL, + `hangupedDate` datetime NOT NULL, + `resolution` mediumtext NOT NULL, + `resolvedBy` varchar(30) NOT NULL, + `resolvedDate` datetime NOT NULL, + `lastCheckedBy` varchar(30) NOT NULL, + `lastCheckedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_overtime` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `year` char(4) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `start` time NOT NULL, + `finish` time NOT NULL, + `hours` float(4,1) unsigned NOT NULL DEFAULT '0.0', + `leave` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `status` varchar(30) NOT NULL DEFAULT '', + `rejectReason` varchar(100) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `reviewedBy` char(30) NOT NULL, + `reviewedDate` datetime NOT NULL, + `level` tinyint(3) NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `reviewers` text NOT NULL, + PRIMARY KEY (`id`), + KEY `year` (`year`), + KEY `type` (`type`), + KEY `status` (`status`), + KEY `createdBy` (`createdBy`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_pipeline` ( + `id` smallint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` char(30) NOT NULL, + `name` varchar(50) NOT NULL, + `url` varchar(255) DEFAULT NULL, + `account` varchar(30) DEFAULT NULL, + `password` varchar(255) NOT NULL, + `token` varchar(255) DEFAULT NULL, + `private` char(32) DEFAULT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_planstory` ( + `plan` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL, + `order` mediumint(9) NOT NULL, + UNIQUE KEY `plan_story` (`plan`,`story`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_process` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `model` char(30) NOT NULL DEFAULT 'waterfall', + `name` varchar(255) NOT NULL, + `type` char(30) NOT NULL, + `abbr` char(30) NOT NULL, + `desc` mediumtext NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `order` mediumint(9) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_product` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `program` mediumint(8) unsigned NOT NULL, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `shadow` tinyint(1) unsigned NOT NULL, + `bind` enum('0','1') NOT NULL DEFAULT '0', + `line` mediumint(8) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT 'normal', + `status` varchar(30) NOT NULL DEFAULT '', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `desc` mediumtext NOT NULL, + `PO` varchar(30) NOT NULL, + `QD` varchar(30) NOT NULL, + `RD` varchar(30) NOT NULL, + `feedback` varchar(30) NOT NULL, + `ticket` varchar(30) NOT NULL, + `acl` enum('open','private','custom') NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `reviewer` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `createdVersion` varchar(20) NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `acl` (`acl`), + KEY `order` (`order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_productplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `parent` mediumint(9) NOT NULL DEFAULT '0', + `title` varchar(90) NOT NULL, + `status` enum('wait','doing','done','closed') NOT NULL DEFAULT 'wait', + `desc` mediumtext NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `order` text NOT NULL, + `closedReason` varchar(20) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `end` (`end`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_programactivity` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `process` mediumint(8) NOT NULL, + `activity` mediumint(8) NOT NULL, + `name` varchar(255) NOT NULL, + `content` text NOT NULL, + `reason` varchar(255) NOT NULL, + `result` char(30) NOT NULL, + `linkedBy` char(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_programoutput` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `process` mediumint(8) NOT NULL, + `activity` mediumint(8) NOT NULL, + `output` mediumint(8) NOT NULL, + `content` text NOT NULL, + `name` varchar(255) NOT NULL, + `reason` varchar(255) NOT NULL, + `result` char(30) NOT NULL, + `linkedBy` char(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_programprocess` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `process` mediumint(8) NOT NULL, + `name` varchar(255) NOT NULL, + `type` char(30) NOT NULL, + `abbr` char(30) NOT NULL, + `desc` text NOT NULL, + `reason` varchar(255) NOT NULL, + `linkedBy` char(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_programreport` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `template` mediumint(8) NOT NULL, + `project` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `params` text NOT NULL, + `content` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_project` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) NOT NULL DEFAULT '0', + `model` char(30) NOT NULL, + `type` char(30) NOT NULL DEFAULT 'sprint', + `lifetime` char(30) NOT NULL DEFAULT '', + `budget` varchar(30) NOT NULL DEFAULT '0', + `budgetUnit` char(30) NOT NULL DEFAULT 'CNY', + `attribute` varchar(30) NOT NULL DEFAULT '', + `percent` float unsigned NOT NULL DEFAULT '0', + `milestone` enum('0','1') NOT NULL DEFAULT '0', + `output` text NOT NULL, + `auth` char(30) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` varchar(255) NOT NULL, + `grade` tinyint(3) unsigned NOT NULL, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1, + `begin` date NOT NULL, + `end` date NOT NULL, + `realBegan` date NOT NULL, + `realEnd` date NOT NULL, + `days` smallint(5) unsigned NOT NULL, + `status` varchar(10) NOT NULL, + `subStatus` varchar(30) NOT NULL DEFAULT '', + `pri` enum('1','2','3','4') NOT NULL DEFAULT '1', + `desc` mediumtext NOT NULL, + `version` smallint(6) NOT NULL, + `parentVersion` smallint(6) NOT NULL, + `planDuration` int(11) NOT NULL, + `realDuration` int(11) NOT NULL, + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `openedVersion` varchar(20) NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `canceledBy` varchar(30) NOT NULL DEFAULT '', + `canceledDate` datetime NOT NULL, + `suspendedDate` date NOT NULL, + `PO` varchar(30) NOT NULL DEFAULT '', + `PM` varchar(30) NOT NULL DEFAULT '', + `QD` varchar(30) NOT NULL DEFAULT '', + `RD` varchar(30) NOT NULL DEFAULT '', + `team` varchar(90) NOT NULL, + `acl` char(30) NOT NULL DEFAULT 'open', + `whitelist` text NOT NULL, + `order` mediumint(8) unsigned NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `division` enum('0','1') NOT NULL DEFAULT '1', + `displayCards` smallint(6) NOT NULL DEFAULT '0', + `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', + `multiple` enum('0', '1') NOT NULL DEFAULT '1', + `colWidth` smallint(4) NOT NULL DEFAULT '264', + `minColWidth` smallint(4) NOT NULL DEFAULT '200', + `maxColWidth` smallint(4) NOT NULL DEFAULT '384', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `begin` (`begin`), + KEY `end` (`end`), + KEY `status` (`status`), + KEY `acl` (`acl`), + KEY `order` (`order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectadmin` ( + `group` smallint(6) NOT NULL, + `account` char(30) NOT NULL, + `programs` text NOT NULL, + `projects` text NOT NULL, + `products` text NOT NULL, + `executions` text NOT NULL, + UNIQUE KEY `group_account` (`group`, `account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectcase` ( + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `count` mediumint(8) unsigned NOT NULL DEFAULT '1', + `version` smallint(6) NOT NULL DEFAULT '1', + `order` smallint(6) unsigned NOT NULL, + UNIQUE KEY `project` (`project`,`case`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectproduct` ( + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `plan` varchar(255) NOT NULL, + PRIMARY KEY (`project`,`product`,`branch`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectspec` ( + `project` mediumint(8) NOT NULL, + `version` smallint(6) NOT NULL, + `name` varchar(255) NOT NULL, + `milestone` enum('0','1') NOT NULL DEFAULT '0', + `begin` date NOT NULL, + `end` date NOT NULL, + UNIQUE KEY `project` (`project`,`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_projectstory` ( + `project` mediumint(8) unsigned NOT NULL DEFAULT '0', + `product` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `order` smallint(6) unsigned NOT NULL, + UNIQUE KEY `project` (`project`,`story`), + KEY `story` (`story`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_relation` ( + `id` int(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) NOT NULL, + `product` mediumint(8) NOT NULL, + `execution` mediumint(8) NOT NULL, + `AType` char(30) NOT NULL, + `AID` mediumint(8) NOT NULL, + `AVersion` char(30) NOT NULL, + `relation` char(30) NOT NULL, + `BType` char(30) NOT NULL, + `BID` mediumint(8) NOT NULL, + `BVersion` char(30) NOT NULL, + `extra` char(30) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `relation` (`product`,`relation`,`AType`,`BType`,`AID`,`BID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_relationoftasks` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `execution` mediumint(8) unsigned NOT NULL, + `pretask` mediumint(8) unsigned NOT NULL, + `condition` enum('begin','end') NOT NULL, + `task` mediumint(8) unsigned NOT NULL, + `action` enum('begin','end') NOT NULL, + PRIMARY KEY (`id`), + KEY `relationoftasks` (`execution`,`task`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_release` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` varchar(255) NOT NULL, + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` varchar(255) NOT NULL, + `shadow` mediumint(8) unsigned NOT NULL default '0', + `build` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `marker` enum('0','1') NOT NULL DEFAULT '0', + `date` date NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `leftBugs` text NOT NULL, + `desc` mediumtext NOT NULL, + `mailto` text, + `notify` varchar(255) DEFAULT NULL, + `status` varchar(20) NOT NULL DEFAULT 'normal', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_repo` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `product` varchar(255) NOT NULL, + `projects` varchar(255) NOT NULL, + `name` varchar(255) NOT NULL, + `path` varchar(255) NOT NULL, + `prefix` varchar(100) NOT NULL, + `encoding` varchar(20) NOT NULL, + `SCM` varchar(10) NOT NULL, + `client` varchar(100) NOT NULL, + `serviceHost` varchar(50) NOT NULL, + `serviceProject` varchar(100) NOT NULL, + `commits` mediumint(8) unsigned NOT NULL, + `account` varchar(30) NOT NULL, + `password` varchar(30) NOT NULL, + `encrypt` varchar(30) NOT NULL DEFAULT 'plain', + `acl` text NOT NULL, + `synced` tinyint(1) NOT NULL DEFAULT '0', + `lastSync` datetime NOT NULL, + `desc` text NOT NULL, + `extra` char(30) NOT NULL, + `preMerge` enum('0','1') NOT NULL DEFAULT '0', + `job` mediumint(8) unsigned NOT NULL, + `fileServerUrl` text, + `fileServerAccount` varchar(40) NOT NULL DEFAULT '', + `fileServerPassword` varchar(100) NOT NULL DEFAULT '', + `deleted` tinyint(1) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_repobranch` ( + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `branch` varchar(255) NOT NULL, + UNIQUE KEY `repo_revision_branch` (`repo`,`revision`,`branch`), + KEY `branch` (`branch`), + KEY `revision` (`revision`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_repofiles` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `repo` mediumint(8) unsigned NOT NULL, + `revision` mediumint(8) unsigned NOT NULL, + `path` varchar(255) NOT NULL, + `parent` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `action` char(1) NOT NULL, + PRIMARY KEY (`id`), + KEY `path` (`path`), + KEY `parent` (`parent`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_repohistory` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `repo` mediumint(9) NOT NULL, + `revision` varchar(40) NOT NULL, + `commit` mediumint(8) unsigned NOT NULL, + `comment` text NOT NULL, + `committer` varchar(100) NOT NULL, + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `repo` (`repo`), + KEY `revision` (`revision`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_report` ( + `id` mediumint(9) NOT NULL AUTO_INCREMENT, + `code` varchar(100) NOT NULL, + `name` text NOT NULL, + `module` varchar(100) NOT NULL, + `sql` text NOT NULL, + `vars` text NOT NULL, + `langs` text NOT NULL, + `params` text NOT NULL, + `step` tinyint(1) NOT NULL DEFAULT '2', + `desc` text NOT NULL, + `addedBy` char(30) NOT NULL, + `addedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `code` (`code`) +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_researchplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `customer` varchar(255) NOT NULL, + `stakeholder` varchar(255) NOT NULL, + `objective` varchar(255) NOT NULL, + `begin` datetime NOT NULL, + `end` datetime NOT NULL, + `location` varchar(255) NOT NULL, + `team` varchar(255) NOT NULL, + `method` enum('','videoConference','interview','questionnaire','telephoneInterview') NOT NULL, + `outline` mediumtext NOT NULL, + `schedule` mediumtext NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_researchreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `relatedPlan` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `author` varchar(30) NOT NULL, + `content` mediumtext NOT NULL, + `customer` varchar(255) NOT NULL, + `researchObjects` varchar(255) NOT NULL, + `begin` datetime NOT NULL, + `end` datetime NOT NULL, + `location` varchar(255) NOT NULL, + `method` enum('','videoConference','interview','questionnaire','telephoneInterview') NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_review` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `object` mediumint(8) NOT NULL, + `template` mediumint(8) NOT NULL, + `doc` mediumint(8) DEFAULT NULL, + `docVersion` smallint(6) NOT NULL, + `status` char(30) NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `auditedBy` varchar(255) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deadline` date NOT NULL, + `lastReviewedBy` varchar(255) DEFAULT NULL, + `lastReviewedDate` date NOT NULL, + `lastAuditedBy` varchar(255) NOT NULL, + `lastAuditedDate` date NOT NULL, + `lastEditedBy` varchar(255) NOT NULL, + `lastEditedDate` date NOT NULL, + `result` char(30) NOT NULL, + `auditResult` char(30) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_reviewcl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) NOT NULL, + `object` char(30) NOT NULL, + `category` char(30) NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `order` mediumint(8) DEFAULT '0', + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_reviewissue` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `review` mediumint(8) NOT NULL, + `approval` mediumint(8) NOT NULL, + `injection` mediumint(8) NOT NULL, + `identify` mediumint(8) NOT NULL, + `type` char(30) NOT NULL DEFAULT 'review', + `listID` mediumint(8) NOT NULL, + `title` varchar(255) NOT NULL, + `opinion` varchar(255) NOT NULL, + `opinionDate` date NOT NULL, + `status` char(30) NOT NULL, + `resolution` char(30) NOT NULL, + `resolutionBy` char(30) NOT NULL, + `resolutionDate` date NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_reviewlist` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) NOT NULL, + `object` char(30) NOT NULL, + `category` char(30) NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedBy` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_reviewresult` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `review` mediumint(8) NOT NULL, + `type` char(30) NOT NULL DEFAULT 'review', + `result` char(30) NOT NULL, + `opinion` text NOT NULL, + `reviewer` char(30) NOT NULL, + `remainIssue` char(30) NOT NULL, + `createdDate` date NOT NULL, + `consumed` float NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `reviewer` (`review`,`reviewer`,`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_risk` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` varchar(255) NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `source` char(30) NOT NULL, + `category` char(30) NOT NULL, + `strategy` char(30) NOT NULL, + `status` varchar(30) NOT NULL DEFAULT 'active', + `impact` char(30) NOT NULL, + `probability` char(30) NOT NULL, + `rate` char(30) NOT NULL, + `pri` char(30) NOT NULL, + `identifiedDate` date NOT NULL, + `prevention` mediumtext NOT NULL, + `remedy` mediumtext NOT NULL, + `plannedClosedDate` date NOT NULL, + `actualClosedDate` date NOT NULL, + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `from` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` smallint(6) NOT NULL DEFAULT '1', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `resolution` mediumtext NOT NULL, + `resolvedBy` varchar(30) NOT NULL, + `activateBy` varchar(30) NOT NULL, + `activateDate` date NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` date NOT NULL, + `cancelBy` varchar(30) NOT NULL, + `cancelDate` date NOT NULL, + `cancelReason` char(30) NOT NULL, + `hangupBy` varchar(30) NOT NULL, + `hangupDate` date NOT NULL, + `trackedBy` varchar(30) NOT NULL, + `trackedDate` date NOT NULL, + `assignedDate` date NOT NULL, + `approvedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_riskissue` ( + `risk` mediumint(8) unsigned NOT NULL, + `issue` mediumint(8) unsigned NOT NULL, + UNIQUE KEY `risk_issue` (`risk`,`issue`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_score` ( + `id` bigint(12) unsigned NOT NULL AUTO_INCREMENT, + `account` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL DEFAULT '', + `method` varchar(30) NOT NULL, + `desc` varchar(250) NOT NULL DEFAULT '', + `before` int(11) NOT NULL DEFAULT '0', + `score` int(11) NOT NULL DEFAULT '0', + `after` int(11) NOT NULL DEFAULT '0', + `time` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `model` (`module`), + KEY `method` (`method`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_searchdict` ( + `key` smallint(5) unsigned NOT NULL, + `value` char(3) NOT NULL, + PRIMARY KEY (`key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_searchindex` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `objectType` char(20) NOT NULL, + `objectID` mediumint(9) NOT NULL, + `title` text NOT NULL, + `content` text NOT NULL, + `addedDate` datetime NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `object` (`objectType`,`objectID`), + KEY `addedDate` (`addedDate`), + FULLTEXT KEY `content` (`content`), + FULLTEXT KEY `title` (`title`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_serverroom` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(128) NOT NULL, + `city` varchar(128) NOT NULL, + `line` varchar(20) NOT NULL, + `bandwidth` varchar(128) NOT NULL, + `provider` varchar(128) NOT NULL, + `owner` varchar(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_service` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `external` enum('0','1') NOT NULL DEFAULT '0', + `port` smallint(5) unsigned NOT NULL, + `entry` varchar(255) NOT NULL, + `deploy` varchar(255) NOT NULL, + `version` varchar(64) NOT NULL, + `color` char(7) NOT NULL, + `desc` mediumtext, + `dept` varchar(128) NOT NULL, + `devel` varchar(30) NOT NULL, + `qa` varchar(30) NOT NULL, + `ops` varchar(30) NOT NULL, + `hosts` text, + `softName` varchar(128) NOT NULL, + `softVersion` varchar(128) NOT NULL, + `type` varchar(20) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) unsigned NOT NULL DEFAULT '0', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_solutions` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `contents` text NOT NULL COMMENT '问题描述', + `support` text NOT NULL COMMENT '是否需要高层支持', + `measures` text NOT NULL COMMENT '解决建议', + `type` char(30) NOT NULL, + `addedBy` varchar(30) NOT NULL, + `addedDate` date NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_sqlview` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(90) NOT NULL, + `code` varchar(45) NOT NULL, + `sql` text NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_stage` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `percent` varchar(255) NOT NULL, + `type` varchar(255) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_stakeholder` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT PRIMARY KEY, + `objectID` mediumint(8) NOT NULL, + `objectType` char(30) NOT NULL, + `user` char(30) NOT NULL, + `type` char(30) NOT NULL, + `key` enum('0','1') NOT NULL, + `from` char(30) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` date NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL, + KEY `objectID` (`objectID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_story` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `parent` mediumint(9) NOT NULL DEFAULT '0', + `product` mediumint(8) unsigned NOT NULL DEFAULT '0', + `branch` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `plan` text, + `source` varchar(20) NOT NULL, + `sourceNote` varchar(255) NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL DEFAULT '0', + `feedback` mediumint(8) unsigned NOT NULL DEFAULT '0', + `title` varchar(255) NOT NULL, + `keywords` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL DEFAULT 'story', + `category` varchar(30) NOT NULL DEFAULT 'feature', + `pri` tinyint(3) unsigned NOT NULL DEFAULT '3', + `estimate` float unsigned NOT NULL, + `status` enum('','changing','active','draft','closed','reviewing') NOT NULL DEFAULT '', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `stage` enum('','wait','planned','projected','developing','developed','testing','tested','verified','released','closed') NOT NULL DEFAULT 'wait', + `stagedBy` char(30) NOT NULL, + `mailto` text, + `lib` mediumint(8) unsigned NOT NULL DEFAULT '0', + `fromStory` mediumint(8) unsigned NOT NULL DEFAULT '0', + `fromVersion` smallint(6) NOT NULL DEFAULT '1', + `openedBy` varchar(30) NOT NULL DEFAULT '', + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `approvedDate` date NOT NULL, + `lastEditedBy` varchar(30) NOT NULL DEFAULT '', + `lastEditedDate` datetime NOT NULL, + `changedBy` VARCHAR(30) NOT NULL, + `changedDate` DATETIME NOT NULL, + `reviewedBy` varchar(255) NOT NULL, + `reviewedDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `activatedDate` datetime NOT NULL, + `toBug` mediumint(8) unsigned NOT NULL, + `childStories` varchar(255) NOT NULL, + `linkStories` varchar(255) NOT NULL, + `linkRequirements` varchar(255) NOT NULL, + `duplicateStory` mediumint(8) unsigned NOT NULL, + `version` smallint(6) NOT NULL DEFAULT '1', + `storyChanged` enum('0','1') NOT NULL DEFAULT '0', + `feedbackBy` varchar(100) NOT NULL, + `notifyEmail` varchar(100) NOT NULL, + `URChanged` enum('0','1') NOT NULL DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `status` (`status`), + KEY `assignedTo` (`assignedTo`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storyestimate` ( + `story` mediumint(9) NOT NULL, + `round` smallint(6) NOT NULL, + `estimate` text NOT NULL, + `average` float NOT NULL, + `openedBy` varchar(30) NOT NULL, + `openedDate` datetime NOT NULL, + UNIQUE KEY `story` (`story`,`round`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storyreview` ( + `story` mediumint(9) NOT NULL, + `version` smallint(6) NOT NULL, + `reviewer` varchar(30) NOT NULL, + `result` varchar(30) NOT NULL, + `reviewDate` datetime NOT NULL, + UNIQUE KEY `story` (`story`,`version`,`reviewer`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storyspec` ( + `story` mediumint(9) NOT NULL, + `version` smallint(6) NOT NULL, + `title` varchar(255) NOT NULL, + `spec` mediumtext NOT NULL, + `verify` mediumtext NOT NULL, + `files` text NOT NULL, + UNIQUE KEY `story` (`story`,`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_storystage` ( + `story` mediumint(8) unsigned NOT NULL, + `branch` mediumint(8) unsigned NOT NULL, + `stage` varchar(50) NOT NULL, + `stagedBy` char(30) NOT NULL, + UNIQUE KEY `story_branch` (`story`,`branch`), + KEY `story` (`story`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_suitecase` ( + `suite` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + UNIQUE KEY `suitecase` (`suite`,`case`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_task` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `parent` mediumint(8) NOT NULL DEFAULT '0', + `execution` mediumint(8) unsigned NOT NULL DEFAULT '0', + `module` mediumint(8) unsigned NOT NULL DEFAULT '0', + `design` mediumint(8) unsigned NOT NULL, + `story` mediumint(8) unsigned NOT NULL DEFAULT '0', + `storyVersion` smallint(6) NOT NULL DEFAULT '1', + `designVersion` smallint(6) unsigned NOT NULL, + `fromBug` mediumint(8) unsigned NOT NULL DEFAULT '0', + `fromIssue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `feedback` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `type` varchar(20) NOT NULL, + `mode` varchar(10) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `estimate` float unsigned NOT NULL, + `consumed` float unsigned NOT NULL, + `left` float unsigned NOT NULL, + `deadline` date NOT NULL, + `status` enum('wait','doing','done','pause','cancel','closed') NOT NULL DEFAULT 'wait', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `color` char(7) NOT NULL, + `mailto` text, + `desc` mediumtext NOT NULL, + `version` smallint(6) NOT NULL, + `openedBy` varchar(30) NOT NULL, + `openedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `estStarted` date NOT NULL, + `realStarted` datetime NOT NULL, + `finishedBy` varchar(30) NOT NULL, + `finishedDate` datetime NOT NULL, + `finishedList` text NOT NULL, + `canceledBy` varchar(30) NOT NULL, + `canceledDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` datetime NOT NULL, + `planDuration` int(11) NOT NULL, + `realDuration` int(11) NOT NULL, + `closedReason` varchar(30) NOT NULL, + `lastEditedBy` varchar(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `activatedDate` datetime NOT NULL, + `order` mediumint(8) NOT NULL DEFAULT 0, + `repo` mediumint(8) unsigned NOT NULL, + `mr` mediumint(8) unsigned NOT NULL, + `entry` varchar(255) NOT NULL, + `lines` varchar(10) NOT NULL, + `v1` varchar(40) NOT NULL, + `v2` varchar(40) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + PRIMARY KEY (`id`), + KEY `execution` (`execution`), + KEY `story` (`story`), + KEY `parent` (`parent`), + KEY `assignedTo` (`assignedTo`), + KEY `order` (`order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_taskestimate` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL, + `left` float unsigned NOT NULL DEFAULT '0', + `consumed` float unsigned NOT NULL, + `account` char(30) NOT NULL DEFAULT '', + `work` text, + `order` tinyint unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `task` (`task`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_taskspec` ( + `task` mediumint(8) NOT NULL, + `version` smallint(6) NOT NULL, + `name` varchar(255) NOT NULL, + `estStarted` date NOT NULL, + `deadline` date NOT NULL, + UNIQUE KEY `task` (`task`,`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_taskteam` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL, + `account` char(30) NOT NULL, + `estimate` decimal(12,2) NOT NULL, + `consumed` decimal(12,2) NOT NULL, + `left` decimal(12,2) NOT NULL, + `transfer` char(30) NOT NULL, + `status` enum('wait','doing','done') NOT NULL DEFAULT 'wait', + `order` tinyint(3) NOT NULL, + PRIMARY KEY (`id`), + KEY `task` (`task`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_team` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `root` mediumint(8) unsigned NOT NULL DEFAULT '0', + `type` enum('project','task','execution') NOT NULL DEFAULT 'project', + `account` char(30) NOT NULL DEFAULT '', + `role` char(30) NOT NULL DEFAULT '', + `position` varchar(30) NOT NULL, + `limited` char(8) NOT NULL DEFAULT 'no', + `join` date NOT NULL DEFAULT '0000-00-00', + `days` smallint(5) unsigned NOT NULL, + `hours` float(3,1) unsigned NOT NULL DEFAULT '0.0', + `estimate` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `consumed` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `left` decimal(12,2) unsigned NOT NULL DEFAULT '0.00', + `order` tinyint(3) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `team` (`root`,`type`,`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `execution` mediumint(8) unsigned NOT NULL, + `tasks` varchar(255) NOT NULL, + `builds` varchar(255) NOT NULL, + `title` varchar(255) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `owner` char(30) NOT NULL, + `members` text NOT NULL, + `stories` text NOT NULL, + `bugs` text NOT NULL, + `cases` text NOT NULL, + `report` text NOT NULL, + `objectType` varchar(20) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testresult` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `run` mediumint(8) unsigned NOT NULL, + `case` mediumint(8) unsigned NOT NULL, + `version` smallint(5) unsigned NOT NULL, + `job` mediumint(8) unsigned NOT NULL, + `compile` mediumint(8) unsigned NOT NULL, + `caseResult` char(30) NOT NULL, + `stepResults` text NOT NULL, + `lastRunner` varchar(30) NOT NULL, + `date` datetime NOT NULL, + `duration` float NOT NULL, + `xml` text NOT NULL, + `deploy` mediumint(8) unsigned NOT NULL, + PRIMARY KEY (`id`), + KEY `case` (`case`), + KEY `version` (`version`), + KEY `run` (`run`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testrun` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `task` mediumint(8) unsigned NOT NULL DEFAULT '0', + `case` mediumint(8) unsigned NOT NULL DEFAULT '0', + `version` tinyint(3) unsigned NOT NULL DEFAULT '0', + `assignedTo` char(30) NOT NULL DEFAULT '', + `lastRunner` varchar(30) NOT NULL, + `lastRunDate` datetime NOT NULL, + `lastRunResult` char(30) NOT NULL, + `status` char(30) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `task` (`task`,`case`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testsuite` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `desc` mediumtext NOT NULL, + `type` varchar(20) NOT NULL, + `order` SMALLINT UNSIGNED NOT NULL DEFAULT '0', + `addedBy` char(30) NOT NULL, + `addedDate` datetime NOT NULL, + `lastEditedBy` char(30) NOT NULL, + `lastEditedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL, + PRIMARY KEY (`id`), + KEY `product` (`product`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_testtask` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `product` mediumint(8) unsigned NOT NULL, + `name` char(90) NOT NULL, + `execution` mediumint(8) unsigned NOT NULL DEFAULT '0', + `build` char(30) NOT NULL, + `type` varchar(255) NOT NULL DEFAULT '', + `owner` varchar(30) NOT NULL, + `pri` tinyint(3) unsigned NOT NULL DEFAULT '0', + `begin` date NOT NULL, + `end` date NOT NULL, + `realFinishedDate` datetime NOT NULL, + `mailto` text, + `desc` mediumtext NOT NULL, + `report` text NOT NULL, + `status` enum('blocked','doing','wait','done') NOT NULL DEFAULT 'wait', + `testreport` mediumint(8) unsigned NOT NULL, + `auto` varchar(10) NOT NULL DEFAULT 'no', + `subStatus` varchar(30) NOT NULL DEFAULT '', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `product` (`product`), + KEY `build` (`build`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_ticket` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `product` mediumint(8) unsigned NOT NULL, + `module` mediumint(8) unsigned NOT NULL, + `title` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `desc` text NOT NULL, + `openedBuild` varchar(255) NOT NULL, + `feedback` mediumint(8) NOT NULL, + `assignedTo` varchar(255) NOT NULL, + `assignedDate` datetime NOT NULL, + `realStarted` datetime NOT NULL, + `startedBy` varchar(255) NOT NULL, + `startedDate` datetime NOT NULL, + `deadline` date NOT NULL, + `pri` tinyint unsigned NOT NULL DEFAULT '0', + `estimate` float unsigned NOT NULL, + `consumed` float unsigned NOT NULL, + `left` float unsigned NOT NULL, + `status` varchar(30) NOT NULL, + `openedBy` varchar(30) NOT NULL, + `openedDate` datetime NOT NULL, + `activatedCount` int(10) NOT NULL, + `activatedBy` varchar(30) NOT NULL, + `activatedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL, + `closedDate` datetime NOT NULL, + `closedReason` varchar(30) NOT NULL, + `finishedBy` varchar(30) NOT NULL, + `finishedDate` datetime NOT NULL, + `resolvedBy` varchar(30) NOT NULL, + `resolvedDate` datetime NOT NULL, + `resolution` varchar(1000) NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `keywords` varchar(255) NOT NULL, + `repeatTicket` mediumint(8) NOT NULL DEFAULT '0', + `mailto` varchar(255) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + key `product` (`product`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `zt_ticketsource` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `ticketId` mediumint(8) unsigned NOT NULL, + `customer` varchar(100) NOT NULL, + `contact` varchar(100) NOT NULL, + `notifyEmail` varchar(100) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`), + key `ticketId` (`ticketId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_ticketrelation` ( + `id` mediumint unsigned NOT NULL AUTO_INCREMENT, + `ticketId` mediumint unsigned NOT NULL, + `objectId` mediumint NOT NULL, + `objectType` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + KEY `ticketId` (`ticketId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_todo` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `date` date NOT NULL, + `begin` smallint(4) unsigned zerofill NOT NULL, + `end` smallint(4) unsigned zerofill NOT NULL, + `feedback` mediumint(8) unsigned NOT NULL, + `type` char(15) NOT NULL, + `cycle` tinyint(3) unsigned NOT NULL DEFAULT '0', + `idvalue` mediumint(8) unsigned NOT NULL DEFAULT '0', + `pri` tinyint(3) unsigned NOT NULL, + `name` char(150) NOT NULL, + `desc` mediumtext NOT NULL, + `status` enum('wait','doing','done','closed') NOT NULL DEFAULT 'wait', + `private` tinyint(1) NOT NULL, + `config` varchar(255) NOT NULL, + `assignedTo` varchar(30) NOT NULL DEFAULT '', + `assignedBy` varchar(30) NOT NULL DEFAULT '', + `assignedDate` datetime NOT NULL, + `finishedBy` varchar(30) NOT NULL DEFAULT '', + `finishedDate` datetime NOT NULL, + `closedBy` varchar(30) NOT NULL DEFAULT '', + `closedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `assignedTo` (`assignedTo`), + KEY `finishedBy` (`finishedBy`), + KEY `date` (`date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_traincategory` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `name` char(30) NOT NULL DEFAULT '', + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `grade` tinyint(3) NOT NULL, + `order` mediumint(8) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `parent` (`parent`), + KEY `path` (`path`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_traincontents` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `code` varchar(50) NOT NULL, + `course` mediumint(8) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL, + `type` varchar(30) NOT NULL, + `parent` mediumint(8) unsigned NOT NULL DEFAULT '0', + `path` char(255) NOT NULL DEFAULT '', + `desc` text NOT NULL, + `order` mediumint(8) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` tinyint(1) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_traincourse` ( + `id` mediumint(8) NOT NULL AUTO_INCREMENT, + `code` varchar(50) NOT NULL, + `category` mediumint(8) NOT NULL, + `name` varchar(255) NOT NULL, + `status` varchar(10) NOT NULL, + `teacher` varchar(30) NOT NULL DEFAULT '', + `desc` mediumtext NOT NULL, + `createdBy` varchar(255) NOT NULL, + `createdDate` date NOT NULL, + `editedBy` varchar(255) NOT NULL, + `editedDate` date NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_trainplan` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `name` varchar(255) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `place` varchar(255) NOT NULL, + `trainee` text NOT NULL, + `lecturer` varchar(20) NOT NULL, + `type` enum('inside','outside') NOT NULL DEFAULT 'inside', + `status` varchar(20) NOT NULL, + `summary` mediumtext NOT NULL, + `createdBy` char(30) DEFAULT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_trainrecords` ( + `user` char(30) NOT NULL, + `objectId` mediumint(8) unsigned NOT NULL, + `objectType` varchar(10) NOT NULL, + `status` varchar(10) NOT NULL, + PRIMARY KEY (`user`,`objectId`,`objectType`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_trip` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` enum('trip','egress') NOT NULL DEFAULT 'trip', + `customers` varchar(20) NOT NULL, + `name` char(30) NOT NULL, + `desc` text NOT NULL, + `year` char(4) NOT NULL, + `begin` date NOT NULL, + `end` date NOT NULL, + `start` time NOT NULL, + `finish` time NOT NULL, + `from` char(50) NOT NULL, + `to` char(50) NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `year` (`year`), + KEY `createdBy` (`createdBy`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_user` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `company` mediumint(8) unsigned NOT NULL, + `type` char(30) NOT NULL DEFAULT 'inside', + `dept` mediumint(8) unsigned NOT NULL DEFAULT '0', + `account` char(30) NOT NULL DEFAULT '', + `password` char(32) NOT NULL DEFAULT '', + `role` char(10) NOT NULL DEFAULT '', + `realname` varchar(100) NOT NULL DEFAULT '', + `pinyin` varchar(255) NOT NULL DEFAULT '', + `nickname` char(60) NOT NULL DEFAULT '', + `commiter` varchar(100) NOT NULL, + `avatar` text NOT NULL, + `birthday` date NOT NULL DEFAULT '0000-00-00', + `gender` enum('f','m') NOT NULL DEFAULT 'f', + `email` char(90) NOT NULL DEFAULT '', + `skype` char(90) NOT NULL DEFAULT '', + `qq` char(20) NOT NULL DEFAULT '', + `mobile` char(11) NOT NULL DEFAULT '', + `phone` char(20) NOT NULL DEFAULT '', + `weixin` varchar(90) NOT NULL DEFAULT '', + `dingding` varchar(90) NOT NULL DEFAULT '', + `slack` varchar(90) NOT NULL DEFAULT '', + `whatsapp` varchar(90) NOT NULL DEFAULT '', + `address` char(120) NOT NULL DEFAULT '', + `zipcode` char(10) NOT NULL DEFAULT '', + `nature` text NOT NULL, + `analysis` text NOT NULL, + `strategy` text NOT NULL, + `join` date NOT NULL DEFAULT '0000-00-00', + `visits` mediumint(8) unsigned NOT NULL DEFAULT '0', + `visions` varchar(20) NOT NULL DEFAULT 'rnd,lite', + `ip` char(15) NOT NULL DEFAULT '', + `last` int(10) unsigned NOT NULL DEFAULT '0', + `fails` tinyint(5) NOT NULL DEFAULT '0', + `locked` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `feedback` enum('0','1') NOT NULL DEFAULT '0', + `ranzhi` char(30) NOT NULL DEFAULT '', + `ldap` char(30) NOT NULL, + `score` int(11) NOT NULL DEFAULT '0', + `scoreLevel` int(11) NOT NULL DEFAULT '0', + `resetToken` varchar(50) NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `clientStatus` enum('online','away','busy','offline','meeting') NOT NULL DEFAULT 'offline', + `clientLang` varchar(10) NOT NULL DEFAULT 'zh-cn', + PRIMARY KEY (`id`), + UNIQUE KEY `account` (`account`), + KEY `dept` (`dept`), + KEY `email` (`email`), + KEY `commiter` (`commiter`), + KEY `deleted` (`deleted`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usercontact` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `listName` varchar(60) NOT NULL, + `userList` text NOT NULL, + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usergroup` ( + `account` char(30) NOT NULL DEFAULT '', + `group` mediumint(8) unsigned NOT NULL DEFAULT '0', + `project` text NOT NULL, + UNIQUE KEY `account` (`account`,`group`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userquery` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `module` varchar(30) NOT NULL, + `title` varchar(90) NOT NULL, + `form` text NOT NULL, + `sql` text NOT NULL, + `shortcut` enum('0','1') NOT NULL DEFAULT '0', + `common` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`), + KEY `module` (`module`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_usertpl` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `account` char(30) NOT NULL, + `type` char(30) NOT NULL, + `title` varchar(150) NOT NULL, + `content` text NOT NULL, + `public` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + KEY `account` (`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_userview` ( + `account` char(30) NOT NULL, + `programs` mediumtext NOT NULL, + `products` mediumtext NOT NULL, + `projects` mediumtext NOT NULL, + `sprints` mediumtext NOT NULL, + UNIQUE KEY `account` (`account`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_vm` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `hostID` int(10) unsigned NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL DEFAULT '', + `osCategory` varchar(50) NOT NULL DEFAULT '', + `osType` varchar(50) NOT NULL DEFAULT '', + `osArch` varchar(50) NOT NULL DEFAULT '', + `osLang` varchar(50) NOT NULL DEFAULT '', + `osCpu` tinyint(2) NOT NULL DEFAULT 0, + `osMemory` smallint(6) NOT NULL DEFAULT 0, + `osDisk` smallint(6) NOT NULL DEFAULT 0, + `status` varchar(50) NOT NULL DEFAULT '', + `destroyAt` datetime DEFAULT NULL, + `macAddress` varchar(255) NOT NULL DEFAULT '', + `workspace` varchar(255) NOT NULL DEFAULT '', + `templateID` int(10) unsigned NOT NULL DEFAULT '0', + `baseImageID` int(10) unsigned NOT NULL DEFAULT '0', + `baseImagePath` varchar(255) NOT NULL DEFAULT '', + `desc` varchar(255) NOT NULL DEFAULT '', + `heatbeat` datetime DEFAULT NULL, + `vncPort` int(10) NOT NULL DEFAULT 0, + `instance` varchar(255) NOT NULL DEFAULT '', + `eip` varchar(255) NOT NULL DEFAULT '', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `public` varchar(50) NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_vmtemplate` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `hostID` int(10) unsigned NOT NULL DEFAULT '0', + `templateName` varchar(255) NOT NULL DEFAULT '', + `osType` varchar(50) NOT NULL DEFAULT '', + `osCategory` varchar(50) NOT NULL DEFAULT '', + `osVersion` varchar(50) NOT NULL DEFAULT '', + `osLang` varchar(50) NOT NULL, + `cpuCoreNum` smallint(4) NOT NULL DEFAULT 0, + `memorySize` int NOT NULL DEFAULT 0, + `diskSize` int NOT NULL DEFAULT 0, + `osArch` varchar(50) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_webhook` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` varchar(15) NOT NULL DEFAULT 'default', + `name` varchar(50) NOT NULL, + `url` varchar(255) NOT NULL, + `domain` varchar(255) NOT NULL, + `secret` varchar(255) NOT NULL, + `contentType` varchar(30) NOT NULL DEFAULT 'application/json', + `sendType` enum('sync','async') NOT NULL DEFAULT 'sync', + `products` text NOT NULL, + `executions` text NOT NULL, + `params` varchar(100) NOT NULL, + `actions` text NOT NULL, + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_weeklyreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `weekStart` date NOT NULL, + `pv` float(9,2) NOT NULL, + `ev` float(9,2) NOT NULL, + `ac` float(9,2) NOT NULL, + `sv` float(9,2) NOT NULL, + `cv` float(9,2) NOT NULL, + `staff` smallint(5) unsigned NOT NULL, + `progress` varchar(255) NOT NULL, + `workload` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `week` (`project`,`weekStart`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workestimation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `project` mediumint(8) unsigned NOT NULL, + `scale` decimal(10,2) unsigned NOT NULL, + `productivity` decimal(10,2) unsigned NOT NULL, + `duration` decimal(10,2) unsigned NOT NULL, + `unitLaborCost` decimal(10,2) unsigned NOT NULL, + `totalLaborCost` decimal(10,2) unsigned NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `assignedTo` varchar(30) NOT NULL, + `assignedDate` datetime NOT NULL, + `deleted` enum('0','1') NOT NULL DEFAULT '0', + `dayHour` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflow` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `parent` varchar(30) NOT NULL, + `child` varchar(30) NOT NULL, + `type` varchar(10) NOT NULL DEFAULT 'flow', + `navigator` varchar(10) NOT NULL, + `app` varchar(20) NOT NULL, + `position` varchar(30) NOT NULL, + `module` varchar(30) NOT NULL, + `table` varchar(50) NOT NULL, + `name` varchar(30) NOT NULL, + `titleField` varchar(30) NOT NULL, + `contentField` text NOT NULL, + `flowchart` text NOT NULL, + `js` text NOT NULL, + `css` text NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `buildin` tinyint(1) unsigned NOT NULL, + `administrator` text NOT NULL, + `desc` text NOT NULL, + `version` varchar(10) NOT NULL DEFAULT '1.0', + `status` varchar(10) NOT NULL DEFAULT 'wait', + `approval` enum('enabled', 'disabled') NOT NULL DEFAULT 'disabled', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`app`,`module`,`vision`), + KEY `type` (`type`), + KEY `app` (`app`), + KEY `module` (`module`), + KEY `order` (`order`) +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowaction` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `action` varchar(50) NOT NULL, + `method` varchar(50) NOT NULL, + `name` varchar(50) NOT NULL, + `type` enum('single','batch') NOT NULL DEFAULT 'single', + `batchMode` enum('same','different') NOT NULL DEFAULT 'different', + `extensionType` varchar(10) NOT NULL DEFAULT 'override' COMMENT 'none | extend | override', + `open` varchar(20) NOT NULL, + `position` enum('menu','browseandview','browse','view') NOT NULL DEFAULT 'browseandview', + `layout` char(20) NOT NULL, + `show` enum('dropdownlist','direct') NOT NULL DEFAULT 'dropdownlist', + `order` smallint(5) unsigned NOT NULL, + `buildin` tinyint(1) unsigned NOT NULL, + `role` varchar(10) NOT NULL DEFAULT 'custom', + `virtual` tinyint(1) unsigned NOT NULL, + `conditions` text NOT NULL, + `verifications` text NOT NULL, + `hooks` text NOT NULL, + `linkages` text NOT NULL, + `js` text NOT NULL, + `css` text NOT NULL, + `toList` char(255) NOT NULL, + `blocks` text NOT NULL, + `desc` text NOT NULL, + `status` varchar(10) NOT NULL DEFAULT 'enable', + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`module`,`action`,`vision`), + KEY `module` (`module`), + KEY `action` (`action`), + KEY `order` (`order`) +) ENGINE=InnoDB AUTO_INCREMENT=190 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowdatasource` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` enum('system','sql','func','option','lang','category') NOT NULL DEFAULT 'option', + `name` varchar(30) NOT NULL, + `code` varchar(30) NOT NULL, + `datasource` text NOT NULL, + `view` varchar(20) NOT NULL, + `keyField` varchar(50) NOT NULL, + `valueField` varchar(50) NOT NULL, + `buildin` tinyint(1) unsigned NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `type` (`type`) +) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowfield` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `field` varchar(50) NOT NULL, + `type` varchar(20) NOT NULL DEFAULT 'varchar', + `length` varchar(10) NOT NULL, + `name` varchar(50) NOT NULL, + `control` varchar(20) NOT NULL, + `expression` text NOT NULL, + `options` text NOT NULL, + `default` varchar(100) NOT NULL, + `rules` varchar(255) NOT NULL, + `placeholder` varchar(100) NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `searchOrder` smallint(5) unsigned NOT NULL DEFAULT '0', + `exportOrder` smallint(5) unsigned NOT NULL DEFAULT '0', + `canExport` enum('0','1') NOT NULL DEFAULT '0', + `canSearch` enum('0','1') NOT NULL DEFAULT '0', + `isValue` enum('0','1') NOT NULL DEFAULT '0', + `readonly` enum('0','1') NOT NULL DEFAULT '0', + `buildin` tinyint(1) unsigned NOT NULL, + `role` varchar(10) NOT NULL DEFAULT 'custom', + `desc` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`module`,`field`), + KEY `module` (`module`), + KEY `field` (`field`), + KEY `order` (`order`) +) ENGINE=InnoDB AUTO_INCREMENT=360 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowlabel` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `action` varchar(30) NOT NULL DEFAULT 'browse', + `code` varchar(30) NOT NULL, + `label` varchar(255) NOT NULL, + `params` text NOT NULL, + `orderBy` text NOT NULL, + `order` tinyint(3) NOT NULL, + `buildin` tinyint(1) unsigned NOT NULL, + `role` varchar(10) NOT NULL DEFAULT 'custom', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `module` (`module`) +) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowlayout` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `action` varchar(50) NOT NULL, + `field` varchar(50) NOT NULL, + `order` smallint(5) unsigned NOT NULL, + `width` smallint(5) NOT NULL, + `position` text NOT NULL, + `readonly` enum('0','1') NOT NULL DEFAULT '0', + `mobileShow` enum('0','1') NOT NULL DEFAULT '1', + `summary` varchar(20) NOT NULL, + `defaultValue` text NOT NULL, + `layoutRules` varchar(255) NOT NULL, + `vision` varchar(10) NOT NULL DEFAULT 'rnd', + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`module`,`action`,`field`,`vision`), + KEY `module` (`module`), + KEY `action` (`action`), + KEY `order` (`order`) +) ENGINE=InnoDB AUTO_INCREMENT=138 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowlinkdata` ( + `objectType` varchar(30) NOT NULL, + `objectID` mediumint(8) unsigned NOT NULL, + `linkedType` varchar(30) NOT NULL, + `linkedID` mediumint(8) unsigned NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + UNIQUE KEY `unique` (`objectType`,`objectID`,`linkedType`,`linkedID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowrelation` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `prev` varchar(30) NOT NULL, + `next` varchar(30) NOT NULL, + `field` varchar(50) NOT NULL, + `actions` varchar(20) NOT NULL, + `actionCodes` text NOT NULL, + `buildin` enum('0','1') NOT NULL DEFAULT '0', + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowrelationlayout` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `prev` varchar(30) NOT NULL, + `next` varchar(30) NOT NULL, + `action` varchar(50) NOT NULL, + `field` varchar(50) NOT NULL, + `order` smallint(5) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `unique` (`prev`,`next`,`action`,`field`), + KEY `prev` (`prev`), + KEY `next` (`next`), + KEY `action` (`action`), + KEY `order` (`order`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowreport` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL COMMENT 'module name', + `name` varchar(100) NOT NULL COMMENT 'report name', + `type` enum('pie','line','bar') NOT NULL DEFAULT 'pie' COMMENT 'report type', + `countType` enum('sum','count') NOT NULL DEFAULT 'sum' COMMENT 'report count method', + `displayType` enum('value','percent') NOT NULL DEFAULT 'value' COMMENT 'report display method', + `dimension` varchar(130) NOT NULL COMMENT 'dimension field code of zt_workflowfield', + `fields` text NOT NULL COMMENT 'count fileds code of zt_workflowfield,use comma split', + `order` smallint(5) unsigned NOT NULL DEFAULT '0', + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowrule` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `type` enum('system','regex','func') NOT NULL DEFAULT 'regex', + `name` varchar(30) NOT NULL, + `rule` text NOT NULL, + `createdBy` char(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` char(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `type` (`type`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowsql` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `field` varchar(50) NOT NULL, + `action` varchar(50) NOT NULL, + `sql` text NOT NULL, + `vars` text NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + PRIMARY KEY (`id`), + KEY `module` (`module`), + KEY `field` (`field`), + KEY `action` (`action`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_workflowversion` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `module` varchar(30) NOT NULL, + `version` varchar(10) NOT NULL, + `fields` text NOT NULL, + `actions` text NOT NULL, + `layouts` text NOT NULL, + `sqls` text NOT NULL, + `labels` text NOT NULL, + `table` text NOT NULL, + `datas` text NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `moduleversion` (`module`,`version`), + KEY `module` (`module`), + KEY `version` (`version`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE TABLE `zt_zoutput` ( + `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + `activity` mediumint(8) NOT NULL, + `name` varchar(255) NOT NULL, + `content` mediumtext NOT NULL, + `optional` char(20) NOT NULL, + `tailorNorm` varchar(255) NOT NULL, + `status` varchar(30) NOT NULL, + `createdBy` varchar(30) NOT NULL, + `createdDate` datetime NOT NULL, + `editedBy` varchar(30) NOT NULL, + `editedDate` datetime NOT NULL, + `order` mediumint(8) DEFAULT '0', + `deleted` enum('0','1') NOT NULL DEFAULT '0', + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=130 DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_dayactions` AS SELECT + 1 AS `actions`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daybugopen` AS SELECT + 1 AS `bugopen`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daybugresolve` AS SELECT + 1 AS `bugresolve`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_dayeffort` AS SELECT + 1 AS `consumed`, + 1 AS `date`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daystoryclose` AS SELECT + 1 AS `storyclose`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daystoryopen` AS SELECT + 1 AS `storyopen`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daytaskfinish` AS SELECT + 1 AS `taskfinish`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_daytaskopen` AS SELECT + 1 AS `taskopen`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_dayuserlogin` AS SELECT + 1 AS `userlogin`, + 1 AS `day`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_executionsummary` AS SELECT + 1 AS `execution`, + 1 AS `estimate`, + 1 AS `consumed`, + 1 AS `left`, + 1 AS `number`, + 1 AS `undone`, + 1 AS `totalReal`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_productbugs` AS SELECT + 1 AS `product`, + 1 AS `bugs`, + 1 AS `resolutions`, + 1 AS `seriousBugs`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_productstories` AS SELECT + 1 AS `product`, + 1 AS `stories`, + 1 AS `undone`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_projectbugs` AS SELECT + 1 AS `execution`, + 1 AS `bugs`, + 1 AS `resolutions`, + 1 AS `seriousBugs`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_projectstories` AS SELECT + 1 AS `execution`, + 1 AS `stories`, + 1 AS `undone`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_projectsummary` AS SELECT + 1 AS `project`, + 1 AS `estimate`, + 1 AS `consumed`, + 1 AS `left`, + 1 AS `number`, + 1 AS `undone`, + 1 AS `totalReal`*/; +SET character_set_client = @saved_cs_client; +SET @saved_cs_client = @@character_set_client; +SET character_set_client = utf8; +/*!50001 CREATE VIEW `ztv_projectteams` AS SELECT + 1 AS `execution`, + 1 AS `teams`*/; +SET character_set_client = @saved_cs_client; +/*!50001 DROP VIEW IF EXISTS `view_datasource_10`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_10` AS select `zt_build`.`id` AS `id`,`zt_build`.`name` AS `name` from `zt_build` where (`zt_build`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_11`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_11` AS select `zt_module`.`id` AS `id`,`zt_module`.`name` AS `name` from `zt_module` where (`zt_module`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_12`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_12` AS select `zt_productplan`.`id` AS `id`,`zt_productplan`.`title` AS `title` from `zt_productplan` where (`zt_productplan`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_4`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_4` AS select `zt_story`.`id` AS `id`,`zt_story`.`title` AS `title` from `zt_story` where (`zt_story`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_41`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_41` AS select `zt_case`.`id` AS `id`,`zt_case`.`title` AS `title` from `zt_case` where (`zt_case`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_46`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_46` AS select `zt_task`.`id` AS `id`,`zt_task`.`name` AS `name` from `zt_task` where ((`zt_task`.`deleted` = '0') and (`zt_task`.`vision` = 'lite')) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_5`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_5` AS select `zt_task`.`id` AS `id`,`zt_task`.`name` AS `name` from `zt_task` where ((`zt_task`.`deleted` = '0') and (`zt_task`.`vision` = 'rnd')) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `view_datasource_6`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `view_datasource_6` AS select `zt_bug`.`id` AS `id`,`zt_bug`.`title` AS `title` from `zt_bug` where (`zt_bug`.`deleted` = '0') */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_dayactions`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_dayactions` AS select count(0) AS `actions`,left(`zt_action`.`date`,10) AS `day` from `zt_action` group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daybugopen`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daybugopen` AS select count(0) AS `bugopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daybugresolve`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daybugresolve` AS select count(0) AS `bugresolve`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'resolved')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_dayeffort`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_dayeffort` AS select round(sum(`zt_effort`.`consumed`),1) AS `consumed`,`zt_effort`.`date` AS `date` from `zt_effort` group by `zt_effort`.`date` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daystoryclose`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daystoryclose` AS select count(0) AS `storyclose`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'story') and (`zt_action`.`action` = 'closed')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daystoryopen`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daystoryopen` AS select count(0) AS `storyopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'story') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daytaskfinish`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daytaskfinish` AS select count(0) AS `taskfinish`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'task') and (`zt_action`.`action` = 'finished')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_daytaskopen`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_daytaskopen` AS select count(0) AS `taskopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'task') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_dayuserlogin`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_dayuserlogin` AS select count(0) AS `userlogin`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'user') and (`zt_action`.`action` = 'login')) group by left(`zt_action`.`date`,10) */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_executionsummary`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_executionsummary` AS select `zt_task`.`execution` AS `execution`,sum(if((`zt_task`.`parent` >= '0'),`zt_task`.`estimate`,0)) AS `estimate`,sum(if((`zt_task`.`parent` >= '0'),`zt_task`.`consumed`,0)) AS `consumed`,sum(if(((`zt_task`.`status` <> 'cancel') and (`zt_task`.`status` <> 'closed') and (`zt_task`.`parent` >= '0')),`zt_task`.`left`,0)) AS `left`,count(0) AS `number`,sum(if(((`zt_task`.`status` <> 'done') and (`zt_task`.`status` <> 'closed')),1,0)) AS `undone`,sum((if((`zt_task`.`parent` >= '0'),`zt_task`.`consumed`,0) + if(((`zt_task`.`status` <> 'cancel') and (`zt_task`.`status` <> 'closed') and (`zt_task`.`parent` >= '0')),`zt_task`.`left`,0))) AS `totalReal` from `zt_task` where (`zt_task`.`deleted` = '0') group by `zt_task`.`execution` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_productbugs`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_productbugs` AS select `zt_bug`.`product` AS `product`,count(0) AS `bugs`,sum(if((`zt_bug`.`resolution` = ''),0,1)) AS `resolutions`,sum(if((`zt_bug`.`severity` <= 2),1,0)) AS `seriousBugs` from `zt_bug` where (`zt_bug`.`deleted` = '0') group by `zt_bug`.`product` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_productstories`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_productstories` AS select `zt_story`.`product` AS `product`,count('*') AS `stories`,sum(if((`zt_story`.`status` = 'closed'),0,1)) AS `undone` from `zt_story` where (`zt_story`.`deleted` = '0') group by `zt_story`.`product` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_projectbugs`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_projectbugs` AS select `zt_bug`.`execution` AS `execution`,count(0) AS `bugs`,sum(if((`zt_bug`.`resolution` = ''),0,1)) AS `resolutions`,sum(if((`zt_bug`.`severity` <= 2),1,0)) AS `seriousBugs` from `zt_bug` where (`zt_bug`.`deleted` = '0') group by `zt_bug`.`execution` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_projectstories`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_projectstories` AS select `t1`.`project` AS `execution`,count('*') AS `stories`,sum(if((`t2`.`status` = 'closed'),0,1)) AS `undone` from ((`zt_projectstory` `t1` left join `zt_story` `t2` on((`t1`.`story` = `t2`.`id`))) left join `zt_project` `t3` on((`t1`.`project` = `t3`.`id`))) where ((`t2`.`deleted` = '0') and (`t3`.`type` in ('sprint','stage'))) group by `t1`.`project` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_projectsummary`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_projectsummary` AS select `zt_task`.`project` AS `project`,sum(if((`zt_task`.`parent` >= '0'),`zt_task`.`estimate`,0)) AS `estimate`,sum(if((`zt_task`.`parent` >= '0'),`zt_task`.`consumed`,0)) AS `consumed`,sum(if(((`zt_task`.`status` <> 'cancel') and (`zt_task`.`status` <> 'closed') and (`zt_task`.`parent` >= '0')),`zt_task`.`left`,0)) AS `left`,count(0) AS `number`,sum(if(((`zt_task`.`status` <> 'done') and (`zt_task`.`status` <> 'closed')),1,0)) AS `undone`,sum((if((`zt_task`.`parent` >= '0'),`zt_task`.`consumed`,0) + if(((`zt_task`.`status` <> 'cancel') and (`zt_task`.`status` <> 'closed') and (`zt_task`.`parent` >= '0')),`zt_task`.`left`,0))) AS `totalReal` from `zt_task` where (`zt_task`.`deleted` = '0') group by `zt_task`.`project` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; +/*!50001 DROP VIEW IF EXISTS `ztv_projectteams`*/; +/*!50001 SET @saved_cs_client = @@character_set_client */; +/*!50001 SET @saved_cs_results = @@character_set_results */; +/*!50001 SET @saved_col_connection = @@collation_connection */; +/*!50001 SET character_set_client = utf8 */; +/*!50001 SET character_set_results = utf8 */; +/*!50001 SET collation_connection = utf8_general_ci */; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`root`@`localhost` SQL SECURITY DEFINER */ +/*!50001 VIEW `ztv_projectteams` AS select `zt_team`.`root` AS `execution`,count('*') AS `teams` from `zt_team` where (`zt_team`.`type` = 'execution') group by `zt_team`.`root` */; +/*!50001 SET character_set_client = @saved_cs_client */; +/*!50001 SET character_set_results = @saved_cs_results */; +/*!50001 SET collation_connection = @saved_col_connection */; diff --git a/db/update16.4.sql b/db/update16.4.sql index bbbec92803..8dd68b4c76 100644 --- a/db/update16.4.sql +++ b/db/update16.4.sql @@ -31,14 +31,9 @@ UPDATE `zt_group` SET `vision`='lite', `project`='0' WHERE `role` = 'feedback'; DELETE FROM `zt_group` WHERE `vision` = 'lite' AND `role` IN ('liteAdmin','liteProject','liteTeam'); -INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES -('lite', '管理员', 'liteAdmin', '迅捷版用户分组'); - -INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES -('lite', '项目管理', 'liteProject', '迅捷版用户分组'); - -INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES -('lite', '团队成员', 'liteTeam', '迅捷版用户分组'); +INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '管理员', 'liteAdmin', '运营管理界面用户分组'); +INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '项目管理', 'liteProject', '运营管理界面用户分组'); +INSERT INTO `zt_group` (`vision`, `name`, `role`, `desc`) VALUES('lite', '团队成员', 'liteTeam', '运营管理界面用户分组'); ALTER TABLE `zt_productplan` ADD `closedReason` varchar(20) NOT NULL AFTER `order`; diff --git a/db/update17.4.sql b/db/update17.4.sql index 746f691ab8..7e62ab9c08 100644 --- a/db/update17.4.sql +++ b/db/update17.4.sql @@ -21,8 +21,8 @@ UPDATE `zt_workflowfield` SET `options`=(SELECT id FROM `zt_workflowdatasource` UPDATE `zt_project` SET `closedDate`='' AND `closedBy`='' WHERE `status` != 'closed'; UPDATE `zt_grouppriv` SET `method`='exportTemplate' WHERE `method` = 'exportTemplet'; -INSERT INTO `zt_grouppriv` (SELECT `group`,`module`,'reply' FROM `zt_grouppriv` WHERE `module` = 'feedback' AND `method` = 'comment'); -INSERT INTO `zt_grouppriv` (SELECT `group`,`module`,'ask' FROM `zt_grouppriv` WHERE `module` = 'feedback' AND `method` = 'comment'); +REPLACE INTO `zt_grouppriv` (SELECT `group`,`module`,'reply' FROM `zt_grouppriv` WHERE `module` = 'feedback' AND `method` = 'comment'); +REPLACE INTO `zt_grouppriv` (SELECT `group`,`module`,'ask' FROM `zt_grouppriv` WHERE `module` = 'feedback' AND `method` = 'comment'); CREATE TABLE `zt_chart` ( `id` mediumint NOT NULL AUTO_INCREMENT, diff --git a/db/update17.6.2.sql b/db/update17.6.2.sql index 3217d8b7db..7807d1bbcd 100644 --- a/db/update17.6.2.sql +++ b/db/update17.6.2.sql @@ -62,10 +62,10 @@ CREATE TABLE `zt_ticketrelation` ( ALTER TABLE `zt_product` ADD `ticket` varchar(30) NOT NULL AFTER `feedback`; ALTER TABLE `zt_kanban` ADD `colWidth` smallint(4) NOT NULL DEFAULT '264' AFTER `fluidBoard`; -ALTER TABLE `zt_kanban` ADD `minColWidth` smallint(4) NOT NULL DEFAULT '180' AFTER `colWidth`; +ALTER TABLE `zt_kanban` ADD `minColWidth` smallint(4) NOT NULL DEFAULT '200' AFTER `colWidth`; ALTER TABLE `zt_kanban` ADD `maxColWidth` smallint(4) NOT NULL DEFAULT '384' AFTER `minColWidth`; ALTER TABLE `zt_project` ADD `colWidth` smallint(4) NOT NULL DEFAULT '264' AFTER `fluidBoard`; -ALTER TABLE `zt_project` ADD `minColWidth` smallint(4) NOT NULL DEFAULT '180' AFTER `colWidth`; +ALTER TABLE `zt_project` ADD `minColWidth` smallint(4) NOT NULL DEFAULT '200' AFTER `colWidth`; ALTER TABLE `zt_project` ADD `maxColWidth` smallint(4) NOT NULL DEFAULT '384' AFTER `minColWidth`; REPLACE INTO `zt_config` (`owner`, `module`, `section`, `key`, `value`) VALUES ('system', 'common', 'global', 'syncProduct', '{"feedback":{},"ticket":{}}'); diff --git a/db/update17.8.sql b/db/update17.8.sql index 39352e2349..e1887d15ce 100644 --- a/db/update17.8.sql +++ b/db/update17.8.sql @@ -1,46 +1,42 @@ -ALTER TABLE `zt_chart` ADD `group` mediumint(8) unsigned NOT NULL default '0' AFTER `type`; -ALTER TABLE `zt_chart` MODIFY COLUMN `desc` text NOT NULL; -ALTER TABLE `zt_chart` ADD `editedBy` varchar(30) NOT NULL AFTER `createdDate`; -ALTER TABLE `zt_chart` ADD `editedDate` datetime NOT NULL AFTER `editedBy`; +ALTER TABLE `zt_product` ADD `shadow` tinyint(1) unsigned NOT NULL AFTER `code`; +ALTER TABLE `zt_project` ADD `hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1 AFTER `code`; +ALTER table `zt_project` ADD `multiple` enum('0', '1') NOT NULL DEFAULT '1' AFTER `fluidBoard`; +ALTER TABLE `zt_repo` ADD `projects` varchar(255) NOT NULL AFTER `product`; +ALTER TABLE `zt_release` CHANGE `project` `project` varchar(255) NOT NULL; +ALTER TABLE `zt_release` CHANGE `branch` `branch` varchar(255) NOT NULL; +ALTER TABLE `zt_release` CHANGE `build` `build` varchar(255) NOT NULL; +ALTER TABLE `zt_release` ADD `shadow` mediumint(8) unsigned NOT NULL DEFAULT '0' AFTER `branch`; -CREATE TABLE IF NOT EXISTS `zt_dimension` ( - `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(90) NOT NULL, - `code` varchar(45) NOT NULL, - `desc` text NOT NULL, - `createdBy` varchar(30) NOT NULL, - `createdDate` datetime NOT NULL, - `editedBy` varchar(30) NOT NULL, - `editedDate` datetime NOT NULL, - `deleted` enum('0','1') NOT NULL default '0', - PRIMARY KEY (`id`), - KEY `code` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; +CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0; -ALTER TABLE `zt_report` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; -ALTER TABLE `zt_chart` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; -ALTER TABLE `zt_dashboard` ADD `dimension` int(8) NOT NULL default 0 AFTER `name`; +REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES +('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'), +('product-progress', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u5b8c\\u6210\\u5ea6\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u5b8c\\u6210\\u5ea6\\u7d71\\u8a08\\u8868\",\"en\":\"Product Progress\"}', ',product', 'select t1.*,t2.name, (case when t1.status = \'closed\' or t1.stage = \'released\' then 1 else 0 end) as done, 1 as count from TABLE_STORY as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"count\",\"done\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"count\",\"done\"],\"percent\":{\"1\":\"1\"},\"contrast\":{\"1\":\"count\"},\"showAlone\":{\"1\":\"1\"}}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u603b\\u6570(\\u72b6\\u6001\\u662f\\u5173\\u95ed\\uff0c\\u6216\\u8005\\u7814\\u53d1\\u9636\\u6bb5\\u662f\\u53d1\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u7e3d\\u6578(\\u72c0\\u614b\\u662f\\u95dc\\u9589\\uff0c\\u6216\\u8005\\u7814\\u767c\\u968e\\u6bb5\\u662f\\u767c\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"en\":\"Number of total stories,done stories(state is closed, or stage is released), percent of completion.\"}', 'admin', '2015-07-21 15:07:48'), +('story-status', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Story Status\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u72b6\\u6001\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u72c0\\u614b\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and status distribution of stories.\"}', 'admin', '2015-07-21 15:35:38'), +('story-stage', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Story Stage\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u7814\\u53d1\\u9636\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u7814\\u767c\\u968e\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and stage distribution of stories \"}', 'admin', '2015-07-21 15:38:34'), +('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"Product Release.\"}', 'admin', '2015-07-21 16:00:52'), +('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\",\"de\":\"Task Status Report\",\"fr\":\"Task Status Report\",\"vi\":\"Task Status Report\",\"ja\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,IF(t3.multiple="1",t1.name,"") as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 11:28:33'), +('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\",\"de\":\"Task Type Report\",\"fr\":\"Task Type Report\",\"vi\":\"Task Type Report\",\"ja\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:06:46'), +('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\",\"de\":\"Task Assign Report\",\"fr\":\"Task Assign Report\",\"vi\":\"Task Assign Report\",\"ja\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,IF(t4.multiple="1",t1.name,"") as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:13:28'), +('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\",\"de\":\"Task Finish Report\",\"fr\":\"Task Finish Report\",\"vi\":\"Task Finish Report\",\"ja\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:16:21'), +('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\",\"de\":\"Project Invest Report\",\"fr\":\"Project Invest Report\",\"vi\":\"Project Invest Report\",\"ja\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,IF(t5.multiple="1",t1.name,"") as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 16:37:38'), +('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\",\"de\":\"Project Story Status\",\"fr\":\"Project Story Status\",\"vi\":\"Project Story Status\",\"ja\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:35:08'), +('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\",\"de\":\"Project Stage Report\",\"fr\":\"Project Stage Report\",\"vi\":\"Project Stage Report\",\"ja\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:38:18'), +('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\",\"de\":\"Project Bug Resolution\",\"fr\":\"Project Bug Resolution\",\"vi\":\"Project Bug Resolution\",\"ja\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:04:46'), +('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\",\"de\":\"Project Bug Status\",\"fr\":\"Project Bug Status\",\"vi\":\"Project Bug Status\",\"ja\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:48:03'), +('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\",\"de\":\"Project Bug Opened\",\"fr\":\"Project Bug Opened\",\"vi\":\"Project Bug Opened\",\"ja\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:08:10'), +('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\",\"de\":\"Project Bug Resolve\",\"fr\":\"Project Bug Resolve\",\"vi\":\"Project Bug Resolve\",\"ja\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:13:16'), +('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\",\"de\":\"Project Bug Assign\",\"fr\":\"Project Bug Assign\",\"vi\":\"Project Bug Assign\",\"ja\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:29:10'), +('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\",\"de\":\"Project Quality Report\",\"fr\":\"Project Quality Report\",\"vi\":\"Project Quality Report\",\"ja\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,IF(t5.multiple="1",t1.name,"") as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 17:03:10'), +('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bugs.\"}', 'admin', '2015-07-24 13:48:22'), +('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"Serious Bug (severity is less than 3).\"}', 'admin', '2015-07-23 17:17:40'), +('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"The summary of user login times.\"}', 'admin', '2015-07-24 14:28:11'), +('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having dept=$dept order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"Effort summary of users.\"}', 'admin', '2015-07-27 13:53:32'), +('company-dynamic', '{\"zh-cn\":\"\\u516c\\u53f8\\u52a8\\u6001\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u516c\\u53f8\\u52d5\\u614b\\u532f\\u7e3d\\u8868\",\"en\":\"Company Dynamics\"}', ',staff', 'select t1.day,t2.userlogin,t3.consumed,t4.storyopen,t5.storyclose,t6.taskopen,t7.taskfinish,t8.bugopen,t9.bugresolve,t1.actions from ztv_dayactions as t1 left join ztv_dayuserlogin as t2 on t1.day=t2.day left join ztv_dayeffort as t3 on t1.day=t3.date left join ztv_daystoryopen as t4 on t1.day=t4.day left join ztv_daystoryclose as t5 on t1.day=t5.day left join ztv_daytaskopen as t6 on t1.day=t6.day left join ztv_daytaskfinish as t7 on t1.day=t7.day left join ztv_daybugopen as t8 on t1.day=t8.day left join ztv_daybugresolve as t9 on t1.day=t9.day where if($startDate=\'\',1,t1.day>=$startDate) and if($endDate=\'\',1,t1.day<=$endDate)', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"day\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"userlogin\":{\"zh-cn\":\"\\u767b\\u5f55\\u6b21\\u6570\",\"zh-tw\":\"\\u767b\\u9304\\u6b21\\u6578\",\"en\":\"Login\"},\"consumed\":{\"zh-cn\":\"\\u65e5\\u5fd7\\u5de5\\u65f6\",\"zh-tw\":\"\\u65e5\\u8a8c\\u5de5\\u6642\",\"en\":\"Cost(h)\"},\"storyopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6578\",\"en\":\"Open Story\"},\"storyclose\":{\"zh-cn\":\"\\u5173\\u95ed\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u95dc\\u9589\\u9700\\u6c42\\u6578\",\"en\":\"Closed Story\"},\"taskopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u4efb\\u52d9\\u6578\",\"en\":\"Open Task\"},\"taskfinish\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u4efb\\u52d9\\u6578\",\"en\":\"Finished Task\"},\"bugopen\":{\"zh-cn\":\"\\u65b0\\u589eBug\\u6570\",\"zh-tw\":\"\\u65b0\\u589eBug\\u6578\",\"en\":\"Open Bug\"},\"bugresolve\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6578\",\"en\":\"Resolved bug\"},\"actions\":{\"zh-cn\":\"\\u52a8\\u6001\\u6570\",\"zh-tw\":\"\\u52d5\\u614b\\u6578\",\"en\":\"Dynamics\"}}', '{\"group1\":\"day\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"]}', 2, '{\"zh-cn\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u4e2a\\u65f6\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u5e94\\u7684\\u6570\\u636e\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u5f55\\u6b21\\u6570\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u5fd7\\u5de5\\u65f6\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6570\\u30024. \\u6bcf\\u5929\\u5173\\u95ed\\u7684\\u9700\\u6c42\\u6570\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52a1\\u6570\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6570\\u30028. \\u6bcf\\u5929\\u89e3\\u51b3\\u7684Bug\\u6570\\u30029. \\u6bcf\\u5929\\u7684\\u52a8\\u6001\\u6570\\u3002\",\"zh-tw\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u500b\\u6642\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u61c9\\u7684\\u6578\\u64da\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u9304\\u6b21\\u6578\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u8a8c\\u5de5\\u6642\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6578\\u30024. \\u6bcf\\u5929\\u95dc\\u9589\\u7684\\u9700\\u6c42\\u6578\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52d9\\u6578\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6578\\u30028. \\u6bcf\\u5929\\u89e3\\u6c7a\\u7684Bug\\u6578\\u30029. \\u6bcf\\u5929\\u7684\\u52d5\\u614b\\u6578\\u3002\",\"en\":\"The summary of company dynamics\"}', 'admin', '2015-07-27 15:09:42'), +('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"percentage:self resolved \\/ all resolved\"}', 'admin', '2015-07-24 13:44:25'), +('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\",\"de\":\"Project Progress Report\",\"fr\":\"Project Progress Report\",\"vi\":\"Project Progress Report\",\"ja\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,IF(t4.multiple="1",t1.name,"") as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\',1,t1.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 14:03:06'), +('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\",\"de\":\"Project Bug Type\",\"fr\":\"Project Bug Type\",\"vi\":\"Project Bug Type\",\"ja\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-08-04 13:54:22'); -UPDATE `zt_chart` SET `dimension` = 1 WHERE `dimension` = 0; -UPDATE `zt_report` SET `dimension` = 1 WHERE `dimension` = 0; -UPDATE `zt_dashboard` SET `dimension` = 1 WHERE `dimension` = 0; +ALTER TABLE `zt_project` ADD `division` enum('0','1') COLLATE 'utf8_general_ci' NOT NULL DEFAULT '1' AFTER `vision`; -CREATE TABLE IF NOT EXISTS `zt_dataview` ( - `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, - `group` mediumint(8) unsigned NOT NULL, - `name` varchar(155) NOT NULL, - `code` varchar(50) NOT NULL, - `view` varchar(57) NOT NULL, - `sql` text NOT NULL, - `fields` mediumtext NOT NULL, - `objects` mediumtext NOT NULL, - `createdBy` varchar(30) NOT NULL, - `createdDate` datetime NOT NULL, - `editedBy` varchar(30) NOT NULL, - `editedDate` datetime NOT NULL, - `deleted` tinyint NOT NULL DEFAULT '0', - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - -UPDATE `zt_grouppriv` SET `module` = 'dataview' WHERE `module` = 'dataset' AND `method` in ('create', 'browse', 'edit', 'delete'); -DELETE FROM `zt_grouppriv` WHERE `module` = 'dataset' AND `method` = 'view'; +ALTER TABLE `zt_build` ADD `builds` varchar(255) NOT NULL AFTER `execution`; diff --git a/db/updateproinstall.sql b/db/updateproinstall.sql index d393bed109..45f00324cf 100644 --- a/db/updateproinstall.sql +++ b/db/updateproinstall.sql @@ -487,6 +487,7 @@ CREATE OR REPLACE VIEW `ztv_daytaskfinish` AS select count(*) AS `taskfinish`,le CREATE OR REPLACE VIEW `ztv_daybugopen` AS select count(*) AS `bugopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10); CREATE OR REPLACE VIEW `ztv_daybugresolve` AS select count(*) AS `bugresolve`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'resolved')) group by left(`zt_action`.`date`,10); CREATE OR REPLACE VIEW `ztv_dayactions` AS select count(*) AS `actions`,left(`zt_action`.`date`,10) AS `day` from `zt_action` group by left(`zt_action`.`date`,10); +CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0; REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES ('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'), diff --git a/db/zentao.sql b/db/zentao.sql index 3eaa698ec9..2ba81a4a70 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -323,6 +323,7 @@ CREATE TABLE IF NOT EXISTS `zt_build` ( `product` mediumint(8) unsigned NOT NULL default '0', `branch` mediumint(8) unsigned NOT NULL default '0', `execution` mediumint(8) unsigned NOT NULL default '0', + `builds` varchar(255) NOT NULL, `name` char(150) NOT NULL, `scmPath` char(255) NOT NULL, `filePath` char(255) NOT NULL, @@ -1102,8 +1103,9 @@ CREATE TABLE IF NOT EXISTS `zt_planstory` ( CREATE TABLE IF NOT EXISTS `zt_product` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `program` mediumint(8) unsigned NOT NULL, - `name` varchar(90) NOT NULL, + `name` varchar(110) NOT NULL, `code` varchar(45) NOT NULL, + `shadow` tinyint(1) unsigned NOT NULL, `bind` enum('0','1') NOT NULL DEFAULT '0', `line` mediumint(8) NOT NULL, `type` varchar(30) NOT NULL default 'normal', @@ -1165,6 +1167,7 @@ CREATE TABLE IF NOT EXISTS `zt_project` ( `grade` tinyint(3) unsigned NOT NULL, `name` varchar(90) NOT NULL, `code` varchar(45) NOT NULL, + `hasProduct` tinyint(1) unsigned NOT NULL DEFAULT 1, `begin` date NOT NULL, `end` date NOT NULL, `realBegan` date NOT NULL, @@ -1197,8 +1200,10 @@ CREATE TABLE IF NOT EXISTS `zt_project` ( `whitelist` text NOT NULL, `order` mediumint(8) unsigned NOT NULL, `vision` varchar(10) NOT NULL DEFAULT 'rnd', + `division` enum('0','1') NOT NULL DEFAULT '1', `displayCards` smallint(6) NOT NULL default '0', `fluidBoard` enum('0','1') NOT NULL DEFAULT '0', + `multiple` enum('0','1') NOT NULL DEFAULT '1', `colWidth` smallint(4) NOT NULL DEFAULT '264', `minColWidth` smallint(4) NOT NULL DEFAULT '200', `maxColWidth` smallint(4) NOT NULL DEFAULT '384', @@ -1280,10 +1285,11 @@ CREATE TABLE IF NOT EXISTS `zt_relation` ( -- DROP TABLE IF EXISTS `zt_release`; CREATE TABLE IF NOT EXISTS `zt_release` ( `id` mediumint(8) unsigned NOT NULL auto_increment, - `project` mediumint(8) unsigned NOT NULL, + `project` varchar(255) NOT NULL, `product` mediumint(8) unsigned NOT NULL default '0', - `branch` mediumint(8) unsigned NOT NULL default '0', - `build` mediumint(8) unsigned NOT NULL, + `branch` varchar(255) NOT NULL default '0', + `shadow` mediumint(8) unsigned NOT NULL default '0', + `build` varchar(255) NOT NULL, `name` varchar(255) NOT NULL default '', `marker` enum('0','1') NOT NULL default '0', `date` date NOT NULL, @@ -1306,6 +1312,7 @@ CREATE TABLE IF NOT EXISTS `zt_release` ( CREATE TABLE IF NOT EXISTS `zt_repo` ( `id` mediumint(9) NOT NULL AUTO_INCREMENT, `product` varchar(255) NOT NULL, + `projects` varchar(255) NOT NULL, `name` varchar(255) NOT NULL, `path` varchar(255) NOT NULL, `prefix` varchar(100) NOT NULL, @@ -6337,6 +6344,7 @@ CREATE TABLE IF NOT EXISTS `zt_im_chat` ( `mergedChats` text NOT NULL DEFAULT '', `adminInvite` enum('0','1') NOT NULL DEFAULT '0', `avatar` text NOT NULL DEFAULT '', + `archiveDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `gid` (`gid`), KEY `name` (`name`), @@ -7016,33 +7024,36 @@ CREATE OR REPLACE VIEW `ztv_daytaskfinish` AS select count(*) AS `taskfinish`,le CREATE OR REPLACE VIEW `ztv_daybugopen` AS select count(*) AS `bugopen`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'opened')) group by left(`zt_action`.`date`,10); CREATE OR REPLACE VIEW `ztv_daybugresolve` AS select count(*) AS `bugresolve`,left(`zt_action`.`date`,10) AS `day` from `zt_action` where ((`zt_action`.`objectType` = 'bug') and (`zt_action`.`action` = 'resolved')) group by left(`zt_action`.`date`,10); CREATE OR REPLACE VIEW `ztv_dayactions` AS select count(*) AS `actions`,left(`zt_action`.`date`,10) AS `day` from `zt_action` group by left(`zt_action`.`date`,10); +CREATE OR REPLACE VIEW `ztv_normalproduct` AS SELECT * FROM `zt_product` WHERE `shadow` = 0; REPLACE INTO `zt_report` (`code`, `name`, `module`, `sql`, `vars`, `langs`, `params`, `step`, `desc`, `addedBy`, `addedDate`) VALUES +('product-invest', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u6295\\u5165\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u6295\\u5165\\u8868\",\"en\":\"Product Investment\"}', ',product', 'select t1.id,t1.name,1 as projects, round(t3.consumed,2) as consumed from TABLE_PRODUCT as t1\r\n left join TABLE_PROJECTPRODUCT as t2 on t1.id=t2.product\r\n left join ztv_projectsummary as t3 on t2.project=t3.project\r\n left join TABLE_PROJECT as t4 on t2.project=t4.id\r\n left join TABLE_PROGRAM as t5 on t1.program=t5.id\r\n where t1.deleted=\'0\' and t4.deleted=\'0\' and t4.type=\'project\'\r\norder by t5.`order` asc, t1.line desc, t1.`order` asc', '', '{\"projects\":{\"zh-cn\":\"\\u9879\\u76ee\\u6570\",\"zh-tw\":\"\\u9879\\u76ee\\u6570\",\"en\":\"Projects\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"projects\",\"consumed\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"projects\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u6bcf\\u4e2a\\u4ea7\\u54c1\\u7684\\u9879\\u76ee\\u603b\\u6570\\uff0c\\u5df2\\u7ecf\\u6d88\\u8017\\u7684\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u6bcf\\u500b\\u7522\\u54c1\\u7684\\u9805\\u76ee\\u7e3d\\u6578\\uff0c\\u5df2\\u7d93\\u6d88\\u8017\\u7684\\u5de5\\u6642\\u3002\",\"en\":\"Number of projects and consumed hours.\"}', 'admin', '2015-07-20 14:21:30'), ('product-progress', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u5b8c\\u6210\\u5ea6\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u5b8c\\u6210\\u5ea6\\u7d71\\u8a08\\u8868\",\"en\":\"Product Progress\"}', ',product', 'select t1.*,t2.name, (case when t1.status = \'closed\' or t1.stage = \'released\' then 1 else 0 end) as done, 1 as count from TABLE_STORY as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"count\",\"done\"],\"reportType\":[\"sum\",\"sum\"],\"sumAppend\":[\"count\",\"done\"],\"percent\":{\"1\":\"1\"},\"contrast\":{\"1\":\"count\"},\"showAlone\":{\"1\":\"1\"}}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u603b\\u6570(\\u72b6\\u6001\\u662f\\u5173\\u95ed\\uff0c\\u6216\\u8005\\u7814\\u53d1\\u9636\\u6bb5\\u662f\\u53d1\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u7e3d\\u6578(\\u72c0\\u614b\\u662f\\u95dc\\u9589\\uff0c\\u6216\\u8005\\u7814\\u767c\\u968e\\u6bb5\\u662f\\u767c\\u5e03)\\uff0c\\u5b8c\\u6210\\u7684\\u767e\\u5206\\u6bd4\\u3002\",\"en\":\"Number of total stories,done stories(state is closed, or stage is released), percent of completion.\"}', 'admin', '2015-07-21 15:07:48'), ('story-status', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Story Status\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u72b6\\u6001\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u72c0\\u614b\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and status distribution of stories.\"}', 'admin', '2015-07-21 15:35:38'), ('story-stage', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Story Stage\"}', ',product', 'select t1.*,t2.name from TABLE_STORY as t1\r\n left join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u7814\\u53d1\\u9636\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u7814\\u767c\\u968e\\u6bb5\\u7684\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Total number and stage distribution of stories \"}', 'admin', '2015-07-21 15:38:34'), -('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"List the number of releases by product.\"}', 'admin', '2015-07-21 16:00:52'), -('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,t1.name as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Based on the status distribution of statistical tasks.\"}', 'admin', '2015-07-22 11:28:33'), -('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,t1.name as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the type of statistical task distribution.\"}', 'admin', '2015-07-22 13:06:46'), -('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,t1.name as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics task assigned to the distribution.\"}', 'admin', '2015-07-22 13:13:28'), -('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,t1.name as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics task completion distribution.\"}', 'admin', '2015-07-22 13:16:21'), -('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,t1.name as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"Listed by project: number of tasks, number of demands, number of people, total hours consumed.\"}', 'admin', '2015-07-22 16:37:38'), -('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,t2.name as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics requirement status distribution.\"}', 'admin', '2015-07-23 15:35:08'), -('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,t2.name as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics demand stage distribution.\"}', 'admin', '2015-07-23 15:38:18'), -('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Solution distribution of statistical bugs by project.\"}', 'admin', '2015-07-23 16:04:46'), -('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Statistics Bug status distribution by project.\"}', 'admin', '2015-07-23 15:48:03'), -('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Bug creator distribution by project.\"}', 'admin', '2015-07-23 16:08:10'), -('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Bug solver distribution by project.\"}', 'admin', '2015-07-23 16:13:16'), -('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"According to the project statistics Bug assigned to the distribution.\"}', 'admin', '2015-07-23 16:29:10'), -('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,t1.name as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"List total requirements, completed requirements, total tasks, completed tasks, bugs, solved bugs, bugs\\/requirements, bugs\\/tasks, critical bugs (severity not greater than 3) for the project.\"}', 'admin', '2015-07-23 17:03:10'), -('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"The distribution of Bug types by product statistics.\"}', 'admin', '2015-07-24 13:48:22'), -('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"List requirements for the product, total requirements completed, number of bugs, number of bugs solved, bugs\\/requirements, number of significant bugs (severity not greater than 3).\"}', 'admin', '2015-07-23 17:17:40'), -('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"Realize the employee login times statistics report, counting the login times of each person and the total number by day.\"}', 'admin', '2015-07-24 14:28:11'), -('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having if($dept=\'0\', dept=$dept,dept in (select id from TABLE_DEPT where concat(\',\',path,\',\') like concat(\'%,\',$dept,\',%\'))) order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"},\"account\":{\"zh-cn\":\"\\u767b\\u8bb0\\u4eba\",\"zh-tw\":\"\\u767b\\u8bb0\\u4eba\",\"en\":\"Owner\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"You can view the logs of a certain period by department.\"}', 'admin', '2015-07-27 13:53:32'), +('product-release', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u53d1\\u5e03\\u6570\\u91cf\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u767c\\u5e03\\u6578\\u91cf\\u7d71\\u8a08\\u8868\",\"en\":\"Product Release\"}', ',product', 'select t2.name, 1 as releases from TABLE_RELEASE as t1 \r\nleft join TABLE_PRODUCT as t2 on t1.product=t2.id \r\nleft join TABLE_PROGRAM as t3 on t2.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t2.line desc, t2.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"releases\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"releases\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u5217\\u51fa\\u53d1\\u5e03\\u7684\\u6570\\u91cf\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u5217\\u51fa\\u767c\\u5e03\\u7684\\u6578\\u91cf\\u3002\",\"en\":\"Product Release.\"}', 'admin', '2015-07-21 16:00:52'), +('task-status', '{\"zh-cn\":\"\\u4efb\\u52a1\\u72b6\\u6001\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u72c0\\u614b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Status Report\",\"de\":\"Task Status Report\",\"fr\":\"Task Status Report\",\"vi\":\"Task Status Report\",\"ja\":\"Task Status Report\"}', ',project', 'select t1.id,t3.name as project,t1.name,t2.status,IF(t3.multiple="1",t1.name,"") as execution,t2.id as taskID, t1.status as projectstatus, (case when t2.deadline < CURDATE() and t2.deadline != \'0000-00-00\' and t2.status != \'closed\' and t2.status != \'done\' and t2.status != \'cancel\' then 1 else 0 end) as timeout from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u6267\\u884c\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u57f7\\u884c\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 11:28:33'), +('task-type', '{\"zh-cn\":\"\\u4efb\\u52a1\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u4efb\\u52d9\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Task Type Report\",\"de\":\"Task Type Report\",\"fr\":\"Task Type Report\",\"vi\":\"Task Type Report\",\"ja\":\"Task Type Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.type,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:06:46'), +('task-assign', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u6307\\u6d3e\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u6307\\u6d3e\\u7d71\\u8a08\\u8868\",\"en\":\"Task Assign Report\",\"de\":\"Task Assign Report\",\"fr\":\"Task Assign Report\",\"vi\":\"Task Assign Report\",\"ja\":\"Task Assign Report\"}', ',project', 'select t1.id,t4.name as project,IF(t4.multiple="1",t1.name,"") as execution,if(t3.account is not null, t3.account,t2.assignedTo) as assignedTo,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1\r\n left join TABLE_TASK as t2 on t1.id=t2.execution\r\n left join TABLE_TEAM as t3 on t3.type=\'task\' && t3.root=t2.id \r\nleft join TABLE_PROJECT as t4 on t1.project=t4.id\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and if($project=\'\',1,t4.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"assignedTo\":{\"zh-cn\":\"\\u6307\\u6d3e\\u7ed9\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:13:28'), +('task-finish', '{\"zh-cn\":\"\\u9879\\u76ee\\u4efb\\u52a1\\u5b8c\\u6210\\u8005\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u4efb\\u52d9\\u5b8c\\u6210\\u8005\\u7d71\\u8a08\\u8868\",\"en\":\"Task Finish Report\",\"de\":\"Task Finish Report\",\"fr\":\"Task Finish Report\",\"vi\":\"Task Finish Report\",\"ja\":\"Task Finish Report\"}', ',project', 'select t1.id,t3.name as project,IF(t3.multiple="1",t1.name,"") as execution,t2.finishedBy,t2.id as taskID, t1.status as projectstatus from TABLE_EXECUTION as t1 \r\nleft join TABLE_TASK as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t1.project=t3.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t2.deleted=\'0\' and t2.finishedBy!=\'\' and if($project=\'\',1,t3.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"finishedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u4efb\\u52a1\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u4efb\\u52d9\\u7684\\u5b8c\\u6210\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 13:16:21'), +('project-invest', '{\"zh-cn\":\"\\u9879\\u76ee\\u6295\\u5165\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u6295\\u5165\\u7d71\\u8a08\\u8868\",\"en\":\"Project Invest Report\",\"de\":\"Project Invest Report\",\"fr\":\"Project Invest Report\",\"vi\":\"Project Invest Report\",\"ja\":\"Project Invest Report\"}', ',project', 'select t1.id,t5.name as project,IF(t5.multiple="1",t1.name,"") as execution,CONCAT(t1.begin,\' ~ \',t1.end) as timeLimit,t2.teams,t3.stories,round(t4.consumed,1) as consumed,t4.number, t1.status as projectstatus \r\nfrom TABLE_EXECUTION as t1\r\n left join ztv_projectteams as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\n left join ztv_executionsummary as t4 on t1.id=t4.execution \r\nleft join TABLE_PROJECT as t5 on t1.project=t5.id \r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t5.id=$project) and if($status=\'\',1,t1.status=$status) and if($beginDate=\'\',1,t1.begin>=$beginDate) and if($endDate=\'\',1,t1.end<=$endDate)', '{\"varName\":[\"project\",\"status\",\"beginDate\",\"endDate\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\",\"\\u6267\\u884c\\u8d77\\u59cb\\u65e5\\u671f\",\"\\u6267\\u884c\\u7ed3\\u675f\\u65e5\\u671f\"],\"requestType\":[\"select\",\"select\",\"date\",\"date\"],\"selectList\":[\"project\",\"project.status\",\"user\",\"user\"],\"default\":[\"\",\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"timeLimit\":{\"zh-cn\":\"\\u5de5\\u671f\"},\"teams\":{\"zh-cn\":\"\\u4eba\\u6570\"},\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\"},\"consumed\":{\"zh-cn\":\"\\u603b\\u6d88\\u8017\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"number\",\"stories\",\"teams\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"number\",\"stories\",\"teams\",\"consumed\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52a1\\u6570\\uff0c\\u9700\\u6c42\\u6570\\uff0c\\u4eba\\u6570\\uff0c\\u603b\\u6d88\\u8017\\u5de5\\u65f6\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u5217\\u51fa\\uff1a\\u4efb\\u52d9\\u6578\\uff0c\\u9700\\u6c42\\u6578\\uff0c\\u4eba\\u6578\\uff0c\\u7e3d\\u6d88\\u8017\\u5de5\\u6642\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-22 16:37:38'), +('projectstory-status', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Story Status\",\"de\":\"Project Story Status\",\"fr\":\"Project Story Status\",\"vi\":\"Project Story Status\",\"ja\":\"Project Story Status\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.status from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:35:08'), +('project-stage', '{\"zh-cn\":\"\\u9879\\u76ee\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u8868\",\"en\":\"Project Stage Report\",\"de\":\"Project Stage Report\",\"fr\":\"Project Stage Report\",\"vi\":\"Project Stage Report\",\"ja\":\"Project Stage Report\"}', ',project', 'select t2.id, t4.name as project,IF(t4.multiple="1",t2.name,"") as execution,t3.stage from TABLE_PROJECTSTORY as t1 \r\nleft join TABLE_EXECUTION as t2 on t1.project=t2.id \r\nleft join TABLE_STORY as t3 on t1.story=t3.id \r\nleft join TABLE_PROJECT as t4 on t4.id=t2.project\r\nwhere t2.deleted=\'0\' and t2.type in(\'sprint\', \'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t2.id=$execution) and if($status=\'\',1,t2.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stage\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1\\u9700\\u6c42\\u9636\\u6bb5\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08\\u9700\\u6c42\\u968e\\u6bb5\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:38:18'), +('projectbug-resolution', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolution\",\"de\":\"Project Bug Resolution\",\"fr\":\"Project Bug Resolution\",\"vi\":\"Project Bug Resolution\",\"ja\":\"Project Bug Resolution\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolution from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\n where t1.deleted=\'0\' and t2.deleted=\'0\' and t2.resolution!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u65b9\\u6848\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:04:46'), +('projectbug-status', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u72b6\\u6001\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u72c0\\u614b\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Status\",\"de\":\"Project Bug Status\",\"fr\":\"Project Bug Status\",\"vi\":\"Project Bug Status\",\"ja\":\"Project Bug Status\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.status from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\' \' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"status\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u72b6\\u6001\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u72c0\\u614b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 15:48:03'), +('projectbug-opened', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Opened\",\"de\":\"Project Bug Opened\",\"fr\":\"Project Bug Opened\",\"vi\":\"Project Bug Opened\",\"ja\":\"Project Bug Opened\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.openedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"openedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u521b\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u5275\\u5efa\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:08:10'), +('projectbug-resolve', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Resolve\",\"de\":\"Project Bug Resolve\",\"fr\":\"Project Bug Resolve\",\"vi\":\"Project Bug Resolve\",\"ja\":\"Project Bug Resolve\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.resolvedBy from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and t2.status!=\'active\' and t2.resolvedBy!=\'\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"resolvedBy\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u89e3\\u51b3\\u8005\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u89e3\\u6c7a\\u8005\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:13:16'), +('projectbug-assign', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u8868\",\"en\":\"Project Bug Assign\",\"de\":\"Project Bug Assign\",\"fr\":\"Project Bug Assign\",\"vi\":\"Project Bug Assign\",\"ja\":\"Project Bug Assign\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t1.id as bugID,t2.assignedTo from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution \r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' having bugID!=\'\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"assignedTo\"],\"isUser\":{\"reportField\":[[\"1\"]]},\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u6307\\u6d3e\\u7ed9\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u6307\\u6d3e\\u7d66\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 16:29:10'), +('project-quality', '{\"zh-cn\":\"\\u9879\\u76ee\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u8cea\\u91cf\\u8868\",\"en\":\"Project Quality Report\",\"de\":\"Project Quality Report\",\"fr\":\"Project Quality Report\",\"vi\":\"Project Quality Report\",\"ja\":\"Project Quality Report\"}', ',project', 'select t1.id, t5.name as project,t5.id,IF(t5.multiple="1",t1.name,"") as execution,t2.stories,(t2.stories-t2.undone) as doneStory,t3.number,(t3.number-t3.undone) as doneTask,t4.bugs,t4.resolutions, round(t4.bugs/(t2.stories-t2.undone),2) as bugthanstory,round(t4.bugs/(t3.number-t3.undone),2) as bugthantask,t4.seriousBugs from TABLE_EXECUTION as t1 \r\nleft join ztv_projectstories as t2 on t1.id=t2.execution\r\nleft join ztv_executionsummary as t3 on t1.id=t3.execution\r\nleft join ztv_projectbugs as t4 on t1.id=t4.execution\r\nleft join TABLE_PROJECT as t5 on t5.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and t1.grade=\'1\' and if($project=\'\',1,t5.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\"},\"number\":{\"zh-cn\":\"\\u4efb\\u52a1\\u603b\\u6570\"},\"doneTask\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\"},\"bugthantask\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u4efb\\u52a1\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdBug\\u6bd4\\u7387\"},\"project\":{\"zh-cn\":\"\\u9879\\u76ee\\u540d\\u79f0\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"number\",\"doneTask\",\"bugs\",\"resolutions\",\"bugthanstory\",\"bugthantask\",\"seriousBugs\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u603b\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52a1\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3\\uff09\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u7e3d\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0cBug\\/\\u4efb\\u52d9\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3\\uff09\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 17:03:10'), +('productbug-type', '{\"zh-cn\":\"\\u4ea7\\u54c1Bug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u7522\\u54c1Bug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Bug Type of Product\"}', ',product,test', 'select t1.id,t1.name,t2.id as bugID,t2.type from TABLE_PRODUCT as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.product \r\nleft join TABLE_PROGRAM as t3 on t1.program=t3.id \r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\'\r\norder by t3.`order` asc, t1.line desc, t1.`order` asc', '', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u4ea7\\u54c1\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u7522\\u54c1\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bugs.\"}', 'admin', '2015-07-24 13:48:22'), +('product-quality', '{\"zh-cn\":\"\\u4ea7\\u54c1\\u8d28\\u91cf\\u8868\",\"zh-tw\":\"\\u7522\\u54c1\\u8cea\\u91cf\\u8868\",\"en\":\"Product Quality\"}', ',product', 'select t1.id,t1.name,t2.stories,(t2.stories-t2.undone) as doneStory,t3.bugs,t3.resolutions,round(t3.bugs/(t2.stories-t2.undone),2) as bugthanstory,t3.seriousBugs from TABLE_PRODUCT as t1 \r\nleft join ztv_productstories as t2 on t1.id=t2.product \r\nleft join ztv_productbugs as t3 on t1.id=t3.product \r\nleft join TABLE_PROGRAM as t4 on t1.program=t4.id \r\nwhere t1.deleted=\'0\'\r\norder by t4.`order` asc, t1.line desc, t1.`order` asc', '', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u603b\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u603b\\u6570\",\"en\":\"Stories\"},\"doneStory\":{\"zh-cn\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u9700\\u6c42\\u6570\",\"en\":\"Finished Stories\"},\"bugs\":{\"zh-cn\":\"Bug\\u6570\",\"zh-tw\":\"Bug\\u6570\",\"en\":\"Bugs\"},\"resolutions\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6570\",\"en\":\"Solved Bugs\"},\"bugthanstory\":{\"zh-cn\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"zh-tw\":\"Bug\\/\\u5b8c\\u6210\\u9700\\u6c42\",\"en\":\"Bug\\/Finished Story\"},\"seriousBugs\":{\"zh-cn\":\"\\u91cd\\u8981Bug\\u6570\",\"zh-tw\":\"\\u91cd\\u8981Bug\\u6570\",\"en\":\"Serious Bugs\"},\"seriousBugsPercent\":{\"zh-cn\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"zh-tw\":\"\\u4e25\\u91cdbug\\u6bd4\\u7387\",\"en\":\"Serious Bugs %\"}}', '{\"group1\":\"name\",\"group2\":\"\",\"reportField\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"doneStory\",\"bugs\",\"resolutions\",\"bugthanstory\",\"seriousBugs\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"bugs\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u4ea7\\u54c1\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u603b\\u6570\\uff0cBug\\u6570\\uff0c\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6570\\u91cf(\\u4e25\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u4e8e3)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u7522\\u54c1\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u5b8c\\u6210\\u7684\\u9700\\u6c42\\u7e3d\\u6578\\uff0cBug\\u6578\\uff0c\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0cBug\\/\\u9700\\u6c42\\uff0c\\u91cd\\u8981Bug\\u6578\\u91cf(\\u56b4\\u91cd\\u7a0b\\u5ea6\\u4e0d\\u5927\\u65bc3)\\u3002\",\"en\":\"Serious Bug (severity is less than 3).\"}', 'admin', '2015-07-23 17:17:40'), +('user-login', '{\"zh-cn\":\"\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u8868\",\"en\":\"Login Times\"}', ',staff', 'select actor,LEFT(`date`,10) as `day` from TABLE_ACTION where `action`=\'login\' and if($startDate=\'\',1,`date`>=$startDate) and if($endDate=\'\',1,`date`<=$endDate) order by `date` asc, actor asc', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"actor\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"day\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5b9e\\u73b0\\u5458\\u5de5\\u767b\\u5f55\\u6b21\\u6570\\u7edf\\u8ba1\\u62a5\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7edf\\u8ba1\\u6bcf\\u5929\\u6bcf\\u4e2a\\u4eba\\u7684\\u767b\\u5f55\\u6b21\\u6570\\uff0c\\u4ee5\\u53ca\\u603b\\u6570\\u3002\",\"zh-tw\":\"\\u5be6\\u73fe\\u54e1\\u5de5\\u767b\\u9304\\u6b21\\u6578\\u7d71\\u8a08\\u5831\\u8868\\uff0c\\u6309\\u7167\\u5929\\u7d71\\u8a08\\u6bcf\\u5929\\u6bcf\\u500b\\u4eba\\u7684\\u767b\\u9304\\u6b21\\u6578\\uff0c\\u4ee5\\u53ca\\u7e3d\\u6578\\u3002\",\"en\":\"The summary of user login times.\"}', 'admin', '2015-07-24 14:28:11'), +('effort', '{\"zh-cn\":\"\\u65e5\\u5fd7\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u65e5\\u8a8c\\u532f\\u7e3d\\u8868\",\"en\":\"Effort Summary\"}', ',staff', 'select t1.account,t1.consumed,t1.`date`,if($dept=\'0\',0,t2.dept) as dept from TABLE_EFFORT as t1 left join TABLE_USER as t2 on t1.account=t2.account where t1.`deleted`=\'0\' and if($startDate=\'\',1,t1.`date`>=$startDate) and if($endDate=\'\',1,t1.`date`<=$endDate) having dept=$dept order by `date` asc', '{\"varName\":[\"dept\",\"startDate\",\"endDate\"],\"showName\":[\"\\u90e8\\u95e8\",\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"dept\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"date\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"consumed\":{\"zh-cn\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost\"}}', '{\"group1\":\"account\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"date\"],\"reportType\":[\"sum\"],\"sumAppend\":[\"consumed\"]}', 2, '{\"zh-cn\":\"\\u67e5\\u770b\\u67d0\\u4e2a\\u65f6\\u95f4\\u6bb5\\u5185\\u7684\\u65e5\\u5fd7\\u60c5\\u51b5\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u95e8\\u9009\\u62e9\\u3002\",\"zh-tw\":\"\\u67e5\\u770b\\u67d0\\u500b\\u6642\\u9593\\u6bb5\\u5167\\u7684\\u65e5\\u8a8c\\u60c5\\u6cc1\\uff0c\\u53ef\\u4ee5\\u6309\\u7167\\u90e8\\u9580\\u9078\\u64c7\\u3002\",\"en\":\"Effort summary of users.\"}', 'admin', '2015-07-27 13:53:32'), ('company-dynamic', '{\"zh-cn\":\"\\u516c\\u53f8\\u52a8\\u6001\\u6c47\\u603b\\u8868\",\"zh-tw\":\"\\u516c\\u53f8\\u52d5\\u614b\\u532f\\u7e3d\\u8868\",\"en\":\"Company Dynamics\"}', ',staff', 'select t1.day,t2.userlogin,t3.consumed,t4.storyopen,t5.storyclose,t6.taskopen,t7.taskfinish,t8.bugopen,t9.bugresolve,t1.actions from ztv_dayactions as t1 left join ztv_dayuserlogin as t2 on t1.day=t2.day left join ztv_dayeffort as t3 on t1.day=t3.date left join ztv_daystoryopen as t4 on t1.day=t4.day left join ztv_daystoryclose as t5 on t1.day=t5.day left join ztv_daytaskopen as t6 on t1.day=t6.day left join ztv_daytaskfinish as t7 on t1.day=t7.day left join ztv_daybugopen as t8 on t1.day=t8.day left join ztv_daybugresolve as t9 on t1.day=t9.day where if($startDate=\'\',1,t1.day>=$startDate) and if($endDate=\'\',1,t1.day<=$endDate)', '{\"varName\":[\"startDate\",\"endDate\"],\"showName\":[\"\\u8d77\\u59cb\\u65f6\\u95f4\",\"\\u7ed3\\u675f\\u65f6\\u95f4\"],\"requestType\":[\"date\",\"date\"],\"selectList\":[\"user\",\"user\"],\"default\":[\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"day\":{\"zh-cn\":\"\\u65e5\\u671f\",\"zh-tw\":\"\\u65e5\\u671f\",\"en\":\"Date\"},\"userlogin\":{\"zh-cn\":\"\\u767b\\u5f55\\u6b21\\u6570\",\"zh-tw\":\"\\u767b\\u9304\\u6b21\\u6578\",\"en\":\"Login\"},\"consumed\":{\"zh-cn\":\"\\u65e5\\u5fd7\\u5de5\\u65f6\",\"zh-tw\":\"\\u65e5\\u8a8c\\u5de5\\u6642\",\"en\":\"Cost(h)\"},\"storyopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u9700\\u6c42\\u6578\",\"en\":\"Open Story\"},\"storyclose\":{\"zh-cn\":\"\\u5173\\u95ed\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u95dc\\u9589\\u9700\\u6c42\\u6578\",\"en\":\"Closed Story\"},\"taskopen\":{\"zh-cn\":\"\\u65b0\\u589e\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u65b0\\u589e\\u4efb\\u52d9\\u6578\",\"en\":\"Open Task\"},\"taskfinish\":{\"zh-cn\":\"\\u5b8c\\u6210\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u4efb\\u52d9\\u6578\",\"en\":\"Finished Task\"},\"bugopen\":{\"zh-cn\":\"\\u65b0\\u589eBug\\u6570\",\"zh-tw\":\"\\u65b0\\u589eBug\\u6578\",\"en\":\"Open Bug\"},\"bugresolve\":{\"zh-cn\":\"\\u89e3\\u51b3Bug\\u6570\",\"zh-tw\":\"\\u89e3\\u51b3Bug\\u6578\",\"en\":\"Resolved bug\"},\"actions\":{\"zh-cn\":\"\\u52a8\\u6001\\u6570\",\"zh-tw\":\"\\u52d5\\u614b\\u6578\",\"en\":\"Dynamics\"}}', '{\"group1\":\"day\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"userlogin\",\"consumed\",\"storyopen\",\"storyclose\",\"taskopen\",\"taskfinish\",\"bugopen\",\"bugresolve\",\"actions\"]}', 2, '{\"zh-cn\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u4e2a\\u65f6\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u5e94\\u7684\\u6570\\u636e\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u5f55\\u6b21\\u6570\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u5fd7\\u5de5\\u65f6\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6570\\u30024. \\u6bcf\\u5929\\u5173\\u95ed\\u7684\\u9700\\u6c42\\u6570\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52a1\\u6570\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52a1\\u6570\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6570\\u30028. \\u6bcf\\u5929\\u89e3\\u51b3\\u7684Bug\\u6570\\u30029. \\u6bcf\\u5929\\u7684\\u52a8\\u6001\\u6570\\u3002\",\"zh-tw\":\"\\u53ef\\u4ee5\\u6307\\u5b9a\\u4e00\\u500b\\u6642\\u671f\\uff0c\\u5217\\u51fa\\u76f8\\u61c9\\u7684\\u6578\\u64da\\uff1a1. \\u6bcf\\u5929\\u7684\\u767b\\u9304\\u6b21\\u6578\\u30022. \\u6bcf\\u5929\\u7684\\u65e5\\u8a8c\\u5de5\\u6642\\u91cf\\u30023. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u9700\\u6c42\\u6578\\u30024. \\u6bcf\\u5929\\u95dc\\u9589\\u7684\\u9700\\u6c42\\u6578\\u30025. \\u6bcf\\u5929\\u65b0\\u589e\\u7684\\u4efb\\u52d9\\u6578\\u30026. \\u6bcf\\u5929\\u5b8c\\u6210\\u7684\\u4efb\\u52d9\\u6578\\u30027. \\u6bcf\\u5929\\u65b0\\u589e\\u7684Bug\\u6578\\u30028. \\u6bcf\\u5929\\u89e3\\u6c7a\\u7684Bug\\u6578\\u30029. \\u6bcf\\u5929\\u7684\\u52d5\\u614b\\u6578\\u3002\",\"en\":\"The summary of company dynamics\"}', 'admin', '2015-07-27 15:09:42'), -('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"List the total number of bugs resolved, the distribution of solutions, and the percentage (the number of bugs solved by this user to the total number of bugs resolved).\"}', 'admin', '2015-07-24 13:44:25'), -('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,t1.name as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\' or $status=\'delay\',1,t1.status=$status) and if($status=\'delay\',t1.`end` < curdate(),1)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"Project requirements, tasks, consumed hours, remaining hours, remaining demands, remaining tasks, schedule.\"}', 'admin', '2015-07-23 14:03:06'), -('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,t1.name as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"Type distribution of Bug statistics by project.\"}', 'admin', '2015-08-04 13:54:22'); +('bug-resolve', '{\"zh-cn\":\"Bug\\u89e3\\u51b3\\u8868\",\"zh-tw\":\"Bug\\u89e3\\u6c7a\\u8868\",\"en\":\"Solved Bugs\"}', ',test', 'select *,if($product=\'\',0,product) as customproduct from TABLE_BUG where deleted=\'0\' and resolution!=\'\' and if($startDate=\'\',1,resolvedDate>=$startDate) and if($endDate=\'\',1,resolvedDate<=$endDate) having customproduct=$product', '{\"varName\":[\"product\",\"startDate\",\"endDate\"],\"showName\":[\"\\u4ea7\\u54c1\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u5f00\\u59cb\",\"\\u89e3\\u51b3\\u65e5\\u671f\\u7ed3\\u675f\"],\"requestType\":[\"select\",\"date\",\"date\"],\"selectList\":[\"product\",\"user\",\"user\"],\"default\":[\"\",\"$MONTHBEGIN\",\"$MONTHEND\"]}', '{\"count\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"done\":{\"zh-cn\":\"\\u5b8c\\u6210\\u6570\",\"zh-tw\":\"\\u5b8c\\u6210\\u6570\",\"en\":\"Done\"}}', '{\"group1\":\"resolvedBy\",\"isUser\":{\"group1\":[\"1\"]},\"group2\":\"\",\"reportField\":[\"resolution\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"],\"reportTotal\":[\"1\"],\"percent\":[\"1\"],\"contrast\":[\"crystalTotal\"],\"showAlone\":[\"1\"]}', 2, '{\"zh-cn\":\"\\u5217\\u51fa\\u89e3\\u51b3\\u7684Bug\\u603b\\u6570\\uff0c\\u89e3\\u51b3\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8be5\\u7528\\u6237\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u51b3\\u7684Bug\\u7684\\u6570\\u91cf)\\u3002\",\"zh-tw\":\"\\u5217\\u51fa\\u89e3\\u6c7a\\u7684Bug\\u7e3d\\u6578\\uff0c\\u89e3\\u6c7a\\u65b9\\u6848\\u7684\\u5206\\u5e03\\uff0c\\u5360\\u7684\\u6bd4\\u4f8b\\uff08\\u8a72\\u7528\\u6236\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf\\u5360\\u6240\\u6709\\u7684\\u89e3\\u6c7a\\u7684Bug\\u7684\\u6578\\u91cf)\\u3002\",\"en\":\"percentage:self resolved \\/ all resolved\"}', 'admin', '2015-07-24 13:44:25'), +('project-progress', '{\"zh-cn\":\"\\u9879\\u76ee\\u8fdb\\u5c55\\u8868\",\"zh-tw\":\"\\u9805\\u76ee\\u9032\\u5c55\\u8868\",\"en\":\"Project Progress Report\",\"de\":\"Project Progress Report\",\"fr\":\"Project Progress Report\",\"vi\":\"Project Progress Report\",\"ja\":\"Project Progress Report\"}', ',project', 'select t1.id,t4.name as project,t4.id,IF(t4.multiple="1",t1.name,"") as execution,t1.status,t2.number as tasks,round(t2.consumed,2) as consumed,round(t2.`left`,2) as `left`,t3.stories,t2.undone as undoneTask,t3.undone as undoneStory,t2.totalReal from TABLE_EXECUTION as t1 \r\nleft join ztv_executionsummary as t2 on t1.id=t2.execution\r\nleft join ztv_projectstories as t3 on t1.id=t3.execution\r\nleft join TABLE_PROJECT as t4 on t4.id=t1.project\r\nwhere t1.deleted=\'0\' and t1.type in (\'sprint\',\'stage\') and if($project=\'\',1,t4.id=$project) and if($execution=\'\',1,t1.id=$execution) and if($status=\'\',1,t1.status=$status)', '{\"varName\":[\"project\",\"execution\",\"status\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\",\"\\u6267\\u884c\\u72b6\\u6001\"],\"requestType\":[\"select\",\"select\",\"select\"],\"selectList\":[\"project\",\"execution\",\"project.status\"],\"default\":[\"\",\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"reportType\":[\"sum\",\"sum\",\"sum\",\"sum\",\"sum\",\"sum\"],\"sumAppend\":[\"stories\",\"undoneStory\",\"tasks\",\"undoneTask\",\"left\",\"consumed\"],\"percent\":{\"5\":\"1\"},\"contrast\":{\"5\":\"totalReal\"},\"showAlone\":{\"5\":\"1\"}}', 2, '{\"zh-cn\":\"\\u9879\\u76ee\\u7684\\u9700\\u6c42\\u6570\\uff0c\\u4efb\\u52a1\\u6570\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u5de5\\u65f6\\uff0c\\u5269\\u4f59\\u9700\\u6c42\\u6570\\uff0c\\u5269\\u4f59\\u4efb\\u52a1\\u6570\\uff0c\\u8fdb\\u5ea6\\u3002\",\"zh-tw\":\"\\u9805\\u76ee\\u7684\\u9700\\u6c42\\u6578\\uff0c\\u4efb\\u52d9\\u6578\\uff0c\\u5df2\\u6d88\\u8017\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u5de5\\u6642\\uff0c\\u5269\\u9918\\u9700\\u6c42\\u6578\\uff0c\\u5269\\u9918\\u4efb\\u52d9\\u6578\\uff0c\\u9032\\u5ea6\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-07-23 14:03:06'), +('projectbug-type', '{\"zh-cn\":\"\\u9879\\u76eeBug\\u7c7b\\u578b\\u7edf\\u8ba1\\u8868\",\"zh-tw\":\"\\u9805\\u76eeBug\\u985e\\u578b\\u7d71\\u8a08\\u8868\",\"en\":\"Project Bug Type\",\"de\":\"Project Bug Type\",\"fr\":\"Project Bug Type\",\"vi\":\"Project Bug Type\",\"ja\":\"Project Bug Type\"}', ',project,test', 'select t1.id,t3.name as project,t3.id,IF(t3.multiple="1",t1.name,"") as execution,t2.id as bugID,t2.type from TABLE_EXECUTION as t1 \r\nleft join TABLE_BUG as t2 on t1.id=t2.execution\r\nleft join TABLE_PROJECT as t3 on t3.id=t1.project\r\nwhere t1.deleted=\'0\' and t2.deleted=\'0\' and if($project=\'\',1,t3.id=$project) and if($execution=\'\',1,t1.id=$execution)', '{\"varName\":[\"project\",\"execution\"],\"showName\":[\"\\u9879\\u76ee\\u5217\\u8868\",\"\\u6267\\u884c\\u5217\\u8868\"],\"requestType\":[\"select\",\"select\"],\"selectList\":[\"project\",\"execution\"],\"default\":[\"\",\"\"]}', '{\"stories\":{\"zh-cn\":\"\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u9700\\u6c42\\u6570\",\"en\":\"Stories\"},\"tasks\":{\"zh-cn\":\"\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u4efb\\u52a1\\u6570\",\"en\":\"Tasks\"},\"undoneStory\":{\"zh-cn\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u9700\\u6c42\\u6570\",\"en\":\"Undone Story\"},\"undoneTask\":{\"zh-cn\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"zh-tw\":\"\\u5269\\u4f59\\u4efb\\u52a1\\u6570\",\"en\":\"Undone Task\"},\"consumed\":{\"zh-cn\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"zh-tw\":\"\\u5df2\\u6d88\\u8017\\u5de5\\u65f6\",\"en\":\"Cost(h)\"},\"left\":{\"zh-cn\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"zh-tw\":\"\\u5269\\u4f59\\u5de5\\u65f6\",\"en\":\"Left(h)\"},\"consumedPercent\":{\"zh-cn\":\"\\u8fdb\\u5ea6\",\"zh-tw\":\"\\u8fdb\\u5ea6\",\"en\":\"Process\"},\"execution\":{\"zh-cn\":\"\\u6267\\u884c\\u540d\\u79f0\"}}', '{\"group1\":\"project\",\"group2\":\"execution\",\"reportField\":[\"type\"],\"reportType\":[\"count\"],\"sumAppend\":[\"\"]}', 2, '{\"zh-cn\":\"\\u6309\\u7167\\u9879\\u76ee\\u7edf\\u8ba1Bug\\u7684\\u7c7b\\u578b\\u5206\\u5e03\\u60c5\\u51b5\\u3002\",\"zh-tw\":\"\\u6309\\u7167\\u9805\\u76ee\\u7d71\\u8a08Bug\\u7684\\u985e\\u578b\\u5206\\u5e03\\u60c5\\u6cc1\\u3002\",\"en\":\"\",\"de\":\"\",\"fr\":\"\",\"vi\":\"\",\"ja\":\"\"}', 'admin', '2015-08-04 13:54:22'); + REPLACE INTO `zt_grouppriv` (`group`, `module`, `method`) VALUES (1,'report','browseReport'), diff --git a/doc/CHANGELOG b/doc/CHANGELOG index feb3068f66..29e46ec1e3 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -1,6 +1,385 @@ +2022-11-16 18.0.beta1 +完成的需求 +39874 瀑布项目设置中产品页面提示文案修改 +39873 瀑布项目创建页面按产品创建阶段文案修改 +39849 发布可以关联多个版本后,调整产品发布中关联软件需求的规则 +39848 发布可以关联多个版本后,调整产品发布中关联解决的Bug的规则 +39847 发布可以关联多个版本后,调整项目发布中关联软件需求的规则 +39846 发布可以关联多个版本后,调整项目发布中关联解决的Bug的规则 +39659 后台功能设置中项目均关闭了问题、风险、机会功能后资产库中创建库按钮置灰 +39623 项目发布详情页中,版本可以显示已关联的一个或多个版本信息 +39622 项目发布列表中,版本列可以显示已关联的一个或多个版本信息 +39621 项目编辑发布页面版本可以关联多个 +39620 项目创建发布页面版本可以关联多个 +39619 产品发布详情页中,版本可以显示已关联的一个或多个版本信息 +39618 产品发布列表中,版本列可以显示已关联的一个或多个版本信息 +39617 产品编辑发布页面版本可以关联多个 +39616 产品创建发布页面版本可以关联多个 +39615 项目中创建版本时,相关版本中选择了一个或多个版本后给出关联版本的规则提示 +39614 项目版本的详情页中增加相关版本信息 +39613 编辑在项目中创建的版本时,可以修改相关版本信息 +39612 项目下创建版本时增加关联迭代版本功能 +39527 调整测试单列表中报告列表操作名称 +39460 从全生命周期管理模式切到轻量管理模式时,使用弹窗来提醒用户选择默认项目集 +39450 系统层面和界面层面启用或关闭功能后,视野中可同步更新 +39420 安装和升级界面中更新备注中的信息 +39419 系统升级界面中增加研发综合界面和运营管理界面的信息 +39418 新用户安装界面中增加研发综合界面和运营管理界面的信息 +39417 从轻量管理模式切换到全生命周期管理模式时进行二次确认 +39415 从全生命周期管理模式切换到轻量管理模式时进行二次确认 +39381 调整模式切换界面的引导方式 +39379 将自定义中的模式设置功能调整到后台系统三级导航的第一个菜单 +39361 父需求自动关闭后调整历史记录的记录方式 +39302 币种设置中“台元”调整为”台币“ +39168 迅捷界面名称调整为运营管理界面 +39167 调整禅道使用模式名称 +39093 不启用迭代的项目关联或取消关联计划时,计划关联信息自动同步到隐藏的迭代 +39092 不启用迭代的项目关联或取消关联产品时,产品关联信息自动同步到隐藏的迭代 +39091 编辑不启用迭代的项目时,项目起止日期自动同步到隐藏迭代的起止日期 +39090 创建不启用迭代的项目时,项目起止日期自动同步到隐藏迭代的起止日期 +38949 产品看板中增加显示非当前项目集的项目信息的开关功能 +38948 项目集看板中增加显示非当前项目集的项目信息的开关功能 +38934 单迭代无产品项目的研发需求增加报表功能 +38931 单迭代无产品项目的权限去掉计划和会议相关的权限 +38928 单迭代无产品项目的版本关联需求和bug时搜索条件去掉所属计划 +38927 单迭代无产品项目增加发布功能 +38925 单迭代无产品项目的研发需求相关页面去掉计划信息 +38924 单迭代无产品项目研发需求看板中去掉关联研发需求的按钮 +38922 单迭代无产品项目中研发需求列表增加细分按钮 +38921 单迭代无产品项目增加用户需求功能 +38920 将地盘待处理中的评审功能与地盘审批功能进行合并 +38918 无迭代项目的任务列表中,导出数据的字段中所属执行调整为所属项目 +38917 无迭代项目的任务列表中,导出模板的字段中所属执行调整为所属项目 +38916 无迭代的项目中隐藏转入任务操作 +38915 无迭代项目的任务报表中,隐藏掉按迭代任务数统计报表 +38882 迅捷模式中产品去掉需求跟踪矩阵功能 +38840 不启用迭代的项目中,日志功能使用隐藏迭代的日志权限 +38839 不启用迭代的项目中,软件需求功能使用隐藏迭代的软件需求权限 +38838 不启用迭代的项目中,任务日历功能使用隐藏迭代的任务日历权限 +38837 不启用迭代的项目中,工时明细表功能使用隐藏迭代的工时明细表权限 +38836 不启用迭代的项目中,树状图功能使用隐藏迭代的树状图权限 +38835 不启用迭代的项目中,分组视图功能使用隐藏迭代的分组视图权限 +38834 不启用迭代的项目中,甘特图功能使用隐藏迭代的甘特图权限 +38833 不启用迭代的项目中,燃尽图功能使用隐藏迭代的燃尽图权限 +38832 不启用迭代的项目中,看板功能使用隐藏迭代的看板权限 +38831 不启用迭代的项目中,任务功能使用隐藏迭代的任务权限 +38824 不启用迭代的项目,隐藏的迭代可以与项目的状态进行联动 +38701 办公相关审批可以记录由谁发起的评审流程 +38700 反馈可以记录由谁发起的评审流程 +38699 用例可以记录由谁发起的评审流程 +38698 需求可以记录由谁发起的评审流程 +38691 执行关联产品列表中可以展示项目关联的所有产品 +38689 项目关联产品列表中增加关联其他项目集产品的功能 +38578 地盘待处理的区块中增加评审列表 +38576 地盘贡献的评审列表中增加反馈的评审类型 +38575 地盘贡献的评审列表中增加办公相关的评审类型 +38574 地盘贡献的评审列表中增加用例的评审类型 +38573 地盘贡献的评审列表中增加需求的评审类型 +38572 调整贡献中评审列表的字段 +38571 地盘贡献的三级导航中打印评审菜单 +38570 地盘待处理的评审列表中增加筛选标签 +38569 地盘待处理的评审列表中增加反馈的评审类型 +38568 地盘待处理的评审列表中增加办公相关的评审类型 +38567 地盘待处理的评审列表中增加用例的评审类型 +38566 地盘待处理的评审列表中增加需求的评审类型 +38565 调整待处理中评审列表的字段 +38564 地盘待处理的三级导航中打印评审菜单 +38515 迅捷模式下如果未开启瀑布项目,则隐藏后台审批中项目审批功能 +38511 从综合模式切换到迅捷模式时,地盘待处理区块中根据历史数据来判断是否隐藏问题、风险、会议功能 +38510 从综合模式切换到迅捷模式时,地盘贡献的三级导航中根据历史数据来判断是否隐藏问题、风险、QA功能 +38509 从综合模式切换到迅捷模式时,地盘待处理的三级导航中根据历史数据来判断是否隐藏问题、风险、QA、会议功能 +38508 从经典模式升级到18版本迅捷模式时,地盘待处理区块中隐藏问题、风险、会议功能 +38507 从经典模式升级到18版本迅捷模式时,地盘贡献的三级导航中隐藏问题、风险、QA功能 +38506 从经典模式升级到18版本迅捷模式时,地盘待处理的三级导航中隐藏问题、风险、QA、会议功能 +38505 从12版本升级到18版本迅捷模式时,地盘待处理区块中隐藏问题、风险、会议功能 +38504 从12版本升级到18版本迅捷模式时,地盘贡献的三级导航中隐藏问题、风险、QA功能 +38503 从12版本升级到18版本迅捷模式时,地盘待处理的三级导航中隐藏问题、风险、QA、会议功能 +38496 从综合模式切到迅捷模式后关闭敏捷项目的度量功能 +38495 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的度量功能 +38494 新用户安装禅道18版本迅捷模式后关闭敏捷项目的度量功能 +38464 项目内部权限中隐藏执行、会议和执行列表权限 +38420 执行创建时,瀑布项目要根据项目的阶段类型关联产品 +38419 瀑布项目阶段关联产品不可修改 +38352 从综合模式切到迅捷模式时,敏捷项目根据是否存在会议数据来判断是否开启会议功能 +38351 从综合模式切到迅捷模式时,敏捷项目根据是否存在QA数据来判断是否开启QA功能 +38350 从综合模式切到迅捷模式时,敏捷项目根据是否存在过程数据来判断是否开启过程功能 +38349 从综合模式切到迅捷模式时,敏捷项目根据是否存在机会数据来判断是否开启机会功能 +38347 从综合模式切到迅捷模式时,敏捷项目根据是否存在风险数据来判断是否开启风险功能 +38345 从综合模式切到迅捷模式时,敏捷项目根据是否存在问题数据来判断是否开启问题功能 +38324 项目管理员权限分组中无产品项目的权限特殊处理 +38281 实现从15版本经典模式直接升级到18本版迅捷模式 +38234 综合模式下如果没有项目集数据,切换迅捷模式时可以不用选择默认项目集 +38231 执行创建阶段类型为需求、设计、总结评审的瀑布项目阶段时,隐藏关联计划 +38230 复制项目的阶段信息确认页面文案修改 +38229 单套阶段的项目的费用估算的阶段隐藏产品 +38228 单套阶段的项目的里程牌报告隐藏2.5级产品菜单 +38223 瀑布项目的设计增加所有产品选项 +38222 瀑布项目阶段菜单样式优化 +38221 单阶段的瀑布项目的阶段隐藏产品 +38220 瀑布项目创建增加阶段类型选项 +38156 组织统计报表中,任务指派给统计表中执行名称列显示项目名称 +38155 组织统计报表中,任务完成统计表中执行名称列显示项目名称 +38154 组织统计报表中,员工负载表中执行名称列不显示隐藏的执行 +38153 测试统计报表中,项目Bug类型统计表中执行名称列不显示隐藏的执行 +38152 测试统计报表中,项目Bug指派给分布表中执行名称列不显示隐藏的执行 +38151 测试统计报表中,项目Bug解决者分布表中执行名称列不显示隐藏的执行 +38150 测试统计报表中,项目Bug创建者分布表中执行名称列不显示隐藏的执行 +38149 测试统计报表中,项目Bug状态分布表中执行名称列不显示隐藏的执行 +38148 测试统计报表中,项目Bug解决者分布表中执行名称列不显示隐藏的执行 +38147 项目统计报表中,相关执行下拉菜单中不显示隐藏的执行 +38146 项目统计报表中,项目Bug类型统计表中执行名称列不显示隐藏的执行 +38145 项目统计报表中,项目进展表中执行名称列不显示隐藏的执行 +38144 项目统计报表中,项目质量表中执行名称列不显示隐藏的执行 +38143 项目统计报表中,项目Bug指派给分布表中执行名称列不显示隐藏的执行 +38142 项目统计报表中,项目Bug解决者分布表中执行名称列不显示隐藏的执行 +38141 项目统计报表中,项目Bug创建者分布表中执行名称列不显示隐藏的执行 +38140 项目统计报表中,项目Bug状态分布表中执行名称列不显示隐藏的执行 +38139 项目统计报表中,项目Bug解决分布表中执行名称列不显示隐藏的执行 +38138 项目统计报表中,项目需求阶段分布表中执行名称列不显示隐藏的执行 +38137 项目统计报表中,项目需求状态分布表中执行名称列不显示隐藏的执行 +38136 项目统计报表中,项目投入统计报表中执行名称列不显示隐藏的执行 +38135 项目统计报表中,任务完成者报表中执行名称列不显示隐藏的执行 +38134 项目统计报表中,任务指派统计报表中执行名称列不显示隐藏的执行 +38133 项目统计报表中,任务类型统计报表中执行名称列不显示隐藏的执行 +38132 项目统计报表中,任务状态统计报表中执行名称列不显示隐藏的执行 +38131 项目统计报表中,交付吞吐率报表中不显示隐藏的执行 +38130 项目统计报表中,执行速率报表中不显示隐藏的执行 +38129 项目统计报表中,执行偏差报表中不显示隐藏的执行 +38128 组织的动态列表中,执行的下拉菜单中不显示隐藏的执行 +38127 组织的动态中,不显示隐藏执行的相关动态 +38126 项目的动态中,不显示隐藏执行的相关动态 +38125 地盘贡献的任务列表中,所属执行列不显示隐藏的执行 +38124 地盘执行列表中,不显示隐藏的执行 +38123 地盘待处理的质量保证计划列表中,所属执行列显示项目名称 +38122 地盘待处理的测试单列表中,所属执行列显示项目名称 +38121 地盘待处理的任务列表中,所属执行列不显示隐藏的执行 +38120 地盘会议列表中,执行列不显示隐藏的执行 +38119 地盘日志列表中,执行列显示项目名称 +38118 地盘动态列表中,不显示隐藏执行的相关动态 +38117 地盘仪表盘的最新动态中,不显示隐藏执行的相关动态 +38116 地盘仪表盘的近期项目区块中,不启用迭代的项目不显示近期执行信息 +38115 地盘仪表盘的执行总览区块中,不显示隐藏的执行 +38114 地盘仪表盘的项目统计区块中,不启用迭代的项目不显示近期执行信息 +38113 地盘仪表盘的产品列表区块中,当前执行列显示项目名称 +38112 会议详情页面,不显示所属执行字段 +38111 编辑会议页面,不显示所属执行字段 +38110 创建会议页面,不显示所属执行字段 +38109 风险详情页面,不显示所属执行字段 +38108 编辑风险页面,不显示所属执行字段 +38107 创建风险页面,不显示所属执行字段 +38106 问题详情页面,不显示所属执行字段 +38105 编辑问题页面,不显示所属执行字段 +38104 创建问题页面,不显示所属执行字段 +38103 版本列表中,不显示所属执行列 +38102 版本详情页面,不显示所属执行字段 +38101 编辑版本页面,不显示所属执行字段 +38100 创建版本页面,不显示所属执行字段 +38099 测试单概况页面,不显示所属执行字段 +38098 编辑测试单页面,不显示所属执行字段 +38097 提交测试单页面,不显示所属执行字段 +38096 测试报告列表中,所属执行列不显示隐藏的执行 +38095 测试的Bug列表中,所属执行列不显示隐藏的执行 +38094 Bug详情页面,不显示所属执行字段 +38093 编辑Bug页面,不显示所属执行字段 +38092 批量提Bug页面,不显示所属执行字段 +38091 提Bug页面,不显示所属执行字段 +38090 任务详情页面,不显示所属执行字段 +38089 批量编辑任务页面,不显示所属执行信息 +38088 编辑任务页面,不显示所属执行字段 +38087 创建任务页面,不显示所属执行字段 +38086 执行的1.5级导航的下拉菜单中隐藏不启用执行项目的这个隐藏的执行 +37875 不启用迭代功能的项目中,在日志中执行相关操作时导航高亮在当前项目菜单 +37874 不启用迭代功能的项目中,在需求列表中执行相关操作时导航高亮在当前项目菜单 +37873 不启用迭代功能的项目中,在任务日历中执行相关操作时导航高亮在当前项目菜单 +37872 不启用迭代功能的项目中,在工时明细表中执行相关操作时导航高亮在当前项目菜单 +37871 不启用迭代功能的项目中,在树状图中执行相关操作时导航高亮在当前项目菜单 +37870 项目取消与产品的关联后,同步取消该项目下执行与产品的关联关系 +37838 不启用迭代功能的项目中,执行分组视图的相关操作时导航高亮在当前项目菜单 +37830 不启用迭代功能的项目中,执行燃尽图的相关操作时导航高亮在当前项目菜单 +37829 不启用迭代功能的项目中,执行看板的相关操作时导航高亮在当前项目菜单 +37827 不启用迭代功能的项目中,执行任务的相关操作时导航高亮在当前项目菜单 +37804 看板项目中,实现不启用迭代功能项目中的设置功能 +37803 看板项目中,实现不启用迭代功能项目中的版本功能 +37802 看板项目中,实现不启用迭代功能项目中的看板功能 +37801 实现看板项目不启用迭代功能的二级导航菜单 +37800 敏捷项目中,实现不启用迭代功能项目中的设置功能 +37799 敏捷项目中,实现不启用迭代功能项目中的版本功能 +37798 敏捷项目中,实现不启用迭代功能项目中的文档功能 +37797 敏捷项目中,实现不启用迭代功能项目中的代码功能 +37796 敏捷项目中,实现不启用迭代功能项目中的测试功能 +37795 敏捷项目中,实现不启用迭代功能项目中的日志功能 +37794 敏捷项目中,实现不启用迭代功能项目中的软件需求功能 +37793 敏捷项目中,实现不启用迭代功能项目中的任务日历功能 +37792 敏捷项目中,实现不启用迭代功能项目中的工时明细功能 +37791 敏捷项目中,实现不启用迭代功能项目中的分组视图功能 +37790 敏捷项目中,实现不启用迭代功能项目中的甘特图功能 +37789 敏捷项目中,实现不启用迭代功能项目中的燃尽图功能 +37788 敏捷项目中,实现不启用迭代功能项目中的看板功能 +37787 敏捷项目中,实现不启用迭代功能项目中的任务功能 +37786 实现敏捷项目不启用迭代功能的二级导航菜单 +37779 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的会议功能 +37778 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的QA功能 +37777 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的过程功能 +37776 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的机会功能 +37775 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的风险功能 +37774 12版本升级到禅道18版本迅捷模式后关闭敏捷项目的问题功能 +37773 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的会议功能 +37772 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的QA功能 +37771 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的过程功能 +37770 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的机会功能 +37769 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的风险功能 +37768 经典模式升级到禅道18版本迅捷模式后关闭敏捷项目的问题功能 +37767 新用户安装禅道18版本迅捷模式后关闭敏捷项目的会议功能 +37766 新用户安装禅道18版本迅捷模式后关闭敏捷项目的QA功能 +37765 新用户安装禅道18版本迅捷模式后关闭敏捷项目的过程功能 +37764 新用户安装禅道18版本迅捷模式后关闭敏捷项目的机会功能 +37763 新用户安装禅道18版本迅捷模式后关闭敏捷项目的风险功能 +37762 新用户安装禅道18版本迅捷模式后关闭敏捷项目的问题功能 +37758 经典模式版本升级到18版本迅捷模式后,根据是否存在用户需求数据来判断是否开启用户需求功能 +37757 经典模式版本升级到18版本迅捷模式后关闭资产库功能 +37756 经典模式版本升级到18版本迅捷模式后关闭瀑布项目功能 +37755 12版升级到18版本迅捷模式后,根据是否存在用户需求数据来判断是否开启用户需求功能 +37754 12版升级到18版本迅捷模式后关闭资产库功能 +37753 新用户安装禅道18版本迅捷模式后关闭用户需求功能 +37752 从综合模式切到迅捷模式时,根据是否存在用户需求数据来判断是否开启用户需求功能 +37751 从综合模式切到迅捷模式时,根据是否存在资产库数据来判断是否开启资产库功能 +37750 新用户安装禅道18版本迅捷模式后关闭资产库功能 +37746 在后台系统功能列表中实现对系统功能的自定义 +37745 在后台系统设置中增加系统功能设置菜单 +37743 从全新项目集模式的版本升级到18版本,无需选择模式直接升级到综合模式 +37736 创建敏捷项目时可以设置是否启用迭代功能 +37735 编辑敏捷项目时,是否启用迭代字段不可调整 +37734 编辑看板项目时,是否启用迭代字段不可调整 +37733 编辑产品页面所属项目集为空时,不显示产品线字段 +37732 执行产品列表可以取消已关联的产品 +37731 编辑执行时可以取消已关联的产品 +37730 项目的产品列表中可以取消已关联的产品 +37729 后台自定义的流程中,去掉组合方式之间的减号 +37675 无产品项目复制模块可以复制产品和无产品项目的模块 +37674 项目概况中展示产品型项目和无产品项目的标签 +37673 无产品项目研发需求隐藏移除按钮 +37660 创建产品页面所属项目集为空时,不显示产品线字段 +37658 产品调整所属项目集时,可以任意选择一个项目集 +37657 项目调整所属项目集时,可以任意选择一个项目集 +37656 编辑项目时可以取消已关联的产品 +37654 编辑项目的时候,可以跨项目集关联产品 +37653 创建项目的时候,可以跨项目集关联产品 +37613 12版升级到18版本迅捷模式后关闭瀑布项目功能 +37612 新用户安装禅道18版本迅捷模式后关闭瀑布项目功能 +37603 从综合模式切到迅捷模式时,根据是否存在瀑布项目数据来判断是否开启瀑布项目功能 +37596 从综合模式切到迅捷模式时,访问权限是项目集内公开的项目统一调整为私有 +37572 无产品项目项目复制 +37553 无产品项目的权限通过项目维护 +37552 无产品项目的视野权限在产品中进行过滤,通过项目维护 +37551 无产品项目恢复时同步恢复影子产品 +37549 测试模块测试单功能展示产品和无产品项目的信息 +37546 测试模块用例功能统计产品和无产品项目的信息 +37544 测试模块bug功能统计产品和无产品项目的信息 +37542 实现从12版本升级到18版本综合模式的手工归并数据功能 +37541 无产品项目在测试区块仪表盘的所属产品展示为无产品项目名 +37540 地盘动态不展示影子产品的动态 +37539 无产品项目在地盘贡献的产品名称下展示为无产品项目名 +37538 无产品项目在地盘待处理的产品名称下展示为无产品项目名 +37537 无产品项目在地盘日志的所属产品展示为无产品项目名 +37534 无产品项目在地盘区块的产品名称下展示为无产品项目名 +37533 反馈不支持无产品项目 +37532 组织中无产品项目的所属产品展示为项目名 +37531 统计产品和测试菜单下的列表,无产品项目进行特殊处理 +37530 资产库导入需求不展示无产品的产品名称 +37529 通用看板导入发布与导入计划的产品中增加无产品项目的层级,展示无产品项目名 +37528 从12版本升级到18版本的综合模式时,增加自动或手工归并数据的功能 +37527 从12版本升级到18版本的迅捷模式时,增加自动或手工归并数据的功能 +37525 从综合模式切换为迅捷模式时可以选择一个项目集作为默认项目集 +37517 创建看板项目时可以设置是否启用迭代功能 +37504 迅捷模式下默认创建一个隐藏的项目集,关联所有产品和项目数据 +37462 无产品项目仪表盘隐藏所属产品字段 +37461 无产品项目执行的任务导入bug隐藏搜索的所属产品字段 +37460 无产品项目执行的日志导出数据隐藏所属产品 +37458 无产品项目中测试单功能隐藏产品信息 +37457 无产品项目中用例功能隐藏产品信息 +37456 无产品项目中bug功能隐藏产品信息 +37455 无产品项目中研发需求和用户需求列表导出和导入功能隐藏产品信息 +37454 无产品项目中研发需求和用户需求列表增加维护模块按钮 +37453 无产品项目中研发需求和用户需求列表隐藏所属产品信息 +37452 无产品项目执行的看板新建隐藏产品与计划 +37451 看板项目的设置隐藏产品与计划字段 +37450 无产品项目中研发需求隐藏所属产品信息 +37449 无产品项目中增加用户需求模块 +37448 无产品项目中二级菜单研发需求改为需求,包含研发需求和用户需求 +37447 瀑布项目的报告隐藏产品 +37445 瀑布项目的估算的阶段隐藏产品 +37444 瀑布项目的评审隐藏产品 +37443 瀑布项目的矩阵隐藏产品 +37442 瀑布项目的阶段隐藏产品 +37441 看板执行的看板编辑隐藏产品与计划 +37438 敏捷、瀑布项目的设置隐藏产品与计划字段 +37437 敏捷、瀑布、看板项目的版本隐藏产品字段 +37424 项目模块中执行的相关页面隐藏“所属产品”字段 +37422 项目列表页导出列表中增加“项目类型”,无产品项目的所属产品为“” +37421 项目列表搜索项增加“项目类型” +37420 创建项目选择“项目类型”,可以创建产品型项目或无产品项目 +37346 项目列表页增加字段“项目类型” +37336 迅捷模式中隐藏产品线的相关功能 +37333 无产品项目的需求列表中增加批量创建功能 +37332 无产品项目的需求列表中取消关联研发需求功能 +37331 敏捷无产品项目中增加计划功能 +37328 无产品项目中发布隐藏产品信息 +37308 实现从15版本经典模式升级到18本版迅捷模式 +37292 实现从12版本升级到18版本迅捷模式的手工归并数据功能 +37291 12版本升级到18版本时,提供综合模式和迅捷模式的介绍和选择 +37290 新用户安装禅道时提供综合模式和迅捷模式的介绍和选择 +37289 迅捷模式切换到综合模式后开启项目集功能 +37284 从综合模式切换到迅捷模式后隐藏项目集相关功能和数据 +37275 从迅捷模式切换到综合模式增加功能影响的提示信息 +37272 从综合模式切换到迅捷模式时增加功能影响的提示信息 +37270 迅捷模式和综合模式的切换不做次数限制 +37268 调整后台自定义模式中的名称 +38176 无产品项目下可以设置与代码库的关联关系 +37635 在无产品项目下可以创建代码库 +37465 在无产品项目下可以提交评审问题 +37464 代码库可以关联项目 +36616 实现版本升级后原存档讨论组逻辑处理 +36543 实现群主取消归档讨论组相关提醒及操作 +36540 实现对已归档的讨论组限制移动分组 +36542 限制对已归档讨论组相关操作 +32237 实现归档后的讨论组交互显示 +36541 实现对已归档讨论组消息的处理 +36832 实现讨论组归档提醒的功能 +36831 实现讨论组归档入口 +37463 实现群管理应用对已归档讨论组的相关操作 +37670 实现讨论组会话中@成员时的快捷键操作 +37669 实现优化讨论组会话中@多个成员的功能 +37668 实现优化讨论组会话中@单个成员的功能 +37667 实现讨论组会话中@所有人功能 +37663 实现讨论组中会话中@成员能够以列表形式展现 +37631 禅道客户端“反馈”的相关通知增加到喧喧小助手 +38190 禅道相关通知增加到小喧喧交互设计 +37661 提升禅道相关通知推送到喧喧小助手的速度 +37634 喧喧不在前台时使用其快捷键截屏不自动调出界面 +37642 修改会议初检设置项文案 +修复的Bug +29763 执行关联产品页面未关联的产品应该显示项目集 +29702 批量编辑产品,自定义表单项显示产品线 +29650 新建项目时,关联产品下拉列表显示了非所选项目集下的产品 +29628 Bug默认指派人没指派给产品测试负责人 +29549 无产品项目和无产品迭代文档下搜索条件“所属产品”未隐藏掉 +29535 执行中转入任务后F12有报错信息 +29508 地盘--待处理中Bug列表错乱 +29499 项目概况页面所属项目集代码报错 +29452 无产品项目下批量编辑和批量指派给下拉数据与单个指派下拉数据范围不一致 +27994 禅道系统使用时切换页面会突然登录超时退出 +28255 无产品权限人员编辑代码库显示项目不正确 +27516 可合并讨论组的列表中列出了已经被合并的群 +27458 新加入群聊后未读消息会显示新加入群所有消息的条数 +26453 引用小喧喧的推送不显示小喧喧的头像和名称 +28077 快捷键截图后打开xxc偶发xxc窗口一直置于桌面最上方 +27983 用户名大小写不对,提示有问题 +27629 预览txt文件乱码 +28095 LDAP密码有特殊字符无法登录 + 2022-11-02 17.8 完成的需求 -开源版 +开源版: 39354 项目集列表中恢复项目名称前的模型标识 39165 玉烟紫主题下,地盘仪表盘待处理区块中标题颜色调整 39164 bug严重程度的样式调整 diff --git a/extension/lite/block/ext/control/welcome.php b/extension/lite/block/ext/control/welcome.php index 22ce608d4f..cb4b8f438d 100644 --- a/extension/lite/block/ext/control/welcome.php +++ b/extension/lite/block/ext/control/welcome.php @@ -21,7 +21,7 @@ class myBlock extends block ->orWhere('t3.status')->ne('suspended') ->markRight(1) ->andWhere('t1.deleted')->eq('0') - ->beginIF($this->config->systemMode == 'new')->andWhere('t2.deleted')->eq('0')->fi() + ->beginIF($this->config->systemMode == 'ALM')->andWhere('t2.deleted')->eq('0')->fi() ->andWhere('t3.deleted')->eq('0') ->andWhere('t1.vision')->eq($this->config->vision) ->fetchAll('id'); diff --git a/extension/lite/execution/ext/control/create.php b/extension/lite/execution/ext/control/create.php index cd8f6aed3a..d1e26bac50 100644 --- a/extension/lite/execution/ext/control/create.php +++ b/extension/lite/execution/ext/control/create.php @@ -4,7 +4,8 @@ class myExecution extends execution { public function create($projectID = '', $executionID = 0, $copyExecutionID = '', $planID = 0, $confirm = 'no', $productID = 0, $extra = '') { - $this->config->execution->create->requiredFields = 'name,code,begin,end'; + $this->config->execution->create->requiredFields = 'name,code,begin,end'; + $this->loadModel('project')->setMenu($projectID); parent::create($projectID, $executionID, $copyExecutionID, $planID, $confirm, $productID, $extra); } -} \ No newline at end of file +} diff --git a/extension/lite/execution/ext/view/create.html.php b/extension/lite/execution/ext/view/create.html.php index c39bedc1b0..cecf62f6f1 100644 --- a/extension/lite/execution/ext/view/create.html.php +++ b/extension/lite/execution/ext/view/create.html.php @@ -26,7 +26,6 @@ -systemMode);?> project->common);?> systemMode);?> @@ -38,7 +37,7 @@
- systemMode == 'new'):?> + systemMode == 'ALM'):?> @@ -107,6 +106,7 @@ +
execution->projectName;?>
diff --git a/extension/lite/group/ext/lang/resource.php b/extension/lite/group/ext/lang/resource.php index 45d77bcd6f..5117a5df52 100644 --- a/extension/lite/group/ext/lang/resource.php +++ b/extension/lite/group/ext/lang/resource.php @@ -149,7 +149,7 @@ $lang->personnel->methodOrder[15] = 'whitelist'; $lang->personnel->methodOrder[20] = 'addWhitelist'; $lang->personnel->methodOrder[25] = 'unbindWhitelist'; -if($config->systemMode == 'new') +if($config->systemMode == 'ALM') { $lang->resource->my->project = 'project'; @@ -158,7 +158,7 @@ if($config->systemMode == 'new') $lang->resource->project->index = 'index'; $lang->resource->project->browse = 'browse'; $lang->resource->project->kanban = 'kanban'; -// $lang->resource->project->programTitle = 'moduleOpen'; + //$lang->resource->project->programTitle = 'moduleOpen'; $lang->resource->project->create = 'create'; $lang->resource->project->edit = 'edit'; $lang->resource->project->batchEdit = 'batchEdit'; @@ -456,8 +456,8 @@ $lang->resource->execution->updateOrder = 'updateOrder'; $lang->resource->execution->taskKanban = 'taskKanban'; //$lang->resource->execution->printKanban = 'printKanbanAction'; $lang->resource->execution->tree = 'treeAction'; -$lang->resource->execution->treeTask = 'treeOnlyTask'; -$lang->resource->execution->treeStory = 'treeOnlyStory'; +$lang->resource->execution->treeTask = 'treeViewTask'; +$lang->resource->execution->treeStory = 'treeViewStory'; $lang->resource->execution->all = 'allExecutionAB'; $lang->resource->execution->export = 'exportAction'; $lang->resource->execution->storyKanban = 'storyKanban'; diff --git a/extension/lite/my/ext/view/task.html.php b/extension/lite/my/ext/view/task.html.php index 51885c6128..1c034610cb 100644 --- a/extension/lite/my/ext/view/task.html.php +++ b/extension/lite/my/ext/view/task.html.php @@ -58,7 +58,7 @@ priAB);?> task->name);?> - systemMode == 'new'):?> + systemMode == 'ALM'):?> my->projects);?> my->executions);?> @@ -109,7 +109,7 @@ ?> children)) echo '';?> - systemMode == 'new'):?> + systemMode == 'ALM'):?> createLink('project', 'index', "projectID=$task->project"), $task->projectName);?> createLink('execution', 'task', "executionID=$task->execution"), $task->executionName, '');?> @@ -179,7 +179,7 @@ parent > 0) echo '' . $this->lang->task->childrenAB . ' ';?> createLink('task', 'view', "taskID=$child->id", '', '', $child->project), $child->name, null, "style='color: $child->color'");?> - systemMode == 'new'):?> + systemMode == 'ALM'):?> createLink('project', 'view', "projectID=$child->project"), $child->projectName);?> createLink('execution', 'task', "executionID=$child->project"), $child->executionName, '');?> diff --git a/extension/lite/product/ext/model/getpairs.php b/extension/lite/product/ext/model/getpairs.php index 44e83114bf..0796a1e0d7 100644 --- a/extension/lite/product/ext/model/getpairs.php +++ b/extension/lite/product/ext/model/getpairs.php @@ -5,9 +5,10 @@ * @param string $mode * @param string $programID * @param string|array $append + * @param string|int $shadow all | 0 | 1 * @return array */ -public function getPairs($mode = '', $programID = 0, $append = '') +public function getPairs($mode = '', $programID = 0, $append = '', $shadow = 0) { if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getProductPairs(); @@ -31,6 +32,7 @@ public function getPairs($mode = '', $programID = 0, $append = '') ->beginIF($programID)->andWhere('program')->eq($programID)->fi() ->beginIF(strpos($mode, 'noclosed') !== false)->andWhere('status')->ne('closed')->fi() ->beginIF(!$this->app->user->admin and $this->config->vision == 'rnd')->andWhere('id')->in($this->app->user->view->products)->fi() + ->beginIF($shadow !== 'all')->andWhere('shadow')->eq((int)$shadow)->fi() ->andWhere('vision')->eq($this->config->vision) ->andWhere('id')->in($projectProducts) ->fetchPairs('id', 'name'); diff --git a/extension/lite/product/ext/view/browse.html.php b/extension/lite/product/ext/view/browse.html.php index 524ca6c491..2a08521f61 100644 --- a/extension/lite/product/ext/view/browse.html.php +++ b/extension/lite/product/ext/view/browse.html.php @@ -20,22 +20,25 @@ body {margin-bottom: 25px;} .assignedTo{border-radius: 4px !important;} #productStoryForm table tbody tr td.c-actions .dividing-line {width: 1px; height: 16px; display: inline-block; vertical-align: middle; background: #F4F5F7; margin: 0 4px 0 0;} - - - - -app->rawModule);?> -app->tab == 'product' ? $product->type : '');?> product->browse->unfoldStories) ? json_decode($config->product->browse->unfoldStories, true) : array(); -$unfoldStories = zget($unfoldStories, $productID, array()); +$lang->story->createCommon = $storyType == 'story' ? $lang->story->createStory : $lang->story->createRequirement; +$unfoldStories = isset($config->product->browse->unfoldStories) ? json_decode($config->product->browse->unfoldStories, true) : array(); +$unfoldStories = zget($unfoldStories, $productID, array()); +$isProjectStory = $this->app->rawModule == 'projectstory'; +$projectHasProduct = $isProjectStory && !empty($project->hasProduct); +$projectIDParam = $isProjectStory ? "projectID=$projectID&" : ''; js::set('unfoldStories', $unfoldStories); js::set('unfoldAll', $lang->execution->treeLevel['all']); js::set('foldAll', $lang->execution->treeLevel['root']); js::set('storyType', $storyType); -$lang->story->createCommon = $storyType == 'story' ? $lang->story->createStory : $lang->story->createRequirement; -$isProjectStory = $this->app->rawModule == 'projectstory'; -$projectIDParam = $isProjectStory ? "projectID=$projectID&" : ''; +js::set('browseType', $browseType); +js::set('productID', $productID); +js::set('projectID', $projectID); +js::set('branch', $branch); +js::set('rawModule', $this->app->rawModule); +js::set('productType', $this->app->tab == 'product' ? $product->type : ''); +js::set('projectHasProduct', $projectHasProduct); +js::set('URAndSR', $this->config->URAndSR); ?> diff --git a/module/block/view/printassigntomeblock.html.php b/module/block/view/printassigntomeblock.html.php index 5618edbea1..9293eb4686 100644 --- a/module/block/view/printassigntomeblock.html.php +++ b/module/block/view/printassigntomeblock.html.php @@ -23,7 +23,7 @@ > - block->availableBlocks->$type;?> + my->audit : $lang->block->availableBlocks->$type;?> '> diff --git a/module/block/view/projectstatisticblock.html.php b/module/block/view/projectstatisticblock.html.php index 3dddfb16b8..e34409e652 100644 --- a/module/block/view/projectstatisticblock.html.php +++ b/module/block/view/projectstatisticblock.html.php @@ -197,7 +197,7 @@ $(function() - executions)):?> + executions) and $project->multiple):?>

block->last;?>

@@ -259,7 +259,7 @@ $(function()
cv;?>
- + diff --git a/module/block/view/recentprojectblock.html.php b/module/block/view/recentprojectblock.html.php index cfc9a0ab62..da19da4548 100644 --- a/module/block/view/recentprojectblock.html.php +++ b/module/block/view/recentprojectblock.html.php @@ -40,15 +40,13 @@
block->emptyTip;?>
- $project):?> - systemMode == 'new' ? $this->createLink('project', 'index', "projectID=$project->id") : $this->createLink('execution', 'task', "projectID=$project->id");?> + $project):?> + createLink('project', 'index', "projectID=$project->id");?>
- systemMode == 'new'):?> model == 'waterfall' ? 'label-warning' : 'label-info';?> project->{$project->model};?> - name);?>
- systemMode == 'new'):?> - model === 'waterfall'): ?> + model === 'waterfall'):?>
- + multiple):?> executions ) ? '' : end($project->executions);?>
@@ -110,10 +107,9 @@
- +
- - + diff --git a/module/block/view/reviewblock.html.php b/module/block/view/reviewblock.html.php new file mode 100644 index 0000000000..b379ef8713 --- /dev/null +++ b/module/block/view/reviewblock.html.php @@ -0,0 +1,96 @@ + + * @package block + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
block->emptyTip;?>
+ +
+ '> + + + + + + + + + + + + + type; + if($type == 'project') $type = 'review'; + + $typeName = $lang->$type->common; + if($type == 'story') $typeName = $lang->my->auditMenu->audit->story; + + $statusList = $lang->$type->statusList; + if($type == 'attend') $statusList = $lang->attend->reviewStatusList; + ?> + + + + + + + + + + +
idAB);?>my->auditField->title);?> my->auditField->type);?> my->auditField->time);?> my->auditField->status);?>actions)?>
id?> + title; + if($type == 'attend') + { + $titleHtml = html::a($this->createLink($type, 'review', "objectID=$review->id", 'html', true), $review->title, '', "data-toggle='modal'"); + } + else + { + $class = "class='iframe' data-width='90%'"; + if(strpos(",{$config->my->oaObjectType},", ",{$type},") !== false) $class = "data-toggle='modal'"; + $titleHtml = html::a($this->createLink($type, 'view', "objectID=$review->id", 'html', true), $review->title, '', $class); + } + echo $titleHtml; + ?> + time?>status, '')?> + id"; + + $reviewIcon = ''; + $passIcon = ''; + $rejectIcon = ''; + + if($module == 'review') + { + $method = 'assess'; + $params = "reviewID=$review->id"; + common::printLink($module, $method, $params, $reviewIcon, '', "class='btn' title='{$lang->review->common}'"); + } + elseif($module == 'attend') + { + common::printLink($module, 'review', "attendID={$review->id}&status=", $reviewIcon, '', "class='btn' data-toggle='modal' title='{$lang->review->common}'", true, true); + } + elseif(strpos(",{$config->my->oaObjectType},", ",$module,") !== false) + { + common::printLink($module, 'view', $params, $reviewIcon, '', "class='btn' data-toggle='modal' title='{$lang->review->common}'", true, true); + } + else + { + common::printLink($module, $method, $params, $reviewIcon, '', "class='btn iframe' title='{$lang->review->common}'", true, true); + } + ?> +
+
+ diff --git a/module/block/view/scrumtestblock.html.php b/module/block/view/scrumtestblock.html.php index 4f28fd1c7f..6224d739e0 100644 --- a/module/block/view/scrumtestblock.html.php +++ b/module/block/view/scrumtestblock.html.php @@ -18,7 +18,7 @@ testtask->name;?> - + hasProduct):?> testtask->product;?> @@ -39,7 +39,7 @@ ?> > name);?> - + hasProduct):?> productName);?> diff --git a/module/block/view/testtaskblock.html.php b/module/block/view/testtaskblock.html.php index bffb631682..54a481af40 100644 --- a/module/block/view/testtaskblock.html.php +++ b/module/block/view/testtaskblock.html.php @@ -36,6 +36,12 @@ $productViewLink = $this->createLink('product', 'browse', "productID={$testtask->product}"); $buildViewLink = $this->createLink('build', 'view', "buildID={$testtask->build}"); $testtaskViewLink = $this->createLink('testtask', 'view', "testtaskID={$testtask->id}"); + + if($testtask->shadow) + { + $testtask->productName = zget($projects, $testtask->project); + $productViewLink = $this->createLink('projectstory', 'story', "projectID={$testtask->project}&productID={$testtask->product}"); + } ?> > diff --git a/module/block/view/waterfallganttblock.html.php b/module/block/view/waterfallganttblock.html.php index 672dfa6916..68b5c3132e 100644 --- a/module/block/view/waterfallganttblock.html.php +++ b/module/block/view/waterfallganttblock.html.php @@ -124,7 +124,7 @@ { plan.progress = !plan.tasks.length ? 0 : plan.progress / plan.tasks.length; var $plan = $('
'); - $plan.append('
' + plan.text + '
'); + $plan.append('
' + plan.text + '
'); $plans.append($plan); var $bar = $('
'); diff --git a/module/branch/control.php b/module/branch/control.php index 6f497f7abb..fed3f32882 100644 --- a/module/branch/control.php +++ b/module/branch/control.php @@ -280,7 +280,7 @@ class branch extends control $branchTagOption[$oldBranch] = $oldBranch == BRANCH_MAIN ? $branch : ($branch->name . ($branch->status == 'closed' ? ' (' . $this->lang->branch->statusList['closed'] . ')' : '')); } - return print(html::select('branch', $branchTagOption, $oldBranch, "class='form-control' onchange='loadBranch(this)'")); + return print(html::select('branch', $branchTagOption, $oldBranch, "class='form-control' onchange='loadBranch(this)' data-last='{$oldBranch}'")); } /** diff --git a/module/branch/model.php b/module/branch/model.php index dbf7fac873..5c62d826d8 100644 --- a/module/branch/model.php +++ b/module/branch/model.php @@ -126,7 +126,7 @@ class branchModel extends model if($executionID) { - if(isset($executionBranches['0'])) $branches = array('0' => $this->lang->branch->main) + $branches; + $branches = array('all' => $this->lang->branch->all, '0' => $this->lang->branch->main) + $branches; return $branches; } diff --git a/module/bug/config.php b/module/bug/config.php index d8856fd8f8..7accc01d9d 100644 --- a/module/bug/config.php +++ b/module/bug/config.php @@ -38,18 +38,10 @@ $config->bug->exportFields = 'id, product, branch, module, project, execution, s lastEditedBy, lastEditedDate, files ,feedbackBy, notifyEmail'; -if($config->systemMode == 'classic') $config->bug->exportFields = str_replace(' project,', '', $config->bug->exportFields); $config->bug->list->customCreateFields = 'execution,noticefeedbackBy,story,task,pri,severity,os,browser,deadline,mailto,keywords'; $config->bug->list->customBatchEditFields = 'type,severity,pri,productplan,assignedTo,deadline,resolvedBy,resolution,os,browser,keywords'; -if($config->systemMode == 'new') -{ - $config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords'; -} -else -{ - $config->bug->list->customBatchCreateFields = 'execution,steps,type,pri,deadline,severity,os,browser,keywords'; -} +$config->bug->list->customBatchCreateFields = 'project,execution,steps,type,pri,deadline,severity,os,browser,keywords'; $config->bug->custom = new stdclass(); $config->bug->custom->createFields = $config->bug->list->customCreateFields; @@ -83,7 +75,7 @@ $config->bug->search['fields']['status'] = $lang->bug->status; $config->bug->search['fields']['confirmed'] = $lang->bug->confirmed; $config->bug->search['fields']['story'] = $lang->bug->story; -if($config->systemMode == 'new') $config->bug->search['fields']['project'] = $lang->bug->project; +$config->bug->search['fields']['project'] = $lang->bug->project; $config->bug->search['fields']['product'] = $lang->bug->product; $config->bug->search['fields']['branch'] = ''; $config->bug->search['fields']['plan'] = $lang->bug->productplan; @@ -129,7 +121,7 @@ $config->bug->search['params']['status'] = array('operator' => '=', $config->bug->search['params']['confirmed'] = array('operator' => '=', 'control' => 'select', 'values' => $lang->bug->confirmedList); $config->bug->search['params']['story'] = array('operator' => 'include', 'control' => 'input', 'values' => ''); -if($config->systemMode == 'new') $config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => ''); +$config->bug->search['params']['project'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->bug->search['params']['product'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->bug->search['params']['branch'] = array('operator' => '=', 'control' => 'select', 'values' => ''); $config->bug->search['params']['plan'] = array('operator' => '=', 'control' => 'select', 'values' => ''); @@ -168,7 +160,7 @@ $config->bug->datatable->fieldList['id']['required'] = 'yes'; $config->bug->datatable->fieldList['product']['title'] = 'product'; $config->bug->datatable->fieldList['product']['control'] = 'hidden'; -$config->bug->datatable->fieldList['product']['dataSource'] = array('module' => 'product', 'method' => 'getPairs'); +$config->bug->datatable->fieldList['product']['dataSource'] = array('module' => 'product', 'method' => 'getPairs', 'params' => '&0&&all'); $config->bug->datatable->fieldList['module']['control'] = 'select'; $config->bug->datatable->fieldList['module']['title'] = 'module'; @@ -192,6 +184,17 @@ $config->bug->datatable->fieldList['pri']['width'] = '50'; $config->bug->datatable->fieldList['pri']['required'] = 'no'; $config->bug->datatable->fieldList['pri']['name'] = $lang->bug->pri; +$config->bug->datatable->fieldList['confirmed']['title'] = 'confirmedAB'; +$config->bug->datatable->fieldList['confirmed']['fixed'] = 'left'; +$config->bug->datatable->fieldList['confirmed']['width'] = '80'; +$config->bug->datatable->fieldList['confirmed']['required'] = 'no'; + +$config->bug->datatable->fieldList['title']['title'] = 'title'; +$config->bug->datatable->fieldList['title']['fixed'] = 'left'; +$config->bug->datatable->fieldList['title']['width'] = 'auto'; +$config->bug->datatable->fieldList['title']['required'] = 'yes'; +$config->bug->datatable->fieldList['title']['minWidth'] = '200'; + $config->bug->datatable->fieldList['status']['title'] = 'statusAB'; $config->bug->datatable->fieldList['status']['fixed'] = 'left'; $config->bug->datatable->fieldList['status']['width'] = '80'; @@ -209,15 +212,12 @@ $config->bug->datatable->fieldList['type']['fixed'] = 'no'; $config->bug->datatable->fieldList['type']['width'] = '90'; $config->bug->datatable->fieldList['type']['required'] = 'no'; -if($config->systemMode == 'new') -{ - $config->bug->datatable->fieldList['project']['title'] = 'project'; - $config->bug->datatable->fieldList['project']['fixed'] = 'no'; - $config->bug->datatable->fieldList['project']['width'] = '120'; - $config->bug->datatable->fieldList['project']['required'] = 'no'; - $config->bug->datatable->fieldList['project']['control'] = 'hidden'; - $config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID'); -} +$config->bug->datatable->fieldList['project']['title'] = 'project'; +$config->bug->datatable->fieldList['project']['fixed'] = 'no'; +$config->bug->datatable->fieldList['project']['width'] = '120'; +$config->bug->datatable->fieldList['project']['required'] = 'no'; +$config->bug->datatable->fieldList['project']['control'] = 'hidden'; +$config->bug->datatable->fieldList['project']['dataSource'] = array('module' => 'product', 'method' => 'getProjectPairsByProduct', 'params' => '$productID'); $config->bug->datatable->fieldList['execution']['title'] = 'execution'; $config->bug->datatable->fieldList['execution']['fixed'] = 'no'; diff --git a/module/bug/control.php b/module/bug/control.php index 34749dcc79..e340263ed4 100755 --- a/module/bug/control.php +++ b/module/bug/control.php @@ -60,14 +60,14 @@ class bug extends control else { $mode = ($this->app->methodName == 'create' and empty($this->config->CRProduct)) ? 'noclosed' : ''; - $products = $this->product->getPairs($mode, 0, 'program_asc'); + $products = $this->product->getPairs($mode, 0, 'program_asc', 'all'); } if(empty($products) and !helper::isAjaxRequest()) return print($this->locate($this->createLink('product', 'showErrorNone', "moduleName=$tab&activeMenu=bug&objectID=$objectID"))); } else { $mode = (empty($this->config->CRProduct)) ? 'noclosed' : ''; - $products = $this->product->getPairs($mode, 0, 'program_asc'); + $products = $this->product->getPairs($mode, 0, 'program_asc', 'all'); } $this->view->products = $this->products = $products; } @@ -165,7 +165,7 @@ class bug extends control $pager = new pager($recTotal, $recPerPage, $pageID); /* Get executios. */ - $executions = $this->loadModel('execution')->getPairs($this->projectID, 'all', 'empty|withdelete'); + $executions = $this->loadModel('execution')->getPairs($this->projectID, 'all', 'empty|withdelete|hideMultiple'); /* Get product id list. */ $productIDList = $productID ? $productID : array_keys($this->products); @@ -196,7 +196,8 @@ class bug extends control /* Build the search form. */ $actionURL = $this->createLink('bug', 'browse', "productID=$productID&branch=$branch&browseType=bySearch&queryID=myQueryID"); $this->config->bug->search['onMenuBar'] = 'yes'; - $this->bug->buildSearchForm($productID, $this->products, $queryID, $actionURL, $branch); + $searchProducts = $this->product->getPairs('', 0, '', 'all'); + $this->bug->buildSearchForm($productID, $searchProducts, $queryID, $actionURL, $branch); $showModule = !empty($this->config->datatable->bugBrowse->showModule) ? $this->config->datatable->bugBrowse->showModule : ''; $productName = ($productID and isset($this->products[$productID])) ? $this->products[$productID] : $this->lang->product->allProduct; @@ -285,6 +286,9 @@ class bug extends control } } + $project = $this->loadModel('project')->getByShadowProduct($productID); + if(!$project->multiple) unset($this->lang->bug->report->charts['bugsPerExecution']); + $this->qa->setMenu($this->products, $productID, $branchID); $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->bug->common . $this->lang->colon . $this->lang->bug->reportChart; $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID"), $this->products[$productID]); @@ -319,8 +323,6 @@ class bug extends control parse_str($extras, $output); $from = isset($output['from']) ? $output['from'] : ''; - $project = new stdclass(); - if($this->app->tab == 'execution') { if(isset($output['executionID'])) $this->loadModel('execution')->setMenu($output['executionID']); @@ -342,17 +344,7 @@ class bug extends control } else if($this->app->tab == 'project') { - if(isset($output['projectID'])) - { - $this->loadModel('project')->setMenu($output['projectID']); - - /* Replace language. */ - $project = $this->project->getByID($output['projectID']); - if(!empty($project->model) and $project->model == 'waterfall') - { - $this->lang->bug->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->bug->execution); - } - } + if(isset($output['projectID'])) $this->loadModel('project')->setMenu($output['projectID']); } else { @@ -475,8 +467,8 @@ class bug extends control } /* Get product, then set menu. */ - $productID = $this->product->saveState($productID, $this->products); - $productInfo = $this->product->getById($productID); + $productID = $this->product->saveState($productID, $this->products); + $currentProduct = $this->product->getById($productID); if($branch === '') $branch = (int)$this->cookie->preBranch; @@ -518,6 +510,7 @@ class bug extends control if(isset($bugID)) { $bug = $this->bug->getById($bugID); + extract((array)$bug); $executionID = $bug->execution; $moduleID = $bug->module; @@ -553,13 +546,13 @@ class bug extends control if($this->app->tab == 'execution' or $this->app->tab == 'project') { $objectID = $this->app->tab == 'project' ? $projectID : $executionID; - $productBranches = $productInfo->type != 'normal' ? $this->loadModel('execution')->getBranchByProduct($productID, $objectID, 'noclosed|withMain') : array(); + $productBranches = $currentProduct->type != 'normal' ? $this->loadModel('execution')->getBranchByProduct($productID, $objectID, 'noclosed|withMain') : array(); $branches = isset($productBranches[$productID]) ? $productBranches[$productID] : array(); $branch = key($branches); } else { - $branches = $productInfo->type != 'normal' ? $this->loadModel('branch')->getPairs($productID, 'active') : array(); + $branches = $currentProduct->type != 'normal' ? $this->loadModel('branch')->getPairs($productID, 'active') : array(); } /* If executionID is setted, get builds and stories of this execution. */ @@ -593,12 +586,6 @@ class bug extends control $products = array(); $linkedProducts = $this->loadModel('product')->getProducts($executionID); foreach($linkedProducts as $product) $products[$product->id] = $product->name; - - if($projectID) - { - $project = $this->loadModel('project')->getByID($projectID); - if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name); - } } elseif($projectID) { @@ -606,9 +593,6 @@ class bug extends control $productList = $this->config->CRProduct ? $this->product->getOrderedProducts('all', 40, $projectID) : $this->product->getOrderedProducts('normal', 40, $projectID); foreach($productList as $product) $products[$product->id] = $product->name; - $project = $this->loadModel('project')->getByID($projectID); - if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name); - /* Set project menu. */ if($this->app->tab == 'project') $this->project->setMenu($projectID); } @@ -617,6 +601,22 @@ class bug extends control $projects += $this->product->getProjectPairsByProduct($productID, $branch); } + $projectModel = ''; + if($projectID) + { + $project = $this->loadModel('project')->getByID($projectID); + if($project) + { + if(empty($bugID) or $this->app->tab != 'qa') $projects += array($projectID => $project->name); + + /* Replace language. */ + if(!empty($project->model) and $project->model == 'waterfall') $this->lang->bug->execution = str_replace($this->lang->executionCommon, $this->lang->project->stage, $this->lang->bug->execution); + $projectModel = $project->model; + + if(!$project->multiple) $executionID = $this->loadModel('execution')->getNoMultipleID($projectID); + } + } + /* Link all projects to product when copying bug under qa.*/ if(!empty($bugID) and $this->app->tab == 'qa') $projects += $this->product->getProjectPairsByProduct($productID, $branch); @@ -634,66 +634,60 @@ class bug extends control /* Get executions. */ $executions = array(0 => ''); - if(isset($projects[$projectID]) or $this->config->systemMode == 'classic') $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID); + if(isset($projects[$projectID])) $executions += $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, !$projectID ? 'multiple' : ''); $execution = $executionID ? $this->loadModel('execution')->getByID($executionID) : ''; $executions = isset($executions[$executionID]) ? $executions : $executions + array($executionID => $execution->name); /* Set custom. */ foreach(explode(',', $this->config->bug->list->customCreateFields) as $field) $customFields[$field] = $this->lang->bug->$field; - /* In repair classic mode, when the project is required, the asterisk is not displayed. */ - if($this->config->systemMode == 'classic' and strpos(",{$this->config->bug->create->requiredFields},", ',project,') !== false) - { - $this->config->bug->create->requiredFields = str_replace(',project,', ',execution,', ",{$this->config->bug->create->requiredFields},"); - $this->config->bug->create->requiredFields = trim($this->config->bug->create->requiredFields, ','); - } - $this->view->title = isset($this->products[$productID]) ? $this->products[$productID] . $this->lang->colon . $this->lang->bug->create : $this->lang->bug->create; $this->view->customFields = $customFields; $this->view->showFields = $this->config->bug->custom->createFields; - $this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('bug', 'browse', "productID=$productID") : ''; - $this->view->products = $products; - $this->view->productID = $productID; - $this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : ''; - $this->view->moduleOptionMenu = $moduleOptionMenu; - $this->view->stories = $stories; - $this->view->projects = defined('TUTORIAL') ? $this->loadModel('tutorial')->getProjectPairs() : $projects; - $this->view->project = $project; - $this->view->executions = defined('TUTORIAL') ? $this->loadModel('tutorial')->getExecutionPairs() : $executions; - $this->view->builds = $builds; - $this->view->moduleID = (int)$moduleID; - $this->view->projectID = $projectID; - $this->view->executionID = $executionID; - $this->view->taskID = $taskID; - $this->view->storyID = $storyID; - $this->view->buildID = $buildID; - $this->view->caseID = $caseID; - $this->view->runID = $runID; - $this->view->version = $version; - $this->view->testtask = $testtask; - $this->view->bugTitle = $title; - $this->view->pri = $pri; - $this->view->steps = htmlSpecialString($steps); - $this->view->os = $os; - $this->view->browser = $browser; - $this->view->productMembers = $productMembers; - $this->view->assignedTo = $assignedTo; - $this->view->deadline = $deadline; - $this->view->mailto = $mailto; - $this->view->keywords = $keywords; - $this->view->severity = $severity; - $this->view->type = $type; - $this->view->productInfo = $productInfo; - $this->view->branch = $branch; - $this->view->branches = $branches; - $this->view->blockID = $blockID; - $this->view->color = $color; - $this->view->stepsRequired = strpos($this->config->bug->create->requiredFields, 'steps'); - $this->view->isStepsTemplate = $steps == $this->lang->bug->tplStep . $this->lang->bug->tplResult . $this->lang->bug->tplExpect ? true : false; - $this->view->issueKey = $from == 'sonarqube' ? $output['sonarqubeID'] . ':' . $output['issueKey'] : ''; - $this->view->feedbackBy = $feedbackBy; - $this->view->notifyEmail = $notifyEmail; + $this->view->gobackLink = (isset($output['from']) and $output['from'] == 'global') ? $this->createLink('bug', 'browse', "productID=$productID") : ''; + $this->view->products = $products; + $this->view->productID = $productID; + $this->view->productName = isset($this->products[$productID]) ? $this->products[$productID] : ''; + $this->view->moduleOptionMenu = $moduleOptionMenu; + $this->view->stories = $stories; + $this->view->projects = defined('TUTORIAL') ? $this->loadModel('tutorial')->getProjectPairs() : $projects; + $this->view->projectExecutionPairs = $this->loadModel('project')->getProjectExecutionPairs(); + $this->view->executions = defined('TUTORIAL') ? $this->loadModel('tutorial')->getExecutionPairs() : $executions; + $this->view->builds = $builds; + $this->view->moduleID = (int)$moduleID; + $this->view->projectID = $projectID; + $this->view->projectModel = $projectModel; + $this->view->execution = $execution; + $this->view->taskID = $taskID; + $this->view->storyID = $storyID; + $this->view->buildID = $buildID; + $this->view->caseID = $caseID; + $this->view->runID = $runID; + $this->view->version = $version; + $this->view->testtask = $testtask; + $this->view->bugTitle = $title; + $this->view->pri = $pri; + $this->view->steps = htmlSpecialString($steps); + $this->view->os = $os; + $this->view->browser = $browser; + $this->view->productMembers = $productMembers; + $this->view->assignedTo = $assignedTo; + $this->view->deadline = $deadline; + $this->view->mailto = $mailto; + $this->view->keywords = $keywords; + $this->view->severity = $severity; + $this->view->type = $type; + $this->view->product = $currentProduct; + $this->view->branch = $branch; + $this->view->branches = $branches; + $this->view->blockID = $blockID; + $this->view->color = $color; + $this->view->stepsRequired = strpos($this->config->bug->create->requiredFields, 'steps'); + $this->view->isStepsTemplate = $steps == $this->lang->bug->tplStep . $this->lang->bug->tplResult . $this->lang->bug->tplExpect ? true : false; + $this->view->issueKey = $from == 'sonarqube' ? $output['sonarqubeID'] . ':' . $output['issueKey'] : ''; + $this->view->feedbackBy = $feedbackBy; + $this->view->notifyEmail = $notifyEmail; $this->display(); } @@ -831,6 +825,8 @@ class bug extends control } $projectID = $this->lang->navGroup->bug == 'project' ? $this->session->project : (isset($execution) ? $execution->project : 0); + $project = $this->loadModel('project')->getByID($projectID); + if(isset($project->model) && $project->model == 'kanban') $customFields['execution'] = $this->lang->bug->kanban; /* Get branches. */ if($executionID) @@ -851,7 +847,7 @@ class bug extends control $this->view->position[] = html::a($this->createLink('bug', 'browse', "productID=$productID&branch=$branch"), $this->products[$productID]); $this->view->position[] = $this->lang->bug->batchCreate; - $this->view->project = $this->loadModel('project')->getByID($projectID); + $this->view->project = $project; $this->view->product = $product; $this->view->productID = $productID; $this->view->stories = $stories; @@ -859,7 +855,7 @@ class bug extends control $this->view->users = $this->user->getPairs('devfirst|noclosed'); $this->view->projects = array('' => '') + $this->product->getProjectPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID); $this->view->projectID = $projectID; - $this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID); + $this->view->executions = array('' => '') + $this->product->getExecutionPairsByProduct($productID, $branch ? "0,$branch" : 0, 'id_desc', $projectID, 'multiple'); $this->view->executionID = $executionID; $this->view->moduleOptionMenu = $this->tree->getOptionMenu($productID, $viewType = 'bug', $startModuleID = 0, $branch === 'all' ? 0 : $branch); $this->view->moduleID = $moduleID; @@ -1035,6 +1031,7 @@ class bug extends control $projectID = $bug->project; $currentModuleID = $bug->module; $product = $this->loadModel('product')->getByID($productID); + $execution = $this->loadModel('execution')->getByID($executionID); $this->bug->checkBugExecutionPriv($bug); if(!isset($this->products[$bug->product])) @@ -1044,14 +1041,16 @@ class bug extends control } /* Set the menu. */ - if($this->app->tab == 'project') $this->loadModel('project')->setMenu($bug->project); + if($this->app->tab == 'project') $this->loadModel('project')->setMenu($bug->project); if($this->app->tab == 'execution') $this->loadModel('execution')->setMenu($bug->execution); - if($this->app->tab == 'qa') $this->qa->setMenu($this->products, $productID, $bug->branch); + if($this->app->tab == 'qa') $this->qa->setMenu($this->products, $productID, $bug->branch); if($this->app->tab == 'devops') { session_write_close(); + $repos = $this->loadModel('repo')->getRepoPairs('project', $bug->project); $this->repo->setMenu($repos); + $this->lang->navGroup->bug = 'devops'; } @@ -1067,9 +1066,10 @@ class bug extends control } if($this->app->tab == 'project') { - $products = array(); + $products = array(); $productList = $this->config->CRProduct ? $this->product->getOrderedProducts('all', 40, $bug->project) : $this->product->getOrderedProducts('normal', 40, $bug->project); foreach($productList as $productInfo) $products[$productInfo->id] = $productInfo->name; + $this->view->products = $products; } @@ -1160,27 +1160,31 @@ class bug extends control $productBugs = $this->bug->getProductBugPairs($productID, $branch); unset($productBugs[$bugID]); - $this->view->bug = $bug; - $this->view->productID = $productID; - $this->view->product = $product; - $this->view->productBugs = $productBugs; - $this->view->productName = $this->products[$productID]; - $this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true); - $this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch, $bug->project); - $this->view->moduleOptionMenu = $moduleOptionMenu; - $this->view->currentModuleID = $currentModuleID; - $this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project); - $this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false); - $this->view->branchOption = $branchOption; - $this->view->branchTagOption = $branchTagOption; - $this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution); - $this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask); - $this->view->users = $this->user->getPairs('', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy"); - $this->view->assignedToList = $assignedToList; - $this->view->cases = array('' => '') + $cases; - $this->view->openedBuilds = $openedBuilds; - $this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild; - $this->view->actions = $this->action->getList('bug', $bugID); + if($product->shadow) $this->view->project = $this->loadModel('project')->getByShadowProduct($bug->product); + + $this->view->bug = $bug; + $this->view->productID = $productID; + $this->view->product = $product; + $this->view->execution = $execution; + $this->view->productBugs = $productBugs; + $this->view->productName = $this->products[$productID]; + $this->view->plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true); + $this->view->projects = array(0 => '') + $this->product->getProjectPairsByProduct($productID, $bug->branch, $bug->project); + $this->view->projectExecutionPairs = $this->loadModel('project')->getProjectExecutionPairs(); + $this->view->moduleOptionMenu = $moduleOptionMenu; + $this->view->currentModuleID = $currentModuleID; + $this->view->executions = array(0 => '') + $this->product->getExecutionPairsByProduct($bug->product, $bug->branch, 'id_desc', $bug->project); + $this->view->stories = $bug->execution ? $this->story->getExecutionStoryPairs($bug->execution) : $this->story->getProductStoryPairs($bug->product, $bug->branch, 0, 'all', 'id_desc', 0, 'full', 'story', false); + $this->view->branchOption = $branchOption; + $this->view->branchTagOption = $branchTagOption; + $this->view->tasks = $this->task->getExecutionTaskPairs($bug->execution); + $this->view->testtasks = $this->loadModel('testtask')->getPairs($bug->product, $bug->execution, $bug->testtask); + $this->view->users = $this->user->getPairs('', "$bug->assignedTo,$bug->resolvedBy,$bug->closedBy,$bug->openedBy"); + $this->view->assignedToList = $assignedToList; + $this->view->cases = array('' => '') + $cases; + $this->view->openedBuilds = $openedBuilds; + $this->view->resolvedBuilds = array('' => '') + $openedBuilds + $oldResolvedBuild; + $this->view->actions = $this->action->getList('bug', $bugID); $this->display(); } @@ -1239,8 +1243,12 @@ class bug extends control $branchProduct = $product->type == 'normal' ? false : true; /* Set plans. */ - $plans = $this->loadModel('productplan')->getPairs($productID, $branch, '', true); - $plans = array('' => '', 'ditto' => $this->lang->bug->ditto) + $plans; + foreach($bugs as $bug) + { + $plans = $this->loadModel('productplan')->getPairs($productID, $bug->branch, '', true); + $plans = array('' => '', 'ditto' => $this->lang->bug->ditto) + $plans; + $bug->plans = $plans; + } /* Set branches and modules. */ $branches = 0; @@ -2033,6 +2041,21 @@ class bug extends control /* Set the menu. */ $this->qa->setMenu($this->products, $bug->product, $bug->branch); + /* Hide plan and product in no product project. */ + if($bug->project and $this->app->tab != 'qa') + { + $project = $this->loadModel('project')->getByID($bug->project); + if(!$project->hasProduct) + { + unset($this->config->bug->search['fields']['product']); + if(!$project->multiple) + { + unset($this->config->bug->search['fields']['execution']); + unset($this->config->bug->search['fields']['plan']); + } + } + } + /* Build the search form. */ $actionURL = $this->createLink('bug', 'linkBugs', "bugID=$bugID&browseType=bySearch&excludeBugs=$excludeBugs&queryID=myQueryID", '', true); $this->bug->buildSearchForm($bug->product, $this->products, $queryID, $actionURL); @@ -2319,8 +2342,8 @@ class bug extends control { if($_POST) { - $this->loadModel('port'); - $this->session->set('bugPortParams', array('productID' => $productID, 'executionID' => $executionID, 'branch' => 'all')); + $this->loadModel('transfer'); + $this->session->set('bugTransferParams', array('productID' => $productID, 'executionID' => $executionID, 'branch' => 'all')); if(!$productID) { $this->config->bug->datatable->fieldList['module']['dataSource']['method'] = 'getAllModulePairs'; @@ -2330,9 +2353,18 @@ class bug extends control $this->config->bug->datatable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs', 'params' => $executionID); } - $this->port->export('bug'); + $this->transfer->export('bug'); $this->fetch('file', 'export2' . $_POST['fileType'], $_POST); } + $product = $this->loadModel('product')->getByID($productID); + if($product->type == 'normal') $this->config->bug->exportFields = str_replace('branch,', '', $this->config->bug->exportFields); + + if($this->app->tab == 'project' or $this->app->tab == 'execution') + { + $execution = $this->loadModel('execution')->getByID($executionID); + if(empty($execution->multiple)) $this->config->bug->exportFields = str_replace('execution,', '', $this->config->bug->exportFields); + if($product->shadow) $this->config->bug->exportFields = str_replace('product,', '', $this->config->bug->exportFields); + } $fileName = $this->lang->bug->common; if($executionID) @@ -2342,7 +2374,7 @@ class bug extends control } else { - $productName = $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch('name'); + $productName = !empty($product->name) ? $product->name : ''; $browseType = isset($this->lang->bug->featureBar['browse'][$browseType]) ? $this->lang->bug->featureBar['browse'][$browseType] : zget($this->lang->bug->moreSelects, $browseType, ''); $fileName = $productName . $this->lang->dash . $browseType . $fileName; @@ -2403,6 +2435,12 @@ class bug extends control $products = array(); if(!empty($extra)) $products = $this->product->getProducts($extra, 'all', 'program desc, line desc, '); + if($this->config->systemMode == 'ALM') + { + $this->view->programs = $this->loadModel('program')->getPairs(true); + $this->view->lines = $this->product->getLinePairs(); + } + $this->view->link = $this->product->getProductLink($module, $method, $extra); $this->view->productID = $productID; $this->view->module = $module; @@ -2410,8 +2448,6 @@ class bug extends control $this->view->extra = $extra; $this->view->products = $products; $this->view->projectID = $this->session->project; - $this->view->programs = $this->loadModel('program')->getPairs(true); - $this->view->lines = $this->product->getLinePairs(); $this->display(); } diff --git a/module/bug/js/common.js b/module/bug/js/common.js index 28b453c754..9f0d4a336f 100644 --- a/module/bug/js/common.js +++ b/module/bug/js/common.js @@ -2,7 +2,6 @@ $(function() { var page = window.page || ''; var flow = window.flow; - if(typeof(systemMode) == undefined) var systemMode = ''; $('#subNavbar a[data-toggle=dropdown]').parent().addClass('dropdown dropdown-hover'); @@ -294,13 +293,6 @@ function loadProductStories(productID) */ function loadProductProjects(productID) { - if(systemMode == 'classic') - { - var projectID = $('#execution').find("option:selected").val(); - loadProductExecutions(productID, projectID); - return true; - } - branch = $('#branch').val(); if(typeof(branch) == 'undefined') branch = 0; @@ -327,12 +319,22 @@ function loadProductExecutions(productID, projectID = 0) branch = $('#branch').val(); if(typeof(branch) == 'undefined') branch = 0; - var execution = $('#execution').val(); + if(projectID != 0 && projectExecutionPairs[projectID] !== undefined) + { + $('#executionIdBox').parents('.executionBox').hide(); + var execution = projectExecutionPairs[projectID]; + } + else + { + $('#executionIdBox').parents('.executionBox').show(); + var execution = $('#execution').val(); + } + link = createLink('product', 'ajaxGetExecutions', 'productID=' + productID + '&projectID=' + projectID + '&branch=' + branch + '&number=&executionID=' + execution); $('#executionIdBox').load(link, function() { $(this).find('select').chosen(); - if(typeof(bugExecution) == 'string' && systemMode != 'classic') $('#executionIdBox').prepend("" + bugExecution + ""); + if(typeof(bugExecution) == 'string') $('#executionIdBox').prepend("" + bugExecution + ""); if(required) $(this).find('#execution_chosen').addClass('required'); changeAssignedTo(projectID); }); @@ -585,13 +587,13 @@ function loadProjectBuilds(projectID) function loadExecutionBuilds(executionID, num) { if(typeof(num) == 'undefined') num = ''; - var branch = $('#branch' + num).val(); - - if(typeof(branch) == 'undefined') var branch = 0; - + var branch = $('#branch' + num).val(); var oldOpenedBuild = $('#openedBuild' + num).val() ? $('#openedBuild' + num).val() : 0; var productID = $('#product' + num).val(); + if(typeof(branch) == 'undefined') var branch = 0; + if(typeof(productID) == 'undefined') var productID = 0; + if(page == 'create') { link = createLink('build', 'ajaxGetExecutionBuilds', 'executionID=' + executionID + '&productID=' + productID + '&varName=openedBuild&build=' + oldOpenedBuild + "&branch=" + branch + "&index=0&needCreate=true"); @@ -880,9 +882,20 @@ function setBranchRelated(branchID, productID, num) { planID = $('#plans' + num).val(); planLink = createLink('product', 'ajaxGetPlans', 'productID=' + productID + '&branch=' + branchID + '&planID=' + planID + '&fieldID=' + num + '&needCreate=false&expired=¶m=skipParent'); + $.ajaxSettings.async = false; $('#plans' + num).parent('td').load(planLink, function() { $('#plans' + num).chosen(); + var firstBugID = $('.table-form tbody').first('tr').find('input[id^=bugIDList]').val(); + if(num == firstBugID) + { + $('#plans' + firstBugID).find('option').each(function() + { + if($(this).val() == 'ditto') $(this).remove(); + $('#plans' + firstBugID).trigger('chosen:updated'); + }); + } }); + $.ajaxSettings.async = true; } } diff --git a/module/bug/js/view.js b/module/bug/js/view.js index 22aa62bb28..2e38b6e93f 100644 --- a/module/bug/js/view.js +++ b/module/bug/js/view.js @@ -33,19 +33,13 @@ $('#toTaskButton').on('click', function() var executionID = $('#execution').val(); var executionID = executionID ? executionID : 0; - if(systemMode == 'new' && projectID && executionID != 0) + if(projectID && executionID != 0) { $('#cancelButton').click(); link = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=' + projectID + '&bugID=' + bugID); window.parent.$.apps.open(link, 'execution'); } - else if(systemMode == 'classic' && executionID) - { - $('#cancelButton').click(); - var link = createLink('task', 'create', 'executionID=' + executionID + '&storyID=0&moduleID=0&taskID=0&todoID=0&extra=projectID=0&bugID=' + bugID); - window.parent.$.apps.open(link, 'execution'); - } - else if(systemMode == 'new' && projectID == 0) + else if(projectID == 0) { alert(errorNoProject); } diff --git a/module/bug/lang/de.php b/module/bug/lang/de.php index 92c7f5d4fb..7bceae4597 100644 --- a/module/bug/lang/de.php +++ b/module/bug/lang/de.php @@ -191,8 +191,8 @@ global $config; /* Legend list. */ $lang->bug->legendBasicInfo = 'Basis Info'; $lang->bug->legendAttatch = 'Anlagen'; -$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task'; -$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Task'; +$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task'; +$lang->bug->legendExecStoryTask = 'Porject/Story/Task'; $lang->bug->lblTypeAndSeverity = 'Typ/Schwere'; $lang->bug->lblSystemBrowserAndHardware = 'System/Browser'; $lang->bug->legendSteps = 'Reproduktionsschritte'; diff --git a/module/bug/lang/en.php b/module/bug/lang/en.php index 6b20c15b4e..dfdc2239e3 100644 --- a/module/bug/lang/en.php +++ b/module/bug/lang/en.php @@ -191,8 +191,8 @@ global $config; /* Legend list. */ $lang->bug->legendBasicInfo = 'Basic Info'; $lang->bug->legendAttatch = 'Files'; -$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task'; -$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Task'; +$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task'; +$lang->bug->legendExecStoryTask = 'Porject/Story/Task'; $lang->bug->lblTypeAndSeverity = 'Type/Severity'; $lang->bug->lblSystemBrowserAndHardware = 'System/Browser'; $lang->bug->legendSteps = 'Repro Steps'; diff --git a/module/bug/lang/fr.php b/module/bug/lang/fr.php index ff9fd3073a..2d5289233c 100644 --- a/module/bug/lang/fr.php +++ b/module/bug/lang/fr.php @@ -191,8 +191,8 @@ global $config; /* Legend list. */ $lang->bug->legendBasicInfo = 'Infos de Base'; $lang->bug->legendAttatch = 'Fichiers'; -$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? 'Project/' . $lang->executionCommon . '/Story/Task' : $lang->executionCommon . '/Story/Task'; -$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Story/Tâche'; +$lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task'; +$lang->bug->legendExecStoryTask = 'Porject/Story/Task'; $lang->bug->lblTypeAndSeverity = 'Type/Severité'; $lang->bug->lblSystemBrowserAndHardware = 'Système/Browser'; $lang->bug->legendSteps = 'Etapes Repro'; diff --git a/module/bug/lang/vi.php b/module/bug/lang/vi.php index b21a1eed16..7503238b12 100644 --- a/module/bug/lang/vi.php +++ b/module/bug/lang/vi.php @@ -164,7 +164,7 @@ $lang->bug->createBuild = 'Mới'; $lang->bug->legendBasicInfo = 'Thông tin cơ bản'; $lang->bug->legendAttatch = 'Files'; $lang->bug->legendPRJExecStoryTask = 'Project/' . $lang->executionCommon . '/Story/Task'; -$lang->bug->legendExecStoryTask = $lang->executionCommon . '/Câu chuyện/Nhiệm vụ'; +$lang->bug->legendExecStoryTask = 'Project/Câu chuyện/Nhiệm vụ'; $lang->bug->lblTypeAndSeverity = 'Loại/Mức độ'; $lang->bug->lblSystemBrowserAndHardware = 'Hệ thống/Trình duyệt'; $lang->bug->legendSteps = 'Các bước Repro'; diff --git a/module/bug/lang/zh-cn.php b/module/bug/lang/zh-cn.php index e437a9bfb5..bb56a13546 100644 --- a/module/bug/lang/zh-cn.php +++ b/module/bug/lang/zh-cn.php @@ -191,8 +191,8 @@ global $config; /* legend列表。*/ $lang->bug->legendBasicInfo = '基本信息'; $lang->bug->legendAttatch = '附件'; -$lang->bug->legendPRJExecStoryTask = $config->systemMode == 'new' ? "项目/" . $lang->executionCommon . "/{$lang->SRCommon}/任务" : $lang->executionCommon . "/{$lang->SRCommon}/任务"; -$lang->bug->legendExecStoryTask = $lang->executionCommon . "/{$lang->SRCommon}/任务"; +$lang->bug->legendPRJExecStoryTask = "项目/{$lang->executionCommon}/{$lang->SRCommon}/任务"; +$lang->bug->legendExecStoryTask = "项目/{$lang->SRCommon}/任务"; $lang->bug->lblTypeAndSeverity = '类型/严重程度'; $lang->bug->lblSystemBrowserAndHardware = '系统/浏览器'; $lang->bug->legendSteps = '重现步骤'; diff --git a/module/bug/model.php b/module/bug/model.php index c75006a760..b4499798f5 100644 --- a/module/bug/model.php +++ b/module/bug/model.php @@ -66,7 +66,7 @@ class bugModel extends model ->setDefault('openedBuild', '') ->setDefault('notifyEmail', '') ->setDefault('deadline', '0000-00-00') - ->setIF($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa', 'project', $this->session->project) + ->setIF($this->lang->navGroup->bug != 'qa', 'project', $this->session->project) ->setIF(strpos($this->config->bug->create->requiredFields, 'deadline') !== false, 'deadline', $this->post->deadline) ->setIF($this->post->assignedTo != '', 'assignedDate', $now) ->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story)) @@ -89,9 +89,6 @@ class bugModel extends model $bug = $this->loadModel('file')->processImgURL($bug, $this->config->bug->editor->create['id'], $this->post->uid); - /* Use classic mode to replace required project. */ - if($this->config->systemMode == 'classic' and strpos($this->config->bug->create->requiredFields, 'project') !== false) $this->config->bug->create->requiredFields = str_replace('project', 'execution', $this->config->bug->create->requiredFields); - $this->dao->insert(TABLE_BUG)->data($bug) ->autoCheck() ->checkIF($bug->notifyEmail, 'notifyEmail', 'email') @@ -288,7 +285,7 @@ class bugModel extends model } } - if($this->config->systemMode == 'new' && $this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project; + if($this->lang->navGroup->bug != 'qa') $bug->project = $this->session->project; $this->dao->insert(TABLE_BUG)->data($bug) ->autoCheck() ->batchCheck($this->config->bug->create->requiredFields, 'notempty') @@ -698,7 +695,8 @@ class bugModel extends model ->add('id', $bugID) ->cleanInt('product,module,severity,project,execution,story,task,branch') ->stripTags($this->config->bug->editor->edit['id'], $this->config->allowedTags) - ->setDefault('product,module,execution,story,task,duplicateBug,branch', 0) + ->setDefault('module,execution,story,task,duplicateBug,branch', 0) + ->setDefault('product', $oldBug->product) ->setDefault('openedBuild', '') ->setDefault('os', '') ->setDefault('browser', '') @@ -1602,7 +1600,7 @@ class bugModel extends model { $projectID = $this->lang->navGroup->bug == 'qa' ? 0 : $this->session->project; $productParams = ($productID and isset($products[$productID])) ? array($productID => $products[$productID]) : $products; - $productParams = $productParams + array('all' => $this->lang->bug->allProduct); + $productParams = $productParams + array('all' => $this->lang->all); $projectParams = $this->getProjects($productID); $projectParams = $projectParams + array('all' => $this->lang->bug->allProject); @@ -1617,7 +1615,7 @@ class bugModel extends model $this->config->bug->search['actionURL'] = $actionURL; $this->config->bug->search['queryID'] = $queryID; - if($this->config->systemMode == 'new') $this->config->bug->search['params']['project']['values'] = $projectParams; + $this->config->bug->search['params']['project']['values'] = $projectParams; $this->config->bug->search['params']['product']['values'] = $productParams; $this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairs($productID); $this->config->bug->search['params']['module']['values'] = $modules; @@ -1753,7 +1751,7 @@ class bugModel extends model $query = preg_replace('/`(\w+)`/', 't1.`$1`', $query); if($type != 'bySearch' and !$this->loadModel('common')->checkField(TABLE_BUG, $type)) return array(); - return $this->dao->select("t1.*,t2.name as productName, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder, IF(t1.`severity` = 0, {$this->config->maxPriValue}, t1.`severity`) as severityOrder")->from(TABLE_BUG)->alias('t1') + return $this->dao->select("t1.*, t2.name AS productName, t2.shadow, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) AS priOrder, IF(t1.`severity` = 0, {$this->config->maxPriValue}, t1.`severity`) AS severityOrder")->from(TABLE_BUG)->alias('t1') ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') ->where('t1.deleted')->eq(0) ->andWhere('t2.deleted')->eq('0') @@ -1871,7 +1869,7 @@ class bugModel extends model ->where('t1.deleted')->eq(0) ->beginIF(empty($build))->andWhere('t1.project')->eq($projectID)->fi() ->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID)->fi() - ->beginIF(!empty($productID))->andWhere('t1.branch')->eq($branchID)->fi() + ->beginIF(!empty($productID) and $branchID != 'all')->andWhere('t1.branch')->eq($branchID)->fi() ->beginIF($type == 'unresolved')->andWhere('t1.status')->eq('active')->fi() ->beginIF($type == 'noclosed')->andWhere('t1.status')->ne('closed')->fi() ->beginIF($type == 'assignedtome')->andWhere('t1.assignedTo')->eq($this->app->user->account)->fi() @@ -1890,19 +1888,19 @@ class bugModel extends model /** * Get bugs of a execution. * - * @param int $executionID - * @param int $productID - * @param int $branchID - * @param int $build - * @param string $type - * @param int $param - * @param string $orderBy - * @param string $excludeBugs - * @param object $pager + * @param int $executionID + * @param int $productID + * @param int $branchID + * @param string|array $builds + * @param string $type + * @param int $param + * @param string $orderBy + * @param string $excludeBugs + * @param object $pager * @access public * @return array */ - public function getExecutionBugs($executionID, $productID = 0, $branchID = 'all', $build = 0, $type = '', $param = 0, $orderBy = 'id_desc', $excludeBugs = '', $pager = null) + public function getExecutionBugs($executionID, $productID = 0, $branchID = 'all', $builds = 0, $type = '', $param = 0, $orderBy = 'id_desc', $excludeBugs = '', $pager = null) { $type = strtolower($type); if(strpos($orderBy, 'pri_') !== false) $orderBy = str_replace('pri_', 'priOrder_', $orderBy); @@ -1937,15 +1935,28 @@ class bugModel extends model } else { + $condition = ''; + if($builds) + { + if(!is_array($builds)) $builds = explode(',', $builds); + + $conditions = array(); + foreach($builds as $build) + { + if($build) $conditions[] = "FIND_IN_SET('$build', t1.openedBuild)"; + } + $condition = join(' OR ', $conditions); + $condition = "($condition)"; + } $bugs = $this->dao->select("t1.*, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder, IF(t1.`severity` = 0, {$this->config->maxPriValue}, t1.`severity`) as severityOrder")->from(TABLE_BUG)->alias('t1') ->leftJoin(TABLE_MODULE)->alias('t2')->on('t1.module=t2.id') ->where('t1.deleted')->eq(0) ->beginIF(!empty($productID) and $branchID !== 'all')->andWhere('t1.branch')->eq($branchID)->fi() - ->beginIF(empty($build))->andWhere('t1.execution')->eq($executionID)->fi() + ->beginIF(empty($builds))->andWhere('t1.execution')->eq($executionID)->fi() ->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID)->fi() ->beginIF($type == 'unresolved')->andWhere('t1.status')->eq('active')->fi() ->beginIF($type == 'noclosed')->andWhere('t1.status')->ne('closed')->fi() - ->beginIF($build)->andWhere("CONCAT(',', t1.openedBuild, ',') like '%,$build,%'")->fi() + ->beginIF($condition)->andWhere("$condition")->fi() ->beginIF(!empty($param))->andWhere('t2.path')->like("%,$param,%")->andWhere('t2.deleted')->eq(0)->fi() ->beginIF($excludeBugs)->andWhere('t1.id')->notIN($excludeBugs)->fi() ->orderBy($orderBy) @@ -1961,35 +1972,43 @@ class bugModel extends model /** * Get product left bugs. * - * @param int $build - * @param int $productID - * @param int $branch - * @param string $linkedBugs - * @param object $pager + * @param int|string $buildIdList + * @param int $productID + * @param int $branch + * @param string $linkedBugs + * @param object $pager * @access public * @return array */ - public function getProductLeftBugs($build, $productID, $branch = '', $linkedBugs = '', $pager = null) + public function getProductLeftBugs($buildIdList, $productID, $branch = '', $linkedBugs = '', $pager = null) { - $build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq($build)->fetch(); - if(empty($build->execution)) return array(); + $executionIdList = $this->getLinkedExecutionByIdList($buildIdList); + if(empty($executionIdList)) return array(); + + $executions = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->in($executionIdList)->fetchAll(); + $minBegin = ''; + $maxEnd = ''; + foreach($executions as $execution) + { + if(empty($minBegin) or $minBegin > $execution->begin) $minBegin = $execution->begin; + if(empty($maxEnd) or $maxEnd < $execution->end) $maxEnd = $execution->end; + } - $execution = $this->dao->select('*')->from(TABLE_EXECUTION)->where('id')->eq($build->execution)->fetch(); $beforeBuilds = $this->dao->select('t1.id')->from(TABLE_BUILD)->alias('t1') ->leftJoin(TABLE_EXECUTION)->alias('t2')->on('t1.execution=t2.id') ->where('t1.product')->eq($productID) ->andWhere('t2.status')->ne('done') ->andWhere('t2.deleted')->eq(0) ->andWhere('t1.deleted')->eq(0) - ->andWhere('t1.date')->lt($execution->begin) + ->andWhere('t1.date')->lt($minBegin) ->fetchPairs('id', 'id'); $bugs = $this->dao->select('*')->from(TABLE_BUG)->where('deleted')->eq(0) ->andWhere('product')->eq($productID) ->andWhere('toStory')->eq(0) - ->andWhere('openedDate')->ge($execution->begin) - ->andWhere('openedDate')->le($execution->end) - ->andWhere("(status = 'active' OR resolvedDate > '{$execution->end}')") + ->andWhere('openedDate')->ge($minBegin) + ->andWhere('openedDate')->le($maxEnd) + ->andWhere("(status = 'active' OR resolvedDate > '{$maxEnd}')") ->andWhere('openedBuild')->notin($beforeBuilds) ->beginIF($linkedBugs)->andWhere('id')->notIN($linkedBugs)->fi() ->beginIF($branch !== '')->andWhere('branch')->in("0,$branch")->fi() @@ -2041,8 +2060,7 @@ class bugModel extends model $users = $this->dao->select("t2.id, t2.account, t2.realname")->from(TABLE_TEAM)->alias('t1') ->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account') ->where('t1.root')->in(array_keys($projects)) - ->beginIF($this->config->systemMode == 'new')->andWhere('t1.type')->eq('project')->fi() - ->beginIF($this->config->systemMode == 'classic')->andWhere('t1.type')->eq('execution')->fi() + ->andWhere('t1.type')->eq('project') ->andWhere('t2.deleted')->eq(0) ->fi() ->fetchAll('account'); @@ -2063,31 +2081,74 @@ class bugModel extends model /** * Get bugs according to buildID and productID. * - * @param int $buildID - * @param int $productID + * @param int|string $buildIdList + * @param int $productID + * @param string $branch + * @param string $linkedBugs + * @param object $pager * @access public - * @return object + * @return array */ - public function getReleaseBugs($buildID, $productID, $branch = 0, $linkedBugs = '', $pager = null) + public function getReleaseBugs($buildIdList, $productID, $branch = 0, $linkedBugs = '', $pager = null) { - $execution = $this->dao->select('t1.id,t1.begin')->from(TABLE_EXECUTION)->alias('t1') - ->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.id = t2.execution') - ->where('t2.id')->eq($buildID) - ->fetch(); + $executionIdList = $this->getLinkedExecutionByIdList($buildIdList); + if(empty($executionIdList)) return array(); + + $executions = $this->dao->select('id,type,begin')->from(TABLE_EXECUTION)->where('id')->in($executionIdList)->fetchAll('id'); + $condition = 'execution NOT ' . helper::dbIN($executionIdList); + $minBegin = ''; + foreach($executions as $execution) + { + if(empty($minBegin) or $minBegin > $execution->begin) $minBegin = $execution->begin; + $condition .= " OR (`execution` = '{$execution->id}' AND openedDate < '{$execution->begin}')"; + } + $bugs = $this->dao->select('*')->from(TABLE_BUG) - ->where('resolvedDate')->ge($execution->begin) + ->where('resolvedDate')->ge($minBegin) ->andWhere('resolution')->ne('postponed') ->andWhere('product')->eq($productID) ->beginIF($linkedBugs)->andWhere('id')->notIN($linkedBugs)->fi() ->beginIF($branch)->andWhere('branch')->in("0,$branch")->fi() - ->andWhere("(execution != '$execution->id' OR (execution = '$execution->id' and openedDate < '$execution->begin'))") + ->andWhere("($condition)") ->andWhere('deleted')->eq(0) ->orderBy('openedDate ASC') ->page($pager) - ->fetchAll(); + ->fetchAll('id'); return $bugs; } + /** + * Get linked execution by build id list. + * + * @param string $buildIdList + * @access public + * @return array + */ + public function getLinkedExecutionByIdList($buildIdList) + { + $builds = $this->dao->select('id,execution')->from(TABLE_BUILD)->where('id')->in($buildIdList)->fetchAll('id'); + + $executionIdList = array(); + $linkedBuildIdList = array(); + foreach($builds as $build) + { + if($build->builds) $linkedBuildIdList = array_merge($linkedBuildIdList, explode(',', $build->builds)); + + if(empty($build->execution)) continue; + $executionIdList[$build->execution] = $build->execution; + } + if($linkedBuildIdList) + { + $linkedBuilds = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->in(array_unique($linkedBuildIdList))->fetchAll('id'); + foreach($linkedBuilds as $build) + { + if(empty($build->execution)) continue; + $executionIdList[$build->execution] = $build->execution; + } + } + return $executionIdList; + } + /** * Get bugs of a story. * @@ -2953,7 +3014,7 @@ class bugModel extends model } else { - $productParis = $this->loadModel('product')->getPairs(); + $productParis = $this->loadModel('product')->getPairs('', 0, '', 'all'); $productIDList = array_keys($productParis); if(!empty($productIDList)) @@ -3429,19 +3490,7 @@ class bugModel extends model echo helper::isZeroDate($bug->openedDate) ? '' : substr($bug->openedDate, 5, 11); break; case 'openedBuild': - $builds = array_flip($builds); - foreach(explode(',', $bug->openedBuild) as $build) - { - $buildID = zget($builds, $build, ''); - if($buildID == 'trunk') - { - echo $build . ' '; - } - elseif($buildID and common::hasPriv('build', 'view')) - { - echo html::a(helper::createLink('build', 'view', "buildID=$buildID"), $build, '', "title='$bug->openedBuild'") . ' '; - } - } + echo $bug->openedBuild; break; case 'assignedTo': $this->printAssignedHtml($bug, $users); @@ -3622,7 +3671,8 @@ class bugModel extends model if($type == 'view') $menu .= $this->buildMenu('bug', 'activate', $params, $bug, $type, '', '', "text-success iframe showinonlybody", true); if($type == 'view' && $this->app->tab != 'product') { - $menu .= $this->buildMenu('bug', 'toStory', $toStoryParams, $bug, $type, $this->lang->icons['story'], '', '', '', "data-app='product' id='tostory'", $this->lang->bug->toStory); + $tab = $this->app->tab == 'qa' ? 'product' : $this->app->tab; + $menu .= $this->buildMenu('bug', 'toStory', $toStoryParams, $bug, $type, $this->lang->icons['story'], '', '', '', "data-app='$tab' id='tostory'", $this->lang->bug->toStory); if(common::hasPriv('task', 'create') and !isonlybody()) $menu .= html::a('#toTask', "{$this->lang->bug->toTask}", '', "data-app='qa' data-toggle='modal' class='btn btn-link'"); $menu .= $this->buildMenu('bug', 'createCase', $convertParams, $bug, $type, 'sitemap'); } @@ -3650,7 +3700,7 @@ class bugModel extends model public function getRelatedObjects($object, $pairs = '') { /* Get bugs. */ - $bugs = $this->loadModel('port')->getQueryDatas('bug'); + $bugs = $this->loadModel('transfer')->getQueryDatas('bug'); /* Get related objects id lists. */ $relatedObjectIdList = array(); diff --git a/module/bug/view/ajaxgetdropmenu.html.php b/module/bug/view/ajaxgetdropmenu.html.php index c4c129476a..af69f3582d 100644 --- a/module/bug/view/ajaxgetdropmenu.html.php +++ b/module/bug/view/ajaxgetdropmenu.html.php @@ -22,8 +22,8 @@ $productsHtml = count($products) > 1 ? html::a($linkHtml, $this->lang->bug->al foreach($products as $product) { $selected = $product->id == $productID ? 'selected' : ''; - $productName = $product->program ? zget($programs, $product->program, '') . '/' : ''; - $productName .= $product->line ? zget($lines, $product->line, '') . '/' . $product->name : $product->name; + $productName = ($product->program and $this->config->systemMode == 'ALM') ? zget($programs, $product->program, '') . '/' : ''; + $productName .= ($this->config->systemMode == 'ALM' and $product->line) ? zget($lines, $product->line, '') . '/' . $product->name : $product->name; $objectID = ($product->type != 'platform' && $module == 'branch' && $method == 'manage') ? $productID : $product->id; $linkHtml = $this->product->setParamsForLink($module, $link, $projectID, $product->id); $productsHtml .= html::a($linkHtml, $productName, '', "class='text-primary $selected' title='{$productName}' data-key='" . zget($productsPinYin, $product->name, '') . "' data-app='{$this->app->tab}'"); diff --git a/module/bug/view/batchcreate.html.php b/module/bug/view/batchcreate.html.php index 5e167e4891..c93fe27e54 100755 --- a/module/bug/view/batchcreate.html.php +++ b/module/bug/view/batchcreate.html.php @@ -56,9 +56,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field) idAB;?> branchBox'> product->branch;?> '> bug->module;?> - systemMode == 'new'):?> - projectBox'>model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->project;?> - + projectBox'>bug->project;?> executionBox'>model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?> bug->openedBuild;?> bug->title;?> @@ -107,9 +105,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field) branchBox' style='overflow:visible'> - systemMode == 'new'):?> - projectBox' style='overflow:visible'> - + projectBox' style='overflow:visible'> executionBox' style='overflow:visible'> @@ -165,9 +161,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field) branchBox' style='overflow:visible'> - systemMode == 'new'):?> projectBox' style='overflow:visible'> - executionBox' style='overflow:visible'> @@ -228,9 +222,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field) %s productBox' style='overflow:visible'> - systemMode == 'new'):?> projectBox' style='overflow:visible'> - executionBox' style='overflow:visible'> @@ -273,9 +265,7 @@ foreach(explode(',', $config->bug->create->requiredFields) as $field) branchBox' style='overflow:visible'> - systemMode == 'new'):?> projectBox' style='overflow:visible'> - executionBox' style='overflow:visible'> diff --git a/module/bug/view/batchedit.html.php b/module/bug/view/batchedit.html.php index 89d343479d..54b6a5a704 100644 --- a/module/bug/view/batchedit.html.php +++ b/module/bug/view/batchedit.html.php @@ -103,7 +103,7 @@ product][$bug->branch]) ? $modules[$bug->product][$bug->branch] : array(0 => '/'), $bug->module, "class='form-control picker-select' data-drop-width='auto'");?> - ' style='overflow:visible'>plan, "class='form-control picker-select' data-drop-width='auto'");?> + ' style='overflow:visible'>plans, $bug->plan, "class='form-control picker-select' data-drop-width='auto'");?> tab == 'project' or $app->tab == 'execution') diff --git a/module/bug/view/create.html.php b/module/bug/view/create.html.php index 815aea4dbf..1ff2b23c25 100644 --- a/module/bug/view/create.html.php +++ b/module/bug/view/create.html.php @@ -29,7 +29,8 @@ js::set('moduleID', $moduleID); js::set('tab', $this->app->tab); js::set('requiredFields', $config->bug->create->requiredFields); js::set('showFields', $showFields); -if($this->app->tab == 'execution') js::set('objectID', $executionID); +js::set('projectExecutionPairs', $projectExecutionPairs); +if($this->app->tab == 'execution') js::set('objectID', zget($execution, 'id', '')); if($this->app->tab == 'project') js::set('objectID', $projectID); ?>
@@ -51,18 +52,20 @@ if($this->app->tab == 'project') js::set('objectID', $projectID); - - + - + @@ -111,23 +111,18 @@ if($this->app->tab == 'project') js::set('objectID', $projectID); + - config->systemMode == 'new'):?> - @@ -60,13 +58,19 @@ - $execution):?> + $execution):?> - config->systemMode == 'new'):?> - - - + + consumed - $execution->estimate, 2);?> diff --git a/module/report/view/workload.html.php b/module/report/view/workload.html.php index df26260959..7574e45f7d 100644 --- a/module/report/view/workload.html.php +++ b/module/report/view/workload.html.php @@ -72,9 +72,7 @@ - config->systemMode == 'new'):?> @@ -96,10 +94,14 @@ $executionInfo) $projectCount ++ ;?> $executionInfo):?> ";?> - config->systemMode == 'new'):?> - + + + + + + + - diff --git a/module/search/control.php b/module/search/control.php index a6325b3faa..fc3594ff97 100644 --- a/module/search/control.php +++ b/module/search/control.php @@ -20,8 +20,8 @@ class search extends control public function __construct($module = '', $method = '') { parent::__construct($module, $method); - if($this->config->edition != 'max') unset($this->lang->search->modules['effort']); - if($this->config->systemMode != 'new') unset($this->lang->search->modules['program'], $this->lang->search->modules['project']); + if($this->config->edition != 'max') unset($this->lang->search->modules['effort']); + if($this->config->systemMode == 'light') unset($this->lang->search->modules['program']); } /** @@ -236,6 +236,8 @@ class search extends control foreach($typeCount as $objectType => $count) { if(!isset($this->lang->search->modules[$objectType])) continue; + if($this->config->systemMode == 'light' and $objectType == 'program') continue; + $typeList[$objectType] = $this->lang->search->modules[$objectType]; } diff --git a/module/search/model.php b/module/search/model.php index 409ce911e4..fda31e9aac 100644 --- a/module/search/model.php +++ b/module/search/model.php @@ -634,6 +634,8 @@ class searchModel extends model } else { + if($this->config->systemMode == 'light') unset($this->config->search->fields->program); + foreach($this->config->search->fields as $objectType => $fields) { $module = $objectType; @@ -787,7 +789,8 @@ class searchModel extends model } elseif($module == 'story' or $module == 'requirement') { - $story = $objectList[$module][$record->objectID]; + $story = $objectList[$module][$record->objectID]; + $module = 'story'; if(!empty($story->lib)) { $module = 'assetlib'; @@ -970,10 +973,11 @@ class searchModel extends model if($this->app->user->admin) return $results; $this->loadModel('doc'); - $products = $this->app->user->view->products; - $programs = $this->app->user->view->programs; - $projects = $this->app->user->view->projects; - $executions = $this->app->user->view->sprints; + $products = $this->app->user->view->products; + $shadowProducts = $this->dao->select('id')->from(TABLE_PRODUCT)->where('shadow')->eq(1)->fetchPairs('id'); + $programs = $this->app->user->view->programs; + $projects = $this->app->user->view->projects; + $executions = $this->app->user->view->sprints; $objectPairs = array(); $total = count($results); @@ -1011,6 +1015,7 @@ class searchModel extends model foreach($objectIdList as $productID => $recordID) { if(strpos(",$products,", ",$productID,") === false) unset($results[$recordID]); + if(in_array($productID, $shadowProducts)) unset($results[$recordID]); } } elseif($objectType == 'program') diff --git a/module/setting/model.php b/module/setting/model.php index b313485796..2bb0b07eb3 100644 --- a/module/setting/model.php +++ b/module/setting/model.php @@ -49,36 +49,10 @@ class settingModel extends model */ public function setItem($path, $value = '') { - /* Determine vision of config item. */ - $pathVision = explode('@', $path); - $vision = isset($pathVision[1]) ? $pathVision[1] : ''; - $path = $pathVision[0]; - - /* fix bug when account has dot. */ - $account = isset($this->app->user->account) ? $this->app->user->account : ''; - $replace = false; - if($account and strpos($path, $account) === 0) - { - $replace = true; - $path = preg_replace("/^{$account}/", 'account', $path); - } - - $level = substr_count($path, '.'); - $section = ''; - - if($level <= 1) return false; - if($level == 2) list($owner, $module, $key) = explode('.', $path); - if($level == 3) list($owner, $module, $section, $key) = explode('.', $path); - if($replace) $owner = $account; - - $item = new stdclass(); - $item->owner = $owner; - $item->module = $module; - $item->section = $section; - $item->key = $key; - $item->value = $value; - if(!empty($vision)) $item->vision = $vision; + $item = $this->parseItemPath($path); + if(empty($item)) return false; + $item->value = $value; $this->dao->replace(TABLE_CONFIG)->data($item)->exec(); } @@ -121,6 +95,37 @@ class settingModel extends model return false; } + /** + * When exists this item then update it. No exists then insert this item. + * + * @param string $path + * @param string $value + * @access public + * @return void + */ + public function updateItem($path, $value = '') + { + $item = $this->parseItemPath($path); + if(empty($item)) return false; + if(!isset($item->vision)) $item->vision = ''; + + $updateID = $this->dao->select('id')->from(TABLE_CONFIG) + ->where('owner')->eq($item->owner) + ->andWhere('vision')->eq($item->vision) + ->andWhere('module')->eq($item->module) + ->andWhere('section')->eq($item->section) + ->andWhere('`key`')->eq($item->key) + ->fetch('id'); + if($updateID) + { + $this->dao->update(TABLE_CONFIG)->set('value')->eq($value)->where('id')->eq($updateID)->exec(); + return true; + } + + $item->value = $value; + $this->dao->insert(TABLE_CONFIG)->data($item)->exec(); + } + /** * Delete items. * @@ -133,6 +138,47 @@ class settingModel extends model $this->createDAO($this->parseItemParam($paramString), 'delete')->exec(); } + /** + * Parse item path + * + * @param string $path system.common.global.sn | system.common.sn | system.common.global.sn@rnd + * @access public + * @return object + */ + public function parseItemPath($path) + { + /* Determine vision of config item. */ + $pathVision = explode('@', $path); + $vision = isset($pathVision[1]) ? $pathVision[1] : ''; + $path = $pathVision[0]; + + /* fix bug when account has dot. */ + $account = isset($this->app->user->account) ? $this->app->user->account : ''; + $replace = false; + if($account and strpos($path, $account) === 0) + { + $replace = true; + $path = preg_replace("/^{$account}/", 'account', $path); + } + + $level = substr_count($path, '.'); + $section = ''; + + if($level <= 1) return false; + if($level == 2) list($owner, $module, $key) = explode('.', $path); + if($level == 3) list($owner, $module, $section, $key) = explode('.', $path); + if($replace) $owner = $account; + + $item = new stdclass(); + $item->owner = $owner; + $item->module = $module; + $item->section = $section; + $item->key = $key; + if(!empty($vision)) $item->vision = $vision; + + return $item; + } + /** * Parse the param string for select or delete items. * diff --git a/module/stakeholder/view/batchcreate.html.php b/module/stakeholder/view/batchcreate.html.php index 939cc67489..69d9a5be9d 100644 --- a/module/stakeholder/view/batchcreate.html.php +++ b/module/stakeholder/view/batchcreate.html.php @@ -21,7 +21,7 @@ execution->selectDept?>execution->selectDeptTitle}'");?> - parent and $config->systemMode == 'new'):?> + parent):?> createLink('stakeholder', 'batchcreate', "projectID={$projectID}&dept=&parent=$project->parent"), $lang->program->importStakeholder, '', 'class="btn btn-primary"');?> diff --git a/module/story/config.php b/module/story/config.php index 5eaee60d4f..e5003141eb 100644 --- a/module/story/config.php +++ b/module/story/config.php @@ -139,7 +139,7 @@ $config->story->datatable->fieldList['assignedDate']['required'] = 'no'; $config->story->datatable->fieldList['product']['title'] = 'product'; $config->story->datatable->fieldList['product']['control'] = 'hidden'; -$config->story->datatable->fieldList['product']['dataSource'] = array('module' => 'port', 'method' => 'getRelatedObjects', 'params' => 'story&product&id,name'); +$config->story->datatable->fieldList['product']['dataSource'] = array('module' => 'transfer', 'method' => 'getRelatedObjects', 'params' => 'story&product&id,name'); $config->story->datatable->fieldList['branch']['title'] = 'branch'; $config->story->datatable->fieldList['branch']['fixed'] = 'no'; @@ -254,5 +254,5 @@ $config->story->datatable->fieldList['caseCount']['name'] = $lang->story->ca $config->story->datatable->fieldList['actions']['title'] = 'actions'; $config->story->datatable->fieldList['actions']['fixed'] = 'right'; -$config->story->datatable->fieldList['actions']['width'] = $app->tab == 'project' ? '220' : '210'; +$config->story->datatable->fieldList['actions']['width'] = $app->tab == 'project' ? '230' : '210'; $config->story->datatable->fieldList['actions']['required'] = 'yes'; diff --git a/module/story/control.php b/module/story/control.php old mode 100644 new mode 100755 index 105528bd04..5c9c92a74b --- a/module/story/control.php +++ b/module/story/control.php @@ -46,6 +46,8 @@ class story extends control */ public function create($productID = 0, $branch = 0, $moduleID = 0, $storyID = 0, $objectID = 0, $bugID = 0, $planID = 0, $todoID = 0, $extra = '', $storyType = 'story') { + $originProduct = $productID; // Log the origin product id and use it to create the redirect url. + /* Whether there is a object to transfer story, for example feedback. */ $extra = str_replace(array(',', ' '), array('&', ''), $extra); parse_str($extra, $output); @@ -56,7 +58,7 @@ class story extends control if($this->config->vision == 'lite' and $productID == 0) { $product = $this->loadModel('product')->getProductPairsByProject($objectID); - if(!empty($project)) $productID = key($product); + if(!empty($product)) $productID = key($product); } $this->story->replaceURLang($storyType); @@ -64,12 +66,17 @@ class story extends control { $this->product->setMenu($productID); } - else if($this->app->tab == 'project') + elseif($this->app->tab == 'project') { - $objectID = empty($objectID) ? $this->session->project : $objectID; - $objects = $this->project->getPairsByProgram(); - $objectID = $this->project->saveState($objectID, $objects); - $this->project->setMenu($objectID); + $objects = $this->project->getPairsByProgram(); + + if(empty($objectID)) $objectID = $this->session->project; + + $projectID = $objectID; + if(!$this->session->multiple) $projectID = $this->session->project; + $projectID = isset($objects[$projectID]) ? $projectID : $this->session->project; + $projectID = $this->project->saveState($projectID, $objects); + $this->project->setMenu($projectID); } else if($this->app->tab == 'execution') { @@ -143,7 +150,7 @@ class story extends control { $execution = $this->dao->findById((int)$objectID)->from(TABLE_EXECUTION)->fetch(); $moduleName = $execution->type == 'project' ? 'projectstory' : 'execution'; - $param = $execution->type == 'project' ? "projectID=$objectID&productID=$productID" : "executionID=$objectID"; + $param = $execution->type == 'project' ? "projectID=$objectID&productID=$originProduct" : "executionID=$objectID"; $response['locate'] = $this->createLink($moduleName, 'story', $param); } return $this->send($response); @@ -159,15 +166,19 @@ class story extends control } $actionID = $this->action->create('story', $storyID, $action, '', $extra); + /* Record submit review action. */ + $story = $this->dao->findById((int)$storyID)->from(TABLE_STORY)->fetch(); + if($story->status == 'reviewing') $this->action->create('story', $storyID, 'submitReview'); + if($objectID != 0) { $object = $this->dao->findById((int)$objectID)->from(TABLE_PROJECT)->fetch(); if($object->type != 'project') { - if($this->config->systemMode == 'new') $this->action->create('story', $storyID, 'linked2project', '', $object->project); + $this->action->create('story', $storyID, 'linked2project', '', $object->project); $actionType = $object->type == 'kanban' ? 'linked2kanban' : 'linked2execution'; - $this->action->create('story', $storyID, $actionType, '', $objectID); + if($object->multiple) $this->action->create('story', $storyID, $actionType, '', $objectID); } else { @@ -256,10 +267,7 @@ class story extends control else { setcookie('storyModuleParam', 0, 0, $this->config->webRoot, '', $this->config->cookieSecure, true); - $execution = $this->dao->findById((int)$objectID)->from(TABLE_EXECUTION)->fetch(); - $moduleName = $execution->type == 'project' ? 'projectstory' : 'execution'; - $param = $execution->type == 'project' ? "projectID=$objectID&productID=$productID" : "executionID=$objectID&orderBy=order_desc&browseType=unclosed"; - $response['locate'] = $this->createLink($moduleName, 'story', $param); + $response['locate'] = $this->session->storyList; } if($this->app->getViewType() == 'xhtml') $response['locate'] = $this->createLink('story', 'view', "storyID=$storyID", 'html'); return $this->send($response); @@ -386,6 +394,30 @@ class story extends control $reviewers = $product->reviewer; if(!$reviewers and $product->acl != 'open') $reviewers = $this->loadModel('user')->getProductViewListUsers($product, '', '', '', ''); + /* Hidden some fields of projects without products. */ + $this->view->hiddenProduct = false; + $this->view->hiddenParent = false; + $this->view->hiddenPlan = false; + $this->view->hiddenURS = false; + $this->view->teamUsers = array(); + + if($this->app->tab === 'project' || $this->app->tab === 'execution') + { + $project = $this->dao->findById((int)$objectID)->from(TABLE_PROJECT)->fetch(); + if(!empty($project->project)) $project = $this->dao->findById((int)$project->project)->from(TABLE_PROJECT)->fetch(); + + if(empty($project->hasProduct)) + { + $this->view->teamUsers = $this->project->getTeamMemberPairs($project->id); + $this->view->hiddenProduct = true; + $this->view->hiddenParent = true; + + if($project->model !== 'scrum') $this->view->hiddenPlan = true; + if(!$project->multiple) $this->view->hiddenPlan = true; + if($project->model === 'kanban') $this->view->hiddenURS = true; + } + } + /* Get the module's children id list. */ $moduleID = $moduleID ? $moduleID : (int)$this->cookie->lastStoryModule; $moduleID = isset($moduleOptionMenu[$moduleID]) ? $moduleID : 0; @@ -448,6 +480,8 @@ class story extends control */ public function batchCreate($productID = 0, $branch = 0, $moduleID = 0, $storyID = 0, $executionID = 0, $plan = 0, $storyType = 'story', $extra = '') { + $this->view->hiddenProduct = false; + $this->view->hiddenPlan = false; /* Set menu. */ if($executionID) { @@ -483,6 +517,21 @@ class story extends control $this->lang->navGroup->story = 'execution'; } $this->view->execution = $execution; + + /* Hidden some fields of projects without products. */ + if($this->app->tab == 'project' or $this->app->tab == 'execution') + { + $project = $this->dao->findById((int)$executionID)->from(TABLE_PROJECT)->fetch(); + if(!empty($project->project)) $project = $this->dao->findById((int)$project->project)->from(TABLE_PROJECT)->fetch(); + + if(empty($project->hasProduct)) + { + $this->view->hiddenProduct = true; + + if($project->model !== 'scrum') $this->view->hiddenPlan = true; + if(!$project->multiple) $this->view->hiddenPlan = true; + } + } } else { @@ -496,10 +545,11 @@ class story extends control $this->story->replaceURLang($storyType); /* Check can subdivide or not. */ + $product = $this->product->getById($productID); if($storyID) { $story = $this->story->getById($storyID); - if(($story->status != 'active' or $story->stage != 'wait' or $story->parent > 0) and $this->config->vision != 'lite') return print(js::alert($this->lang->story->errorNotSubdivide) . js::locate('back')); + if(($story->status != 'active' or (empty($product->shadow) && $story->stage != 'wait') or (!empty($product->shadow) && $story->stage != 'projected') or $story->parent > 0) and $this->config->vision != 'lite') return print(js::alert($this->lang->story->errorNotSubdivide) . js::locate('back')); } if(!empty($_POST)) @@ -568,15 +618,20 @@ class story extends control if($storyID) { - return print(js::locate(inlink('view', "storyID=$storyID&version=0¶m=0&storyType=$storyType"), 'parent')); + if($this->app->tab == 'product') + { + return print(js::locate(inlink('view', "storyID=$storyID&version=0¶m=0&storyType=$storyType"), 'parent')); + } + else + { + $locateLink = $this->session->storyList ? $this->session->storyList : $this->createLink('projectstory', 'view', "storyID=$storyID"); + return print(js::locate($locateLink, 'parent')); + } } elseif($executionID) { setcookie('storyModuleParam', 0, 0, $this->config->webRoot, '', $this->config->cookieSecure, false); - $moduleName = $execution->type == 'project' ? 'projectstory' : 'execution'; - $param = $execution->type == 'project' ? "projectID=$executionID&productID=$productID" : "executionID=$executionID&orderBy=id_desc&browseType=unclosed"; - $link = $this->createLink($moduleName, 'story', $param); - return print(js::locate($link, 'parent')); + return print(js::locate($this->session->storyList, 'parent')); } else { @@ -587,7 +642,6 @@ class story extends control } /* Set branch and module. */ - $product = $this->product->getById($productID); $products = $this->product->getPairs(); if($product) $this->lang->product->branch = sprintf($this->lang->product->branch, $this->lang->product->branchName[$product->type]); @@ -643,6 +697,8 @@ class story extends control $customFields[$field] = $this->lang->story->$field; } + if($this->view->hiddenPlan) unset($customFields['plan']); + if($product->type != 'normal') { $this->config->story->custom->batchCreateFields = sprintf($this->config->story->custom->batchCreateFields, $product->type); @@ -827,6 +883,25 @@ class story extends control $this->view->objectID = $objectID; } + /* Hidden some fields of projects without products. */ + $this->view->hiddenProduct = false; + $this->view->hiddenParent = false; + $this->view->hiddenPlan = false; + $this->view->hiddenURS = false; + $this->view->teamUsers = array(); + + if($product->shadow) + { + $project = $this->project->getByShadowProduct($product->id); + $this->view->teamUsers = $this->project->getTeamMemberPairs($project->id); + $this->view->hiddenProduct = true; + $this->view->hiddenParent = true; + + if($project->model !== 'scrum') $this->view->hiddenPlan = true; + if(!$project->multiple) $this->view->hiddenPlan = true; + if($project->model === 'kanban') $this->view->hiddenURS = true; + } + /* Display status of branch. */ $branches = $this->loadModel('branch')->getList($product->id, isset($objectID) ? $objectID : 0, 'all'); $branchOption = array(); @@ -887,13 +962,24 @@ class story extends control { $this->story->replaceURLang($storyType); + $this->view->hiddenPlan = false; if($this->app->tab == 'product') { $this->product->setMenu($productID); } else if($this->app->tab == 'project') { - $this->project->setMenu($executionID); + $project = $this->dao->findByID($executionID)->from(TABLE_PROJECT)->fetch(); + if($project->type == 'project') + { + if(!($project->model == 'scrum' and !$project->hasProduct and $project->multiple)) $this->view->hiddenPlan = true; + $this->project->setMenu($executionID); + } + else + { + if(!$project->hasProduct and !$project->multiple) $this->view->hiddenPlan = true; + $this->execution->setMenu($executionID); + } } else if($this->app->tab == 'execution') { @@ -967,19 +1053,10 @@ class story extends control $branchTagOption = array(); $products = array(); - if($executionID) - { - /* The stories of project or execution. */ - $execution = $this->execution->getByID($executionID); - $products = $this->loadModel('product')->getProducts($executionID); - } - else - { - /* The stories of my. */ - $productIdList = array(); - foreach($stories as $story) $productIdList[$story->product] = $story->product; - $products = $this->product->getByIdList($productIdList); - } + /* Get product id list by the stories. */ + $productIdList = array(); + foreach($stories as $story) $productIdList[$story->product] = $story->product; + $products = $this->product->getByIdList($productIdList); foreach($products as $storyProduct) { @@ -1004,7 +1081,7 @@ class story extends control } /* Set ditto option for users. */ - $users = $this->loadModel('user')->getPairs('nodeleted'); + $users = $this->loadModel('user')->getPairs('nodeleted|noclosed'); $users = array('' => '', 'ditto' => $this->lang->story->ditto) + $users; /* Set Custom*/ @@ -1047,8 +1124,6 @@ class story extends control } } - $this->view->position[] = $this->lang->story->common; - $this->view->position[] = $this->lang->story->batchEdit; $this->view->title = $this->lang->story->batchEdit; $this->view->users = $users; $this->view->priList = array('0' => '', 'ditto' => $this->lang->story->ditto) + $this->lang->story->priList; @@ -1096,6 +1171,10 @@ class story extends control $action = !empty($changes) ? 'Changed' : 'Commented'; $actionID = $this->action->create('story', $storyID, $action, $this->post->comment); $this->action->logHistory($actionID, $changes); + + /* Record submit review action. */ + $story = $this->dao->findById((int)$storyID)->from(TABLE_STORY)->fetch(); + if($story->status == 'reviewing') $this->action->create('story', $storyID, 'submitReview'); } $this->executeHooks($storyID); @@ -1133,8 +1212,26 @@ class story extends control } if(defined('RUN_MODE') && RUN_MODE == 'api') return $this->send(array('status' => 'success')); - $params = $module == 'story' ? "storyID=$storyID&version=0¶m=0&storyType=$storyType" : "storyID=$storyID"; - return print(js::locate($this->createLink($module, 'view', $params), 'parent')); + + if($this->app->tab == 'project') + { + $module = 'projectstory'; + $method = 'view'; + $params = "storyID=$storyID"; + } + elseif($this->app->tab == 'execution') + { + $module = 'execution'; + $method = 'storyView'; + $params = "storyID=$storyID"; + } + else + { + $module = 'story'; + $method = 'view'; + $params = "storyID=$storyID&version=0¶m=0&storyType=$storyType"; + } + return print(js::locate($this->createLink($module, $method, $params), 'parent')); } $this->commonAction($storyID); @@ -1148,7 +1245,7 @@ class story extends control $reviewer = $this->story->getReviewerPairs($storyID, $story->version); $product = $this->loadModel('product')->getByID($story->product); - /* Get product reviewers. */ + /* Get users in team. */ $productReviewers = $product->reviewer; if(!$productReviewers and $product->acl != 'open') $productReviewers = $this->loadModel('user')->getProductViewListUsers($product, '', '', '', ''); @@ -1249,7 +1346,7 @@ class story extends control $this->story->replaceURLang($story->type); - $product = $this->dao->findById($story->product)->from(TABLE_PRODUCT)->fields('name, id, type, status')->fetch(); + $product = $this->product->getByID($story->product); $plan = $this->dao->findById($story->plan)->from(TABLE_PRODUCTPLAN)->fetch('title'); $bugs = $this->dao->select('id,title,status,pri,severity')->from(TABLE_BUG)->where('story')->eq($storyID)->andWhere('deleted')->eq(0)->fetchAll(); $fromBug = $this->dao->select('id,title')->from(TABLE_BUG)->where('toStory')->eq($storyID)->fetch(); @@ -1281,6 +1378,29 @@ class story extends control $this->product->setMenu($story->product, $story->branch); } + $this->view->hiddenPlan = false; + $this->view->hiddenURS = false; + if(!empty($product->shadow)) + { + $projectInfo = $this->dao->select('t2.model, t2.multiple')->from(TABLE_PROJECTPRODUCT)->alias('t1') + ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') + ->where('t1.product')->eq($product->id) + ->andWhere('t2.type')->eq('project') + ->fetch(); + + if($projectInfo->model == 'waterfall') + { + $this->view->hiddenPlan = true; + } + elseif($projectInfo->model == 'kanban') + { + $this->view->hiddenPlan = true; + $this->view->hiddenURS = true; + } + + if(!$projectInfo->multiple) $this->view->hiddenPlan = true; + } + if($product->type != 'normal') $this->lang->product->branch = sprintf($this->lang->product->branch, $this->lang->product->branchName[$product->type]); $reviewers = $this->story->getReviewerPairs($storyID, $story->version); @@ -1293,32 +1413,36 @@ class story extends control $position[] = $this->lang->story->common; $position[] = $this->lang->story->view; - $this->view->title = $title; - $this->view->position = $position; - $this->view->product = $product; - $this->view->branches = $product->type == 'normal' ? array() : $this->loadModel('branch')->getPairs($product->id); - $this->view->plan = $plan; - $this->view->bugs = $bugs; - $this->view->fromBug = $fromBug; - $this->view->cases = $cases; - $this->view->story = $story; - $this->view->linkedMRs = $linkedMRs; - $this->view->track = $this->story->getTrackByID($story->id); - $this->view->users = $this->user->getPairs('noletter'); - $this->view->reviewers = $reviewers; - $this->view->relations = $this->story->getStoryRelation($story->id, $story->type); - $this->view->executions = $this->execution->getPairs(0, 'all', 'nocode'); - $this->view->execution = empty($story->execution) ? array() : $this->dao->findById($story->execution)->from(TABLE_EXECUTION)->fetch(); - $this->view->actions = $this->action->getList('story', $storyID); - $this->view->storyModule = $storyModule; - $this->view->modulePath = $modulePath; - $this->view->storyProducts = $storyProducts; - $this->view->version = $version; - $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('story', $storyID); - $this->view->from = $from; - $this->view->param = $param; - $this->view->builds = $this->loadModel('build')->getStoryBuilds($storyID); - $this->view->releases = $this->loadModel('release')->getStoryReleases($storyID); + $execution = empty($story->execution) ? array() : $this->dao->findById($story->execution)->from(TABLE_EXECUTION)->fetch(); + $project = $param ? $this->dao->findById($param)->from(TABLE_PROJECT)->fetch() : array(); + + $this->view->title = $title; + $this->view->position = $position; + $this->view->product = $product; + $this->view->branches = $product->type == 'normal' ? array() : $this->loadModel('branch')->getPairs($product->id); + $this->view->plan = $plan; + $this->view->bugs = $bugs; + $this->view->fromBug = $fromBug; + $this->view->cases = $cases; + $this->view->story = $story; + $this->view->linkedMRs = $linkedMRs; + $this->view->track = $this->story->getTrackByID($story->id); + $this->view->users = $this->user->getPairs('noletter'); + $this->view->reviewers = $reviewers; + $this->view->relations = $this->story->getStoryRelation($story->id, $story->type); + $this->view->executions = $this->execution->getPairs(0, 'all', 'nocode'); + $this->view->execution = $execution; + $this->view->project = $project; + $this->view->actions = $this->action->getList('story', $storyID); + $this->view->storyModule = $storyModule; + $this->view->modulePath = $modulePath; + $this->view->storyProducts = $storyProducts; + $this->view->version = $version; + $this->view->preAndNext = $this->loadModel('common')->getPreAndNextObject('story', $storyID); + $this->view->from = $from; + $this->view->param = $param; + $this->view->builds = $this->loadModel('build')->getStoryBuilds($storyID); + $this->view->releases = $this->loadModel('release')->getStoryReleases($storyID); $this->display(); } @@ -1340,6 +1464,7 @@ class story extends control if($confirm == 'no') { + if($storyType == 'requirement') $this->lang->story->confirmDelete = str_replace($this->lang->SRCommon, $this->lang->URCommon, $this->lang->story->confirmDelete); return print(js::confirm($this->lang->story->confirmDelete, $this->createLink('story', 'delete', "story=$storyID&confirm=yes&from=$from&storyType=$storyType"), '')); } else @@ -1426,10 +1551,27 @@ class story extends control } } - $module = $from == 'project' ? 'projectstory' : 'story'; if(defined('RUN_MODE') and RUN_MODE == 'api') return $this->send(array('status' => 'success', 'data' => $storyID)); - $params = $module == 'story' ? "storyID=$storyID&version=0¶m=0&storyType=$storyType" : "storyID=$storyID"; - return print(js::locate($this->createLink($module, 'view', $params), 'parent')); + + if($from == 'project') + { + $module = 'projectstory'; + $method = 'view'; + $params = "storyID=$storyID"; + } + elseif($from == 'execution') + { + $module = 'execution'; + $method = 'storyView'; + $params = "storyID=$storyID"; + } + else + { + $module = 'story'; + $method = 'view'; + $params = "storyID=$storyID&version=0¶m=0&storyType=$storyType"; + } + return print(js::locate($this->createLink($module, $method, $params), 'parent')); } /* Get story and product. */ @@ -1532,7 +1674,28 @@ class story extends control $action = $story->status == 'changing' ? 'recalledChange' : 'Recalled'; $this->loadModel('action')->create('story', $storyID, $action); - if($from == 'view') return print(js::locate($this->createLink('story', 'view', "storyID=$storyID&version=0¶m=0&storyType=$storyType"), 'parent')); + if($from == 'view') + { + if($this->app->tab == 'project') + { + $module = 'projectstory'; + $method = 'view'; + $params = "storyID=$storyID"; + } + elseif($this->app->tab == 'execution') + { + $module = 'execution'; + $method = 'storyView'; + $params = "storyID=$storyID"; + } + else + { + $module = 'story'; + $method = 'view'; + $params = "storyID=$storyID&version=0¶m=0&storyType=$storyType"; + } + return print(js::locate($this->createLink($module, $method, $params), 'parent')); + } $locateLink = $this->session->storyList ? $this->session->storyList : $this->createLink('product', 'browse', "productID={$story->product}"); return print(js::locate($locateLink, 'parent')); @@ -1852,6 +2015,8 @@ class story extends control */ public function batchToTask($executionID = 0, $projectID = 0) { + if($this->app->tab == 'execution' and $executionID) $this->loadModel('execution')->setMenu($executionID); + if(!empty($_POST['name'])) { $response['result'] = 'success'; @@ -2065,6 +2230,7 @@ class story extends control /* Get story and product. */ $story = $this->story->getById($storyID); $products = $this->product->getPairs(); + $product = $this->product->getById($story->product); /* Set menu. */ $this->product->setMenu($story->product, $story->branch); @@ -2074,7 +2240,8 @@ class story extends control $this->view->story = $story; $this->view->storyType = $storyType; $this->view->actions = $this->action->getList('story', $storyID); - $this->view->users = ($this->config->vision == 'lite') ? $this->loadModel('user')->getTeamMemberPairs($this->session->project) : $this->loadModel('user')->getPairs('nodeleted|noclosed|pofirst|noletter'); + $this->view->users = $this->config->vision == 'lite' ? $this->loadModel('user')->getTeamMemberPairs($this->session->project) : $this->loadModel('user')->getPairs('nodeleted|noclosed|pofirst|noletter'); + $this->display(); } @@ -2182,8 +2349,9 @@ class story extends control /* Get story, product, products, and queryID. */ $story = $this->story->getById($storyID); - $products = $this->product->getPairs(); + $products = $this->product->getPairs('', 0, '', 'all'); $queryID = 0; + $product = $this->product->getByID($story->product); /* Change for requirement story title. */ if($story->type == 'story') @@ -2194,6 +2362,12 @@ class story extends control unset($this->config->product->search['fields']['plan']); unset($this->config->product->search['fields']['stage']); } + else + { + $this->lang->story->title = str_replace($this->lang->URCommon, $this->lang->SRCommon, $this->lang->story->title); + } + + if(!empty($product->shadow)) unset($this->config->product->search['fields']['product']); /* Build search form. */ $actionURL = $this->createLink('story', 'linkStory', "storyID=$storyID&type=$type&linkedStoryID=$linkedStoryID&browseType=bySearch&queryID=myQueryID&storyType=$storyType", '', true); @@ -2234,11 +2408,14 @@ class story extends control /* Get story, product, products, and queryID. */ $story = $this->story->getById($storyID); - $products = $this->product->getPairs(); + $products = $this->product->getPairs('', 0, '', 'all'); + $product = $this->product->getByID($story->product); $queryID = ($browseType == 'bySearch') ? (int)$param : 0; $type = $story->type == 'story' ? 'linkRelateSR' : 'linkRelateUR'; $method = $story->type == 'story' ? 'linkStories' : 'linkRequirements'; + if(!empty($product->shadow)) unset($this->config->product->search['fields']['product']); + /* Build search form. */ $actionURL = $this->createLink('story', $method, "storyID=$storyID&browseType=bySearch&excludeStories=$excludeStories&queryID=myQueryID", '', true); $this->product->buildSearchForm($story->product, $products, $queryID, $actionURL); @@ -2372,6 +2549,8 @@ class story extends control $storyStatus = array_keys($storyStatus); } + if($status == 'active') $storyStatus = $status; + if($executionID) { $stories = $this->story->getExecutionStoryPairs($executionID, $productID, $branch, $moduleID, $type); @@ -2497,10 +2676,11 @@ class story extends control * @param string $browseType * @param int $moduleID * @param string $chartType + * @param int $projectID * @access public * @return void */ - public function report($productID, $branchID, $storyType = 'story', $browseType = 'unclosed', $moduleID = 0, $chartType = 'pie') + public function report($productID, $branchID, $storyType = 'story', $browseType = 'unclosed', $moduleID = 0, $chartType = 'pie', $projectID = 0) { $this->loadModel('report'); $this->view->charts = array(); @@ -2521,8 +2701,34 @@ class story extends control } $this->story->replaceURLang($storyType); - $this->products = $this->product->getPairs(); - $this->product->setMenu($productID, $branchID); + + $this->products = $this->product->getPairs('', 0, '', 'all'); + if(strpos('project,execution', $this->app->tab) !== false) + { + $project = $this->dao->findByID($projectID)->from(TABLE_PROJECT)->fetch(); + if($project->type == 'project') + { + $this->loadModel('project')->setMenu($projectID); + if($project and $project->model == 'waterfall') unset($this->lang->story->report->charts['storysPerPlan']); + } + else + { + $this->loadModel('execution')->setMenu($projectID); + } + + if(!$project->hasProduct) + { + unset($this->lang->story->report->charts['storysPerProduct']); + + if(!$project->multiple) unset($this->lang->story->report->charts['storysPerPlan']); + } + } + else + { + $this->product->setMenu($productID, $branchID); + } + + if($storyType != 'story') unset($this->lang->story->report->charts['storysPerStage']); $this->view->title = $this->products[$productID] . $this->lang->colon . $this->lang->story->reportChart; $this->view->position[] = $this->products[$productID]; @@ -2533,6 +2739,7 @@ class story extends control $this->view->storyType = $storyType; $this->view->moduleID = $moduleID; $this->view->chartType = $chartType; + $this->view->projectID = $projectID; $this->view->checkedCharts = $this->post->charts ? join(',', $this->post->charts) : ''; $this->display(); } @@ -2553,7 +2760,7 @@ class story extends control /* format the fields of every story in order to export data. */ if($_POST) { - $this->session->set('storyPortParams', array('productID' => $productID, 'executionID' => $executionID)); + $this->session->set('storyTransferParams', array('productID' => $productID, 'executionID' => $executionID)); /* Create field lists. */ if(!$productID) { @@ -2569,19 +2776,29 @@ class story extends control $this->config->story->datatable->fieldList['plan']['dataSource'] = array('module' => 'productplan', 'method' => 'getPairs', 'params' => $productIdList); } - $this->post->set('rows', $this->story->getExportStorys($executionID, $orderBy)); - $this->fetch('port', 'export', 'model=story'); + $this->post->set('rows', $this->story->getExportStories($executionID, $orderBy, $storyType)); + $this->fetch('transfer', 'export', 'model=story'); } $fileName = $storyType == 'requirement' ? $this->lang->URCommon : $this->lang->SRCommon; + $project = null; if($executionID) { - $executionName = $this->dao->findById($executionID)->from(TABLE_PROJECT)->fetch('name'); - $fileName = $executionName . $this->lang->dash . $fileName; + $execution = $this->loadModel('execution')->getByID($executionID); + $fileName = $execution->name . $this->lang->dash . $fileName; + $project = $execution; + if($execution->type == 'execution') $project = $this->project->getById($execution->project); } else { - $productName = $productID ? $this->dao->findById($productID)->from(TABLE_PRODUCT)->fetch('name') : $this->lang->product->all; + $productName = $this->lang->product->all; + if($productID) + { + $product = $this->product->getById($productID); + $productName = $product->name; + + if($product->shadow) $project = $this->project->getByShadowProduct($productID); + } if(isset($this->lang->product->featureBar['browse'][$browseType])) { $browseType = $this->lang->product->featureBar['browse'][$browseType]; @@ -2594,6 +2811,14 @@ class story extends control $fileName = $productName . $this->lang->dash . $browseType . $fileName; } + /* Unset product field when in single project. */ + if(isset($project->hasProduct) && !$project->hasProduct) + { + $filterFields = array(', product,', ', branch,'); + if($project->model != 'scrum') $filterFields[] = ', plan,'; + $this->config->story->exportFields = str_replace($filterFields, ',', $this->config->story->exportFields); + } + $this->view->fileName = $fileName; $this->view->allExportFields = $this->config->story->exportFields; $this->view->customExport = true; diff --git a/module/story/css/batchclose.css b/module/story/css/batchclose.css index 680e3638d9..576dfc65bd 100644 --- a/module/story/css/batchclose.css +++ b/module/story/css/batchclose.css @@ -1,5 +1,5 @@ .c-id {width: 50px;} -.c-reason {width: 150px;} +.c-reason {width: 210px;} td[id^="duplicateStoryBox"].required:after {top: 6px; right: 2px;} td[id^="duplicateStoryBox"] {overflow: visible;} td.reasons-td {overflow: visible;} diff --git a/module/story/css/view.css b/module/story/css/view.css index 782054d7ad..2bd6c198d5 100644 --- a/module/story/css/view.css +++ b/module/story/css/view.css @@ -13,3 +13,4 @@ .linkStoryTr > td {padding-left: 0px !important;} .removeButton {margin-left: -10px;} .resolution {white-space: nowrap; overflow: hidden;} +.body-modal #mainMenu+#mainContent.main-row {padding: 0px 10px 0;} diff --git a/module/story/css/view.de.css b/module/story/css/view.de.css index 921999def9..252cc2d4b7 100644 --- a/module/story/css/view.de.css +++ b/module/story/css/view.de.css @@ -1 +1 @@ -#legendRelated .table-data tbody>tr>th {width: 125px;} +#legendRelated .table-data tbody>tr>th, #legendLifeTime .table-data tbody>tr>th {width: 125px;} diff --git a/module/story/css/view.fr.css b/module/story/css/view.fr.css index 9d1a837d3b..3c51922daa 100644 --- a/module/story/css/view.fr.css +++ b/module/story/css/view.fr.css @@ -1 +1 @@ -#legendRelated .table-data tbody>tr>th {width: 95px;} +#legendRelated .table-data tbody>tr>th, #legendBasicInfo .table-data tbody>tr>th, #legendLifeTime .table-data tbody>tr>th {width: 96px !important;} diff --git a/module/story/js/common.js b/module/story/js/common.js index 5e6525c4eb..5be7092e6e 100644 --- a/module/story/js/common.js +++ b/module/story/js/common.js @@ -12,9 +12,17 @@ $(function() $('#subNavbar li[data-id="' + storyType + '"]').addClass('active'); } + if($('#navbar .nav>li[data-id=story] .dropdown-menu').length) + { + $('#navbar .nav li[data-id=story]').addClass('active'); + $("#navbar>ul>li[data-id='story']>ul>li[data-id!='" + storyType + "']").removeClass('active'); + $("#navbar>ul>li[data-id='story']>ul>li[data-id='" + storyType + "']").addClass('active'); + $('#navbar .nav>li[data-id=story]>a').html($('#navbar .nav li.active [data-id=' + storyType + ']').text() + ''); + } + $('#saveButton').on('click', function() { - $('#saveButton').attr('disabled', true); + $('#saveButton').attr('type', 'submit').attr('disabled', true); $('#saveDraftButton').attr('disabled', true); var storyStatus = !$('#reviewer').val() || $('#needNotReview').is(':checked') ? 'active' : 'reviewing'; @@ -23,7 +31,7 @@ $(function() setTimeout(function() { - $('#saveButton').removeAttr('disabled'); + $('#saveButton').attr('type', 'button').removeAttr('disabled'); $('#saveDraftButton').removeAttr('disabled'); }, 1000); }); @@ -31,7 +39,7 @@ $(function() $('#saveDraftButton').on('click', function() { $('#saveButton').attr('disabled', true); - $('#saveDraftButton').attr('disabled', true); + $('#saveDraftButton').attr('type', 'submit').attr('disabled', true); storyStatus = 'draft'; if(typeof(page) != 'undefined' && page == 'change') storyStatus = 'changing'; @@ -42,7 +50,7 @@ $(function() setTimeout(function() { $('#saveButton').removeAttr('disabled'); - $('#saveDraftButton').removeAttr('disabled'); + $('#saveDraftButton').attr('type', 'button').removeAttr('disabled'); }, 1000); }); }) diff --git a/module/story/js/report.js b/module/story/js/report.js index ccc0b1fa55..5e8eff033b 100644 --- a/module/story/js/report.js +++ b/module/story/js/report.js @@ -14,6 +14,6 @@ $(function() function changeChartType(type) { - $('form').attr('action', createLink('story', 'report', 'productID=' + productID + '&branchID=' + branchID + '&storyType=' + storyType + '&browseType=' + browseType + '&moduleID=' + moduleID + '&chartType=' + type)); + $('form').attr('action', createLink('story', 'report', 'productID=' + productID + '&branchID=' + branchID + '&storyType=' + storyType + '&browseType=' + browseType + '&moduleID=' + moduleID + '&chartType=' + type + '&projectID=' + projectID)); $('form').find('#submit').click(); } diff --git a/module/story/lang/de.php b/module/story/lang/de.php index 8209fbf211..df828c127b 100644 --- a/module/story/lang/de.php +++ b/module/story/lang/de.php @@ -175,7 +175,6 @@ $lang->story->design = 'Designs'; $lang->story->case = 'Cases'; $lang->story->bug = 'Bugs'; $lang->story->repoCommit = 'Commits'; -$lang->story->noRequirement = 'No Requirements'; $lang->story->one = 'One'; $lang->story->field = 'Synchronized fields'; $lang->story->completeRate = 'Completion Rate'; @@ -281,7 +280,7 @@ $lang->story->lblClose = 'Close'; $lang->story->lblTBC = 'Task/Bug/Case'; $lang->story->checkAffection = 'Impact'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "{$lang->project->common}s/{$lang->execution->common}s" : "{$lang->project->common}s"; +$lang->story->affectedProjects = "{$lang->project->common}s/{$lang->execution->common}s"; $lang->story->affectedBugs = 'Bug'; $lang->story->affectedCases = 'Fall'; @@ -297,7 +296,7 @@ $lang->story->mustChooseResult = 'Ergebnis wählen'; $lang->story->mustChoosePreVersion = 'Version wählen um es umzukhren.'; $lang->story->noStory = 'Keine Storys. '; $lang->story->noRequirement = 'No Requirements'; -$lang->story->ignoreChangeStage = 'Story %s is in Draft or Closed status. Please review it..'; +$lang->story->ignoreChangeStage = 'The status of %s is Draft or Closed. This operation has been filtered.'; $lang->story->cannotDeleteParent = "Can not delete parent {$lang->SRCommon}"; $lang->story->moveChildrenTips = "Its Child {$lang->SRCommon} will be moved to the selected product when editing the linked product of Parent {$lang->SRCommon}."; $lang->story->changeTips = 'The story associated with the requirements to change, click "Cancel" ignore this change, click "Confirm" to change the story.'; @@ -321,8 +320,9 @@ $lang->story->action->reviewed = array('main' => '$date, geprüft v $lang->story->action->rejectreviewed = array('main' => '$date, geprüft von $actor. Das Ergebnis ist $extra, Der Grund ist $reason.', 'extra' => 'reviewResultList', 'reason' => 'reasonList'); $lang->story->action->recalled = array('main' => '$date, recalled by $actor.'); $lang->story->action->closed = array('main' => '$date, geschlossen von $actor. Der Grund ist $extra $appendLink.', 'extra' => 'reasonList'); +$lang->story->action->closedbysystem = array('main' => '$date, The system determines that the parent story is automatically closed because all child stories are closed.'); $lang->story->action->reviewpassed = array('main' => '$date, determined by the System. The result is Pass.'); -$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reasion is Rejection.'); +$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reason is Rejection.'); $lang->story->action->reviewclarified = array('main' => '$date, determined by the System. The result is To Be Clarified. Please re-initiate the review after edit.'); $lang->story->action->reviewreverted = array('main' => '$date, determined by the System. The result is Undo Change.'); $lang->story->action->linked2plan = array('main' => '$date, verknüpft von $actor mit Plan $extra'); diff --git a/module/story/lang/en.php b/module/story/lang/en.php index dbb5d44d16..6ad74b82df 100644 --- a/module/story/lang/en.php +++ b/module/story/lang/en.php @@ -175,7 +175,6 @@ $lang->story->design = 'Design'; $lang->story->case = 'Cases'; $lang->story->bug = 'Bugs'; $lang->story->repoCommit = 'Commits'; -$lang->story->noRequirement = 'No Requirements'; $lang->story->one = 'One'; $lang->story->field = 'Sync Field'; $lang->story->completeRate = 'Completion Rate'; @@ -281,7 +280,7 @@ $lang->story->lblClose = 'Close'; $lang->story->lblTBC = 'Task/Bug/Case'; $lang->story->checkAffection = 'Influence'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "{$lang->project->common}s/{$lang->execution->common}s" : "{$lang->project->common}s"; +$lang->story->affectedProjects = "{$lang->project->common}s/{$lang->execution->common}s"; $lang->story->affectedBugs = 'Bugs'; $lang->story->affectedCases = 'Cases'; @@ -297,7 +296,7 @@ $lang->story->mustChooseResult = 'Select Result'; $lang->story->mustChoosePreVersion = 'Select a version to revert to.'; $lang->story->noStory = 'No stories yet. '; $lang->story->noRequirement = 'No requirements yet. '; -$lang->story->ignoreChangeStage = 'Story %s is in Draft or Closed status. Please review it..'; +$lang->story->ignoreChangeStage = 'The status of %s is Draft or Closed. This operation has been filtered.'; $lang->story->cannotDeleteParent = "Can not delete parent {$lang->SRCommon}"; $lang->story->moveChildrenTips = "Its Child {$lang->SRCommon} will be moved to the selected product when editing the linked product of Parent {$lang->SRCommon}."; $lang->story->changeTips = 'The story associated with the requirements to change, click "Cancel" ignore this change, click "Confirm" to change the story.'; @@ -318,11 +317,12 @@ $lang->story->form->file = 'If any file that is linked to a story, please cl $lang->story->action = new stdclass(); $lang->story->action->reviewed = array('main' => '$date, recorded by $actor. The result is $extra.', 'extra' => 'reviewResultList'); -$lang->story->action->rejectreviewed = array('main' => '$date, recorded by $actor. The result is $extra. The reasion is $reason.', 'extra' => 'reviewResultList', 'reason' => 'reasonList'); +$lang->story->action->rejectreviewed = array('main' => '$date, recorded by $actor. The result is $extra. The reason is $reason.', 'extra' => 'reviewResultList', 'reason' => 'reasonList'); $lang->story->action->recalled = array('main' => '$date, recalled by $actor.'); -$lang->story->action->closed = array('main' => '$date, closed by $actor. The reasion is $extra $appendLink.', 'extra' => 'reasonList'); +$lang->story->action->closed = array('main' => '$date, closed by $actor. The reason is $extra $appendLink.', 'extra' => 'reasonList'); +$lang->story->action->closedbysystem = array('main' => '$date, The system determines that the parent story is automatically closed because all child stories are closed.'); $lang->story->action->reviewpassed = array('main' => '$date, determined by the System. The result is Pass.'); -$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reasion is Rejection.'); +$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reason is Rejection.'); $lang->story->action->reviewclarified = array('main' => '$date, determined by the System. The result is To Be Clarified. Please re-initiate the review after edit.'); $lang->story->action->reviewreverted = array('main' => '$date, determined by the System. The result is Undo Change.'); $lang->story->action->linked2plan = array('main' => '$date, linked by $actor to Plan $extra'); diff --git a/module/story/lang/fr.php b/module/story/lang/fr.php index cf5f0c0ac0..380240861a 100644 --- a/module/story/lang/fr.php +++ b/module/story/lang/fr.php @@ -175,7 +175,6 @@ $lang->story->design = 'Designs'; $lang->story->case = 'Cases'; $lang->story->bug = 'Bugs'; $lang->story->repoCommit = 'Commits'; -$lang->story->noRequirement = 'No Requirements'; $lang->story->one = 'One'; $lang->story->field = 'Synchronized fields'; $lang->story->completeRate = 'Completion Rate'; @@ -281,7 +280,7 @@ $lang->story->lblClose = 'Fermer'; $lang->story->lblTBC = 'Tâche/Bug/CasTest'; $lang->story->checkAffection = 'Influence'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "{$lang->project->common}s/{$lang->execution->common}s" : "{$lang->project->common}s"; +$lang->story->affectedProjects = "{$lang->project->common}s/{$lang->execution->common}s"; $lang->story->affectedBugs = 'Bugs'; $lang->story->affectedCases = 'CasTests'; @@ -297,7 +296,7 @@ $lang->story->mustChooseResult = 'Sélect Résultat'; $lang->story->mustChoosePreVersion = 'Sélect une version pour revenir en arrière.'; $lang->story->noStory = "Aucune story pour l'instant. "; $lang->story->noRequirement = 'No Requirements'; -$lang->story->ignoreChangeStage = 'Story %s is in Draft or Closed status. Please review it..'; +$lang->story->ignoreChangeStage = 'The status of %s is Draft or Closed. This operation has been filtered.'; $lang->story->cannotDeleteParent = "Impossible de supprimer {$lang->SRCommon} parent"; $lang->story->moveChildrenTips = "Its Child {$lang->SRCommon} will be moved to the selected product when editing the linked product of Parent {$lang->SRCommon}."; $lang->story->changeTips = 'The story associated with the requirements to change, click "Cancel" ignore this change, click "Confirm" to change the story.'; @@ -321,8 +320,9 @@ $lang->story->action->reviewed = array('main' => '$date, validée p $lang->story->action->rejectreviewed = array('main' => '$date, validée par $actor. Le résultat est $extra. La raison est $reason.', 'extra' => 'reviewResultList', 'reason' => 'reasonList'); $lang->story->action->recalled = array('main' => '$date, recalled by $actor.'); $lang->story->action->closed = array('main' => '$date, Fermée par $actor. La raison est $extra $appendLink.', 'extra' => 'reasonList'); +$lang->story->action->closedbysystem = array('main' => '$date, The system determines that the parent story is automatically closed because all child stories are closed.'); $lang->story->action->reviewpassed = array('main' => '$date, determined by the System. The result is Pass.'); -$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reasion is Rejection.'); +$lang->story->action->reviewrejected = array('main' => '$date, closed by System. The reason is Rejection.'); $lang->story->action->reviewclarified = array('main' => '$date, determined by the System. The result is To Be Clarified. Please re-initiate the review after edit.'); $lang->story->action->reviewreverted = array('main' => '$date, determined by the System. The result is Undo Change.'); $lang->story->action->linked2plan = array('main' => '$date, planifiée par $actor au Plan $extra'); diff --git a/module/story/lang/vi.php b/module/story/lang/vi.php index c0e7f138b4..243011066f 100644 --- a/module/story/lang/vi.php +++ b/module/story/lang/vi.php @@ -169,7 +169,6 @@ $lang->story->design = 'Designs'; $lang->story->case = 'Cases'; $lang->story->bug = 'Bugs'; $lang->story->repoCommit = 'Commits'; -$lang->story->noRequirement = 'No Requirements'; $lang->story->one = 'One'; $lang->story->field = 'Synchronized fields'; $lang->story->completeRate = 'Completion Rate'; @@ -273,7 +272,7 @@ $lang->story->lblClose = 'Đóng'; $lang->story->lblTBC = 'Nhiệm vụ/Bug/Tình huống'; $lang->story->checkAffection = 'Ảnh hưởng'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "{$lang->project->common}s/{$lang->execution->common}s" : "{$lang->project->common}s"; +$lang->story->affectedProjects = "{$lang->project->common}s/{$lang->execution->common}s"; $lang->story->affectedBugs = 'Bugs'; $lang->story->affectedCases = 'Tình huống'; @@ -289,7 +288,7 @@ $lang->story->mustChooseResult = 'Chọn kết quả'; $lang->story->mustChoosePreVersion = 'Chọn một phiên bản để chuyển thành.'; $lang->story->noStory = 'Không có câu chuyện nào'; $lang->story->noRequirement = 'Không có câu chuyện nào'; -$lang->story->ignoreChangeStage = 'Story %s is in Draft or Closed status. Please review it..'; +$lang->story->ignoreChangeStage = 'The status of %s is Draft or Closed. This operation has been filtered.'; $lang->story->cannotDeleteParent = "Không thể xóa {$lang->SRCommon} mẹ"; $lang->story->moveChildrenTips = "Its Child {$lang->SRCommon} will be moved to the selected product when editing the linked product of Parent {$lang->SRCommon}."; $lang->story->changeTips = 'The story associated with the requirements to change, click "Cancel" ignore this change, click "Confirm" to change the story.'; diff --git a/module/story/lang/zh-cn.php b/module/story/lang/zh-cn.php index 28ec966fdc..b51eec05b2 100644 --- a/module/story/lang/zh-cn.php +++ b/module/story/lang/zh-cn.php @@ -175,7 +175,6 @@ $lang->story->design = '相关设计'; $lang->story->case = '相关用例'; $lang->story->bug = '相关Bug'; $lang->story->repoCommit = '相关提交'; -$lang->story->noRequirement = '无需求'; $lang->story->one = '一个'; $lang->story->field = '同步的字段'; $lang->story->completeRate = '完成率'; @@ -281,7 +280,7 @@ $lang->story->lblClose = "关闭{$lang->SRCommon}"; $lang->story->lblTBC = '任务Bug用例'; $lang->story->checkAffection = '影响范围'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "影响的{$lang->project->common}或{$lang->execution->common}" : "影响的{$lang->project->common}"; +$lang->story->affectedProjects = "影响的{$lang->project->common}或{$lang->execution->common}"; $lang->story->affectedBugs = '影响的Bug'; $lang->story->affectedCases = '影响的用例'; @@ -297,7 +296,7 @@ $lang->story->mustChooseResult = '必须选择评审意见'; $lang->story->mustChoosePreVersion = '必须选择回溯的版本'; $lang->story->noStory = "暂时没有{$lang->SRCommon}。"; $lang->story->noRequirement = "暂时没有{$lang->URCommon}。"; -$lang->story->ignoreChangeStage = "{$lang->SRCommon} %s 为草稿状态或已关闭状态,没有修改其阶段。"; +$lang->story->ignoreChangeStage = "{$lang->SRCommon} %s 状态为草稿或已关闭,本次操作已被过滤。"; $lang->story->cannotDeleteParent = "不能删除父{$lang->SRCommon}"; $lang->story->moveChildrenTips = "修改父{$lang->SRCommon}的所属产品会将其下的子{$lang->SRCommon}也移动到所选产品下。"; $lang->story->changeTips = '该软件需求关联的用户需求有变更,点击“不变更”忽略此条变更,点击“变更”来进行该软件需求的变更。'; @@ -321,6 +320,7 @@ $lang->story->action->reviewed = array('main' => '$date, 由 story->action->rejectreviewed = array('main' => '$date, 由 $actor 记录评审意见,评审意见为 $extra,原因为 $reason。', 'extra' => 'reviewResultList', 'reason' => 'reasonList'); $lang->story->action->recalled = array('main' => '$date, 由 $actor 撤销评审。'); $lang->story->action->closed = array('main' => '$date, 由 $actor 关闭,原因为 $extra $appendLink。', 'extra' => 'reasonList'); +$lang->story->action->closedbysystem = array('main' => '$date, 系统判定由于关闭了所有子需求,自动关闭父需求。'); $lang->story->action->reviewpassed = array('main' => '$date, 由 系统 判定,结果为 确认通过。'); $lang->story->action->reviewrejected = array('main' => '$date, 由 系统 关闭,原因为 拒绝。'); $lang->story->action->reviewclarified = array('main' => '$date, 由 系统 判定,结果为 有待明确,请编辑后重新发起评审。'); diff --git a/module/story/lang/zh-tw.php b/module/story/lang/zh-tw.php index 75bc90d3e6..d6882f57d3 100644 --- a/module/story/lang/zh-tw.php +++ b/module/story/lang/zh-tw.php @@ -158,7 +158,6 @@ $lang->story->design = '相關設計'; $lang->story->case = '相關用例'; $lang->story->bug = '相關Bug'; $lang->story->repoCommit = '相關提交'; -$lang->story->noRequirement = '無需求'; $lang->story->one = '一個'; $lang->story->field = '同步的欄位'; $lang->story->completeRate = '完成率'; @@ -261,7 +260,7 @@ $lang->story->lblClose = "關閉{$lang->SRCommon}"; $lang->story->lblTBC = '任務Bug用例'; $lang->story->checkAffection = '影響範圍'; -$lang->story->affectedProjects = $config->systemMode == 'new' ? "影響的{$lang->project->common}或{$lang->execution->common}" : "影響的{$lang->project->common}"; +$lang->story->affectedProjects = "影響的{$lang->project->common}或{$lang->execution->common}"; $lang->story->affectedBugs = '影響的Bug'; $lang->story->affectedCases = '影響的用例'; @@ -276,7 +275,7 @@ $lang->story->mustChooseResult = '必須選擇評審意見'; $lang->story->mustChoosePreVersion = '必須選擇回溯的版本'; $lang->story->noStory = "暫時沒有{$lang->SRCommon}。"; $lang->story->noRequirement = "暫時沒有{$lang->URCommon}。"; -$lang->story->ignoreChangeStage = "{$lang->SRCommon} %s 為草稿狀態或已關閉狀態,沒有修改其階段。"; +$lang->story->ignoreChangeStage = "{$lang->SRCommon} %s 為草稿狀態或已關閉狀態,本次操作已被過濾。"; $lang->story->cannotDeleteParent = "不能刪除父{$lang->SRCommon}"; $lang->story->moveChildrenTips = "修改父{$lang->SRCommon}的所屬產品會將其下的子{$lang->SRCommon}也移動到所選產品下。"; $lang->story->changeTips = '該軟件需求關聯的用戶需求有變更,點擊“不變更”忽略此條變更,點擊“變更”來進行該軟件需求的變更。'; diff --git a/module/story/model.php b/module/story/model.php index 6cf5eb21b8..81a760f001 100644 --- a/module/story/model.php +++ b/module/story/model.php @@ -305,7 +305,7 @@ class storyModel extends model if($executionID != 0) { $this->linkStory($executionID, $this->post->product, $storyID); - if($this->config->systemMode == 'new' and $executionID != $this->session->project) $this->linkStory($this->session->project, $this->post->product, $storyID); + if($executionID != $this->session->project) $this->linkStory($this->session->project, $this->post->product, $storyID); $this->loadModel('kanban'); @@ -521,6 +521,7 @@ class storyModel extends model $story->category = $stories->category[$i]; $story->pri = $stories->pri[$i]; $story->estimate = $stories->estimate[$i]; + $story->spec = $stories->spec[$i]; $story->status = $saveDraft ? 'draft' : ((empty($stories->reviewer[$i]) and !$forceReview) ? 'active' : 'reviewing'); $story->stage = ($this->app->tab == 'project' or $this->app->tab == 'execution') ? 'projected' : 'wait'; $story->keywords = $stories->keywords[$i]; @@ -558,7 +559,7 @@ class storyModel extends model $link2Plans = array(); foreach($data as $i => $story) { - $this->dao->insert(TABLE_STORY)->data($story)->autoCheck()->checkFlow()->exec(); + $this->dao->insert(TABLE_STORY)->data($story, 'spec')->autoCheck()->checkFlow()->exec(); if(dao::isError()) { echo js::error(dao::getError()); @@ -1162,7 +1163,7 @@ class storyModel extends model $changes = common::createChanges($oldParentStory, $newParentStory); $action = ''; if($status == 'active') $action = 'Activated'; - if($status == 'closed') $action = 'Closed'; + if($status == 'closed') $action = 'closedbysystem'; if($action) { $actionID = $this->loadModel('action')->create('story', $parentID, $action, '', '', '', false); @@ -2203,7 +2204,7 @@ class storyModel extends model $data[$i]->pri = $tasks->pri[$i]; $data[$i]->estimate = $tasks->estimate[$i]; $data[$i]->left = $tasks->estimate[$i]; - $data[$i]->project = $this->config->systemMode == 'new' ? $projectID : 0; + $data[$i]->project = $projectID; $data[$i]->execution = $executionID; $data[$i]->estStarted = $estStarted; $data[$i]->deadline = $deadline; @@ -2743,7 +2744,7 @@ class storyModel extends model * @param int $limit * @param string $type * @param string $storyType requirement|story - * @param bool $hasParent + * @param bool|string $hasParent * @access public * @return array */ @@ -2755,7 +2756,7 @@ class storyModel extends model ->beginIF($productID)->andWhere('t1.product')->in($productID)->fi() ->beginIF($moduleIdList)->andWhere('t1.module')->in($moduleIdList)->fi() ->beginIF($branch !== 'all')->andWhere('t1.branch')->in("0,$branch")->fi() - ->beginIF(!$hasParent)->andWhere('t1.parent')->ge(0)->fi() + ->beginIF(!$hasParent or $hasParent == 'false')->andWhere('t1.parent')->ge(0)->fi() ->beginIF($status and $status != 'all')->andWhere('t1.status')->in($status)->fi() ->andWhere('t1.type')->eq($storyType) ->andWhere('t1.deleted')->eq(0) @@ -2999,7 +3000,7 @@ class storyModel extends model { $this->loadModel('product'); $executionID = empty($executionID) ? 0 : $executionID; - $products = empty($executionID) ? $this->product->getList() : $this->product->getProducts($executionID); + $products = empty($executionID) ? $this->product->getList($programID = 0, $status = 'all', $limit = 0, $line = 0, $shadow = 'all') : $this->product->getProducts($executionID); $query = $queryID ? $this->loadModel('search')->getQuery($queryID) : ''; @@ -3079,9 +3080,9 @@ class storyModel extends model { $storyQuery = str_replace($allBranch, '1', $storyQuery); } - elseif($branch !== 'all' and $queryProductID != 'all') + elseif($branch !== 'all' and $branch !== '' and strpos($storyQuery, '`branch` =') === false and $queryProductID != 'all') { - if($branch and strpos($storyQuery, '`branch` =') === false) $storyQuery .= " AND `branch` in($branch)"; + if($branch and strpos($storyQuery, '`branch` =') === false) $storyQuery .= " AND `branch` " . helper::dbIN($branch); } $storyQuery = preg_replace("/`plan` +LIKE +'%([0-9]+)%'/i", "CONCAT(',', `plan`, ',') LIKE '%,$1,%'", $storyQuery); @@ -3189,15 +3190,22 @@ class storyModel extends model if(defined('TUTORIAL')) return $this->loadModel('tutorial')->getExecutionStories(); if(!$executionID) return array(); - $execution = $this->dao->findById($executionID)->from(TABLE_PROJECT)->fetch(); + $executions = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->in($executionID)->fetchAll('id'); + $hasProject = false; + $hasExecution = false; + foreach($executions as $execution) + { + if($execution->type == 'project') $hasProject = true; + if($execution->type != 'project') $hasExecution = true; + } $orderBy = str_replace('branch_', 't2.branch_', $orderBy); $type = strtolower($type); + $products = $this->loadModel('product')->getProducts($executionID); if($type == 'bysearch') { $queryID = (int)$param; - $products = $this->loadModel('product')->getProducts($executionID); if($this->session->executionStoryQuery == false) $this->session->set('executionStoryQuery', ' 1 = 1'); if($queryID) @@ -3228,7 +3236,6 @@ class storyModel extends model } $storyQuery = preg_replace('/`(\w+)`/', 't2.`$1`', $storyQuery); - $products = $this->loadModel('product')->getProducts($executionID); if($products) $productID = key($products); $review = $this->getRevertStoryIDList($productID); @@ -3250,7 +3257,7 @@ class storyModel extends model ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t2.product = t3.id') ->beginIF(strpos($storyQuery, 'result') !== false)->leftJoin(TABLE_STORYREVIEW)->alias('t4')->on('t2.id = t4.story and t2.version = t4.version')->fi() ->where($storyQuery) - ->andWhere('t1.project')->eq((int)$executionID) + ->andWhere('t1.project')->in($executionID) ->andWhere('t2.deleted')->eq(0) ->andWhere('t3.deleted')->eq(0) ->andWhere('t2.type')->eq($storyType) @@ -3289,18 +3296,18 @@ class storyModel extends model $stories = $this->dao->select("distinct t1.*, t2.*, IF(t2.`pri` = 0, {$this->config->maxPriValue}, t2.`pri`) as priOrder, t3.type as productType, t2.version as version")->from(TABLE_PROJECTSTORY)->alias('t1') ->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id') ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t2.product = t3.id') - ->where('t1.project')->eq((int)$executionID) + ->where('t1.project')->in($executionID) ->andWhere('t2.type')->eq($storyType) ->beginIF($excludeStories)->andWhere('t2.id')->notIN($excludeStories)->fi() - ->beginIF($execution->type == 'project') - ->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID) + ->beginIF($hasProject) + ->beginIF(!empty($productID))->andWhere('t1.product')->eq($productID)->fi() ->beginIF($type == 'bybranch' and $branchParam !== '')->andWhere('t2.branch')->in("0,$branchParam")->fi() ->beginIF(strpos('draft|reviewing|changing|closed', $type) !== false)->andWhere('t2.status')->eq($type)->fi() ->beginIF($type == 'unclosed')->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi() ->beginIF($type == 'linkedexecution')->andWhere('t2.id')->in($storyIdList)->fi() ->beginIF($type == 'unlinkedexecution')->andWhere('t2.id')->notIn($storyIdList)->fi() ->fi() - ->beginIF($execution->type != 'project') + ->beginIF($hasExecution) ->beginIF(!empty($productParam))->andWhere('t1.product')->eq($productParam)->fi() ->beginIF($this->session->executionStoryBrowseType and strpos('changing|', $this->session->executionStoryBrowseType) !== false)->andWhere('t2.status')->in(array_keys($unclosedStatus))->fi() ->fi() @@ -3363,6 +3370,7 @@ class storyModel extends model ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id') ->where('t1.project')->eq((int)$executionID) ->andWhere('t2.deleted')->eq(0) + ->andWhere('t2.type')->eq('story') ->beginIF($productID)->andWhere('t2.product')->eq((int)$productID)->fi() ->beginIF($branch !== 'all')->andWhere('t2.branch')->in("0,$branch")->fi() ->beginIF($moduleIdList)->andWhere('t2.module')->in($moduleIdList)->fi() @@ -3498,15 +3506,16 @@ class storyModel extends model /** * Get stories of a user. * - * @param string $account - * @param string $type the query type - * @param string $orderBy - * @param object $pager - * @param string $storyType requirement|story + * @param string $account + * @param string $type the query type + * @param string $orderBy + * @param object $pager + * @param string $storyType requirement|story + * @param string|int $shadow all | 0 | 1 * @access public * @return array */ - public function getUserStories($account, $type = 'assignedTo', $orderBy = 'id_desc', $pager = null, $storyType = 'story', $includeLibStories = true) + public function getUserStories($account, $type = 'assignedTo', $orderBy = 'id_desc', $pager = null, $storyType = 'story', $includeLibStories = true, $shadow = 0) { $sql = $this->dao->select("t1.*, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder, t2.name as productTitle")->from(TABLE_STORY)->alias('t1') ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id'); @@ -3525,6 +3534,7 @@ class storyModel extends model ->beginIF($type == 'closedBy')->andWhere('t1.closedBy')->eq($account)->fi() ->fi() ->beginIF($includeLibStories == false and $this->config->edition == 'max')->andWhere('t1.lib')->eq('0')->fi() + ->beginIF($shadow !== 'all')->andWhere('t2.shadow')->eq((int)$shadow)->fi() ->orderBy($orderBy) ->page($pager) ->fetchAll('id'); @@ -4180,6 +4190,14 @@ class storyModel extends model */ public static function isClickable($story, $action) { + static $shadowProducts = array(); + if(empty($shadowProducts[$story->product])) + { + global $dbh; + $stmt = $dbh->query('SELECT id FROM ' . TABLE_PRODUCT . " WHERE shadow = 1")->fetchAll(); + foreach($stmt as $row) $shadowProducts[$row->id] = $row->id; + } + $action = strtolower($action); global $app, $config; @@ -4200,7 +4218,8 @@ class storyModel extends model if($action == 'batchcreate' and $story->parent > 0) return false; if($action == 'batchcreate' and $story->type == 'requirement' and $story->status != 'closed') return strpos('draft,reviewing,changing', $story->status) === false; if($action == 'batchcreate' and $config->vision == 'lite' and ($story->status == 'active' and ($story->stage == 'wait' or $story->stage == 'projected'))) return true; - if($action == 'batchcreate' and ($story->status != 'active' or $story->stage != 'wait' or !empty($story->plan))) return false; + /* Adjust code, hide split entry. */ + if($action == 'batchcreate' and ($story->status != 'active' or (isset($shadowProducts[$story->product])) or (!isset($shadowProducts[$story->product]) && $story->stage != 'wait') or !empty($story->plan))) return false; return true; } @@ -4288,12 +4307,10 @@ class storyModel extends model if($canClose and ($canBatchCreate or $canCreateCase)) $menu .= "
"; } - if($storyType == 'requirement') $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID=0&plan=0&storyType=story", $story, $type, 'split', '', 'showinonlybody', '', '', $title); + if($story->type != 'requirement' and $this->config->vision != 'lite') $menu .= $this->buildMenu('testcase', 'create', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$params", $story, $type, 'sitemap', '', 'iframe showinonlybody', true, "data-app='{$this->app->tab}'"); - $tab = $this->app->tab == 'project' ? 'project' : 'qa'; - if($story->type != 'requirement' and $this->config->vision != 'lite') $menu .= $this->buildMenu('testcase', 'create', "productID=$story->product&branch=$story->branch&module=0&from=¶m=0&$params", $story, $type, 'sitemap', '', 'showinonlybody', false, "data-app='$tab'"); - - if($this->app->rawModule != 'projectstory' OR $this->config->vision == 'lite') + $shadow = $this->dao->findByID($story->product)->from(TABLE_PRODUCT)->fetch('shadow'); + if($this->app->rawModule != 'projectstory' OR $this->config->vision == 'lite' OR $shadow) { $isClick = $this->isClickable($story, 'batchcreate'); $title = $this->lang->story->subdivide; @@ -4310,7 +4327,8 @@ class storyModel extends model } } - if($storyType == 'story') $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID=0&plan=0&storyType=story", $story, $type, 'split', '', 'showinonlybody', '', '', $title); + $executionID = empty($execution) ? 0 : $execution->id; + $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID=$executionID&plan=0&storyType=story", $story, $type, 'split', '', 'showinonlybody', '', '', $title); } if($this->app->rawModule == 'projectstory' and $this->config->vision != 'lite') @@ -4318,7 +4336,7 @@ class storyModel extends model if($canCreateCase and ($canClose or $canUnlinkStory)) $menu .= "
"; $menu .= $this->buildMenu('story', 'close', $params . "&from=&storyType=$story->type", $story, $type, '', '', 'iframe', true); - $menu .= $this->buildMenu('projectstory', 'unlinkStory', "projectID={$this->session->project}&$params", $story, $type, 'unlink', 'hiddenwin', 'showinonlybody'); + if($execution->hasProduct) $menu .= $this->buildMenu('projectstory', 'unlinkStory', "projectID={$this->session->project}&$params", $story, $type, 'unlink', 'hiddenwin', 'showinonlybody'); } if($this->app->tab == 'product' and $storyType == 'story') @@ -4327,7 +4345,6 @@ class storyModel extends model $menu .= $this->buildMenu('story', 'close', $params . "&from=&storyType=$story->type", $story, $type, '', '', 'iframe', true); } - } else { @@ -4343,15 +4360,20 @@ class storyModel extends model $title = $story->status == 'changing' ? $this->lang->story->recallChange : $this->lang->story->recall; $menu .= $this->buildMenu('story', 'recall', $params . "&from=view&confirm=no&storyType=$story->type", $story, $type, 'undo', 'hiddenwin', 'showinonlybody', false, '', $title); - $menu .= $this->buildMenu('story', 'review', $params . "&from=product&storyType=$story->type", $story, $type, 'search', '', 'showinonlybody'); + $menu .= $this->buildMenu('story', 'review', $params . "&from={$this->app->tab}&storyType=$story->type", $story, $type, 'search', '', 'showinonlybody'); - if(!isonlybody()) $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&moduleID=$story->module&$params&executionID=0&plan=0&storyType=story", $story, $type, 'split', '', 'divideStory', true, "data-toggle='modal' data-type='iframe' data-width='95%'", $this->lang->story->subdivide); + $executionID = empty($execution) ? 0 : $execution->id; + if(!isonlybody()) $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&moduleID=$story->module&$params&executionID=$executionID&plan=0&storyType=story", $story, $type, 'split', '', 'divideStory', true, "data-toggle='modal' data-type='iframe' data-width='95%'", $this->lang->story->subdivide); $menu .= $this->buildMenu('story', 'assignTo', $params . "&kanbanGroup=default&from=&storyType=$story->type", $story, $type, '', '', 'iframe showinonlybody', true); $menu .= $this->buildMenu('story', 'close', $params . "&from=&storyType=$story->type", $story, $type, '', '', 'iframe showinonlybody', true); $menu .= $this->buildMenu('story', 'activate', $params . "&storyType=$story->type", $story, $type, '', '', 'iframe showinonlybody', true); - if($this->config->edition == 'max' and $this->app->tab == 'project' and common::hasPriv('story', 'importToLib')) $menu .= html::a('#importToLib', " " . $this->lang->story->importToLib, '', 'class="btn" data-toggle="modal"'); + $disabledFeatures = ",{$this->config->disabledFeatures},"; + if($this->config->edition == 'max' and $this->app->tab == 'project' and common::hasPriv('story', 'importToLib') and strpos($disabledFeatures, ',assetlibStorylib,') === false and strpos($disabledFeatures, ',assetlib,') === false) + { + $menu .= html::a('#importToLib', " " . $this->lang->story->importToLib, '', 'class="btn" data-toggle="modal"'); + } /* Print testcate actions. */ if($story->parent >= 0 and $story->type != 'requirement' and (common::hasPriv('testcase', 'create', $story) or common::hasPriv('testcase', 'batchCreate', $story))) @@ -4386,7 +4408,7 @@ class storyModel extends model $menu .= "
"; $menu .= $this->buildMenu('story', 'edit', $params . "&kanbanGroup=default&storyType=$story->type", $story, $type); - $menu .= $this->buildMenu('story', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&{$params}&executionID=0&bugID=0&planID=0&todoID=0&extra=&type=$story->type", $story, $type, 'copy', '', '', '', "data-width='1050'"); + $menu .= $this->buildMenu('story', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&{$params}&executionID=0&bugID=0&planID=0&todoID=0&extra=&storyType=$story->type", $story, $type, 'copy', '', '', '', "data-width='1050'"); $menu .= $this->buildMenu('story', 'delete', $params . "&confirm=no&from=&storyType=$story->type", $story, 'button', 'trash', 'hiddenwin', 'showinonlybody', true); } @@ -4409,7 +4431,7 @@ class storyModel extends model $canBatchCreateTask = common::hasPriv('task', 'batchCreate'); $canCreateCase = ($hasDBPriv and common::hasPriv('testcase', 'create')); $canEstimate = common::hasPriv('execution', 'storyEstimate', $execution); - $canUnlinkStory = common::hasPriv('execution', 'unlinkStory', $execution); + $canUnlinkStory = (common::hasPriv('execution', 'unlinkStory', $execution) and ($execution->hasProduct or $execution->multiple)); if(strpos('draft,changing', $story->status) !== false) { @@ -4421,7 +4443,7 @@ class storyModel extends model { $reviewDisabled = in_array($this->app->user->account, $story->notReview) and ($story->status == 'draft' or $story->status == 'changing') ? '' : 'disabled'; $story->from = 'execution'; - $menu .= common::printIcon('story', 'review', "story={$story->id}&from=story", $story, 'list', 'search', '', $reviewDisabled, false, "data-group=execution"); + $menu .= common::printIcon('story', 'review', "story={$story->id}&from=execution", $story, 'list', 'search', '', $reviewDisabled, false, "data-group=execution"); } } @@ -4437,34 +4459,59 @@ class storyModel extends model if(commonModel::isTutorialMode()) { $wizardParams = helper::safe64Encode($param); - $menu .= html::a(helper::createLink('tutorial', 'wizard', "module=task&method=create¶ms=$wizardParams"), "",'', "class='btn btn-task-create' title='{$this->lang->execution->wbs}' data-app='execution'"); + $menu .= html::a(helper::createLink('tutorial', 'wizard', "module=task&method=create¶ms=$wizardParams"), "",'', "class='btn btn-task-create' title='{$this->lang->execution->wbs}' data-app='{$this->app->tab}'"); } else { - if($hasDBPriv) $menu .= common::printIcon('task', 'create', $param, '', 'list', 'plus', '', 'btn-task-create ' . $toTaskDisabled); + if($hasDBPriv and $storyType == 'story') $menu .= common::printIcon('task', 'create', $param, '', 'list', 'plus', '', 'btn-task-create ' . $toTaskDisabled); } $this->lang->task->batchCreate = $this->lang->execution->batchWBS; - if($hasDBPriv) $menu .= common::printIcon('task', 'batchCreate', "executionID=$executionID&story={$story->id}", '', 'list', 'pluses', '', $toTaskDisabled); + if($hasDBPriv and $storyType == 'story') $menu .= common::printIcon('task', 'batchCreate', "executionID=$executionID&story={$story->id}", '', 'list', 'pluses', '', $toTaskDisabled); if(($canSubmitReview or $canReview or $canRecall or $canCreateTask or $canBatchCreateTask) and ($canCreateCase or $canEstimate or $canUnlinkStory)) { - $menu .= "
"; + $menu .= "
"; } - if($canEstimate) + if($canEstimate and $storyType == 'story') { $menu .= common::buildIconButton('execution', 'storyEstimate', "executionID=$executionID&storyID=$story->id", '', 'list', 'estimate', '', 'iframe', true, "data-width='470px'"); } $this->lang->testcase->batchCreate = $this->lang->testcase->create; - if($canCreateCase) + if($canCreateCase and $storyType == 'story') { - $menu .= common::buildIconButton('testcase', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&form=¶m=0&storyID=$story->id", '', 'list', 'sitemap', '', '', '', "data-app='qa'"); + $menu .= common::buildIconButton('testcase', 'create', "productID=$story->product&branch=$story->branch&moduleID=$story->module&form=¶m=0&storyID=$story->id", '', 'list', 'sitemap', '', 'iframe', true, "data-app='{$this->app->tab}'"); } if(($canEstimate or $canCreateCase) and $canUnlinkStory) $menu .= "
"; + $executionID = empty($execution) ? 0 : $execution->id; + + /* Adjust code, hide split entry. */ + if(common::hasPriv('story', 'batchCreate') and !$execution->multiple and !$execution->hasProduct and false) + { + $isClick = $this->isClickable($story, 'batchcreate'); + $title = $this->lang->story->subdivide; + if(!$isClick and $story->status != 'closed') + { + if($story->parent > 0) + { + $title = $this->lang->story->subDivideTip['subStory']; + } + else + { + if($story->status != 'active') $title = $this->lang->story->subDivideTip['notActive']; + if($story->status == 'active' and $story->stage != 'wait') $title = sprintf($this->lang->story->subDivideTip['notWait'], zget($this->lang->story->stageList, $story->stage)); + } + } + + $menu .= $this->buildMenu('story', 'batchCreate', "productID=$story->product&branch=$story->branch&module=$story->module&$params&executionID=$executionID&plan=0&storyType=story", $story, 'browse', 'split', '', 'showinonlybody', '', '', $title); + } + + if(common::hasPriv('story', 'close', "storyType={$story->type}") and !$execution->multiple and !$execution->hasProduct) $menu .= $this->buildMenu('story', 'close', $params . "&from=&storyType=$story->type", $story, 'browse', '', '', 'iframe', true); + if($canUnlinkStory) { $menu .= common::buildIconButton('execution', 'unlinkStory', "executionID=$executionID&storyID=$story->id&confirm=no", '', 'list', 'unlink', 'hiddenwin'); @@ -4655,7 +4702,7 @@ class storyModel extends model $storyLink = helper::createLink('story', 'view', "storyID=$story->id&version=0¶m=0&storyType=$story->type"); $canView = common::hasPriv($story->type, 'view', null, "storyType=$story->type"); - if($tab == 'project') + if($tab == 'project' and $this->session->multiple) { $storyLink = helper::createLink('projectstory', 'view', "storyID=$story->id&project={$this->session->project}"); $canView = common::hasPriv('projectstory', 'view'); @@ -4897,6 +4944,9 @@ class storyModel extends model case 'assignedDate': echo helper::isZeroDate($story->assignedDate) ? '' : substr($story->assignedDate, 5, 11); break; + case 'activatedDate': + echo helper::isZeroDate($story->activatedDate) ? '' : substr($story->activatedDate, 5, 11); + break; case 'reviewedBy': echo $story->reviewedBy; break; @@ -4937,14 +4987,13 @@ class storyModel extends model echo $story->version; break; case 'actions': - if($tab == 'execution') + if($tab == 'execution' || ($tab == 'project' && isset($_SESSION['multiple']) && empty($_SESSION['multiple']))) { $menuType = 'execution'; } else { $menuType = 'browse'; - $execution = ''; } echo $this->buildOperateMenu($story, $menuType, $execution, $storyType); break; @@ -5740,8 +5789,7 @@ class storyModel extends model if(isset($story->finalResult)) { - $isChanged = $story->changedBy ? true : false; - if($story->finalResult == 'reject') $this->action->create('story', $story->id, 'ReviewRejected', '', $isChanged ? 'changing' : 'draft'); + if($story->finalResult == 'reject') $this->action->create('story', $story->id, 'ReviewRejected'); if($story->finalResult == 'pass') $this->action->create('story', $story->id, 'ReviewPassed'); if($story->finalResult == 'clarify') $this->action->create('story', $story->id, 'ReviewClarified'); if($story->finalResult == 'revert') $this->action->create('story', $story->id, 'ReviewReverted'); @@ -5813,7 +5861,7 @@ class storyModel extends model */ public function getRelatedObjects($object, $pairs = '') { - $storys = $this->loadModel('port')->getQueryDatas('story'); + $storys = $this->loadModel('transfer')->getQueryDatas('story'); /* Get related objects id lists. */ $relatedObjectIdList = array(); @@ -5833,13 +5881,16 @@ class storyModel extends model * * @param int $executionID * @param string $orderBy + * @param string $storyType * @access public * @return void */ - public function getExportStorys($executionID, $orderBy = 'id_desc') + public function getExportStories($executionID, $orderBy = 'id_desc', $storyType = 'story') { $this->loadModel('file'); $this->loadModel('branch'); + + $this->replaceURLang($storyType); $storyLang = $this->lang->story; $storyConfig = $this->config->story; @@ -6032,13 +6083,13 @@ class storyModel extends model $lastRecord = $this->dao->select('action,extra')->from(TABLE_ACTION) ->where('objectType')->eq('story') ->andWhere('objectID')->eq($storyID) + ->andWhere('action')->in('closed,reviewrejected') ->orderBy('id_desc') ->fetch(); $lastAction = $lastRecord->action; - $preStatus = $lastRecord->extra; - if(strpos($preStatus, '|') !== false) $preStatus = substr($preStatus, strpos($preStatus, '|') + 1); - if(strpos('closed,reviewrejected', $lastAction) !== false) $status = $preStatus; + if($lastAction == 'reviewrejected') $status = 'draft'; + if($lastAction == 'closed') $status = strpos($lastRecord->extra, '|') !== false ? substr($lastRecord->extra, strpos($lastRecord->extra, '|') + 1) : 'active'; return $status; } diff --git a/module/story/view/batchclose.html.php b/module/story/view/batchclose.html.php index 839f957a3a..21cf183703 100755 --- a/module/story/view/batchclose.html.php +++ b/module/story/view/batchclose.html.php @@ -28,7 +28,7 @@
- + $story):?> @@ -43,7 +43,7 @@ - + + type == 'kanban'):?> @@ -82,7 +85,9 @@ + + type == 'kanban'):?> + + @@ -80,9 +82,11 @@ foreach(explode(',', $showFields) as $field) + + '; + if(!empty($execution->division) and $this->app->rawModule == 'project') $list .= ''; $list .= "'; $list .= ''; $list .= helper::isZeroDate($task->estStarted) ? '' : ''; @@ -4136,7 +4132,7 @@ class taskModel extends model $menu .= "
"; $menu .= $this->buildMenu('task', 'edit', $params, $task, 'view', '', '', 'showinonlybody'); - if(empty($task->team)) $menu .= $this->buildMenu('task', 'create', "projctID={$task->execution}&storyID=0&moduleID=0&taskID=$task->id", $task, 'view', 'copy'); + $menu .= $this->buildMenu('task', 'create', "projctID={$task->execution}&storyID=0&moduleID=0&taskID=$task->id", $task, 'view', 'copy'); $menu .= $this->buildMenu('task', 'delete', "executionID=$task->execution&taskID=$task->id", $task, 'view', 'trash', 'hiddenwin', 'showinonlybody', true); if($task->parent > 0) $menu .= $this->buildMenu('task', 'view', "taskID=$task->parent", $task, 'view', 'chevron-double-up', '', '', '', '', $this->lang->task->parent); diff --git a/module/task/view/batchedit.html.php b/module/task/view/batchedit.html.php index d220b44399..b828d40a0c 100755 --- a/module/task/view/batchedit.html.php +++ b/module/task/view/batchedit.html.php @@ -22,7 +22,7 @@ js::set('requiredFields', $config->task->edit->requiredFields);

task->common . $lang->colon . $lang->task->batchEdit;?> - + multiple):?> task->execution . $lang->colon . ' ' . $executionName;?>

diff --git a/module/task/view/create.html.php b/module/task/view/create.html.php index 358fb0d677..8e2f516d47 100644 --- a/module/task/view/create.html.php +++ b/module/task/view/create.html.php @@ -23,6 +23,7 @@ error->gt, $lang->task->estimate, '0'))?> lifetime);?> +hasProduct);?> task->create->requiredFields) as $field) @@ -44,7 +45,7 @@ foreach(explode(',', $config->task->create->requiredFields) as $field)
bug->product;?> + shadow ? $lang->bug->module : $lang->bug->product;?>
- type != 'normal' and isset($products[$productID])):?> + type != 'normal' and isset($products[$productID])):?>
+ shadow):?> bug->module?> + app->tab == 'project') js::set('objectID', $projectID);
- systemMode == 'classic') $lang->bug->project = $lang->bug->execution;?> - bug->project : $lang->bug->type;?> - bug->project : $lang->bug->type;?> - systemMode == 'new'):?>
-
+ multiple) ? 'hidden' : '';?> +
- model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?> - + bug->kanban : $lang->bug->execution;?> +
- -
- -
-
@@ -389,9 +384,16 @@ if($this->app->tab == 'project') js::set('objectID', $projectID); bug->module);?> -model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution);?> -systemMode);?> +bug->kanban : $lang->bug->execution);?> + + + diff --git a/module/bug/view/edit.html.php b/module/bug/view/edit.html.php index dc1ccf25d3..f2411a486b 100644 --- a/module/bug/view/edit.html.php +++ b/module/bug/view/edit.html.php @@ -24,12 +24,12 @@ js::set('oldStoryID' , $bug->story); js::set('oldTaskID' , $bug->task); js::set('oldOpenedBuild' , $bug->openedBuild); js::set('oldResolvedBuild' , $bug->resolvedBuild); -js::set('systemMode' , $config->systemMode); js::set('confirmUnlinkBuild' , sprintf($lang->bug->confirmUnlinkBuild, zget($resolvedBuilds, $bug->resolvedBuild))); js::set('tab' , $this->app->tab); js::set('bugID' , $bug->id); js::set('bugBranch' , $bug->branch); js::set('isClosedBug' , $bug->status == 'closed'); +js::set('projectExecutionPairs' , $projectExecutionPairs); if($this->app->tab == 'execution') js::set('objectID', $bug->execution); if($this->app->tab == 'project') js::set('objectID', $bug->project); ?> @@ -96,7 +96,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
story->legendBasicInfo;?>
- + shadow) echo " class='hide'";?>> - + - + multiple)) echo 'hide'?>'>
bug->product;?>
@@ -106,7 +106,7 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
bug->module;?>bug->module;?>
app->tab == 'project') js::set('objectID', $bug->project);
bug->productplan;?> plan, "class='form-control chosen'");?> @@ -204,16 +204,15 @@ if($this->app->tab == 'project') js::set('objectID', $bug->project);
-
systemMode == 'class' ? $lang->bug->legendExecStoryTask : $lang->bug->legendPRJExecStoryTask;?>
+
multiple) ? $lang->bug->legendPRJExecStoryTask : $lang->bug->legendExecStoryTask;?>
- systemMode == 'new'):?> - - + multiple) ? 'hide' : '';?> + diff --git a/module/bug/view/view.html.php b/module/bug/view/view.html.php index dc83599bc9..247a92c471 100644 --- a/module/bug/view/view.html.php +++ b/module/bug/view/view.html.php @@ -14,7 +14,6 @@ bug->confirmToStory);?> -systemMode);?> tab);?> id);?> branch);?> @@ -106,24 +105,26 @@
bug->project;?> project, "class='form-control chosen' onchange='loadProductExecutions($bug->product, this.value)'");?>
bug->execution;?> execution, "class='form-control chosen' onchange='loadExecutionRelated(this.value)'");?>
+ shadow)):?> + type != 'normal'):?> - + - + bug->fromCase;?> - + multiple)) echo 'hide'?>'> @@ -277,16 +278,16 @@
bug->product;?> product", $product->name, '', "data-app='product'")) echo $product->name;?>
product->branch, $lang->product->branchName[$product->type]);?>product->branch, $lang->product->branchName[$product->type]);?> product&branch=$bug->branch", $branchName)) echo $branchName;?>
bug->module;?>bug->module;?> case) echo html::a(helper::createLink('testcase', 'view', "caseID=$bug->case&version=$bug->caseVersion", '', true), " {$lang->bug->fromCase}$lang->colon$bug->case", '', isonlybody() ? '' : "data-toggle='modal' data-type='iframe' data-width='80%'");?>
bug->productplan;?> plan or !common::printLink('productplan', 'view', "planID=$bug->plan&type=bug", $bug->planName)) echo $bug->planName;?>
- systemMode == 'new'):?> - + multiple)):?> + - + hasProduct)) echo "class='hide'";?>> - + hasProduct) ? 'projectstory' : 'story';?> + diff --git a/module/dev/lang/de.php b/module/dev/lang/de.php index 6f06ca4cff..684107df19 100644 --- a/module/dev/lang/de.php +++ b/module/dev/lang/de.php @@ -158,6 +158,9 @@ $lang->dev->groupList['api'] = 'API'; $lang->dev->groupList['message'] = 'Message'; $lang->dev->groupList['search'] = 'Search'; +global $config; +if($config->systemMode != 'ALM') unset($lang->dev->groupList['program']); + $lang->dev->endGroupList['admin'] = 'Admin'; $lang->dev->endGroupList['system'] = 'System'; $lang->dev->endGroupList['other'] = 'Andere'; diff --git a/module/dev/lang/en.php b/module/dev/lang/en.php index 92957df1d7..072854edbd 100644 --- a/module/dev/lang/en.php +++ b/module/dev/lang/en.php @@ -158,6 +158,9 @@ $lang->dev->groupList['api'] = 'API'; $lang->dev->groupList['message'] = 'Message'; $lang->dev->groupList['search'] = 'Search'; +global $config; +if($config->systemMode != 'ALM') unset($lang->dev->groupList['program']); + $lang->dev->endGroupList['admin'] = 'Admin'; $lang->dev->endGroupList['system'] = 'System'; $lang->dev->endGroupList['other'] = 'Others'; diff --git a/module/dev/lang/fr.php b/module/dev/lang/fr.php index 4b3d217e93..03542662f4 100644 --- a/module/dev/lang/fr.php +++ b/module/dev/lang/fr.php @@ -158,6 +158,9 @@ $lang->dev->groupList['api'] = 'API'; $lang->dev->groupList['message'] = 'Message'; $lang->dev->groupList['search'] = 'Search'; +global $config; +if($config->systemMode != 'ALM') unset($lang->dev->groupList['program']); + $lang->dev->endGroupList['admin'] = 'Admin'; $lang->dev->endGroupList['system'] = 'Syst?me'; $lang->dev->endGroupList['other'] = 'Autres'; diff --git a/module/dev/lang/zh-cn.php b/module/dev/lang/zh-cn.php index 86fce01359..55910511b9 100644 --- a/module/dev/lang/zh-cn.php +++ b/module/dev/lang/zh-cn.php @@ -158,6 +158,9 @@ $lang->dev->groupList['api'] = 'API'; $lang->dev->groupList['message'] = '消息'; $lang->dev->groupList['search'] = '搜索'; +global $config; +if($config->systemMode != 'ALM') unset($lang->dev->groupList['program']); + $lang->dev->endGroupList['admin'] = '后台'; $lang->dev->endGroupList['system'] = '系统'; $lang->dev->endGroupList['other'] = '其他'; diff --git a/module/dev/model.php b/module/dev/model.php index 20747d8f7c..5f89c2cb7e 100644 --- a/module/dev/model.php +++ b/module/dev/model.php @@ -148,7 +148,7 @@ class devModel extends model foreach($methods as $method) { if($method->class == 'baseControl' or $method->class == 'control' or $method->name == '__construct') continue; - $api = array('name' => $method->name, 'post' => false, 'param' => array()); + $api = array('name' => $method->name, 'post' => false, 'param' => array(), 'desc' => ''); $methodReflect = new ReflectionMethod($module, $method->name); foreach($methodReflect->getParameters() as $key => $param) { diff --git a/module/doc/control.php b/module/doc/control.php index 5db8c0614e..a98bd09dde 100755 --- a/module/doc/control.php +++ b/module/doc/control.php @@ -348,7 +348,7 @@ class doc extends control unset($this->lang->doc->menu->product['subMenu']); unset($this->lang->doc->menu->custom['subMenu']); unset($this->lang->doc->menu->execution['subMenu']); - if($this->config->systemMode == 'new') unset($this->lang->doc->menu->project['subMenu']); + unset($this->lang->doc->menu->project['subMenu']); } $this->config->showMainMenu = (strpos($this->config->doc->textTypes, $docType) === false or $from == 'template'); @@ -506,8 +506,8 @@ class doc extends control unset($this->lang->doc->menu->product['subMenu']); unset($this->lang->doc->menu->custom['subMenu']); - if($this->config->systemMode == 'new') unset($this->lang->doc->menu->project['subMenu']); - if($this->config->systemMode == 'classic') unset($this->lang->doc->menu->execution['subMenu']); + unset($this->lang->doc->menu->project['subMenu']); + unset($this->lang->doc->menu->execution['subMenu']); /* High light menu. */ if(strpos(',product,project,execution,custom,book,', ",$objectType,") !== false) @@ -626,7 +626,6 @@ class doc extends control { $doc = $this->doc->getByID($docID); $objectType = $this->dao->select('type')->from(TABLE_DOCLIB)->where('id')->eq($doc->lib)->fetch('type'); - if($this->config->systemMode == 'classic' and $objectType == 'project') $objectType = 'execution'; $this->doc->delete(TABLE_DOC, $docID); /* Delete doc files. */ @@ -1131,7 +1130,6 @@ class doc extends control $lib = $this->doc->getLibById($libID); if(!empty($lib) and $lib->deleted == '1') $appendLib = $libID; - if($this->config->systemMode == 'classic' and $type == 'project') $type = 'execution'; list($libs, $libID, $object, $objectID) = $this->doc->setMenuByType($type, $objectID, $libID, $appendLib); /* Set Custom. */ diff --git a/module/doc/css/common.css b/module/doc/css/common.css index a9b746c106..ac104128cb 100644 --- a/module/doc/css/common.css +++ b/module/doc/css/common.css @@ -102,5 +102,5 @@ ol, ul {margin-bottom: 0} .fullscreen-close {top: 8px !important;} -#subHeader .list-group>a.selected {color: #e9f2fb !important; background-color: #0c64eb !important;} +#subHeader .list-group>a.selected {color: #e9f2fb !important;} #pageNav #dropMenu .table-col .list-group .icon-move {display:block; float: left; font-size: 12px; padding: 3px 4px 3px 1px;} diff --git a/module/doc/js/objectlibs.js b/module/doc/js/objectlibs.js index a661bf9b5d..7f8d8f5f36 100644 --- a/module/doc/js/objectlibs.js +++ b/module/doc/js/objectlibs.js @@ -181,6 +181,12 @@ $(function() $('#content [data-ride="tree"]').tree(); $('#outline li.has-list').addClass('open in'); $('#outline li.has-list>i+ul').prev('i').remove(); + if($('#markdownContent').val()) + { + var simplemde = new SimpleMDE({element: $("#markdownContent")[0],toolbar:false, status: false}); + simplemde.value(String($('#markdownContent').val())); + simplemde.togglePreview(); + } }); }); diff --git a/module/doc/lang/de.php b/module/doc/lang/de.php index 6a42fea1f2..1bdbf6a030 100644 --- a/module/doc/lang/de.php +++ b/module/doc/lang/de.php @@ -165,7 +165,7 @@ $lang->doc->allExecutions = 'Alle' . $lang->executionCommon; $lang->doc->allProjects = 'All' . $lang->projectCommon . 's'; $lang->doc->libTypeList['product'] = $lang->productCommon . ' Bibliothek'; -if($config->systemMode == 'new') $lang->doc->libTypeList['project'] = 'Project Library'; +$lang->doc->libTypeList['project'] = 'Project Library'; $lang->doc->libTypeList['execution'] = $lang->execution->common . ' Bibliothek'; $lang->doc->libTypeList['api'] = 'API Library'; $lang->doc->libTypeList['custom'] = 'Eigene Bibliothek'; diff --git a/module/doc/lang/en.php b/module/doc/lang/en.php index 5cd7cc5654..0fe692fd76 100644 --- a/module/doc/lang/en.php +++ b/module/doc/lang/en.php @@ -165,7 +165,7 @@ $lang->doc->allExecutions = 'All' . $lang->executionCommon . 's'; $lang->doc->allProjects = 'All' . $lang->projectCommon . 's'; $lang->doc->libTypeList['product'] = $lang->productCommon . ' Library'; -if($config->systemMode == 'new') $lang->doc->libTypeList['project'] = 'Project Library'; +$lang->doc->libTypeList['project'] = 'Project Library'; $lang->doc->libTypeList['execution'] = $lang->execution->common . ' Library'; $lang->doc->libTypeList['api'] = 'API Library'; $lang->doc->libTypeList['custom'] = 'Custom Library'; diff --git a/module/doc/lang/fr.php b/module/doc/lang/fr.php index 54651a1c76..7fb46c8e44 100644 --- a/module/doc/lang/fr.php +++ b/module/doc/lang/fr.php @@ -165,7 +165,7 @@ $lang->doc->allExecutions = 'Tous les' . $lang->executionCommon . 's'; $lang->doc->allProjects = 'All' . $lang->projectCommon . 's'; $lang->doc->libTypeList['product'] = $lang->productCommon . ' Library'; -if($config->systemMode == 'new') $lang->doc->libTypeList['project'] = 'Project Library'; +$lang->doc->libTypeList['project'] = 'Project Library'; $lang->doc->libTypeList['execution'] = 'Bibliothèque ' . $lang->execution->common; $lang->doc->libTypeList['api'] = 'API Library'; $lang->doc->libTypeList['custom'] = 'Bib. Personnalisée'; diff --git a/module/doc/lang/zh-cn.php b/module/doc/lang/zh-cn.php index 4aaa6f37e2..28c4093d1a 100644 --- a/module/doc/lang/zh-cn.php +++ b/module/doc/lang/zh-cn.php @@ -165,7 +165,7 @@ $lang->doc->allExecutions = '所有' . $lang->executionCommon; $lang->doc->allProjects = '所有' . $lang->projectCommon; $lang->doc->libTypeList['product'] = $lang->productCommon . '文档库'; -if($config->systemMode == 'new') $lang->doc->libTypeList['project'] = '项目文档库'; +$lang->doc->libTypeList['project'] = '项目文档库'; $lang->doc->libTypeList['execution'] = $lang->execution->common . '文档库'; $lang->doc->libTypeList['api'] = '接口库'; $lang->doc->libTypeList['custom'] = '自定义文档库'; diff --git a/module/doc/lang/zh-tw.php b/module/doc/lang/zh-tw.php index e70d72133c..b66a0695ec 100644 --- a/module/doc/lang/zh-tw.php +++ b/module/doc/lang/zh-tw.php @@ -154,7 +154,7 @@ $lang->doc->allProduct = '所有' . $lang->productCommon; $lang->doc->allExecutions = '所有' . $lang->executionCommon; $lang->doc->libTypeList['product'] = $lang->productCommon . '文檔庫'; -if($config->systemMode == 'new') $lang->doc->libTypeList['project'] = '項目文檔庫'; +$lang->doc->libTypeList['project'] = '項目文檔庫'; $lang->doc->libTypeList['execution'] = $lang->execution->common . '文檔庫'; $lang->doc->libTypeList['custom'] = '自定義文檔庫'; diff --git a/module/doc/model.php b/module/doc/model.php index 1b852f30da..e6ad6802d3 100644 --- a/module/doc/model.php +++ b/module/doc/model.php @@ -654,7 +654,7 @@ class docModel extends model if($version == $doc->version and ((empty($docContent->files) and $docFiles) or ($docContent->files and count(explode(',', trim($docContent->files, ','))) != count($docFiles)))) { unset($docContent->id); - $doc->version += 1; + $doc->version += 1; $docContent->version = $doc->version; $docContent->files = join(',', array_keys($docFiles)); $this->dao->insert(TABLE_DOCCONTENT)->data($docContent)->exec(); @@ -930,13 +930,6 @@ class docModel extends model { $this->loadModel('product'); - /* Fixed search modal for doc view. */ - if($this->app->getMethodName() == 'objectlibs') - { - $queryName = $type . 'Doc'; - $type = 'objectLibs'; - } - if($this->app->rawMethod == 'contribute') { $this->config->doc->search['module'] = 'contributeDoc'; @@ -960,7 +953,6 @@ class docModel extends model } else { - if(isset($queryName)) $this->config->doc->search['module'] = $queryName; $products = $this->product->getPairs('nocode', $this->session->project); $this->config->doc->search['params']['execution']['values'] = array('' => '') + $this->loadModel('execution')->getPairs($this->session->project, 'all', 'noclosed') + array('all' => $this->lang->doc->allExecutions); $this->config->doc->search['params']['lib']['values'] = array('' => '', $libID => ($libID ? $libs[$libID] : 0), 'all' => $this->lang->doclib->all); @@ -1569,6 +1561,7 @@ class docModel extends model $executions = $this->dao->select('*')->from(TABLE_EXECUTION) ->where('deleted')->eq(0) ->andWhere('type')->in('sprint,stage,kanban') + ->andWhere('multiple')->eq('1') ->andWhere('vision')->eq($this->config->vision) ->beginIF(!$this->app->user->admin)->andWhere('id')->in($this->app->user->view->sprints)->fi() ->orderBy('order_asc') @@ -1577,7 +1570,7 @@ class docModel extends model $orderedExecutions = array(); foreach($executions as $id => $execution) { - $execution->name = $this->config->systemMode == 'new' ? zget($projectPairs, $execution->project) . ' / ' . $execution->name : $execution->name; + $execution->name = zget($projectPairs, $execution->project) . ' / ' . $execution->name; if($execution->status != 'done' and $execution->status != 'closed' and $execution->PM == $this->app->user->account) { @@ -2336,7 +2329,7 @@ class docModel extends model if($this->app->tab == 'doc' and $type != 'custom' and $type != 'book') { - $objectTitle = ($this->config->systemMode == 'new' and $type == 'execution') ? substr($objects[$objectID], strpos($objects[$objectID], '/') + 1) : $objects[$objectID]; + $objectTitle = $type == 'execution' ? substr($objects[$objectID], strpos($objects[$objectID], '/') + 1) : $objects[$objectID]; $output = << diff --git a/module/doc/view/content.html.php b/module/doc/view/content.html.php index 44f4e3f79a..e0bf9ba33c 100644 --- a/module/doc/view/content.html.php +++ b/module/doc/view/content.html.php @@ -46,8 +46,8 @@ config->edition == 'max' and $this->app->tab == 'project'):?> contentType == 'markdown') { - echo ""; + echo ""; } else { @@ -291,7 +291,7 @@ contentType == 'markdown'):?> -content);?> +content));?> diff --git a/module/doc/view/tablecontents.html.php b/module/doc/view/tablecontents.html.php index 6442f4f00a..ac73086360 100644 --- a/module/doc/view/tablecontents.html.php +++ b/module/doc/view/tablecontents.html.php @@ -124,4 +124,13 @@ if(empty($type)) $type = 'product'; + diff --git a/module/doc/view/view.html.php b/module/doc/view/view.html.php index c3776fa5e3..5f3c5be6a7 100644 --- a/module/doc/view/view.html.php +++ b/module/doc/view/view.html.php @@ -244,7 +244,7 @@ js::set('docID', $doc->id); contentType == 'markdown'):?> -content);?> +content));?> +getModuleRoot() . 'common/view/footer.html.php'?> diff --git a/module/my/view/bug.html.php b/module/my/view/bug.html.php index c70786201d..a0e573d5a7 100644 --- a/module/my/view/bug.html.php +++ b/module/my/view/bug.html.php @@ -121,12 +121,19 @@ - productLink == 'product-all' ? '' : "productID=$bug->product";?> diff --git a/module/my/view/execution.html.php b/module/my/view/execution.html.php index 97b632c463..7545ee0fe7 100644 --- a/module/my/view/execution.html.php +++ b/module/my/view/execution.html.php @@ -50,7 +50,7 @@ - config->systemMode == 'new'):?> + config->systemMode == 'ALM'):?> @@ -52,7 +52,6 @@ html,body {height: 100%;} - config->systemMode == 'new'):?> @@ -61,12 +60,6 @@ html,body {height: 100%;} - - - - - - + shadow):?> + id);?> + - - - - + + + + + + diff --git a/module/projectrelease/view/edit.html.php b/module/projectrelease/view/edit.html.php index d453b11af0..2164c01dfb 100644 --- a/module/projectrelease/view/edit.html.php +++ b/module/projectrelease/view/edit.html.php @@ -37,7 +37,7 @@ - + diff --git a/module/projectrelease/view/linkstory.html.php b/module/projectrelease/view/linkstory.html.php index 36f169da5f..8cf4b18b1b 100644 --- a/module/projectrelease/view/linkstory.html.php +++ b/module/projectrelease/view/linkstory.html.php @@ -51,7 +51,7 @@ diff --git a/module/projectrelease/view/notify.html.php b/module/projectrelease/view/notify.html.php index 0a3fc5b20e..45c96d1217 100644 --- a/module/projectrelease/view/notify.html.php +++ b/module/projectrelease/view/notify.html.php @@ -24,7 +24,7 @@
bug->project;?> project) echo html::a($this->createLink('project', 'view', "projectID=$bug->project"), $bug->projectName);?>
model) and $project->model == 'kanban') ? $lang->bug->kanban : $lang->bug->execution;?> execution) echo html::a($this->createLink('execution', 'browse', "executionID=$bug->execution"), $bug->executionName);?>
bug->story;?> @@ -457,7 +458,6 @@ design->type;?> design->typeList, $design->type);?>
design->product;?> productName;?>
design->story;?>story ? html::a($this->createLink('story', 'view', "id=$design->story"), zget($stories, $design->story)) : '';?>story ? html::a($this->createLink($moduleName, 'view', "id=$design->story"), zget($stories, $design->story)) : '';?>
design->submission;?>pri?>' title='bug->priList, $bug->pri);?>'>bug->priList, $bug->pri)?>bug->typeList, $bug->type, '');?> productLink); - echo html::a($this->createLink('product', $productLink[1], $param), $bug->productName, null, "title={$bug->productName}"); + if(isset($bug->shadow)) + { + echo html::a($this->createLink('project', 'browse'), $bug->productName, null, "title={$bug->productName}"); + } + else + { + $productLink = explode('-', $config->productLink); + $param = $config->productLink == 'product-all' ? '' : "productID=$bug->product"; + echo html::a($this->createLink('product', $productLink[1], $param), $bug->productName, null, "title={$bug->productName}"); + } ?>
id));?> - systemMode == 'new'):?> + systemMode == 'ALM'):?> type === 'stage') echo "{$lang->project->stage} "; if($execution->type === 'sprint') echo "{$lang->executionCommon} "; diff --git a/module/my/view/preference.html.php b/module/my/view/preference.html.php index 5ba6ea9786..a1512c65b8 100755 --- a/module/my/view/preference.html.php +++ b/module/my/view/preference.html.php @@ -42,7 +42,7 @@ html,body {height: 100%;} my->storyConcept;?>
my->programLink;?> my->programLinkList, $programLink, "class='form-control chosen'");?>my->productLink;?> my->productLinkList, $productLink, "class='form-control chosen'");?>
my->projectLink;?> my->projectLinkList, $projectLink, "class='form-control chosen'");?>my->executionLink;?> my->executionLinkList, $executionLink, "class='form-control chosen'");?>
my->executionLink;?>my->executionLinkList, 'execution-task', "class='form-control chosen'");?>
diff --git a/module/my/view/selectproject.html.php b/module/my/view/selectproject.html.php index 526bedf958..b8041d6c3b 100644 --- a/module/my/view/selectproject.html.php +++ b/module/my/view/selectproject.html.php @@ -7,7 +7,6 @@ release->name;?> + shadow):?>
+ release->last . ': ' . $lastRelease->name . ')';?>
release->build;?>
release->product;?>
- - type != 'normal') echo html::select('branch', $branches, $branch, "class='form-control chosen control-branch'");?> + id, "onchange='loadBranches(this.value)' class='form-control chosen'");?> + type != 'normal') echo html::select('branch', $branches, $branch, "onchange='loadBuilds()' class='form-control chosen control-branch'");?>
release->build;?>
release->date;?>
release->build;?>build, "class='form-control chosen' required"); ?>build, "class='form-control chosen' multiple"); ?>
release->date;?> parent > 0) echo "{$lang->story->childrenAB}"; - echo html::a($this->createLink('story', 'view', "storyID={$story->id}&version=0¶m=$projectID", '', true), $story->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'"); + echo html::a($this->createLink('story', 'view', "storyID={$story->id}&version=0¶m={$this->session->project}", '', true), $story->title, '', "data-toggle='modal' data-type='iframe' data-width='90%'"); ?> openedBy);?>
- + id);?> diff --git a/module/projectrelease/view/view.html.php b/module/projectrelease/view/view.html.php index 70378c16b2..4f8b471a9c 100644 --- a/module/projectrelease/view/view.html.php +++ b/module/projectrelease/view/view.html.php @@ -80,7 +80,7 @@ $story):?> - createLink('story', 'view', "storyID=$story->id&version=0¶m=$projectID", '', true);?> + createLink('story', 'view', "storyID=$story->id&version=0¶m={$this->session->project}", '', true);?> - + + diff --git a/module/release/view/edit.html.php b/module/release/view/edit.html.php index a72643b371..d973f33ef3 100644 --- a/module/release/view/edit.html.php +++ b/module/release/view/edit.html.php @@ -37,7 +37,7 @@ - + diff --git a/module/release/view/view.html.php b/module/release/view/view.html.php index ba37f91c67..accbb8d1b7 100644 --- a/module/release/view/view.html.php +++ b/module/release/view/view.html.php @@ -351,8 +351,20 @@ - @@ -379,13 +391,19 @@ { echo $this->fetch('file', 'printFiles', array('files' => $release->files, 'fieldset' => 'false', 'object' => $release, 'method' => 'view', 'showDelete' => false)); } - elseif($release->filePath) + if($release->builds) { - echo $lang->release->filePath . html::a($release->filePath, $release->filePath, '_blank'); - } - elseif($release->scmPath) - { - echo $lang->release->scmPath . html::a($release->scmPath, $release->scmPath, '_blank'); + foreach($release->builds as $build) + { + if($build->filePath) + { + echo $lang->release->filePath . html::a($release->filePath, $release->filePath, '_blank'); + } + elseif($build->scmPath) + { + echo $lang->release->scmPath . html::a($release->scmPath, $release->scmPath, '_blank'); + } + } } ?> diff --git a/module/repo/control.php b/module/repo/control.php index f43d5d220c..86f044b70a 100644 --- a/module/repo/control.php +++ b/module/repo/control.php @@ -140,16 +140,20 @@ class repo extends control $this->app->loadLang('action'); $products = $this->loadModel('product')->getProductPairsByProject($objectID); - $productID = count($products) > 0 ? key($products) : ''; + $products = $this->dao->select('*')->from(TABLE_PRODUCT)->where('id')->in(array_keys($products))->andWhere('shadow')->eq(0)->fetchPairs('id', 'name'); /* Remove shadow products. */ - $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->create; - $this->view->position[] = $this->lang->repo->create; - $this->view->groups = $this->loadModel('group')->getPairs(); - $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed'); - $this->view->products = $products; - $this->view->productID = $productID; - $this->view->serviceHosts = $this->loadModel('gitlab')->getPairs(); - $this->view->objectID = $objectID; + $shadowProduct = null; + if($this->app->tab == 'project' && $objectID) $shadowProduct = $this->loadModel('product')->getShadowProductByProject($objectID); + + $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->create; + $this->view->position[] = $this->lang->repo->create; + $this->view->groups = $this->loadModel('group')->getPairs(); + $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed'); + $this->view->products = $products; + $this->view->relatedProjects = array(); + $this->view->serviceHosts = $this->loadModel('gitlab')->getPairs(); + $this->view->objectID = $objectID; + $this->view->shadowProduct = $shadowProduct; $this->display(); } @@ -202,14 +206,20 @@ class repo extends control $this->view->projects = $options; } - $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->edit; - $this->view->repo = $repo; - $this->view->repoID = $repoID; - $this->view->objectID = $objectID; - $this->view->groups = $this->loadModel('group')->getPairs(); - $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed'); - $this->view->products = $objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); - $this->view->serviceHosts = array('' => '') + $this->loadModel('pipeline')->getPairs($repo->SCM); + $products = $objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); + $linkedProducts = $this->loadModel('product')->getByIdList($repo->product); + $linkedProductPairs = array_combine(array_keys($linkedProducts), array_column($linkedProducts, 'name')); + $products = $products + $linkedProductPairs; + + $this->view->title = $this->lang->repo->common . $this->lang->colon . $this->lang->repo->edit; + $this->view->repo = $repo; + $this->view->repoID = $repoID; + $this->view->objectID = $objectID; + $this->view->groups = $this->loadModel('group')->getPairs(); + $this->view->users = $this->loadModel('user')->getPairs('noletter|noempty|nodeleted|noclosed'); + $this->view->products = $products; + $this->view->relatedProjects = $this->repo->filterProject(explode(',', $repo->product), explode(',', $repo->projects)); + $this->view->serviceHosts = array('' => '') + $this->loadModel('pipeline')->getPairs($repo->SCM); $this->view->position[] = html::a(inlink('maintain'), $this->lang->repo->common); $this->view->position[] = $this->lang->repo->edit; @@ -500,6 +510,7 @@ class repo extends control $this->view->branchesAndTags = $branchesAndTags; $this->view->branchID = $branchID; $this->view->objectID = $objectID; + $this->view->currentProject = $this->app->tab == 'project' ? $this->loadModel('project')->getByID($objectID) : null; $this->view->pager = $pager; $this->view->path = urldecode($path); $this->view->logType = $logType; @@ -1171,7 +1182,7 @@ class repo extends control * @access public * @return void */ - public function ajaxGetDropMenu($repoID, $module = 'repo', $method = 'browse') + public function ajaxGetDropMenu($repoID, $module = 'repo', $method = 'browse', $projectID = 0) { if($module == 'repo' and !in_array($method, array('review', 'diff'))) $method = 'browse'; if($module == 'mr') $method = 'browse'; @@ -1184,7 +1195,7 @@ class repo extends control } /* Get repo group by type. */ - $repoGroup = $this->repo->getRepoGroup($this->app->tab); + $repoGroup = $this->repo->getRepoGroup($this->app->tab, $projectID); if($module == 'mr') { foreach($repoGroup as $type => $group) @@ -1200,6 +1211,57 @@ class repo extends control $this->display(); } + /** + * Create new product select options by remove shadow products if remove project. + * + * @access public + * @return void + */ + public function ajaxFilterShadowProducts() + { + $postData = fixer::input('post') + ->setDefault('products', array()) + ->setDefault('projectID', 0) + ->setDefault('objectID', 0) + ->get(); + + $shadowProduct = $this->loadModel('product')->getShadowProductByProject($postData->projectID); + $selectedProducts = array_diff($postData->products, array($shadowProduct->id)); // Remove shadow product. + + $products = $postData->objectID ? $this->loadModel('product')->getProductPairsByProject($objectID) : $this->loadModel('product')->getPairs(); + $linkedProducts = $this->loadModel('product')->getByIdList($postData->products); + $linkedProductPairs = array_combine(array_keys($linkedProducts), array_column($linkedProducts, 'name')); + $products = $products + $linkedProductPairs; + + return print (html::select('product[]', $products, $selectedProducts, "class='form-control chosen' multiple")); + } + + /** + * Get projects list by product id list by ajax. + * + * @access public + * @return void + */ + public function ajaxProjectsOfProducts() + { + $postData = fixer::input('post') + ->setDefault('products', array()) + ->setDefault('projects', array()) + ->get(); + + /* Get all projects that can be accessed. */ + $accessProjects = array(); + foreach($postData->products as $productID) + { + $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); + $accessProjects = $accessProjects + $projects; + } + + $selectedProjects = array_intersect(array_keys($accessProjects), $postData->projects); + + return print (html::select('projects[]', $accessProjects, $selectedProjects, "class='form-control chosen' multiple")); + } + /** * Ajax get hosts. * diff --git a/module/repo/css/browse.css b/module/repo/css/browse.css index fd9c9002de..0bd3a9ae80 100644 --- a/module/repo/css/browse.css +++ b/module/repo/css/browse.css @@ -13,7 +13,7 @@ #branchList {line-height: 25px;} #branchList .hide-in-search, #branchList .tree ul {padding-left: 20px;} .tree li.has-list.open:before {border-left: none;} -.tree li {padding: 0;} +#branchList .tree li {padding: 0;} .branch-or-tag {border-radius: 4px;} .c-name {min-width: 150px;} @@ -32,3 +32,7 @@ .download-popover .table {margin-bottom: 0;} .download-popover .table td {padding-right: 0;} .download-popover .popover-title {padding: 8px;} + +#mainMenu #swapper {padding: 0;} +#mainMenu #swapper #currentItem {color: #313c52;} +#mainMenu #swapper #currentItem:hover {color: #0b0f18; background-color: rgba(0, 0, 0, 0.075);} diff --git a/module/repo/js/create.js b/module/repo/js/create.js index 3c9acf4838..41211ee581 100644 --- a/module/repo/js/create.js +++ b/module/repo/js/create.js @@ -5,7 +5,7 @@ $(function() { $form = $(this).closest('form'); $form.css('min-height', $form.height()); - }) + }); $('#repoForm').bind('DOMNodeInserted', function(e) { @@ -23,6 +23,17 @@ $(function() } }); + $('#product').change(function() + { + var projects = $('#projects').val(); + var products = $('#product').val(); + $.post(createLink('repo', 'ajaxProjectsOfProducts'), {products, projects}, function(response) + { + $('#projectContainer').html('').append(response); + $('#projects').chosen().trigger("chosen:updated"); + }); + }); + $('#serviceHost').change(function() { var host = $('#serviceHost').val(); diff --git a/module/repo/js/edit.js b/module/repo/js/edit.js index 0a37664742..19ff865cfb 100644 --- a/module/repo/js/edit.js +++ b/module/repo/js/edit.js @@ -1,11 +1,56 @@ $(function() { - scmChanged(scm, true); + scmChanged(repoSCM, true); $('#submit').mousedown(function() { $form = $(this).closest('form'); $form.css('min-height', $form.height()); - }) + }); + + /** + * Handle product changed event. + * + * @access public + * @return void + */ + function productChanged() + { + var projects = $('#projects').val(); + var products = $('#product').val(); + $.post(createLink('repo', 'ajaxProjectsOfProducts'), {products, projects}, function(response) + { + $('#projectContainer').html('').append(response); + $('#projects').change(projectsChanged); + $('#projects').chosen().trigger("chosen:updated"); + }); + } + + /** + * Handle projects changed event. + * + * @param object $event + * @param object $data + * @access public + * @return void + */ + function projectsChanged(event, data) + { + if(!data.deselected) return; + + var products = $('#product').val(); + var projects = $('#projects').val(); + + $.post(createLink('repo', 'ajaxFilterShadowProducts'), {products, projectID: data.deselected, objectID}, function(response) + { + $('#productContainer').html('').append(response); + $('#product').change(productChanged); + $('#product').chosen().trigger("chosen:updated"); + }); + } + + $('#product').change(productChanged); + + $('#projects').change(projectsChanged); $('#serviceHost').change(function() { @@ -41,6 +86,7 @@ function scmChanged(scm, isFirstRequest = false) if(scm == 'Git' || scm == 'Gitea' || scm == 'Gogs') { $('.account-fields').addClass('hidden'); + if(['Git', 'Gitea', 'Gogs'].indexOf(repoSCM) === -1) $('#client').val(''); $('.tips-git').removeClass('hidden'); $('.tips-svn').addClass('hidden'); diff --git a/module/repo/lang/de.php b/module/repo/lang/de.php index eef3df7db5..ad6adb979e 100644 --- a/module/repo/lang/de.php +++ b/module/repo/lang/de.php @@ -1,8 +1,10 @@ repo->common = 'Repo'; +$lang->repo->codeRepo = 'Code Library'; $lang->repo->browse = 'View'; $lang->repo->viewRevision = 'View Revision'; $lang->repo->product = 'Product'; +$lang->repo->projects = 'Project'; $lang->repo->execution = $lang->execution->common; $lang->repo->create = 'Create'; $lang->repo->maintain = 'Repo List'; diff --git a/module/repo/lang/en.php b/module/repo/lang/en.php index 025d4901ab..c845e8927b 100644 --- a/module/repo/lang/en.php +++ b/module/repo/lang/en.php @@ -1,8 +1,10 @@ repo->common = 'Repo'; +$lang->repo->codeRepo = 'Code Library'; $lang->repo->browse = 'View'; $lang->repo->viewRevision = 'View Revision'; $lang->repo->product = 'Product'; +$lang->repo->projects = 'Project'; $lang->repo->execution = $lang->execution->common; $lang->repo->create = 'Create'; $lang->repo->maintain = 'Repo List'; diff --git a/module/repo/lang/fr.php b/module/repo/lang/fr.php index 28e405a979..71bfbcce2f 100644 --- a/module/repo/lang/fr.php +++ b/module/repo/lang/fr.php @@ -1,8 +1,10 @@ repo->common = 'Référentiel'; +$lang->repo->codeRepo = 'Code Library'; $lang->repo->browse = 'Aff'; $lang->repo->viewRevision = 'Aff Modifs'; $lang->repo->product = 'Product'; +$lang->repo->projects = 'Project'; $lang->repo->execution = $lang->execution->common; $lang->repo->create = 'Créer'; $lang->repo->maintain = 'Liste Ref'; diff --git a/module/repo/lang/vi.php b/module/repo/lang/vi.php index aa05c51e62..7b6692b04a 100644 --- a/module/repo/lang/vi.php +++ b/module/repo/lang/vi.php @@ -3,6 +3,7 @@ $lang->repo->common = 'Repo'; $lang->repo->browse = 'Xem'; $lang->repo->viewRevision = 'Xem Revision'; $lang->repo->product = 'Product'; +$lang->repo->projects = 'Project'; $lang->repo->execution = $lang->execution->common; $lang->repo->create = 'Tạo'; $lang->repo->maintain = 'Repo danh sách'; diff --git a/module/repo/lang/zh-cn.php b/module/repo/lang/zh-cn.php index e791a70c1d..537454f72e 100644 --- a/module/repo/lang/zh-cn.php +++ b/module/repo/lang/zh-cn.php @@ -1,8 +1,10 @@ repo->common = '代码'; +$lang->repo->codeRepo = '代码库'; $lang->repo->browse = '浏览'; $lang->repo->viewRevision = '查看修订'; $lang->repo->product = '所属产品'; +$lang->repo->projects = '相关项目'; $lang->repo->execution = '所属' . $lang->execution->common; $lang->repo->create = '创建'; $lang->repo->maintain = '代码库列表'; diff --git a/module/repo/lang/zh-tw.php b/module/repo/lang/zh-tw.php index b900b9cd6d..59e41603da 100644 --- a/module/repo/lang/zh-tw.php +++ b/module/repo/lang/zh-tw.php @@ -3,6 +3,7 @@ $lang->repo->common = '代碼'; $lang->repo->browse = '瀏覽'; $lang->repo->viewRevision = '查看修訂'; $lang->repo->product = '所屬產品'; +$lang->repo->projects = '所屬項目'; $lang->repo->execution = '所屬' . $lang->execution->common; $lang->repo->create = '創建'; $lang->repo->maintain = '版本庫列表'; diff --git a/module/repo/model.php b/module/repo/model.php index 208c350a23..a4b49e5fba 100644 --- a/module/repo/model.php +++ b/module/repo/model.php @@ -91,7 +91,8 @@ class repoModel extends model return $output; } - $dropMenuLink = helper::createLink('repo', 'ajaxGetDropMenu', "repoID=$repoID&module=$currentModule&method=$currentMethod"); + $projectID = $this->app->tab == 'project' ? $this->get->objectID : 0; + $dropMenuLink = helper::createLink('repo', 'ajaxGetDropMenu', "repoID=$repoID&module=$currentModule&method=$currentMethod&projectId=$projectID"); $output = "
"; @@ -200,6 +201,7 @@ class repoModel extends model ->skipSpecial('path,client,account,password') ->setDefault('product', '') ->join('product', ',') + ->setDefault('projects', '')->join('projects', ',') ->get(); $data->acl = empty($data->acl) ? '' : json_encode($data->acl); @@ -251,6 +253,7 @@ class repoModel extends model public function update($id) { $repo = $this->getRepoByID($id); + if(!$this->checkConnection()) return false; $isPipelineServer = in_array(strtolower($this->post->SCM), $this->config->repo->gitServiceList) ? true : false; @@ -265,6 +268,7 @@ class repoModel extends model ->setDefault('product', '') ->skipSpecial('path,client,account,password') ->join('product', ',') + ->setDefault('projects', '')->join('projects', ',') ->get(); if($data->path != $repo->path) $data->synced = 0; @@ -2175,4 +2179,27 @@ class repoModel extends model return $url; } + + /** + * Remove projects without privileges. + * + * @param array $productIDList + * @param array $projectIDList + * @access public + * @return array + */ + public function filterProject($productIDList, $projectIDList = array()) + { + /* Get all projects that can be accessed. */ + $accessProjects = array(); + foreach($productIDList as $productID) + { + $projects = $this->loadModel('product')->getProjectPairsByProduct($productID); + $accessProjects = $accessProjects + $projects; + } + + /* Get linked projects. */ + $linkedProjects = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectIDList)->fetchPairs('id', 'name'); + return $accessProjects + $linkedProjects; // Merge projects can be accessed and exists. + } } diff --git a/module/repo/view/browse.html.php b/module/repo/view/browse.html.php index 11ead84c3d..2835c79089 100644 --- a/module/repo/view/browse.html.php +++ b/module/repo/view/browse.html.php @@ -16,6 +16,11 @@
release->notifyUsers;?>release->notifyList, 'FB');?>
@@ -333,24 +333,33 @@
release->basicInfo?>
+ hasProduct):?> - productType != 'normal'):?> - - - - - + productType != 'normal'):?> - + + + + + + + - @@ -373,17 +382,11 @@
files?>
files) + if($release->files) echo $this->fetch('file', 'printFiles', array('files' => $release->files, 'fieldset' => 'false')); + foreach($release->buildInfos as $buildID => $buildInfo) { - echo $this->fetch('file', 'printFiles', array('files' => $release->files, 'fieldset' => 'false')); - } - elseif($release->filePath) - { - echo $lang->release->filePath . html::a($release->filePath, $release->filePath, '_blank'); - } - elseif($release->scmPath) - { - echo $lang->release->scmPath . html::a($release->scmPath, $release->scmPath, '_blank'); + if($buildInfo->filePath) echo $lang->release->filePath . html::a($buildInfo->filePath, $buildInfo->filePath, '_blank'); + if($buildInfo->scmPath) echo $lang->release->scmPath . html::a($buildInfo->scmPath, $buildInfo->scmPath, '_blank'); } ?>
diff --git a/module/projectstory/control.php b/module/projectstory/control.php index c51eef53ec..35b2292286 100644 --- a/module/projectstory/control.php +++ b/module/projectstory/control.php @@ -36,6 +36,13 @@ class projectStory extends control */ public function story($projectID = 0, $productID = 0, $branch = 0, $browseType = '', $param = 0, $storyType = 'story', $orderBy = '', $recTotal = 0, $recPerPage = 20, $pageID = 1) { + /* Get productID for none-product project. */ + if($projectID) + { + $project = $this->loadModel('project')->getByID($projectID); + if(!$project->hasProduct) $productID = $this->loadModel('product')->getShadowProductByProject($projectID)->id; + } + $this->products = $this->loadModel('product')->getProductPairsByProject($projectID); /* Set product list for export. */ @@ -61,6 +68,9 @@ class projectStory extends control $products = $this->loadModel('product')->getProductPairsByProject($projectID); if(empty($productID)) $productID = key($products); + $project = $this->loadModel('project')->getByID($projectID); + $this->session->set('hasProduct', $project->hasProduct); + echo $this->fetch('product', 'track', "productID=$productID&branch=$branch&projectID=$projectID&recTotal=$recTotal&recPerPage=$recPerPage&pageID=$pageID"); } diff --git a/module/projectstory/lang/de.php b/module/projectstory/lang/de.php index 85d9e04cb9..108557336d 100644 --- a/module/projectstory/lang/de.php +++ b/module/projectstory/lang/de.php @@ -6,6 +6,10 @@ $lang->projectstory->story = "{$lang->SRCommon} List"; $lang->projectstory->version = "Version"; $lang->projectstory->order = "Order"; +$lang->projectstory->storyCommon = 'Project Story'; +$lang->projectstory->storyList = 'Project Story List'; +$lang->projectstory->storyView = 'Project Story Detail'; + $lang->projectstory->common = "Project {$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon} Home"; $lang->projectstory->view = "{$lang->SRCommon} Detail"; diff --git a/module/projectstory/lang/en.php b/module/projectstory/lang/en.php index 46d47f3073..157e7ed244 100644 --- a/module/projectstory/lang/en.php +++ b/module/projectstory/lang/en.php @@ -6,6 +6,10 @@ $lang->projectstory->story = "Story ID"; $lang->projectstory->version = "Version"; $lang->projectstory->order = "Order"; +$lang->projectstory->storyCommon = 'Project Story'; +$lang->projectstory->storyList = 'Project Story List'; +$lang->projectstory->storyView = 'Project Story Detail'; + $lang->projectstory->common = "Project {$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon} Home"; $lang->projectstory->view = "{$lang->SRCommon} Detail"; diff --git a/module/projectstory/lang/fr.php b/module/projectstory/lang/fr.php index 85d9e04cb9..108557336d 100644 --- a/module/projectstory/lang/fr.php +++ b/module/projectstory/lang/fr.php @@ -6,6 +6,10 @@ $lang->projectstory->story = "{$lang->SRCommon} List"; $lang->projectstory->version = "Version"; $lang->projectstory->order = "Order"; +$lang->projectstory->storyCommon = 'Project Story'; +$lang->projectstory->storyList = 'Project Story List'; +$lang->projectstory->storyView = 'Project Story Detail'; + $lang->projectstory->common = "Project {$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon} Home"; $lang->projectstory->view = "{$lang->SRCommon} Detail"; diff --git a/module/projectstory/lang/vi.php b/module/projectstory/lang/vi.php index e41803b496..157e7ed244 100644 --- a/module/projectstory/lang/vi.php +++ b/module/projectstory/lang/vi.php @@ -1,5 +1,15 @@ projectstory->project = "Project ID"; +$lang->projectstory->product = "Product ID"; +$lang->projectstory->story = "Story ID"; +$lang->projectstory->version = "Version"; +$lang->projectstory->order = "Order"; + +$lang->projectstory->storyCommon = 'Project Story'; +$lang->projectstory->storyList = 'Project Story List'; +$lang->projectstory->storyView = 'Project Story Detail'; + $lang->projectstory->common = "Project {$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon} Home"; $lang->projectstory->view = "{$lang->SRCommon} Detail"; diff --git a/module/projectstory/lang/zh-cn.php b/module/projectstory/lang/zh-cn.php index 24a4aa54bd..0cc16a41ea 100644 --- a/module/projectstory/lang/zh-cn.php +++ b/module/projectstory/lang/zh-cn.php @@ -6,6 +6,10 @@ $lang->projectstory->story = "需求ID"; $lang->projectstory->version = "版本"; $lang->projectstory->order = "排序"; +$lang->projectstory->storyCommon = '项目需求'; +$lang->projectstory->storyList = '项目需求列表'; +$lang->projectstory->storyView = '项目需求详情'; + $lang->projectstory->common = "项目{$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon}主页"; $lang->projectstory->view = "{$lang->SRCommon}详情"; diff --git a/module/projectstory/lang/zh-tw.php b/module/projectstory/lang/zh-tw.php index ebea653298..93bf090476 100644 --- a/module/projectstory/lang/zh-tw.php +++ b/module/projectstory/lang/zh-tw.php @@ -6,6 +6,10 @@ $lang->projectstory->story = "需求ID"; $lang->projectstory->version = "版本"; $lang->projectstory->order = "排序"; +$lang->projectstory->storyCommon = '项目需求'; +$lang->projectstory->storyList = '项目需求列表'; +$lang->projectstory->storyView = '项目需求详情'; + $lang->projectstory->common = "項目{$lang->SRCommon}"; $lang->projectstory->index = "{$lang->SRCommon}主頁"; $lang->projectstory->view = "{$lang->SRCommon}詳情"; @@ -26,6 +30,8 @@ global $app; $app->loadLang('product'); $lang->projectstory->featureBar['story']['allstory'] = $lang->product->allStory; $lang->projectstory->featureBar['story']['unclosed'] = $lang->product->unclosed; +$lang->projectstory->featureBar['story']['draft'] = $lang->product->draftStory; +$lang->projectstory->featureBar['story']['reviewing'] = $lang->product->reviewingStory; $lang->projectstory->featureBar['story']['changing'] = $lang->product->changingStory; $lang->projectstory->featureBar['story']['closed'] = $lang->product->closedStory; $lang->projectstory->featureBar['story']['linkedExecution'] = '已關聯' . $lang->execution->common; diff --git a/module/release/config.php b/module/release/config.php index e49f950c9e..7e52377cd7 100644 --- a/module/release/config.php +++ b/module/release/config.php @@ -3,7 +3,7 @@ $config->release = new stdclass(); $config->release->create = new stdclass(); $config->release->edit = new stdclass(); $config->release->create->requiredFields = 'name,date'; -$config->release->edit->requiredFields = 'name,build,date'; +$config->release->edit->requiredFields = 'name,date'; $config->release->editor = new stdclass(); $config->release->editor->create = array('id' => 'desc', 'tools' => 'simpleTools'); diff --git a/module/release/control.php b/module/release/control.php index 703873896b..73cf7c41b0 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -70,21 +70,21 @@ class release extends control { $releaseID = $this->release->create($productID, $branch); if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); + $this->loadModel('action')->create('release', $releaseID, 'opened'); - $message = $this->executeHooks($releaseID); - if($message) $this->lang->saveSuccess = $message; + $result = $this->executeHooks($releaseID); + $message = $result ? $result : $this->lang->saveSuccess; - if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'id' => $releaseID)); - if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'closeModal' => true, 'callback' => "parent.loadProductBuilds($productID)")); + if($this->viewType == 'json') return $this->send(array('result' => 'success', 'message' => $message, 'id' => $releaseID)); + if(isonlybody()) return $this->send(array('result' => 'success', 'message' => $message, 'closeModal' => true, 'callback' => "parent.loadProductBuilds($productID)")); - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('view', "releaseID=$releaseID"))); + return $this->send(array('result' => 'success', 'message' => $message, 'locate' => inlink('view', "releaseID=$releaseID"))); } $builds = $this->loadModel('build')->getBuildPairs($productID, $branch, 'notrunk|withbranch', 0, 'execution', '', false); $releasedBuilds = $this->release->getReleasedBuilds($productID, $branch); foreach($releasedBuilds as $build) unset($builds[$build]); - unset($builds['trunk']); /* Get the builds of the linked stories or bugs. */ $notEmptyBuilds = array(); @@ -126,10 +126,10 @@ class release extends control if(!empty($changes)) $this->action->logHistory($actionID, $changes); } - $message = $this->executeHooks($releaseID); - if($message) $this->lang->saveSuccess = $message; + $result = $this->executeHooks($releaseID); + $message = $result ? $result : $this->lang->saveSuccess; - return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => inlink('view', "releaseID=$releaseID"))); + return $this->send(array('result' => 'success', 'message' => $message, 'locate' => inlink('view', "releaseID=$releaseID"))); } $this->loadModel('story'); $this->loadModel('bug'); @@ -137,21 +137,18 @@ class release extends control /* Get release and build. */ $release = $this->release->getById((int)$releaseID); - $this->commonAction($release->product, $release->branch); - $build = $this->build->getById($release->build); + $this->commonAction($release->product); - $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch', $release->project, 'project', $release->build, false); - $releasedBuilds = $this->release->getReleasedBuilds($release->product, $release->branch); + $builds = $this->loadModel('build')->getBuildPairs($release->product, $release->branch, 'notrunk|withbranch', 0, 'project', $release->build, false); + $releasedBuilds = $this->release->getReleasedBuilds($release->product); foreach($releasedBuilds as $releasedBuild) { - if($releasedBuild != $build->id) unset($builds[$releasedBuild]); + if(strpos(',' . trim($release->build, ',') . ',', ",{$releasedBuild},") === false) unset($builds[$releasedBuild]); } - unset($builds['trunk']); $this->view->title = $this->view->product->name . $this->lang->colon . $this->lang->release->edit; $this->view->position[] = $this->lang->release->edit; $this->view->release = $release; - $this->view->build = $build; $this->view->builds = $builds; $this->view->users = $this->loadModel('user')->getPairs('noclosed'); @@ -201,7 +198,7 @@ class release extends control $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'story'); $stages = $this->dao->select('*')->from(TABLE_STORYSTAGE)->where('story')->in(array_keys($stories))->andWhere('branch')->eq($release->branch)->fetchPairs('story', 'stage'); - foreach($stages as $storyID => $stage)$stories[$storyID]->stage = $stage; + foreach($stages as $storyID => $stage) $stories[$storyID]->stage = $stage; $bugPager = new pager($type == 'bug' ? $recTotal : 0, $recPerPage, $type == 'bug' ? $pageID : 1); $bugs = $this->dao->select('*')->from(TABLE_BUG) @@ -305,7 +302,11 @@ class release extends control $release = $this->dao->select('*')->from(TABLE_RELEASE)->where('id')->eq((int)$releaseID)->fetch(); $build = $this->dao->select('*')->from(TABLE_BUILD)->where('id')->eq((int)$release->build)->fetch(); - if(empty($build->execution)) $this->loadModel('build')->delete(TABLE_BUILD, $build->id); + $this->loadModel('build')->delete(TABLE_BUILD, $release->shadow); + foreach($builds as $build) + { + if(empty($build->execution) and $build->createdDate == $release->createdDate) $this->build->delete(TABLE_BUILD, $build->id); + } $message = $this->executeHooks($releaseID); if($message) $response['message'] = $message; @@ -323,7 +324,6 @@ class release extends control $response['result'] = 'success'; $response['message'] = ''; $release = $this->release->getById($releaseID); - $this->dao->update(TABLE_BUILD)->set('deleted')->eq(1)->where('id')->eq($release->build)->andWhere('name')->eq($release->name)->exec(); } return $this->send($response); @@ -467,7 +467,6 @@ class release extends control $this->session->set('storyList', inlink('view', "releaseID=$releaseID&type=story&link=true¶m=" . helper::safe64Encode("&browseType=$browseType&queryID=$param")), 'product'); $release = $this->release->getById($releaseID); - $build = $this->loadModel('build')->getByID($release->build); $this->commonAction($release->product); $this->loadModel('story'); $this->loadModel('tree'); @@ -478,15 +477,21 @@ class release extends control $pager = new pager($recTotal, $recPerPage, $pageID); /* Build search form. */ - $queryID = ($browseType == 'bySearch') ? (int)$param : 0; unset($this->config->product->search['fields']['product']); unset($this->config->product->search['fields']['project']); + + $queryID = ($browseType == 'bySearch') ? (int)$param : 0; $this->config->product->search['actionURL'] = $this->createLink('release', 'view', "releaseID=$releaseID&type=story&link=true¶m=" . helper::safe64Encode('&browseType=bySearch&queryID=myQueryID')); $this->config->product->search['queryID'] = $queryID; $this->config->product->search['style'] = 'simple'; $this->config->product->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairsForStory($release->product, $release->branch, 'skipParent|withMainPlan'); $this->config->product->search['params']['status'] = array('operator' => '=', 'control' => 'select', 'values' => $this->lang->story->statusList); - $this->config->product->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($release->product, 'story', 0, $release->branch);; + + $searchModules = array(); + $moduleGroups = $this->loadModel('tree')->getOptionMenu($release->product, 'story', 0, explode(',', $release->branch));; + foreach($moduleGroups as $modules) $searchModules += $modules; + $this->config->product->search['params']['module']['values'] = $searchModules; + if($this->session->currentProductType == 'normal') { unset($this->config->product->search['fields']['branch']); @@ -494,20 +499,36 @@ class release extends control } else { - $this->config->product->search['fields']['branch'] = $this->lang->product->branch; - $branchName = $this->loadModel('branch')->getById($release->branch); - $branches = array('' => '', BRANCH_MAIN => $this->lang->branch->main, $release->branch => $branchName); + $allBranchs = $this->loadModel('branch')->getPairs($release->product); + $branches = array('' => '', BRANCH_MAIN => $this->lang->branch->main); + foreach(explode(',', trim($release->branch, ',')) as $branchID) $branches[$branchID] = zget($allBranchs, $branchID); + + $this->config->product->search['fields']['branch'] = sprintf($this->lang->product->branch, $this->lang->product->branchName[$release->productType]); $this->config->product->search['params']['branch']['values'] = $branches; } $this->loadModel('search')->setSearchParams($this->config->product->search); - if($browseType == 'bySearch' or $build->execution == 0) + $builds = $this->loadModel('build')->getByList($release->build); + $executionIdList = array(); + foreach($builds as $build) { - $allStories = $this->story->getBySearch($release->product, "0,{$release->branch}", $queryID, 'id', $build->execution ? $build->execution : '', 'story', $release->stories, $pager); + if(!empty($build->execution)) + { + $executionIdList[$build->execution] = $build->execution; + } + elseif(!empty($build->project)) + { + $executionIdList[$build->project] = $build->project; + } + } + + if($browseType == 'bySearch') + { + $allStories = $this->story->getBySearch($release->product, $release->branch, $queryID, 'id', $executionIdList, 'story', $release->stories, $pager); } else { - $allStories = $this->story->getExecutionStories($build->execution, $build->product, 0, 't1.`order`_desc', 'byBranch', $release->branch, 'story', $release->stories, $pager); + $allStories = $this->story->getExecutionStories($executionIdList, $release->product, 0, 't1.`order`_desc', 'byBranch', $release->branch, 'story', $release->stories, $pager); } $this->view->allStories = $allStories; @@ -587,7 +608,6 @@ class release extends control $this->session->set('bugList', inlink('view', "releaseID=$releaseID&type=$type&link=true¶m=" . helper::safe64Encode("&browseType=$browseType&queryID=$param")), 'qa'); /* Set menu. */ $release = $this->release->getByID($releaseID); - $build = $this->loadModel('build')->getByID($release->build); $this->commonAction($release->product); /* Load pager. */ @@ -596,17 +616,24 @@ class release extends control /* Build the search form. */ $this->loadModel('bug'); - $queryID = ($browseType == 'bysearch') ? (int)$param : 0; unset($this->config->bug->search['fields']['product']); unset($this->config->bug->search['fields']['project']); + + $queryID = ($browseType == 'bysearch') ? (int)$param : 0; $this->config->bug->search['actionURL'] = $this->createLink('release', 'view', "releaseID=$releaseID&type=$type&link=true¶m=" . helper::safe64Encode('&browseType=bySearch&queryID=myQueryID')); $this->config->bug->search['queryID'] = $queryID; $this->config->bug->search['style'] = 'simple'; + $this->config->bug->search['params']['plan']['values'] = $this->loadModel('productplan')->getPairsForStory($release->product, $release->branch, 'skipParent|withMainPlan'); $this->config->bug->search['params']['execution']['values'] = $this->loadModel('product')->getExecutionPairsByProduct($release->product, $release->branch); $this->config->bug->search['params']['openedBuild']['values'] = $this->loadModel('build')->getBuildPairs($release->product, $branch = 'all', $params = ''); $this->config->bug->search['params']['resolvedBuild']['values'] = $this->config->bug->search['params']['openedBuild']['values']; - $this->config->bug->search['params']['module']['values'] = $this->loadModel('tree')->getOptionMenu($release->product, 'bug', 0, $release->branch); + + $searchModules = array(); + $moduleGroups = $this->loadModel('tree')->getOptionMenu($release->product, 'bug', 0, explode(',', $release->branch)); + foreach($moduleGroups as $modules) $searchModules += $modules; + $this->config->bug->search['params']['module']['values'] = $searchModules; + if($this->session->currentProductType == 'normal') { unset($this->config->bug->search['fields']['branch']); @@ -614,28 +641,31 @@ class release extends control } else { - $this->config->bug->search['fields']['branch'] = $this->lang->product->branch; - $branchName = $this->loadModel('branch')->getById($release->branch); - $branches = array('' => '', BRANCH_MAIN => $this->lang->branch->main, $release->branch => $branchName); + $allBranchs = $this->loadModel('branch')->getPairs($release->product); + $branches = array('' => '', BRANCH_MAIN => $this->lang->branch->main); + foreach(explode(',', trim($release->branch, ',')) as $branchID) $branches[$branchID] = zget($allBranchs, $branchID); + + $this->config->bug->search['fields']['branch'] = sprintf($this->lang->product->branch, $this->lang->product->branchName[$release->productType]); $this->config->bug->search['params']['branch']['values'] = $branches; } $this->loadModel('search')->setSearchParams($this->config->bug->search); + $builds = $this->loadModel('build')->getByList($release->build); $allBugs = array(); $releaseBugs = $type == 'bug' ? $release->bugs : $release->leftBugs; - if($browseType == 'bySearch' or $build->execution == 0) + if($browseType == 'bySearch') { $allBugs = $this->bug->getBySearch($release->product, $release->branch, $queryID, 'id_desc', $releaseBugs, $pager); } - elseif($build->execution) + else { if($type == 'bug') { - $allBugs = $this->bug->getReleaseBugs($build->id, $release->product, $release->branch, $releaseBugs, $pager); + $allBugs = $this->bug->getReleaseBugs(array_keys($builds), $release->product, $release->branch, $releaseBugs, $pager); } elseif($type == 'leftBug') { - $allBugs = $this->bug->getProductLeftBugs($build->id, $release->product, $release->branch, $releaseBugs, $pager); + $allBugs = $this->bug->getProductLeftBugs(array_keys($builds), $release->product, $release->branch, $releaseBugs, $pager); } } diff --git a/module/release/css/browse.css b/module/release/css/browse.css index 252ff7eb52..dd6d856b51 100644 --- a/module/release/css/browse.css +++ b/module/release/css/browse.css @@ -1,5 +1,7 @@ #releaseList {font-size: 13px;} td {overflow: hidden; text-overflow: ellipsis; white-space: nowrap;} +#releaseList tbody>tr:hover{background-color: unset!important;} +.main-table tbody>tr>td:first-child{padding: 2px 8px!important;} .c-id {width: 60px} .c-branch {width: 100px} diff --git a/module/release/js/create.js b/module/release/js/create.js index 8df61698a1..1b64abc7c2 100644 --- a/module/release/js/create.js +++ b/module/release/js/create.js @@ -1,12 +1,25 @@ $('#submit').click(function() { - var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); - var name = $('#name').val(); - var date = $('#date').val(); - var build = $('#build').val(); - if(name && build && typeof(notEmptyBuilds[build]) != 'undefined' && dateFormat.test(date)) + var dateFormat = new RegExp(/^\d{4}\-\d{2}\-\d{2}$/); + var name = $('#name').val(); + var date = $('#date').val(); + var build = $('#build').val(); + var notEmptyBuild = false; + + $.each(build, function(index, value) + { + if(typeof(notEmptyBuilds[value]) != 'undefined') + { + notEmptyBuild = true; + return false; + } + }) + + if(name && build && notEmptyBuild && dateFormat.test(date)) { var result = confirm(confirmLink) ? true : false; $('#sync').val(result); } }); + +$('[data-toggle="popover"]').popover(); diff --git a/module/release/lang/de.php b/module/release/lang/de.php index 5b9df0f6a5..81723c68b5 100644 --- a/module/release/lang/de.php +++ b/module/release/lang/de.php @@ -38,6 +38,8 @@ $lang->release->product = $lang->productCommon; $lang->release->branch = 'Platform/Branch'; $lang->release->project = 'Project'; $lang->release->build = 'Build'; +$lang->release->includedBuild = 'Included Build'; +$lang->release->relatedProject = 'Related Project'; $lang->release->name = 'Name'; $lang->release->marker = 'Meilensteine'; $lang->release->date = 'Datum'; diff --git a/module/release/lang/en.php b/module/release/lang/en.php index 622148bce9..8afd780c5e 100644 --- a/module/release/lang/en.php +++ b/module/release/lang/en.php @@ -38,6 +38,8 @@ $lang->release->product = $lang->productCommon; $lang->release->branch = 'Platform/Branch'; $lang->release->project = 'Project'; $lang->release->build = 'Build'; +$lang->release->includedBuild = 'Included Build'; +$lang->release->relatedProject = 'Related Project'; $lang->release->name = 'Name'; $lang->release->marker = 'Milestone'; $lang->release->date = 'Release Date'; diff --git a/module/release/lang/fr.php b/module/release/lang/fr.php index 1f5dbdf9e1..c27bfe6121 100644 --- a/module/release/lang/fr.php +++ b/module/release/lang/fr.php @@ -38,6 +38,8 @@ $lang->release->product = $lang->productCommon; $lang->release->branch = 'Plateforme/Branche'; $lang->release->project = 'Project'; $lang->release->build = 'Build'; +$lang->release->includedBuild = 'Included Build'; +$lang->release->relatedProject = 'Related Project'; $lang->release->name = 'Nom'; $lang->release->marker = 'Etape Importante'; $lang->release->date = 'Date Release'; diff --git a/module/release/lang/zh-cn.php b/module/release/lang/zh-cn.php index 9f4d18fa33..1d1db7edca 100644 --- a/module/release/lang/zh-cn.php +++ b/module/release/lang/zh-cn.php @@ -38,6 +38,8 @@ $lang->release->product = $lang->productCommon; $lang->release->branch = '平台/分支'; $lang->release->project = '所属项目'; $lang->release->build = '版本'; +$lang->release->includedBuild = '包含版本'; +$lang->release->relatedProject = '对应项目'; $lang->release->name = '发布名称'; $lang->release->marker = '里程碑'; $lang->release->date = '发布日期'; diff --git a/module/release/model.php b/module/release/model.php index 212bf022e7..c866d7574b 100644 --- a/module/release/model.php +++ b/module/release/model.php @@ -23,19 +23,20 @@ class releaseModel extends model */ public function getByID($releaseID, $setImgSize = false) { - $release = $this->dao->select('t1.*, t2.id as buildID, t2.filePath, t2.scmPath, t2.name as buildName, t2.project, t3.name as productName, t3.type as productType') + $release = $this->dao->select('t1.*, t2.name as productName, t2.type as productType') ->from(TABLE_RELEASE)->alias('t1') - ->leftJoin(TABLE_BUILD)->alias('t2')->on('t1.build = t2.id') - ->leftJoin(TABLE_PRODUCT)->alias('t3')->on('t1.product = t3.id') + ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') ->where('t1.id')->eq((int)$releaseID) ->orderBy('t1.id DESC') ->fetch(); if(!$release) return false; + $release->builds = $this->dao->select('id, filePath, scmPath, name, execution, project')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll(); + $this->loadModel('file'); $release = $this->file->replaceImgURL($release, 'desc'); $release->files = $this->file->getByObject('release', $releaseID); - if(empty($release->files))$release->files = $this->file->getByObject('build', $release->buildID); + if(empty($release->files))$release->files = $this->file->getByObject('build', $release->build); if($setImgSize) $release->desc = $this->file->setImgSize($release->desc); return $release; } @@ -53,19 +54,38 @@ class releaseModel extends model */ public function getList($productID, $branch = 'all', $type = 'all', $orderBy = 't1.date_desc', $pager = null) { - return $this->dao->select('t1.*, t2.name as productName, t3.id as buildID, t3.name as buildName, t3.project, t4.name as projectName') + $releases = $this->dao->select('t1.*, t2.name as productName') ->from(TABLE_RELEASE)->alias('t1') ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product = t2.id') - ->leftJoin(TABLE_BUILD)->alias('t3')->on('t1.build = t3.id') - ->leftJoin(TABLE_PROJECT)->alias('t4')->on('t1.project = t4.id') ->where('t1.deleted')->eq(0) ->beginIF($productID)->andWhere('t1.product')->eq((int)$productID)->fi() - ->beginIF($branch !== 'all')->andWhere('t1.branch')->eq($branch)->fi() + ->beginIF($branch !== 'all')->andWhere('t1.branch')->like(",{$branch},")->fi() ->beginIF($type != 'all' && $type != 'review')->andWhere('t1.status')->eq($type)->fi() ->beginIF($type == 'review')->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)")->fi() ->orderBy($orderBy) ->page($pager) ->fetchAll(); + + $builds = $this->dao->select("t1.id, t1.name, t1.project, t1.execution, IF(t2.name IS NOT NULL, t2.name, '') AS projectName, IF(t3.name IS NOT NULL, t3.name, '{$this->lang->trunk}') AS branchName") + ->from(TABLE_BUILD)->alias('t1') + ->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id') + ->leftJoin(TABLE_BRANCH)->alias('t3')->on('t1.branch = t3.id') + ->fetchAll('id'); + + foreach($releases as $release) + { + $releaseBuilds = array(); + foreach(explode(',', $release->build) as $buildID) + { + if(!$buildID or !isset($builds[$buildID])) continue; + + $releaseBuilds[] = $builds[$buildID]; + } + + $release->builds = $releaseBuilds; + } + + return $releases; } /** @@ -96,12 +116,30 @@ class releaseModel extends model */ public function getReleasedBuilds($productID, $branch = 'all') { - $releases = $this->dao->select('build')->from(TABLE_RELEASE) + $releases = $this->dao->select('branch,shadow,build')->from(TABLE_RELEASE) ->where('deleted')->eq(0) ->andWhere('product')->eq($productID) - ->beginIF($branch !== 'all')->andWhere('branch')->eq($branch)->fi() - ->fetchAll('build'); - return array_keys($releases); + ->fetchAll(); + + $buildIdList = array(); + foreach($releases as $release) + { + if($branch != 'all') + { + $inBranch = false; + foreach(explode(',', trim($release->branch, ',')) as $branchID) + { + if(empty($branchID)) continue; + if(strpos(",{$branch},", ",{$branchID},") !== false) $inBranch = true; + } + if(!$inBranch) continue; + } + + $builds = explode(',', $release->build); + $buildIdList = array_merge($buildIdList, $builds); + $buildIdList[] = $release->shadow; + } + return $buildIdList; } /** @@ -144,8 +182,10 @@ class releaseModel extends model ->setIF($projectID, 'project', $projectID) ->setIF($this->post->build == false, 'build', 0) ->setDefault('stories', '') + ->setDefault('bugs', '') ->setDefault('createdBy', $this->app->user->account) ->setDefault('createdDate', helper::now()) + ->join('build', ',') ->join('stories', ',') ->join('bugs', ',') ->join('mailto', ',') @@ -153,58 +193,49 @@ class releaseModel extends model ->remove('allchecker,files,labels,uid,sync') ->get(); - /* Auto create build when release is not link build. */ - if(empty($release->build) and $release->name) + /* Auto create shadow build. */ + if($release->name) { - $build = $this->dao->select('*')->from(TABLE_BUILD) - ->where('deleted')->eq('0') - ->andWhere('name')->eq($release->name) - ->andWhere('product')->eq($productID) - ->andWhere('branch')->eq($branch) - ->fetch(); - if($build) - { - return dao::$errors['build'] = sprintf($this->lang->release->existBuild, $release->name); - } - else - { - $build = new stdclass(); - $build->project = $projectID; - $build->product = (int)$productID; - $build->branch = (int)$branch; - $build->name = $release->name; - $build->date = $release->date; - $build->builder = $this->app->user->account; - $build->desc = $release->desc; - $build->execution = 0; - $build->createdBy = $this->app->user->account; - $build->createdDate = helper::now(); + $shadowBuild = new stdclass(); + $shadowBuild->product = $release->product; + $shadowBuild->builds = $release->build; + $shadowBuild->name = $release->name; + $shadowBuild->date = $release->date; + $shadowBuild->createdBy = $this->app->user->account; + $shadowBuild->createdDate = helper::now(); + $this->dao->insert(TABLE_BUILD)->data($shadowBuild)->exec(); - $build = $this->loadModel('file')->processImgURL($build, $this->config->release->editor->create['id']); - $this->app->loadLang('build'); - $this->dao->insert(TABLE_BUILD)->data($build) - ->autoCheck() - ->check('name', 'unique', "product = {$productID} AND branch = {$branch} AND deleted = '0'") - ->batchCheck($this->config->release->create->requiredFields, 'notempty') - ->exec(); - if(dao::isError()) return false; - - $buildID = $this->dao->lastInsertID(); - $release->build = $buildID; - } + if(dao::isError()) return false; + $release->shadow = $this->dao->lastInsertID(); } if($release->build) { - $buildInfo = $this->dao->select('project, branch, stories, bugs')->from(TABLE_BUILD)->where('id')->eq($release->build)->fetch(); - $release->branch = $buildInfo->branch; - $release->project = $buildInfo->project; - if($this->post->sync == 'true') + $builds = $this->dao->select('id,project,branch,stories,bugs')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll('id'); + foreach($builds as $build) { - $release->stories = $buildInfo->stories; - $release->bugs = $buildInfo->bugs; + $branches[$build->branch] = $build->branch; + $projects[$build->project] = $build->project; + + if($this->post->sync == 'true') + { + $build->stories = trim($build->stories, ','); + $build->bugs = trim($build->bugs, ','); + if($build->stories) $release->stories .= ',' . $build->stories; + if($build->bugs) $release->bugs .= ',' . $build->bugs; + } } + if($this->post->sync == 'true' and $release->bugs) + { + $releaseBugs = $this->loadModel('bug')->getReleaseBugs(array_keys($builds), $release->product, $release->branch); + $release->bugs = join(',', array_intersect(explode(',', $release->bugs), array_keys($releaseBugs))); + } + + $release->build = ',' . trim($release->build, ',') . ','; + $release->branch = ',' . trim(implode(',', $branches), ',') . ','; + $release->project = ',' . trim(implode(',', $projects), ',') . ','; } + $release = $this->loadModel('file')->processImgURL($release, $this->config->release->editor->create['id'], $this->post->uid); $this->dao->insert(TABLE_RELEASE)->data($release) ->autoCheck() @@ -214,7 +245,7 @@ class releaseModel extends model if(dao::isError()) { - if(!empty($buildID)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + if(!empty($release->shadow)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($release->shadow)->exec(); return false; } @@ -222,7 +253,7 @@ class releaseModel extends model if(dao::isError()) { - if(!empty($buildID)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($buildID)->exec(); + if(!empty($release->shadow)) $this->dao->delete()->from(TABLE_BUILD)->where('id')->eq($release->shadow)->exec(); } else { @@ -264,13 +295,12 @@ class releaseModel extends model /* Init vars. */ $releaseID = (int)$releaseID; $oldRelease = $this->getById($releaseID); - $branch = $this->dao->select('branch')->from(TABLE_BUILD)->where('id')->eq((int)$this->post->build)->fetch('branch'); $release = fixer::input('post')->stripTags($this->config->release->editor->edit['id'], $this->config->allowedTags) - ->add('id', $releaseID) - ->add('branch', (int)$branch) + ->setDefault('build', '') ->setDefault('mailto', '') ->setDefault('deleteFiles', array()) + ->join('build', ',') ->join('mailto', ',') ->setIF(!$this->post->marker, 'marker', 0) ->cleanInt('product') @@ -282,9 +312,15 @@ class releaseModel extends model /* update release project and branch */ if($release->build) { - $buildInfo = $this->dao->select('project, branch')->from(TABLE_BUILD)->where('id')->eq($release->build)->fetch(); - $release->branch = $buildInfo->branch; - $release->project = $buildInfo->project; + $builds = $this->dao->select('project, branch')->from(TABLE_BUILD)->where('id')->in($release->build)->fetchAll(); + foreach($builds as $build) + { + $branches[$build->branch] = $build->branch; + $projects[$build->project] = $build->project; + } + $release->build = ',' . trim($release->build, ',') . ','; + $release->branch = ',' . trim(implode(',', $branches), ',') . ','; + $release->project = ',' . trim(implode(',', $projects), ',') . ','; } $this->dao->update(TABLE_RELEASE)->data($release, 'deleteFiles') @@ -296,6 +332,12 @@ class releaseModel extends model ->exec(); if(!dao::isError()) { + $shadowBuild = array(); + if($release->name != $oldRelease->name) $shadowBuild['name'] = $release->name; + if($release->build != $oldRelease->build) $shadowBuild['builds'] = $release->build; + if($release->date != $oldRelease->date) $shadowBuild['date'] = $release->date; + if($shadowBuild) $this->dao->update(TABLE_BUILD)->data($shadowBuild)->where('id')->eq($oldRelease->shadow)->exec(); + $this->file->processFile4Object('release', $oldRelease, $release); return common::createChanges($oldRelease, $release); } diff --git a/module/release/view/browse.html.php b/module/release/view/browse.html.php index d8e18d56f6..0168a431e5 100644 --- a/module/release/view/browse.html.php +++ b/module/release/view/browse.html.php @@ -46,16 +46,13 @@

-
release->product;?> productName;?>
product->branch, $lang->product->branchName[$product->type]);?>
release->name;?>product->branch, $lang->product->branchName[$product->type]);?>
release->name;?> name;?>
release->build;?> - execution) ? html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName, '_blank') : $release->buildName;?> + + buildInfos as $buildID => $buildInfo) + { + $buildHtml[] = html::a($this->createLink($buildInfo->execution ? 'build' : 'projectbuild', 'view', "buildID=$buildID"), $buildInfo->name, '', "data-app='project'"); + } + echo join($lang->comma, $buildHtml); + ?>
+
- - type != 'normal'):?> - - - + + + loadModel('project'); + $this->loadModel('execution'); + ?> + builds);?> + 1 ? "rowspan='{$buildCount}'" : '';?> + + builds = array('');?> + builds as $build):?> - - + - - type != 'normal'):?> - - + + + processStatus('release', $release);?> - - - " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?> - + + " . $this->loadModel('flow')->getFieldValue($extendField, $release) . "";?> + + + +
release->id;?> release->name;?>release->build;?>product->branch;?>release->project;?>release->includedBuild;?>release->relatedProject;?> release->status;?> release->date;?>
id"), sprintf('%03d', $release->id));?> + + >id"), sprintf('%03d', $release->id));?>> marker ? " " : ''; echo html::a(inlink('view', "release=$release->id"), $release->name, '', "title='$release->name'") . $flagIcon; ?> execution) ? $release->buildName : html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName);?>'>branch];?> projectName;?> + + type != 'normal'):?> + branchName;?> + + execution ? 'build' : 'projectbuild'; + $canClickable = false; + if($moduleName == 'projectbuild' and $this->project->checkPriv($build->project)) $canClickable = true; + if($moduleName == 'build' and $this->execution->checkPriv($build->execution)) $canClickable = true; + echo $canClickable ? html::a($this->createLink($moduleName, 'view', "buildID=$build->id"), $build->name, '', "data-app='project'") : $build->name; + ?> + + projectName;?> + > date;?> - release->buildOperateMenu($release, 'browse');?> - >date;?>>release->buildOperateMenu($release, 'browse');?>
diff --git a/module/release/view/create.html.php b/module/release/view/create.html.php index 1030319234..b9ef2b61dd 100644 --- a/module/release/view/create.html.php +++ b/module/release/view/create.html.php @@ -35,7 +35,8 @@
release->build;?>
release->date;?>
release->build;?>build, "class='form-control chosen' required"); ?>build, "class='form-control chosen' multiple"); ?>
release->date;?>
release->build;?> - project) ? html::a($this->createLink('build', 'view', "buildID=$release->buildID"), $release->buildName, '_blank') : $release->buildName;?> + + builds as $build) + { + $moduleName = $build->execution ? 'build' : 'projectbuild'; + $canClickable = false; + if($moduleName == 'projectbuild' and $this->loadModel('project')->checkPriv($build->project)) $canClickable = true; + if($moduleName == 'build' and $this->loadModel('execution')->checkPriv($build->execution)) $canClickable = true; + + $buildHtml[] = $canClickable ? html::a($this->createLink($moduleName, 'view', "buildID=$build->id"), $build->name, '', "data-app='project'") : $build->name; + } + echo join($lang->comma, $buildHtml); + ?>
+ app->tab =='project' and $shadowProduct):?> + id);?> + + - - + + - - - + + + + + + + + @@ -41,13 +50,13 @@ - - + + - - + + - - + + - + @@ -107,4 +116,4 @@ - + diff --git a/module/repo/view/edit.html.php b/module/repo/view/edit.html.php index 485b4317d1..15cfacde7f 100644 --- a/module/repo/view/edit.html.php +++ b/module/repo/view/edit.html.php @@ -18,23 +18,28 @@ .user-addon{padding-right: 16px; padding-left: 16px;} -SCM)?> +SCM);?> +
-

repo->edit; ?>

+

repo->edit;?>

repo->product; ?>repo->product;?>
repo->type; ?>repo->scmList, 'Gitlab', "onchange='scmChanged(this.value)' class='form-control chosen'"); ?>repo->syncTips; ?>repo->projects;?>
repo->type;?>repo->scmList, 'Gitlab', "onchange='scmChanged(this.value)' class='form-control chosen'");?>repo->syncTips;?>
repo->serviceHost;?>
repo->name; ?>repo->name;?>
repo->path; ?>repo->path;?> repo->example->path->git;?> repo->example->path->svn;?> @@ -55,12 +64,12 @@
repo->encoding; ?>repo->encodingsTips; ?>repo->encodingsTips;?>
repo->client;?> repo->example->client->git;?> repo->example->client->svn;?> @@ -84,11 +93,11 @@
repo->group?> - +
- repo->user?> - + repo->user;?> +
- - + + - - - + + + + + + + @@ -46,25 +51,25 @@ - + - - + + - - - + + + - + - - + +
repo->product; ?>product, "class='form-control chosen' multiple"); ?>repo->product;?>product, "class='form-control chosen' multiple");?>
repo->type; ?>repo->scmList, $repo->SCM, "onchange='scmChanged(this.value)' class='form-control chosen'"); ?>repo->syncTips; ?>repo->projects;?>projects, "class='form-control chosen' multiple");?>
repo->type;?>repo->scmList, $repo->SCM, "onchange='scmChanged(this.value)' class='form-control chosen'");?>repo->syncTips;?>
repo->serviceHost;?>
repo->name; ?>name, "class='form-control'"); ?>name, "class='form-control'");?>
repo->path; ?>path, "class='form-control'"); ?>repo->path;?>path, "class='form-control'");?> repo->example->path->git;?> repo->example->path->svn;?>
repo->encoding; ?>encoding, "class='form-control'"); ?>repo->encodingsTips; ?>repo->encoding;?>encoding, "class='form-control'");?>repo->encodingsTips;?>
repo->client;?>client, "class='form-control'")?>client, "class='form-control'");?> repo->example->client->git;?> repo->example->client->svn;?> @@ -88,23 +93,23 @@ repo->acl;?>
- repo->group?> - acl->groups) ? '' : join(',', $repo->acl->groups), "class='form-control picker-select' multiple")?> + repo->group;?> + acl->groups) ? '' : join(',', $repo->acl->groups), "class='form-control picker-select' multiple");?>
- repo->user?> - acl->users) ? '' : join(',', $repo->acl->users), "class='form-control picker-select' multiple")?> + repo->user;?> + acl->users) ? '' : join(',', $repo->acl->users), "class='form-control picker-select' multiple");?>
repo->desc; ?>desc, "rows='3' class='form-control'"); ?>repo->desc;?>desc, "rows='3' class='form-control'");?>
- - goback, '', 'class="btn btn-wide"'); ?> + + goback, '', 'class="btn btn-wide"');?>
@@ -112,4 +117,4 @@
- + diff --git a/module/repo/view/log.html.php b/module/repo/view/log.html.php index eccdd5f81d..b321ab1dab 100644 --- a/module/repo/view/log.html.php +++ b/module/repo/view/log.html.php @@ -12,10 +12,8 @@
createLink('product', 'view', "product={$count['productID']}"), $product);?> + createLink('product', 'view', "product={$count['productID']}") : $this->createLink('project', 'view', "projectID={$count['projectID']}");?> + + diff --git a/module/report/view/bugcreate.html.php b/module/report/view/bugcreate.html.php index 9c3b4e8589..f3dd5bb8ae 100644 --- a/module/report/view/bugcreate.html.php +++ b/module/report/view/bugcreate.html.php @@ -27,7 +27,7 @@
- config->systemMode == 'classic' ? $lang->executionCommon : $lang->execution->common;?> + execution->common;?>
diff --git a/module/report/view/projectdeviation.html.php b/module/report/view/projectdeviation.html.php index 500c5fc97f..87e7acfb7c 100644 --- a/module/report/view/projectdeviation.html.php +++ b/module/report/view/projectdeviation.html.php @@ -49,9 +49,7 @@
report->id;?>report->project;?> report->execution;?> report->estimate;?> report->consumed;?>
projectName;?>createLink('execution', 'view', "executionID=$id"), $execution->name);?> + name ? $execution->projectName : html::a($this->createLink('project', 'index', "projectID=$execution->projectID"), $execution->projectName);?> + + multiple):?> + name ? html::a($this->createLink('execution', 'view', "executionID=$id"), $execution->name) : '';?> + + null;?> + + estimate, 2);?> consumed, 2);?>
report->user;?>report->project ;?> - report->execution;?> report->task;?> report->remain;?>createLink('project', 'view', "projectID={$info['projectID']}"), $projectName);?>createLink('project', 'view', "projectID={$info['projectID']}"), $projectName);?>createLink('execution', 'view', "executionID={$executionInfo['executionID']}"), $executionName);?>null;?> createLink('execution', 'view', "executionID={$executionInfo['executionID']}"), $executionName);?> story->title;?> story->status;?> story->closedReason;?>story->comment;?>story->comment;?>
' closedReason != 'duplicate') echo "style='display:none'";?>> + ' closedReason != 'duplicate') echo "style='display:none'";?>> '') + $productStoryList[$story->product][$story->branch], $story->duplicateStory ? $story->duplicateStory : '', "class='form-control' placeholder='{$lang->bug->duplicateTip}'");?> ' closedReason != 'subdivided') echo "style='display:none'";?>> diff --git a/module/story/view/batchcreate.html.php b/module/story/view/batchcreate.html.php index 652ccdcf6a..78a183ab04 100755 --- a/module/story/view/batchcreate.html.php +++ b/module/story/view/batchcreate.html.php @@ -14,6 +14,7 @@ story->create->requiredFields .= ',review';?> story->create->requiredFields);?> +

lang->story->subdivide : $this->lang->story->batchCreate;?>

@@ -52,7 +53,9 @@
branchBox'>product->branch;?> '>story->module;?> planBox'>story->plan;?> kanbancard->region;?> kanbancard->lane;?>
branchBox'> planBox' style='overflow:visible'> diff --git a/module/story/view/batchedit.html.php b/module/story/view/batchedit.html.php index abca607988..f7b6c3b99a 100644 --- a/module/story/view/batchedit.html.php +++ b/module/story/view/batchedit.html.php @@ -47,7 +47,9 @@ foreach(explode(',', $showFields) as $field) '>story->branch;?> story->module;?> col-plan'>story->planAB;?> story->title;?> '> story->estimateAB;?> story->category;?>'> id, array(0 => '/')), $story->module, "class='form-control picker-select' data-drop-width='auto'");?> '> product][$story->branch]) ? array('' => '') + $plans[$story->product][$story->branch] : '', $story->plan, "class='form-control picker-select' data-drop-width='auto'");?>
diff --git a/module/story/view/create.html.php b/module/story/view/create.html.php index 856bc23ffe..3f92c9a6f5 100644 --- a/module/story/view/create.html.php +++ b/module/story/view/create.html.php @@ -48,8 +48,8 @@ foreach(explode(',', $config->story->create->requiredFields) as $field) - - + - - + @@ -126,7 +130,7 @@ foreach(explode(',', $config->story->create->requiredFields) as $field) @@ -155,17 +159,19 @@ foreach(explode(',', $config->story->create->requiredFields) as $field) config->URAndSR):?> - - - + + - + > @@ -291,8 +297,12 @@ foreach(explode(',', $config->story->create->requiredFields) as $field) diff --git a/module/story/view/edit.html.php b/module/story/view/edit.html.php index 39540014aa..96697c0fab 100644 --- a/module/story/view/edit.html.php +++ b/module/story/view/edit.html.php @@ -55,7 +55,7 @@
story->checkForceReview()):?>
- +
@@ -67,7 +67,7 @@
- +
@@ -129,7 +129,7 @@
story->legendBasicInfo;?>
story->product;?> + story->module : $lang->story->product;?>
@@ -58,7 +58,9 @@ foreach(explode(',', $config->story->create->requiredFields) as $field)
+
story->module;?>
+ story->create->requiredFields) as $field)
story->planAB;?> + story->assignedTo : $lang->story->planAB;?>
story->create->requiredFields) as $field)
' id='assignedToBox'>
+
story->assignedTo;?>
- + +
story->assignedTo;?> - +
@@ -147,7 +151,7 @@ foreach(explode(',', $config->story->create->requiredFields) as $field) story->checkForceReview() ? 'required' : '';?> story->checkForceReview() ? '' : html::hidden('needNotReview', 1);?>
- PO : '', "class='form-control picker-select' multiple $required");?> + PO : '', "class='form-control picker-select' multiple $required");?>
story->requirement;?> + story->parent : $lang->story->requirement;?>>
+
story->parent;?>
+
story->parent;?>
+ + + save, "id='saveButton'", 'btn btn-primary btn-wide');?> story->saveDraft, "id='saveDraftButton'", 'btn btn-secondary btn-wide');?> + goback, '', 'class="btn btn-wide"') : html::backButton('', $source == 'bug' ? 'data-app=qa' : '');?>
parent <= 0):?> - + parent >= 0 and $story->type == 'story'):?> - + - + - status) !== false and $story->type == 'story'):?> - - - - - @@ -269,12 +249,12 @@ status == 'closed' ? $users + array('closed' => 'Closed') : $users;?> - + status == 'reviewing'):?> - + status == 'closed'):?> diff --git a/module/story/view/linkstories.html.php b/module/story/view/linkstories.html.php index 23a1dcbd78..4ba1901542 100644 --- a/module/story/view/linkstories.html.php +++ b/module/story/view/linkstories.html.php @@ -16,7 +16,7 @@

id;?> - createLink('story', 'view', "storyID=$story->id"), $story->title, '_blank', "title='$story->title'");?> + title;?> type == 'story' ? $lang->story->linkStoriesAB : $lang->story->linkRequirementsAB?> arrow . $title;?>

@@ -34,7 +34,9 @@ idAB;?>
+ shadow)):?> + @@ -54,7 +56,9 @@ id);?> + shadow)):?> + @@ -86,9 +90,9 @@ $(function() var output = ''; $('#linkStoriesForm').find('tr.checked').each(function(){ var storyID = $(this).find('td.c-id').find('div.checkbox-primary input').attr('value'); - var storyTitle = "#" + storyID + ' ' + $(this).find('td').eq(3).attr('title'); + var storyTitle = "#" + storyID + ' ' + $(this).find('td').eq(2).attr('title'); var linkStoryField = storyType == 'story' ? 'linkStories' : 'linkRequirements'; - var checkbox = "
  • "; + var checkbox = "
  • "; output += checkbox; }); diff --git a/module/story/view/linkstory.html.php b/module/story/view/linkstory.html.php index dfa0dd7af5..3c5fb388fe 100644 --- a/module/story/view/linkstory.html.php +++ b/module/story/view/linkstory.html.php @@ -48,7 +48,10 @@ - createLink('story', 'view', "storyID=$story2Link->id");?> + createLink('story', 'view', "storyID=$story2Link->id"); + if($app->tab == 'project') $storyLink = $this->createLink('projectstory', 'view', "storyID=$story2Link->id"); + ?> type, 'view');?> - + type == 'requirement'):?> diff --git a/module/story/view/report.html.php b/module/story/view/report.html.php index 2b663c0aa0..3809b595c3 100644 --- a/module/story/view/report.html.php +++ b/module/story/view/report.html.php @@ -85,6 +85,7 @@ + diff --git a/module/story/view/view.html.php b/module/story/view/view.html.php index a4d3d9b26f..8fd3001d99 100644 --- a/module/story/view/view.html.php +++ b/module/story/view/view.html.php @@ -14,6 +14,7 @@ session->storyList ? $app->session->storyList : $this->createLink('product', 'browse', "productID=$story->product");?> +type);?> @@ -209,13 +214,15 @@
    story->product;?>
    @@ -166,11 +166,11 @@
    story->parent;?> parent, "class='form-control chosen'");?>
    story->plan;?>
    @@ -204,26 +204,6 @@ status);?>
    story->stage;?> - stages and $branchTagOption) - { - foreach($story->stages as $branch => $stage) - { - if(isset($branchTagOption[$branch])) echo '

    ' . $branchTagOption[$branch] . html::select("stages[$branch]", $lang->story->stageList, $stage, "class='form-control chosen'") . '

    '; - } - } - else - { - echo html::select('stage', $lang->story->stageList, $story->stage, "class='form-control chosen'"); - } - ?> -
    story->category;?> story->categoryList, $story->category, "class='form-control chosen'");?>
    story->assignedTo;?> assignedTo, 'class="form-control chosen"');?>assignedTo, 'class="form-control chosen"');?>
    story->reviewers;?>
    pri;?>>priAB;?>story->product;?> story->title;?> story->statusAB;?> story->openedByAB;?> pri?>' title='story->priList, $story2Link->pri, $story2Link->pri);?>'>story->priList, $story2Link->pri, $story2Link->pri);?>createLink('product', 'browse', "productID=$story2Link->product&branch=$story2Link->branch"), $products[$story2Link->product], '_blank');?> title);?> processStatus('story', $story2Link);?> openedBy);?>
    @@ -59,7 +62,7 @@ id)) : sprintf('%03d', $story2Link->id);?> pri?>' title='story->priList, $story2Link->pri, $story2Link->pri);?>'>story->priList, $story2Link->pri, $story2Link->pri);?>title, '_blank') : $story2Link->title;?>title) : $story2Link->title;?> processStatus('story', $story2Link);?> story->stageList, $story2Link->stage);?>
    + shadow):?> + type != 'normal'):?> - + @@ -240,7 +247,14 @@ foreach($modulePath as $key => $module) { $moduleTitle .= $module->name; - if(!common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch&browseType=byModule¶m=$module->id", $module->name, '', "data-app='product'")) echo $module->name; + if($product->shadow) + { + echo $module->name; + } + else + { + common::printLink('product', 'browse', "productID=$story->product&branch=$story->branch&browseType=byModule¶m=$module->id", $module->name, '', "data-app='product'"); + } if(isset($modulePath[$key + 1])) { $moduleTitle .= '/'; @@ -253,7 +267,7 @@ ?> - type != 'requirement' and $story->parent != -1):?> + type != 'requirement' and $story->parent != -1 and !$hiddenPlan):?> - + @@ -401,16 +419,16 @@
    - config->URAndSR):?> + config->URAndSR and !$hiddenURS):?>
      type == 'story'):?> -
      +
        tasks as $executionTasks) @@ -461,6 +479,7 @@
    story->product;?> createLink('product', 'view', "productID=$story->product"), $product->name);?>
    product->branch;?>product->branch;?> product&branch=$story->branch", $branches[$story->branch]);?>
    story->plan;?> @@ -305,7 +319,11 @@
    story->pri;?>pri;?>' title='story->priList, $story->pri)?>'>story->priList, $story->pri)?> + pri):?> + pri;?>' title='story->priList, $story->pri)?>'>story->priList, $story->pri)?> + +
    story->estimate;?>
    + type == 'story'):?> @@ -531,6 +550,7 @@ + + type == 'story' and helper::hasFeature('devops')):?> +
    story->legendFromBug;?>
    story->linkStories;?> @@ -555,6 +575,7 @@
    story->linkMR;?> @@ -576,6 +597,7 @@
    diff --git a/module/task/config.php b/module/task/config.php index f2202e1f3f..68f7cfa71e 100644 --- a/module/task/config.php +++ b/module/task/config.php @@ -213,6 +213,10 @@ $config->task->datatable->fieldList['execution']['title'] = 'idAB'; $config->task->datatable->fieldList['execution']['control'] = 'hidden'; $config->task->datatable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs'); +$config->task->datatable->fieldList['project']['title'] = 'idAB'; +$config->task->datatable->fieldList['project']['control'] = 'hidden'; +$config->task->datatable->fieldList['project']['dataSource'] = array('module' => 'project', 'method' => 'getPairs'); + $config->task->datatable->fieldList['mode']['title'] = 'idAB'; $config->task->datatable->fieldList['mode']['control'] = 'hidden'; diff --git a/module/task/control.php b/module/task/control.php index 203f437b15..5cff2fbfd9 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -48,6 +48,7 @@ class task extends control $executions = $this->execution->getPairs(0, 'all', isset($execution) ? (!common::canModify('execution', $execution) ? 'noclosed' : '') : 'noclosed'); $executionID = $this->execution->saveState($executionID, $executions); $execution = $this->execution->getById($executionID); + $this->execution->setMenu($executionID); if($this->app->tab == 'project') $this->loadModel('project')->setMenu($this->session->project); @@ -61,6 +62,7 @@ class task extends control $task = new stdClass(); $task->module = $moduleID; + $task->mode = ''; $task->assignedTo = ''; $task->name = ''; $task->story = $storyID; @@ -117,9 +119,6 @@ class task extends control $this->view->lanePairs = $lanePairs; } - /* Set menu. */ - $this->execution->setMenu($execution->id); - if(!empty($_POST)) { $response['result'] = 'success'; @@ -297,7 +296,7 @@ class task extends control /* Set Custom*/ foreach(explode(',', $this->config->task->customCreateFields) as $field) $customFields[$field] = $this->lang->task->$field; - $executionAll = array(); + $executions = array(); if(!empty($projectID)) { $executionList = $this->execution->getByProject($projectID, 'all', 0, true); @@ -318,11 +317,14 @@ class task extends control foreach($executionList as $key => $val) { $values = str_replace($replace, $project->name, $val); - $executionAll[$key] = $values; + $executions[$key] = $values; } } + else + { + $executions = $executionList; + } } - $executions = $this->config->systemMode == 'classic' ? $executions : $executionAll; $testStoryIdList = $this->loadModel('story')->getTestStories(array_keys($stories), $execution->id); /* Stories that can be used to create test tasks. */ @@ -385,7 +387,7 @@ class task extends control { $taskLink = $this->createLink('my', 'work', 'mode=task'); } - elseif($this->app->tab == 'project') + elseif($this->app->tab == 'project' and $execution->multiple) { $taskLink = $this->createLink('project', 'execution', "browseType=all&projectID={$execution->project}"); } @@ -467,7 +469,14 @@ class task extends control $modules = $this->loadModel('tree')->getTaskOptionMenu($executionID, 0, 0, $showAllModule ? 'allModule' : ''); /* Set Custom*/ - foreach(explode(',', $this->config->task->customBatchCreateFields) as $field) $customFields[$field] = $this->lang->task->$field; + $project = $this->project->getByID($execution->project); + if($project->model == 'waterfall') $this->config->task->create->requiredFields .= ',estStarted,deadline'; + + foreach(explode(',', $this->config->task->customBatchCreateFields) as $field) + { + if($execution->type == 'stage' and strpos('estStarted,deadline', $field) !== false) continue; + $customFields[$field] = $this->lang->task->$field; + } $showFields = $this->config->task->custom->batchCreateFields; if($execution->lifetime == 'ops' or $execution->attribute == 'request' or $execution->attribute == 'review') @@ -624,8 +633,6 @@ class task extends control } } - if($this->app->tab == 'project') $this->loadModel('project')->setMenu($this->session->project); - $tasks = $this->task->getParentTaskPairs($this->view->execution->id, $this->view->task->parent); if(isset($tasks[$taskID])) unset($tasks[$taskID]); @@ -660,7 +667,7 @@ class task extends control $this->view->users = $this->loadModel('user')->getPairs('nodeleted|noclosed', "{$this->view->task->openedBy},{$this->view->task->canceledBy},{$this->view->task->closedBy}"); $this->view->showAllModule = isset($this->config->execution->task->allModule) ? $this->config->execution->task->allModule : ''; $this->view->modules = $this->tree->getTaskOptionMenu($this->view->task->execution, 0, 0, $this->view->showAllModule ? 'allModule' : ''); - $this->view->executions = $this->config->systemMode == 'classic' ? $this->execution->getPairs() : $executions; + $this->view->executions = $executions; $this->display(); } @@ -769,7 +776,21 @@ class task extends control if($showSuhosinInfo) $this->view->suhosinInfo = extension_loaded('suhosin') ? sprintf($this->lang->suhosinInfo, $countInputVars) : sprintf($this->lang->maxVarsInfo, $countInputVars); /* Set Custom*/ - foreach(explode(',', $this->config->task->customBatchEditFields) as $field) $customFields[$field] = $this->lang->task->$field; + if(isset($execution)) + { + $project = $this->project->getByID($execution->project); + if($project->model == 'waterfall') $this->config->task->edit->requiredFields .= ',estStarted,deadline'; + + foreach(explode(',', $this->config->task->customBatchEditFields) as $field) + { + if($execution->type == 'stage' and strpos('estStarted,deadline', $field) !== false) continue; + $customFields[$field] = $this->lang->task->$field; + } + } + else + { + foreach(explode(',', $this->config->task->customBatchEditFields) as $field) $customFields[$field] = $this->lang->task->$field; + } $this->view->customFields = $customFields; $this->view->showFields = $this->config->task->custom->batchEditFields; @@ -997,9 +1018,6 @@ class task extends control /* Update action. */ if($task->assignedTo == $this->app->user->account) $this->loadModel('action')->read('task', $taskID); - /* Set menu. */ - if($this->app->tab == 'execution') $this->execution->setMenu($execution->id); - $this->executeHooks($taskID); $title = "TASK#$task->id $task->name / $execution->name"; @@ -2067,6 +2085,9 @@ class task extends control } } + $execution = $this->loadModel('execution')->getByID($executionID); + if(!$execution->multiple) unset($this->lang->task->report->charts['tasksPerExecution']); + $executions = $this->execution->getPairs(); $this->execution->setMenu($executionID); diff --git a/module/task/css/create.css b/module/task/css/create.css index f33c85556f..1b099f23c8 100644 --- a/module/task/css/create.css +++ b/module/task/css/create.css @@ -28,7 +28,7 @@ .c-modulel {width: 110px;} .keep-row-height {height: 32px;} -#modalTeam .modal-dialog {min-height: 120px; width: 520px; color: #3c4353;} +#modalTeam .modal-dialog {min-height: 120px; width: 570px; color: #3c4353;} #taskTeamEditor .hourBox {padding-bottom: 7px; width: 135px;} #taskTeamEditor .estimateBox {width: 120px;} #modalTeam .modal-content {padding: 0;} diff --git a/module/task/js/create.js b/module/task/js/create.js index 538b94c5de..0dcd61d073 100644 --- a/module/task/js/create.js +++ b/module/task/js/create.js @@ -27,6 +27,32 @@ $(function() loadStories(executionID); }) +/** + * Show team menu. + * + * @access public + * @return void + */ +function showTeamMenu() +{ + if($('[name^=multiple]').prop('checked')) + { + $('#assignedTo, #assignedTo_chosen').addClass('hidden'); + $('#assignedTo').next('.picker').addClass('hidden'); + $('.team-group').removeClass('hidden'); + $('.modeBox').removeClass('hidden'); + $('#estimate').attr('readonly', true); + } + else + { + $('#assignedTo, #assignedTo_chosen').removeClass('hidden'); + $('#assignedTo').next('.picker').removeClass('hidden'); + $('.team-group').addClass('hidden'); + $('.modeBox').addClass('hidden'); + $('#estimate').attr('readonly', false); + } + $('#dataPlanGroup').fixInputGroup(); +} /** * Load module, stories and members. * @@ -317,7 +343,7 @@ function setStories(moduleID, executionID) $("#story").addClass('filled').chosen(); /* If there is no story option, select will be hidden and text will be displayed; otherwise, the opposite is true */ - if($('#story option').length > 1) + if($('#story option').length > 1 || parseInt(hasProduct) == 0) { $('#story').parent().removeClass('hidden'); $('#storyBox').addClass('hidden'); @@ -518,23 +544,7 @@ $(document).ready(function() /* Show team menu. */ $('[name^=multiple]').change(function() { - if($(this).prop('checked')) - { - $('#assignedTo, #assignedTo_chosen').addClass('hidden'); - $('#assignedTo').next('.picker').addClass('hidden'); - $('.team-group').removeClass('hidden'); - $('.modeBox').removeClass('hidden'); - $('#estimate').attr('readonly', true); - } - else - { - $('#assignedTo, #assignedTo_chosen').removeClass('hidden'); - $('#assignedTo').next('.picker').removeClass('hidden'); - $('.team-group').addClass('hidden'); - $('.modeBox').addClass('hidden'); - $('#estimate').attr('readonly', false); - } - $('#dataPlanGroup').fixInputGroup(); + showTeamMenu(); }); $('#showAllModule').change(function() diff --git a/module/task/js/view.js b/module/task/js/view.js index 45c9d15b55..4dc0953f1a 100644 --- a/module/task/js/view.js +++ b/module/task/js/view.js @@ -23,6 +23,7 @@ function ajaxRefresh() { $data = $(data); $('#actionbox ol.histories-list').html($data.find('#actionbox ol.histories-list').html()); + $('#actionbox ol.histories-list form.comment-edit-form').ajaxForm(); $('.side-col').html($data.find('.side-col').html()); if($('#actionbox ol.histories-list #lastComment').length > 0) $('#actionbox ol.histories-list #lastComment').kindeditor(); diff --git a/module/task/model.php b/module/task/model.php index 037bc6c3c5..708a8a7791 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -91,7 +91,7 @@ class taskModel extends model ->setDefault('execution', $executionID) ->setDefault('estimate,left,story', 0) ->setDefault('status', 'wait') - ->setIF($this->config->systemMode == 'new', 'project', $this->getProjectID($executionID)) + ->setDefault('project', $this->getProjectID($executionID)) ->setIF($this->post->estimate != false, 'left', $this->post->estimate) ->setIF($this->post->story != false, 'storyVersion', $this->loadModel('story')->getVersion($this->post->story)) ->setDefault('estStarted', '0000-00-00') @@ -369,7 +369,7 @@ class taskModel extends model $data[$i]->pri = $tasks->pri[$i]; $data[$i]->estimate = $tasks->estimate[$i]; $data[$i]->left = $tasks->estimate[$i]; - $data[$i]->project = $this->config->systemMode == 'new' ? $projectID : 0; + $data[$i]->project = $projectID; $data[$i]->execution = $executionID; $data[$i]->estStarted = $estStarted; $data[$i]->deadline = $deadline; @@ -1466,6 +1466,9 @@ class taskModel extends model return false; } + $project = $this->loadModel('project')->getByID($oldTask->project); + if($project->model == 'waterfall') $this->config->task->edit->requiredFields .= ',estStarted,deadline'; + foreach(explode(',', $this->config->task->edit->requiredFields) as $field) { $field = trim($field); @@ -2595,11 +2598,11 @@ class taskModel extends model { if(!$this->loadModel('common')->checkField(TABLE_TASK, $type)) return array(); $orderBy = str_replace('pri_', 'priOrder_', $orderBy); - $tasks = $this->dao->select("t1.*, t2.id as executionID, t2.name as executionName, t2.type as executionType, t3.id as storyID, t3.title as storyTitle, t3.status AS storyStatus, t3.version AS latestStoryVersion, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder") + $tasks = $this->dao->select("t1.*, t4.id as project, t2.id as executionID, t2.name as executionName, t4.name as projectName, t2.multiple as executionMultiple, t2.type as executionType, t3.id as storyID, t3.title as storyTitle, t3.status AS storyStatus, t3.version AS latestStoryVersion, IF(t1.`pri` = 0, {$this->config->maxPriValue}, t1.`pri`) as priOrder") ->from(TABLE_TASK)->alias('t1') ->leftJoin(TABLE_EXECUTION)->alias('t2')->on("t1.execution = t2.id") ->leftJoin(TABLE_STORY)->alias('t3')->on('t1.story = t3.id') - ->leftJoin(TABLE_PROJECT)->alias('t4')->on("t1.project = t4.id") + ->leftJoin(TABLE_PROJECT)->alias('t4')->on("t2.project = t4.id") ->leftJoin(TABLE_TASKTEAM)->alias('t5')->on("t5.task = t1.id and t5.account = '{$account}'") ->where('t1.deleted')->eq(0) ->andWhere('t2.deleted')->eq(0) @@ -2625,15 +2628,7 @@ class taskModel extends model $this->loadModel('common')->saveQueryCondition($this->dao->get(), 'task', false); $taskTeam = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($tasks))->fetchGroup('task'); - if(!empty($taskTeam)) - { - foreach($taskTeam as $taskID => $team) $tasks[$taskID]->team = $team; - } - - $projectList = array(); - foreach($tasks as $task) $projectList[$task->project] = $task->project; - $projectPairs = $this->dao->select('id,name')->from(TABLE_PROJECT)->where('id')->in($projectList)->fetchPairs('id'); - foreach($tasks as $task) $task->projectName = zget($projectPairs, $task->project); + foreach($taskTeam as $taskID => $team) $tasks[$taskID]->team = $team; if($tasks) return $this->processTasks($tasks); return array(); @@ -2694,7 +2689,7 @@ class taskModel extends model ->andWhere('t1.deleted')->eq(0) ->beginIF($this->config->vision)->andWhere('t1.vision')->eq($this->config->vision)->fi() ->andWhere('t2.deleted')->eq(0) - ->beginIF($this->config->systemMode == 'new')->andWhere('t3.deleted')->eq(0)->fi() + ->andWhere('t3.deleted')->eq(0) ->fetchAll('id'); return $tasks; } @@ -4063,6 +4058,7 @@ class taskModel extends model } } $list .= '
    " . $this->processStatus('task', $task) . '' . zget($users, $task->assignedTo, '') . '' . $task->estStarted . '
    type != 'kanban' or $this->config->vision == 'lite'):?> - + @@ -63,7 +64,7 @@ foreach(explode(',', $config->task->create->requiredFields) as $field) @@ -86,7 +87,7 @@ foreach(explode(',', $config->task->create->requiredFields) as $field) - + type == 'kanban'):?> diff --git a/module/task/view/edit.html.php b/module/task/view/edit.html.php index 8128645fa1..be0c12c53d 100644 --- a/module/task/view/edit.html.php +++ b/module/task/view/edit.html.php @@ -107,7 +107,7 @@ foreach(explode(',', $config->task->edit->requiredFields) as $field)
    task->legendBasic;?>
    task->execution;?> id, "class='form-control chosen' onchange='loadAll(this.value)' required");?>
    module, "class='form-control chosen' onchange='setStories(this.value, $execution->id)'");?>
    - > + >
    - parent <= 0):?> + parent <= 0 and $execution->multiple):?> diff --git a/module/task/view/taskteam.html.php b/module/task/view/taskteam.html.php index 908d1f6720..9a12387608 100644 --- a/module/task/view/taskteam.html.php +++ b/module/task/view/taskteam.html.php @@ -48,6 +48,12 @@ if($task->mode == 'multi' and $app->rawMethod == 'activate') $hourDisabled = fal account);?> @@ -84,7 +91,7 @@ if($task->mode == 'multi' and $app->rawMethod == 'activate') $hourDisabled = fal
    task->execution;?> execution, 'class="form-control chosen" onchange="loadAll(this.value)"');?> + rawMethod == 'create'):?> +
    + estimate, "class='form-control text-center' placeholder='{$lang->task->estimateAB}'") ?> + +
    +
    estimate, "class='form-control text-center' placeholder='{$lang->task->estimate}'" . ($hourDisabled ? ' readonly' : ''))?> @@ -62,11 +68,12 @@ if($task->mode == 'multi' and $app->rawMethod == 'activate') $hourDisabled = fal
    +
    - mode) and $task->mode == 'linear'):?> + mode) and $task->mode == 'linear'):?> - team)):?> + team) or $app->rawMethod == 'create'):?>
    task->estimateAB}'") ?> @@ -117,7 +124,7 @@ if($task->mode == 'multi' and $app->rawMethod == 'activate') $hourDisabled = fal team) and count($task->team) < 6) ? 6 - count($task->team) : 1;?> status) and $task->status != 'wait' and $task->status != 'doing') $newRowCount = 0;?> -mode) and $task->mode == 'linear') js::set('sortSelector', 'tr.member-wait');?> +mode) and $task->mode == 'linear') js::set('sortSelector', 'tr.member-wait');?> task->error->teamMember);?> status)):?> status);?> @@ -133,10 +140,14 @@ if($task->mode == 'multi' and $app->rawMethod == 'activate') $hourDisabled = fal
    -

    port->exportTemplate;?>

    +

    transfer->exportTemplate;?>

    - + diff --git a/module/port/view/footer.html.php b/module/transfer/view/footer.html.php similarity index 87% rename from module/port/view/footer.html.php rename to module/transfer/view/footer.html.php index 6281292949..4e8f9f0f8c 100644 --- a/module/port/view/footer.html.php +++ b/module/transfer/view/footer.html.php @@ -1,6 +1,6 @@ - diff --git a/module/upgrade/view/to18guide.html.php b/module/upgrade/view/to18guide.html.php new file mode 100644 index 0000000000..4deab5aaf9 --- /dev/null +++ b/module/upgrade/view/to18guide.html.php @@ -0,0 +1,123 @@ + + * @package upgrade + * @version $Id$ + * @link http://www.zentao.net + */ +?> + +
    +
    port->num;?>transfer->num;?> 'xlsx', 'xls' => 'xls'), 'xlsx', "class='form-control'");?>
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    lang->upgrade->mode;?>lang->upgrade->to18Mode['light'];?>lang->upgrade->to18Mode['ALM'];?>
    lang->upgrade->usage;?>lang->upgrade->lightUsage;?>lang->upgrade->ALMUsage;?>
    lang->upgrade->program;?>
    lang->upgrade->productRR;?>
    lang->upgrade->productUR;?>
    lang->upgrade->productLine;?>
    lang->upgrade->projectScrum;?>
    lang->upgrade->scrumDetail;?>
    lang->upgrade->projectWaterfall;?>
    lang->upgrade->projectKanban;?>
    lang->upgrade->execution;?>
    lang->upgrade->assetlib;?>
    lang->upgrade->oa;?>
    lang->upgrade->vision;?>
    lang->upgrade->selectUsage;?>
    lang->upgrade->remark;?>lang->upgrade->remarkDesc;?>
    +
    +
    + + + + + diff --git a/module/user/control.php b/module/user/control.php index 8d2e6fd7c9..1668ccade5 100755 --- a/module/user/control.php +++ b/module/user/control.php @@ -610,6 +610,7 @@ class user extends control $this->view->roleGroup = $roleGroup; $this->view->rand = $this->user->updateSessionRandom(); $this->view->visionList = $this->user->getVisionList(); + $this->view->companies = $this->loadModel('company')->getOutsideCompanies() + array('ditto' => $this->lang->user->ditto); $this->display(); } @@ -634,8 +635,10 @@ class user extends control return $this->send(array('result' => 'success', 'message' => $this->lang->saveSuccess, 'locate' => $link)); } + $visionList = $this->user->getVisionList(); + $user = $this->user->getById($userID, 'id'); - $userGroups = $this->loadModel('group')->getByAccount($user->account); + $userGroups = $this->loadModel('group')->getByAccount($user->account, implode(',', array_keys($visionList))); $title = $this->lang->company->common . $this->lang->colon . $this->lang->user->edit; $position[] = $this->lang->user->edit; @@ -647,7 +650,7 @@ class user extends control $this->view->companies = $this->loadModel('company')->getOutsideCompanies(); $this->view->groups = $this->dao->select('id, name')->from(TABLE_GROUP)->where('project')->eq(0)->fetchPairs('id', 'name'); $this->view->rand = $this->user->updateSessionRandom(); - $this->view->visionList = $this->user->getVisionList(); + $this->view->visionList = $visionList; $this->display(); } @@ -1048,6 +1051,7 @@ class user extends control session_destroy(); setcookie('za', false); setcookie('zp', false); + setcookie('tab', false); if($this->app->getViewType() == 'json') return print(json_encode(array('status' => 'success'))); $vars = !empty($referer) ? "referer=$referer" : ''; diff --git a/module/user/css/batchcreate.css b/module/user/css/batchcreate.css index 6a5695e048..f3edda60aa 100644 --- a/module/user/css/batchcreate.css +++ b/module/user/css/batchcreate.css @@ -4,3 +4,6 @@ td .passwordBox {border-left-width: 0px!important;} .c-id {width: 40px;} .c-realname, .c-visions {width: 130px;} .c-dept, .c-role, .c-group, .c-commiter, .c-join, .c-contact {width: 120px;} +.c-company {width: 210px;} + +.user-type{margin: 8px 0px 0px 8px; float: left;} diff --git a/module/user/js/batchcreate.js b/module/user/js/batchcreate.js index 600d327709..ac36a2a3d3 100644 --- a/module/user/js/batchcreate.js +++ b/module/user/js/batchcreate.js @@ -186,3 +186,55 @@ $(document).on('change', "select[id^='visions']", function() }(n))); } }); + +/** + * Show or hide companies based on user type. + * + * @param type $type + * @access public + * @return void + */ +function changeType(type) +{ + if(type == 'inside') + { + $('#companyBox').addClass('hide'); + $('select[id^=dept], input[id^=join]').closest('td').removeClass('hide'); + $('select[id^=company]').closest('td').addClass('hide'); + $('th.c-dept, th.c-join').removeClass('hide'); + $('th.c-company').addClass('hide'); + } + else + { + $('#companyBox').removeClass('hide'); + $('select[id^=dept], input[id^=join]').closest('td').addClass('hide'); + $('select[id^=company]').closest('td').removeClass('hide'); + $('th.c-dept, th.c-join').addClass('hide'); + $('th.c-company').removeClass('hide'); + } + $('#userType').val(type); +} + +$(function() +{ + $(":checkbox[name^='new']").change(function() + { + var companyNode = $(this).prop('checked') ? $(this).closest('span').prevAll('select') : $(this).closest('span').prevAll('input'); + var companyNodeID = $(companyNode).attr('id'); + var companyNodeName = $(companyNode).attr('name'); + + if($(this).prop('checked')) + { + $(companyNode).replaceWith(""); + $('#' + companyNodeID + '_chosen').remove(); + } + else + { + var i = companyNodeID.replace(/[^0-9]/ig, ''); + var dataHtml = $(companies).attr('id', companyNodeID).attr('name', companyNodeName).prop('outerHTML'); + $('#' + companyNodeID).replaceWith(dataHtml); + if(i == 1) $('#' + companyNodeID).find('option[value="ditto"]').remove(); + $('#' + companyNodeID).chosen(); + } + }) +}); diff --git a/module/user/js/batchedit.js b/module/user/js/batchedit.js index a371f1cd52..5febd14950 100644 --- a/module/user/js/batchedit.js +++ b/module/user/js/batchedit.js @@ -21,16 +21,3 @@ $(document).on('change', 'select', function() $(this).trigger("change"); } }) - -$('select[id^="visions"]').each(function() -{ - var i = $(this).attr('id').replace(/[^0-9]/ig, ''); - var vision = $('#visions1 option:selected').val(); - - $.post(createLink('user', 'ajaxGetGroup', "visions=" + vision + '&i=' + i + '&selected=' + $('#group' + i).val()), function(data) - { - $('#group' + i).replaceWith(data); - $('#group' + i + '_chosen').remove(); - $('#group' + i).chosen(); - }) -}) diff --git a/module/user/model.php b/module/user/model.php index 660e731e86..b03f2abb1f 100644 --- a/module/user/model.php +++ b/module/user/model.php @@ -425,9 +425,19 @@ class userModel extends model } $data[$i] = new stdclass(); - $data[$i]->dept = $users->dept[$i] == 'ditto' ? (isset($prev['dept']) ? $prev['dept'] : 0) : $users->dept[$i]; + if($users->userType == 'outside') + { + $data[$i]->company = $users->company[$i] == 'ditto' ? (isset($prev['company']) ? $prev['company'] : 0) : $users->company[$i]; + $data[$i]->newCompany = isset($users->new[$i]) ? true : false; + $data[$i]->type = 'outside'; + } + else + { + $data[$i]->dept = $users->dept[$i] == 'ditto' ? (isset($prev['dept']) ? $prev['dept'] : 0) : $users->dept[$i]; + $data[$i]->join = empty($users->join[$i]) ? '0000-00-00' : ($users->join[$i]); + $data[$i]->type = 'inside'; + } $data[$i]->account = $users->account[$i]; - $data[$i]->type = 'inside'; $data[$i]->realname = $users->realname[$i]; $data[$i]->role = $role; $data[$i]->group = in_array('ditto', isset($users->group[$i]) ? $users->group[$i] : array()) ? (isset($prev['group']) ? $prev['group'] : '') : $users->group[$i]; @@ -435,7 +445,6 @@ class userModel extends model $data[$i]->gender = $users->gender[$i]; $data[$i]->password = md5(trim($users->password[$i])); $data[$i]->commiter = $users->commiter[$i]; - $data[$i]->join = empty($users->join[$i]) ? '0000-00-00' : ($users->join[$i]); $data[$i]->skype = $users->skype[$i]; $data[$i]->qq = $users->qq[$i]; $data[$i]->dingding = $users->dingding[$i]; @@ -474,6 +483,7 @@ class userModel extends model } $accounts[$i] = $data[$i]->account; + $prev['company'] = $data[$i]->company; $prev['dept'] = $data[$i]->dept; $prev['role'] = $data[$i]->role; $prev['group'] = $data[$i]->group; @@ -486,6 +496,16 @@ class userModel extends model $userIDList = array(); foreach($data as $user) { + if($user->type == 'outside' and $user->newCompany) + { + $company = new stdClass(); + $company->name = $user->company; + $this->dao->insert(TABLE_COMPANY)->data($company)->exec(); + + $user->company = $this->dao->lastInsertID(); + } + unset($user->newCompany); + if(is_array($user->group)) { foreach($user->group as $group) @@ -547,8 +567,6 @@ class userModel extends model ->remove('new, password1, password2, groups,verifyPassword, passwordStrength,passwordLength') ->get(); - /* Fix bug for api requests using json. */ - if($this->app->getViewType() == 'json') $this->post->verifyPassword = md5(md5($this->post->verifyPassword) . $this->session->rand); if(empty($_POST['verifyPassword']) or $this->post->verifyPassword != md5($this->app->user->password . $this->session->rand)) { dao::$errors['verifyPassword'][] = $this->lang->user->error->verifyPassword; @@ -1235,6 +1253,7 @@ class userModel extends model ->beginIF($status == 'done')->andWhere('status')->in('done,closed')->fi() ->beginIF($status == 'undone')->andWhere('status')->notin('done,closed')->fi() ->beginIF($status == 'openedbyme')->andWhere('openedBy')->eq($account)->fi() + ->beginIF($type == 'execution')->andWhere('t2.multiple')->eq('1')->fi() ->beginIF($type == 'execution' and !$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->sprints)->fi() ->beginIF($type == 'project' and !$this->app->user->admin)->andWhere('t2.id')->in($this->app->user->view->projects)->fi() ->andWhere('t1.account')->eq($account) @@ -1758,7 +1777,7 @@ class userModel extends model if($allProducts === null) $allProducts = $this->dao->select('id,PO,QD,RD,createdBy,acl,whitelist,program,createdBy')->from(TABLE_PRODUCT)->where('acl')->ne('open')->fetchAll('id'); if($allProjects === null) $allProjects = $this->dao->select('id,PO,PM,QD,RD,acl,type,path,parent,openedBy')->from(TABLE_PROJECT)->where('acl')->ne('open')->andWhere('type')->eq('project')->fetchAll('id'); if($allPrograms === null) $allPrograms = $this->dao->select('id,PO,PM,QD,RD,acl,type,path,parent,openedBy')->from(TABLE_PROGRAM)->where('acl')->ne('open')->andWhere('type')->eq('program')->fetchAll('id'); - if($allSprints === null) $allSprints = $this->dao->select('id,PO,PM,QD,RD,acl,project,path,parent,type,openedBy')->from(TABLE_PROJECT)->where('acl')->eq('private')->beginIF($this->config->systemMode == 'new')->andWhere('type')->in('sprint,stage,kanban')->fi()->fetchAll('id'); + if($allSprints === null) $allSprints = $this->dao->select('id,PO,PM,QD,RD,acl,project,path,parent,type,openedBy')->from(TABLE_PROJECT)->where('acl')->eq('private')->andWhere('type')->in('sprint,stage,kanban')->fetchAll('id'); /* Get admins. */ $manageObjects = array(); @@ -1940,8 +1959,7 @@ class userModel extends model $teamGroups = array(); $stmt = $this->dao->select('root,account')->from(TABLE_TEAM) ->where('1=1') - ->beginIF($this->config->systemMode == 'new')->andWhere('type')->eq('project')->fi() - ->beginIF($this->config->systemMode == 'classic')->andWhere('type')->eq('execution')->fi() + ->andWhere('type')->eq('project') ->andWhere('root')->in(array_keys($projectProducts)) ->andWhere('root')->ne(0) ->query(); @@ -2070,8 +2088,8 @@ class userModel extends model /* Set opened sprints and stages into userview. */ $openedSprints = $this->dao->select('id')->from(TABLE_PROJECT) ->where('acl')->eq('open') - ->beginIF($this->config->systemMode == 'new')->andWhere('type')->in('sprint,stage,kanban')->fi() - ->beginIF($this->config->systemMode == 'new')->andWhere('project')->in($userView->projects)->fi() + ->andWhere('type')->in('sprint,stage,kanban') + ->andWhere('project')->in($userView->projects) ->fetchAll('id'); $openedSprints = join(',', array_keys($openedSprints)); @@ -2529,7 +2547,7 @@ class userModel extends model } /* Judge sprint auth. */ - if(($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') and $project->acl == 'private' and $this->config->systemMode == 'new') + if(($project->type == 'sprint' or $project->type == 'stage' or $project->type == 'kanban') and $project->acl == 'private') { $parent = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->eq($project->project)->fetch(); if(empty($parent)) return false; @@ -2624,7 +2642,7 @@ class userModel extends model } /* Judge sprint auth. */ - if(($project->type == 'sprint' || $project->type == 'stage') && $project->acl == 'private' && $this->config->systemMode == 'new') + if(($project->type == 'sprint' || $project->type == 'stage') && $project->acl == 'private') { $parent = $this->dao->select('openedBy,PM')->from(TABLE_PROJECT)->where('id')->eq($project->project)->fetch(); $users[$parent->openedBy] = $parent->openedBy; @@ -2989,7 +3007,7 @@ class userModel extends model */ public function processAccountSort($users = array()) { - if(isset($users[$this->app->user->account])) + if(isset($this->app->user->account) and isset($users[$this->app->user->account])) { $currentUser = array(); $currentUser[$this->app->user->account] = $users[$this->app->user->account]; diff --git a/module/user/view/batchcreate.html.php b/module/user/view/batchcreate.html.php index 422d385075..2eb957bc8b 100644 --- a/module/user/view/batchcreate.html.php +++ b/module/user/view/batchcreate.html.php @@ -13,9 +13,11 @@ +

    user->batchCreate;?>

    +
    user->typeList , 'inside', "onclick='changeType(this.value)'");?>
    createLink('custom', 'ajaxSaveCustomFields', 'module=user§ion=custom&key=batchCreateFields')?> @@ -42,11 +44,13 @@ $showVisionList = count($visionList) > 1; ?>
    +
    + @@ -80,6 +84,12 @@ user->batchCreate; $i++):?> + diff --git a/module/user/view/featurebar.html.php b/module/user/view/featurebar.html.php index 816199e89d..c9ce81010e 100755 --- a/module/user/view/featurebar.html.php +++ b/module/user/view/featurebar.html.php @@ -39,7 +39,7 @@ $active = $methodName == 'testcase' ? ' btn-active-text' : ''; common::printLink('user', 'testcase', "userID={$user->id}", $label, '', "class='btn btn-link $active testcaseTab'"); - if($this->config->systemMode == 'new') + if($this->config->systemMode == 'ALM') { $label = "{$lang->user->execution}"; $active = $methodName == 'execution' ? ' btn-active-text' : ''; diff --git a/module/weekly/model.php b/module/weekly/model.php index 577ee30a74..a351611a86 100755 --- a/module/weekly/model.php +++ b/module/weekly/model.php @@ -46,6 +46,7 @@ class weeklyModel extends model $weeks = $this->getWeekPairs($begin, $end); $current = zget($weeks, $date, current($weeks)); + $selectHtml = "
    "; $selectHtml .= html::a('###', $this->lang->weekly->common . $this->lang->colon . $project->name, '', "class='btn'"); $selectHtml .= '
    '; diff --git a/test/class/execution.class.php b/test/class/execution.class.php index 7e7284d0e2..c2efc8c0ea 100644 --- a/test/class/execution.class.php +++ b/test/class/execution.class.php @@ -2382,4 +2382,20 @@ class executionTest return $tester->app->user->view->sprints; } } + + /** + * Create default sprint. + * + * @param int $projectID + * @access public + * @return int + */ + public function createDefaultSprintTest($projectID) + { + $result = $this->objectModel->createDefaultSprint($projectID); + + if(dao::isError()) return dao::getError(); + + return $result; + } } diff --git a/test/class/program.class.php b/test/class/program.class.php index a9f3ef6315..2ce4dd705c 100644 --- a/test/class/program.class.php +++ b/test/class/program.class.php @@ -50,6 +50,19 @@ class programTest return $this->program->getStakeholdersByPrograms($programID); } + /** + * Create default program. + * + * @access public + * @return void + */ + public function createDefaultProgramTest() + { + $programID = $this->program->createDefaultProgram(); + + return $programID; + } + /** * Test get list. * diff --git a/test/class/setting.class.php b/test/class/setting.class.php index 95b3769040..bd3fb39806 100644 --- a/test/class/setting.class.php +++ b/test/class/setting.class.php @@ -108,6 +108,19 @@ class settingTest return $object; } + /** + * Parse item path test. + * + * @param string $path + * @access public + * @return object + */ + public function parseItemPathTest($path) + { + $object = $this->objectModel->parseItemPath($path); + return $object; + } + /** * Parse the param string for select or delete items. * diff --git a/test/lib/db.class.php b/test/lib/db.class.php index 71a3b48d09..5d51e0de54 100644 --- a/test/lib/db.class.php +++ b/test/lib/db.class.php @@ -53,6 +53,14 @@ class db */ public $dao; + /** + * DB Config root. + * + * @var string + * @access public + */ + public $dbConfigRoot; + /** * __construct function load app config dao. * @@ -67,6 +75,8 @@ class db $this->dao = $dao; $this->dbLogFile = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'test/tmp/dblog.php'; $this->sqlFile = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'test/tmp/raw.sql'; + + $this->dbConfigRoot = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'test/config/database/'; } /** @@ -145,7 +155,7 @@ class db { $this->dao->query('DROP DATABASE IF EXISTS ' . $this->config->test->dbPrefix . $i); $this->dao->query('CREATE DATABASE ' . $this->config->test->dbPrefix . $i); - if($this->config->db->host = 'localhost' and $this->config->db->port = '3306') + if($this->config->db->host == 'localhost' and $this->config->db->port == '3306') { shell_exec("mysql -u {$this->config->db->user} -p{$this->config->db->password} {$this->config->test->dbPrefix}{$i} < {$this->sqlFile}"); } @@ -155,4 +165,23 @@ class db } } } -} + + /** + * replace DB Config file. + * + * @param string $newDBfile(禅道项目config目录下的安装配置文件) + * @access public + * @return mixed + */ + function replaceDBConfig($newDBfile) + { + $replacedDBFile = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'config/my.php'; + shell_exec("sed -i '/db->name/d ; /db->host/d ; /db->port/d ; /db->user/d ; /db->password/d' {$replacedDBFile}"); + + $newDBCF = file($this->dbConfigRoot . $newDBfile); + foreach($newDBCF as $newDB) + { + file_put_contents($replacedDBFile, $newDB, FILE_APPEND); + } + } + } diff --git a/test/lib/init.php b/test/lib/init.php index ea50a9dc84..9fed533cd7 100644 --- a/test/lib/init.php +++ b/test/lib/init.php @@ -60,6 +60,7 @@ $config->zdPath = dirname(dirname(__FILE__)) . '/tools/zd'; /* init testDB. */ include $testPath . 'config/config.php'; include $testPath. 'lib/db.class.php'; +include $testPath. 'lib/yaml.class.php'; include $testPath. 'lib/rest.php'; $db = new db(); diff --git a/test/lib/utils.php b/test/lib/utils.php index baa2b68448..445168cb54 100755 --- a/test/lib/utils.php +++ b/test/lib/utils.php @@ -72,14 +72,22 @@ function ztfExtract($dir) * @access public * @return void */ -function zdRun() +function zdRun($dataVersion = '', $dbFile = '') { - global $config, $dao; + global $config, $dao, $db; $frameworkRoot = dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'framework' . DIRECTORY_SEPARATOR; include LIB_ROOT . 'spyc.php'; - $zdRoot = dirname(dirname(__FILE__)) . '/data/'; + if($dataVersion && $dbFile) + { + $db->replaceDBConfig($dbFile); + $zdRoot = dirname(dirname(__FILE__)) . "/data/{$dataVersion}/"; + } + else + { + $zdRoot = dirname(dirname(__FILE__)) . '/data/'; + } $zdPath = RUNTIME_ROOT . 'zd'; set_time_limit(0); @@ -100,7 +108,7 @@ function zdRun() $tmpCommonPath = RUNTIME_ROOT . 'tmp/common'; if(file_exists($tmpCommonPath)) system("rm -rf $tmpCommonPath"); system("cp -r {$zdRoot}common $tmpCommonPath"); - system("find {$zdRoot}sql/ -type f -delete"); + if(file_exists("{$zdRoot}sql/")) system("find {$zdRoot}sql/ -type f -delete"); /* Generate SQL files. */ $tables = array(); diff --git a/test/lib/yaml.class.php b/test/lib/yaml.class.php new file mode 100644 index 0000000000..687e869c07 --- /dev/null +++ b/test/lib/yaml.class.php @@ -0,0 +1,358 @@ + + * @package ZenTaoPMS + * @version 1.0 + * @link http://www.zentao.net/ + */ + +/** + * Set fields for test data yaml file. + * + * @copyright Copyright 2009-2022 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com) + * @author liyang + * @package + * @license LGPL + * @version 1.0 + * @Link https://www.zentao.net + */ +class fields +{ + /** + * Field Arr. + * + * @var array + * @access public + */ + public $fieldArr = array(); + + /** + * Field. + * + * @var int + * @access private + */ + private $field; + + /** + * Set yaml field. + * + * @param string $value + * @access public + * @return object + */ + public function setField($value) + { + $this->fieldArr[$value] = array(); + $this->field = $value; + return $this; + } + + /** + * Set field rang. + * + * @param string $range + * @access public + * @return object + */ + public function range($range) + { + $this->fieldArr[$this->field]['range'] = $range; + return $this; + } + + /** + * Set field prefix. + * + * @param string $prefix + * @access public + * @return object + */ + public function prefix($prefix) + { + $this->fieldArr[$this->field]['prefix'] = $prefix; + return $this; + } + + /** + * Set field postfix. + * + * @param string $postfix + * @access public + * @return object + */ + public function postfix($postfix) + { + $this->fieldArr[$this->field]['postfix'] = $postfix; + return $this; + } + + /** + * Set field type. + * + * @param string $type + * @access public + * @return object + */ + public function type($type) + { + $this->fieldArr[$this->field]['type'] = $type; + return $this; + } + + /** + * Set field format. + * + * @param string $format + * @access public + * @return object + */ + public function format($format) + { + $this->fieldArr[$this->field]['format'] = $format; + return $this; + } + + /** + * Set field fields. + * + * @param array $fields + * @access public + * @return object + */ + public function setFields($fields) + { + if(!is_array($fields)) + { + echo "fields must be an array"; + return; + } + + $this->fieldArr[$this->field]['fields'] = $fields; + return $this; + } + + /** + * Get field array. + * + * @access public + * @return array + */ + public function getFields() + { + return $this->fieldArr; + } + + /** + * Assembly field generation rules. + * + * @param array $fieldArr + * @access public + * @return array + */ + public function setFieldRule($fieldArr) + { + $ruleArr = array(); + $index = 0; + + foreach($fieldArr as $field => $rule) + { + $ruleArr[$index]['field'] = $field; + + if(array_key_exists('fields', $rule)) + { + $ruleArr[$index]['fields'] = $this->setFieldRule($rule['fields']); + } + else + { + if(!empty($rule['range'])) $ruleArr[$index]['range'] = $rule['range']; + } + + if(!empty($rule['prefix'])) $ruleArr[$index]['prefix'] = $rule['prefix']; + if(!empty($rule['postfix'])) $ruleArr[$index]['postfix'] = $rule['postfix']; + if(!empty($rule['type'])) $ruleArr[$index]['type'] = $rule['type']; + if(!empty($rule['format'])) $ruleArr[$index]['format'] = $rule['format']; + $index++; + } + + return $ruleArr; + } +} + +/** + * Create test data from yaml file. + * + * @copyright Copyright 2009-2022 QingDao Nature Easy Soft Network Technology Co,LTD (www.cnezsoft.com) + * @author liyang + * @package + * @uses field + * @license LGPL + * @version 1.0 + * @Link https://www.zentao.net + */ +class yaml +{ + /** + * Set fields for yaml file. + * + * @var int + * @access public + */ + public $fields; + + /** + * Global config. + * + * @var object + * @access public + */ + public $config; + + /** + * The generated data table name. + * + * @var string + * @access public + */ + public $tableName; + + /** + * __construct function load config and tableName. + * @param string $tableName + * @access public + * @return void + */ + public function __construct($tableName) + { + global $config; + $this->config = $config; + $this->tableName = $tableName; + $this->fields = new fields(); + } + + /** + * Magic method, return fild. + * + * @param string $property_name + * @access protected + * @return object + */ + public function __get($property_name) + { + $this->fields->setField($property_name); + return $this->fields; + } + + /** + * Build yaml file and insert table. + * + * @param int $rows + * @param string $version + * @access public + * @return void + */ + public function gen($rows, $version = '') + { + $runFileDir = $_SERVER['PWD']; + $runFileName = str_replace(strrchr($_SERVER['SCRIPT_FILENAME'], "."), "", $_SERVER['SCRIPT_FILENAME']); + + if(!is_dir("$runFileDir/data")) mkdir("$runFileDir/data", 0700); + $yamlFile = "{$runFileDir}/data/{$this->tableName}_{$runFileName}.yaml"; + + $yamlDataArr = array(); + + $yamlDataArr['title'] = "zt_{$this->tableName}"; + $yamlDataArr['author'] = "auto_{$runFileName}"; + $version ? $yamlDataArr['version'] = $version : $yamlDataArr['version'] = '1.0'; + + if(empty($this->fields->fieldArr)) + { + $yamlFile = dirname(dirname(__FILE__)) . "/data/{$this->tableName}.yaml"; + } + else + { + $yamlDataArr['fields'] = $this->fields->setFieldRule($this->fields->fieldArr); + + yaml_emit_file($yamlFile, $yamlDataArr, YAML_UTF8_ENCODING); + } + + $this->insertDB($yamlFile, $this->tableName, $rows); + } + + /** + * Insert the data into database. + * + * @param string $yamlFile + * @param string $tableName + * @param int $rows + * @param bool $isClear + * @access public + * @return string + */ + function insertDB($yamlFile, $tableName, $rows, $isClear = true) + { + $tableSqlDir = "{$_SERVER['PWD']}/data/sql"; + + if(!is_dir($tableSqlDir)) mkdir($tableSqlDir, 0700); + $dumpCommand = "mysqldump -u%s -p%s -h%s -P%s %s %s > {$tableSqlDir}/{$tableName}.sql"; + + $runtimeRoot = dirname(dirname(__FILE__)) . '/runtime/'; + $zdPath = $runtimeRoot . 'zd'; + $configYaml = $runtimeRoot . 'tmp/config.yaml'; + + $tableName = $this->config->db->prefix . $tableName; + $dbName = $this->config->db->name; + $dbHost = $this->config->db->host; + $dbPort = $this->config->db->port; + $dbUser = $this->config->db->user; + $dbPWD = $this->config->db->password; + + $command = "$zdPath -c %s -d %s -n %d -t %s -dns mysql://%s:%s@%s:%s/%s#utf8"; + if($isClear === true) $command .= ' --clear'; + $execYaml = sprintf($command, $configYaml, $yamlFile, $rows, $tableName, $dbUser, $dbPWD, $dbHost, $dbPort, $dbName); + $execDump = sprintf($dumpCommand, $dbUser, $dbPWD, $dbHost, $dbPort, $dbName, $tableName); + system($execDump); + system($execYaml); + } + + /** + * Restore table data. + * + * @param string $tableName + * @access public + * @return mixed + */ + public function restoreTable($tableName) + { + $tableSql = "{$_SERVER['PWD']}/data/sql/$tableName.sql"; + if(!is_file($tableSql)) return false; + + $dbName = $this->config->db->name; + $dbHost = $this->config->db->host; + $dbPort = $this->config->db->port; + $dbUser = $this->config->db->user; + $dbPWD = $this->config->db->password; + + $command = "mysql -u%s -p%s -h%s -P%s %s < %s"; + $execRestore = sprintf($command, $dbUser, $dbPWD, $dbHost, $dbPort, $dbName, $tableSql); + system($execRestore); + } +} + +/** + * Return yaml class + * + * @param string $table + * @access public + * @return mixed + */ +function zdTable($table) +{ + return new yaml($table); +} diff --git a/test/model/action/getbyid.php b/test/model/action/getbyid.php index 1df040499b..20df22fe78 100755 --- a/test/model/action/getbyid.php +++ b/test/model/action/getbyid.php @@ -4,6 +4,15 @@ include dirname(dirname(dirname(__FILE__))) . '/lib/init.php'; include dirname(dirname(dirname(__FILE__))) . '/class/action.class.php'; su('admin'); +$action = zdTable('action'); +$action->id->range('101-105'); +$action->objectType->range("product,story,productplan,release,project"); +$action->action->range("common,extra,opened,created,changed"); +$action->comment->range("1-5")->prefix("这是一个系统日志测试备注"); +$action->gen(5); + +//zdTable('action')->gen(5); + /** title=测试 actionModel->getById(); @@ -18,7 +27,7 @@ pid=1 */ -$actionIDList = array('1', '2', '3', '4', '5'); +$actionIDList = array('101', '102', '103', '104', '105'); $action = new actionTest(); @@ -26,4 +35,4 @@ r($action->getByIdTest($actionIDList[0])) && p('objectType,objectId,action,comme r($action->getByIdTest($actionIDList[1])) && p('objectType,objectId,action,comment') && e('story,,extra,这是一个系统日志测试备注2'); // 测试获取动态2的信息 r($action->getByIdTest($actionIDList[2])) && p('objectType,objectId,action,comment') && e('productplan,,opened,这是一个系统日志测试备注3'); // 测试获取动态3的信息 r($action->getByIdTest($actionIDList[3])) && p('objectType,objectId,action,comment') && e('release,,created,这是一个系统日志测试备注4'); // 测试获取动态4的信息 -r($action->getByIdTest($actionIDList[4])) && p('objectType,objectId,action,comment') && e('project,,changed,这是一个系统日志测试备注5'); // 测试获取动态5的信息 \ No newline at end of file +r($action->getByIdTest($actionIDList[4])) && p('objectType,objectId,action,comment') && e('project,,changed,这是一个系统日志测试备注5'); // 测试获取动态5的信息 diff --git a/test/model/execution/createdefaultsprint.php b/test/model/execution/createdefaultsprint.php new file mode 100644 index 0000000000..8e8c3a3fb5 --- /dev/null +++ b/test/model/execution/createdefaultsprint.php @@ -0,0 +1,24 @@ +#!/usr/bin/env php +switchDB(); +su('admin'); + +/** + +title=测试executionModel->createDefaultSprintTest(); +cid=1 +pid=1 + +创建默认迭代并返回ID >> 751 + +*/ + +$test = new executionTest(); + +$result = $test->createDefaultSprintTest(11); + +r($result) && p('') && e('751'); // 创建默认迭代并返回ID + +$db->restoreDB(); \ No newline at end of file diff --git a/test/model/program/createdefaultprogram.php b/test/model/program/createdefaultprogram.php new file mode 100644 index 0000000000..136076867e --- /dev/null +++ b/test/model/program/createdefaultprogram.php @@ -0,0 +1,23 @@ +#!/usr/bin/env php +switchDB(); + +/** + +title=测试 programModel::createDefaultProgram(); +cid=1 +pid=1 + +创建默认项目集并返回ID >> 751 + +*/ + +$test = new programTest(); + +$result = $test->createDefaultProgramTest(); + +r($result) && p('') && e('751'); // 创建默认项目集并返回ID + +$db->restoreDB(); \ No newline at end of file diff --git a/test/model/setting/parseitempath.php b/test/model/setting/parseitempath.php new file mode 100755 index 0000000000..d677367262 --- /dev/null +++ b/test/model/setting/parseitempath.php @@ -0,0 +1,31 @@ +#!/usr/bin/env php +parseItemPath(); +cid=1 +pid=1 + +解析参数包含vision、owner、module、section、key的数据 >> rnd,system,common,global,version +解析参数包含vision、owner、module、key的数据 >> rnd,system,common,,hourPoint +解析参数包含owner、module、section、key的数据 >> system,common,global,mode +解析参数包含owner、module、key的数据 >> system,common,,CRProduct + +*/ + +$setting = new settingTest(); + +$params = array(); +$params[0] = "system.common.global.version@rnd"; +$params[1] = "system.common.hourPoint@rnd"; +$params[2] = "system.common.global.mode"; +$params[3] = "system.common.CRProduct"; + +r($setting->parseItemPathTest($params[0])) && p('vision,owner,module,section,key') && e('rnd,system,common,global,version'); // 解析参数包含vision、owner、module、section、key的数据 +r($setting->parseItemPathTest($params[1])) && p('vision,owner,module,section,key') && e('rnd,system,common,,hourPoint'); // 解析参数包含vision、owner、module、key的数据 +r($setting->parseItemPathTest($params[2])) && p('owner,module,section,key') && e('system,common,global,mode'); // 解析参数包含owner、module、section、key的数据 +r($setting->parseItemPathTest($params[3])) && p('owner,module,section,key') && e('system,common,,CRProduct'); // 解析参数包含owner、module、key的数据 diff --git a/tools/check.php b/tools/check.php index d1ea7b71ce..73f410b449 100755 --- a/tools/check.php +++ b/tools/check.php @@ -75,6 +75,7 @@ $lang->cron = new stdclass(); $lang->dev = new stdclass(); $moduleRoot = '../module/'; +include '../framework/helper.class.php'; include $moduleRoot . '/group/lang/resource.php'; foreach(glob($moduleRoot . '/group/ext/lang/zh-cn/*.php') as $resourceFile) include $resourceFile; foreach(glob('../xuanxuan/module/group/ext/lang/zh-cn/*.php') as $resourceFile) include $resourceFile; diff --git a/www/js/my.full.js b/www/js/my.full.js index 09b8b218f9..30bf823463 100644 --- a/www/js/my.full.js +++ b/www/js/my.full.js @@ -936,19 +936,21 @@ function adjustMenuWidth() * @access public * @return void */ -function scrollToSelected(id) +function scrollToSelected() { - if(typeof(id) == 'undefined') id = '#dropMenu .table-col .list-group' - - $id = $(id); - $selected = $id.find('.selected'); - - $id.mouseout(function(){$(this).find('a.active:not(.not-list-item)').removeClass('active')}); - if($selected.length > 0) + setTimeout(function() { - var offsetHeight = 75; - $id.scrollTop($selected.position().top - offsetHeight); - } + $selected = $('#dropMenu .selected'); + if($selected.length == 0) return; + + $id = $selected.closest('.list-group'); + $id.mouseout(function(){$(this).find('a.active:not(.not-list-item)').removeClass('active')}); + + var fixOffset = 160; + offsetTop = $selected.offset().top; + if(offsetTop < fixOffset) return; + $id.scrollTop(offsetTop - fixOffset); + }, 100); } /** diff --git a/www/js/zui/min.js b/www/js/zui/min.js index a56b50b0e1..470d2404d9 100644 --- a/www/js/zui/min.js +++ b/www/js/zui/min.js @@ -1,7 +1,7 @@ /*! - * ZUI: ZUI for Zentao - v1.10.0 - 2022-09-14 + * ZUI: ZUI for Zentao - v1.10.0 - 2022-11-08 * http://openzui.com - * GitHub: https://github.com/easysoft/zui.git + * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT */ !function(t,e,i){"use strict";if("undefined"==typeof t)throw new Error("ZUI requires jQuery");Number.isNaN||"function"!=typeof isNaN||(Number.isNaN=isNaN),Number.parseInt||"function"!=typeof parseInt||(Number.parseInt=parseInt),Number.parseFloat||"function"!=typeof parseFloat||(Number.parseFloat=parseFloat),t.zui||(t.zui=function(e){t.isPlainObject(e)&&t.extend(t.zui,e)});var n={all:-1,left:0,middle:1,right:2},o=0;t.zui({uuid:function(t){var e=1e5*(Date.now()-1580890015292)+10*Math.floor(1e4*Math.random())+o++%10;return t?e:e.toString(36)},callEvent:function(t,e,n){if("function"==typeof t){n!==i&&(t=t.bind(n));var o=t(e);return e&&(e.result=o),!(o!==i&&!o)}return 1},strCode:function(t){var e=0;if("string"!=typeof t&&(t=String(t)),t&&t.length)for(var i=0;i=e.innerWidth?0:t.zui.getScrollbarSize()},fixBodyScrollbar:function(){if(t.zui.checkBodyScrollbar()){var e=t("body"),i=parseInt(e.css("padding-right")||0,10);return t.zui._scrollbarWidth&&e.css({paddingRight:i+t.zui._scrollbarWidth,overflowY:"hidden"}),!0}},resetBodyScrollbar:function(){t("body").css({paddingRight:"",overflowY:""})}}),t.fn.callEvent=function(e,n,o){var a=t(this),s=e.indexOf(".zui."),r=s<0?e:e.substring(0,s),l=t.Event(r,n);if(o===i&&s>0&&(o=a.data(e.substring(s+1))),o&&o.options){var c=o.options[r];"function"==typeof c&&(l.result=t.zui.callEvent(c,l,o))}return a.trigger(l),l},t.fn.callComEvent=function(t,e,n){n===i||Array.isArray(n)||(n=[n]);var o,a=this;a.trigger(e,n);var s=t.options[e];return s&&(o=s.apply(t,n)),o}}(jQuery,window,void 0),function(){"use strict";function t(t,e){return i&&!e?requestAnimationFrame(t):setTimeout(t,e||0)}function e(t){return i?cancelAnimationFrame(t):void clearTimeout(t)}var i="function"==typeof window.requestAnimationFrame;$.zui({asap:t,clearAsap:e})}(),function(t){"use strict";t.fn.fixOlPd=function(e){return e=e||10,this.each(function(){var i=t(this);i.css("paddingLeft",Math.ceil(Math.log10(i.children().length))*e+10)})},t(function(){t(".ol-pd-fix,.article ol").fixOlPd()})}(jQuery),+function(t){"use strict";var e='[data-dismiss="alert"]',i="zui.alert",n=function(i){t(i).on("click",e,this.close)};n.prototype.close=function(e){function n(){s.trigger("closed."+i).remove()}var o=t(this),a=o.attr("data-target");a||(a=o.attr("href"),a=a&&a.replace(/.*(?=#[^\s]*$)/,""));var s=t(a);e&&e.preventDefault(),s.length||(s=o.hasClass("alert")?o:o.parent()),s.trigger(e=t.Event("close."+i)),e.isDefaultPrevented()||(s.removeClass("in"),t.support.transition&&s.hasClass("fade")?s.one(t.support.transition.end,n).emulateTransitionEnd(150):n())};var o=t.fn.alert;t.fn.alert=function(e){return this.each(function(){var o=t(this),a=o.data(i);a||o.data(i,a=new n(this)),"string"==typeof e&&a[e].call(o)})},t.fn.alert.Constructor=n,t.fn.alert.noConflict=function(){return t.fn.alert=o,this},t(document).on("click."+i+".data-api",e,n.prototype.close)}(window.jQuery),function(t,e){"use strict";var i="zui.pager",n={page:1,recTotal:0,recPerPage:10},o={zh_cn:{pageOfText:"第 {0} 页",prev:"上一页",next:"下一页",first:"第一页",last:"最后一页","goto":"跳转",pageOf:"第 {page} 页",totalPage:"共 {totalPage} 页",totalCount:"共 {recTotal} 项",pageSize:"每页 {recPerPage} 项",itemsRange:"第 {start} ~ {end} 项",pageOfTotal:"第 {page}/{totalPage} 页"},zh_tw:{pageOfText:"第 {0} 頁",prev:"上一頁",next:"下一頁",first:"第一頁",last:"最後一頁","goto":"跳轉",pageOf:"第 {page} 頁",totalPage:"共 {totalPage} 頁",totalCount:"共 {recTotal} 項",pageSize:"每頁 {recPerPage} 項",itemsRange:"第 {start} ~ {end} 項",pageOfTotal:"第 {page}/{totalPage} 頁"},en:{pageOfText:"Page {0}",prev:"Prev",next:"Next",first:"First",last:"Last","goto":"Goto",pageOf:"Page {page}",totalPage:"{totalPage} pages",totalCount:"Total: {recTotal} items",pageSize:"{recPerPage} per page",itemsRange:"From {start} to {end}",pageOfTotal:"Page {page} of {totalPage}"}},a=function(e,n){var s=this;s.name=i,s.$=t(e),n=s.options=t.extend({},a.DEFAULTS,this.$.data(),n),s.langName=n.lang||t.zui.clientLang(),s.lang=t.zui.getLangData(i,s.langName,o),s.state={},s.set(n.page,n.recTotal,n.recPerPage,!0),s.$.on("click",".pager-goto-btn",function(){var e=t(this).closest(".pager-goto"),i=parseInt(e.find(".pager-goto-input").val());NaN!==i&&s.set(i)}).on("click",".pager-item",function(){var e=t(this).data("page");"number"==typeof e&&e>0&&s.set(e)}).on("click",".pager-size-menu [data-size]",function(){var e=t(this).data("size");"number"==typeof e&&e>0&&s.set(-1,-1,e)})};a.prototype.set=function(e,i,o,a){var s=this;"object"==typeof e&&null!==e&&(o=e.recPerPage,i=e.recTotal,e=e.page);var r=s.state;r||(r=t.extend({},n));var l=t.extend({},r);return"number"==typeof o&&o>0&&(r.recPerPage=o),"number"==typeof i&&i>=0&&(r.recTotal=i),"number"==typeof e&&e>=0&&(r.page=e),r.totalPage=r.recTotal&&r.recPerPage?Math.ceil(r.recTotal/r.recPerPage):1,r.page=Math.max(0,Math.min(r.page,r.totalPage)),r.pageRecCount=r.recTotal,r.page&&r.recTotal&&(r.page1&&(r.pageRecCount=r.recTotal-r.recPerPage*(r.page-1))),r.skip=r.page>1?(r.page-1)*r.recPerPage:0,r.start=r.skip+1,r.end=r.skip+r.pageRecCount,r.prev=r.page>1?r.page-1:0,r.next=r.page').attr("href",i?a.createLink(i,a.state):"###").html(n);return o||(s=t("
  • ").append(s).toggleClass("active",i===a.state.page).toggleClass("disabled",!i||i===a.state.page)),s},a.prototype.createNavItems=function(t){var i=this,n=i.$,o=i.state,a=o.totalPage,s=o.page,r=function(t,o){if(t===!1)return void n.append(i.createLinkItem(0,o||i.options.navEllipsisItem));o===e&&(o=t);for(var a=t;a<=o;++a)n.append(i.createLinkItem(a))};t===e&&(t=i.options.maxNavCount||10),r(1),a>1&&(a<=t?r(2,a):sa-t+2?(r(!1),r(a-t+2,a)):(r(!1),r(s-Math.ceil((t-4)/2),s+Math.floor((t-4)/2)),r(!1),r(a)))},a.prototype.createGoto=function(){var e=this,i=this.state,n=t('
    ");return n},a.prototype.createSizeMenu=function(){var e=this,i=this.state,n=t(''),o=e.options.pageSizeOptions;"string"==typeof o&&(o=o.split(","));for(var a=0;a'+s+"
  • ").toggleClass("active",s===i.recPerPage);n.append(r)}return t('
    ').addClass(e.options.menuDirection).append(n)},a.prototype.createElement=function(e,i,n){var o=this,a=o.createLinkItem.bind(o),s=o.lang;switch(e){case"prev":return a(n.prev,s.prev);case"prev_icon":return a(n.prev,'');case"next":return a(n.next,s.next);case"next_icon":return a(n.next,'');case"first":return a(1,s.first);case"first_icon":return a(1,'');case"last":return a(n.totalPage,s.last);case"last_icon":return a(n.totalPage,'');case"space":case"|":return t('
  • ');case"nav":case"pages":return void o.createNavItems();case"total_text":return t(('
    '+s.totalCount+"
    ").format(n));case"page_text":return t(('
    '+s.pageOf+"
    ").format(n));case"total_page_text":return t(('
    '+s.totalPage+"
    ").format(n));case"page_of_total_text":return t(('
    '+s.pageOfTotal+"
    ").format(n));case"page_size_text":return t(('
    '+s.pageSize+"
    ").format(n));case"items_range_text":return t(('
    '+s.itemsRange+"
    ").format(n));case"goto":return o.createGoto();case"size_menu":return o.createSizeMenu();default:return t("
  • ").html(e.format(n))}},a.prototype.createLink=function(i,n){i===e&&(i=this.state.page),n===e&&(n=this.state);var o=this.options.linkCreator;return"string"==typeof o?o.format(t.extend({},n,{page:i})):"function"==typeof o?o(i,n):"#page="+i},a.prototype.render=function(e){var i=this,n=i.state,o=i.options.elementCreator||i.createElement,a=t.isPlainObject(o);e=e||i.elements||i.options.elements,"string"==typeof e&&(e=e.split(",")),i.elements=e,i.$.empty();for(var s=0;s").append(c)),i.$.append(c))}var h=null;return i.$.children("li").each(function(){var e=t(this),i=!!e.children(".pager-item").length;h?h.toggleClass("pager-item-right",!i):i&&e.addClass("pager-item-left"),h=i?e:null}),h&&h.addClass("pager-item-right"),i.$.callComEvent(i,"onRender",[n]),i},a.DEFAULTS=t.extend({elements:["first_icon","prev_icon","pages","next_icon","last_icon","page_of_total_text","items_range_text","total_text"],prevIcon:"icon-double-angle-left",nextIcon:"icon-double-angle-right",firstIcon:"icon-step-backward",lastIcon:"icon-step-forward",navEllipsisItem:'',maxNavCount:10,menuDirection:"dropdown",pageSizeOptions:[10,20,30,50,100]},n),t.fn.pager=function(e){return this.each(function(){var n=t(this),o=n.data(i),s="object"==typeof e&&e;o||n.data(i,o=new a(this,s)),"string"==typeof e&&o[e]()})},a.NAME=i,a.LANG=o,t.fn.pager.Constructor=a,t(function(){t('[data-ride="pager"]').pager()})}(jQuery,void 0),+function(t){"use strict";var e="zui.tab",i=function(e){this.element=t(e)};i.prototype.show=function(){var i=this.element,n=i.closest("ul:not(.dropdown-menu)"),o=i.attr("data-target")||i.attr("data-tab");if(o||(o=i.attr("href"),o=o&&o.replace(/.*(?=#[^\s]*$)/,"")),!i.parent("li").hasClass("active")){var a=n.find(".active:last a")[0],s=t.Event("show."+e,{relatedTarget:a});if(i.trigger(s),!s.isDefaultPrevented()){var r=t(o);this.activate(i.parent("li"),n),this.activate(r,r.parent(),function(){i.trigger({type:"shown."+e,relatedTarget:a})})}}},i.prototype.activate=function(e,i,n){function o(){a.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),e.addClass("active"),s?(e[0].offsetWidth,e.addClass("in")):e.removeClass("fade"),e.parent(".dropdown-menu")&&e.closest("li.dropdown").addClass("active"),n&&n()}var a=i.find("> .active"),s=n&&t.support.transition&&a.hasClass("fade");s?a.one(t.support.transition.end,o).emulateTransitionEnd(150):o(),a.removeClass("in")};var n=t.fn.tab;t.fn.tab=function(n){return this.each(function(){var o=t(this),a=o.data(e);a||o.data(e,a=new i(this)),"string"==typeof n&&a[n]()})},t.fn.tab.Constructor=i,t.fn.tab.noConflict=function(){return t.fn.tab=n,this},t(document).on("click.zui.tab.data-api",'[data-toggle="tab"], [data-tab]',function(e){e.preventDefault(),t(this).tab("show")})}(window.jQuery),+function(t){"use strict";function e(){var t=document.createElement("bootstrap"),e={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}t.fn.emulateTransitionEnd=function(e){var i=!1,n=this;t(this).one("bsTransitionEnd",function(){i=!0});var o=function(){i||t(n).trigger(t.support.transition.end)};return setTimeout(o,e),this},t(function(){t.support.transition=e(),t.support.transition&&(t.event.special.bsTransitionEnd={bindType:t.support.transition.end,delegateType:t.support.transition.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(t){"use strict";var e="zui.collapse",i=function(e,n){this.$element=t(e),this.options=t.extend({},i.DEFAULTS,n),this.transitioning=null,this.options.parent&&(this.$parent=t(this.options.parent)),this.options.toggle&&this.toggle()};i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass("width");return t?"width":"height"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var i=t.Event("show."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.$parent&&this.$parent.find(".in");if(n&&n.length){var o=n.data(e);if(o&&o.transitioning)return;n.collapse("hide"),o||n.data(e,null)}var a=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[a](0),this.transitioning=1;var s=function(){this.$element.removeClass("collapsing").addClass("in")[a]("auto"),this.transitioning=0,this.$element.trigger("shown."+e)};if(!t.support.transition)return s.call(this);var r=t.camelCase(["scroll",a].join("-"));this.$element.one(t.support.transition.end,s.bind(this)).emulateTransitionEnd(350)[a](this.$element[0][r])}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var i=t.Event("hide."+e);if(this.$element.trigger(i),!i.isDefaultPrevented()){var n=this.dimension();this.$element[n](this.$element[n]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.trigger("hidden."+e).removeClass("collapsing").addClass("collapse")};return t.support.transition?void this.$element[n](0).one(t.support.transition.end,o.bind(this)).emulateTransitionEnd(350):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var n=t.fn.collapse;t.fn.collapse=function(n){return this.each(function(){var o=t(this),a=o.data(e),s=t.extend({},i.DEFAULTS,o.data(),"object"==typeof n&&n);a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},t.fn.collapse.Constructor=i,t.fn.collapse.noConflict=function(){return t.fn.collapse=n,this},t(document).on("click."+e+".data-api","[data-toggle=collapse]",function(i){var n,o=t(this),a=o.attr("data-target")||i.preventDefault()||(n=o.attr("href"))&&n.replace(/.*(?=#[^\s]+$)/,""),s=t(a),r=s.data(e),l=r?"toggle":o.data(),c=o.attr("data-parent"),h=c&&t(c);r&&r.transitioning||(h&&h.find('[data-toggle=collapse][data-parent="'+c+'"]').not(o).addClass("collapsed"),o[s.hasClass("in")?"addClass":"removeClass"]("collapsed")),s.collapse(l)})}(window.jQuery),function(t,e){"use strict";var i=1200,n=992,o=768,a=e(t),s=function(){var t=a.width();e("html").toggleClass("screen-desktop",t>=n&&t=i).toggleClass("screen-tablet",t>=o&&t=n)},r="",l=navigator.userAgent;l.match(/(iPad|iPhone|iPod)/i)?r+=" os-ios":l.match(/android/i)?r+=" os-android":l.match(/Win/i)?r+=" os-windows":l.match(/Mac/i)?r+=" os-mac":l.match(/Linux/i)?r+=" os-linux":l.match(/X11/i)&&(r+=" os-unix"),"ontouchstart"in document.documentElement&&(r+=" is-touchable"),e("html").addClass(r),a.resize(s),s()}(window,jQuery),function(t){"use strict";var e={zh_cn:'您的浏览器版本过低,无法体验所有功能,建议升级或者更换浏览器。 了解更多...',zh_tw:'您的瀏覽器版本過低,無法體驗所有功能,建議升級或者更换瀏覽器。了解更多...',en:'Your browser is too old, it has been unable to experience the colorful internet. We strongly recommend that you upgrade a better one. Learn more...'},i=function(){for(var t=!1,e=11;e>5;e--)if(this.isIE(e)){t=e;break}this.ie=t,this.cssHelper()};i.prototype.cssHelper=function(){var e=this.ie,i=t("html");i.toggleClass("ie",e).removeClass("ie-6 ie-7 ie-8 ie-9 ie-10"),e&&i.addClass("ie-"+e).toggleClass("gt-ie-7 gte-ie-8 support-ie",e>=8).toggleClass("lte-ie-7 lt-ie-8 outdated-ie",e<8).toggleClass("gt-ie-8 gte-ie-9",e>=9).toggleClass("lte-ie-8 lt-ie-9",e<9).toggleClass("gt-ie-9 gte-ie-10",e>=10).toggleClass("lte-ie-9 lt-ie-10",e<10).toggleClass("gt-ie-10 gte-ie-11",e>=11).toggleClass("lte-ie-10 lt-ie-11",e<11)},i.prototype.tip=function(i){var n=t("#browseHappyTip");n.length||(n=t('
    '),n.prependTo("body")),i||(i=t.zui.getLangData("zui.browser",t.zui.clientLang(),e),"object"==typeof i&&(i=i.tip)),n.find(".content").html(i)},i.prototype.isIE=function(t){if(11===t)return this.isIE11();if(10===t)return this.isIE10();if(!t&&(this.isIE11()||this.isIE10()))return!0;var e=document.createElement("b");return e.innerHTML="",1===e.getElementsByTagName("i").length},i.prototype.isIE10=function(){return navigator.appVersion.indexOf("MSIE 10")!==-1},i.prototype.isIE11=function(){var t=navigator.userAgent;return t.indexOf("Trident")!==-1&&t.indexOf("rv:11")!==-1},t.zui({browser:new i}),t(function(){t("body").hasClass("disabled-browser-tip")||t.zui.browser.ie&&t.zui.browser.ie<8&&t.zui.browser.tip()})}(jQuery),function(t){"use strict";var e=864e5,i=function(t){return t instanceof Date||("number"==typeof t&&t<1e10&&(t*=1e3),t=new Date(t)),t},n=function(t){return i(t).getTime()},o=function(t,e){t=i(t),void 0===e&&(e="yyyy-MM-dd hh:mm:ss");var n={"M+":t.getMonth()+1,"d+":t.getDate(),"h+":t.getHours(),"m+":t.getMinutes(),"s+":t.getSeconds(),"q+":Math.floor((t.getMonth()+3)/3),"S+":t.getMilliseconds()};/(y+)/i.test(e)&&(e=e.replace(RegExp.$1,(t.getFullYear()+"").substr(4-RegExp.$1.length)));for(var o in n)new RegExp("("+o+")").test(e)&&(e=e.replace(RegExp.$1,1==RegExp.$1.length?n[o]:("00"+n[o]).substr((""+n[o]).length)));return e},a=function(t,e){return t.setTime(t.getTime()+e),t},s=function(t,i){return a(t,i*e)},r=function(t){return new Date(i(t).getTime())},l=function(t){return t%4===0&&t%100!==0||t%400===0},c=function(t,e){return[31,l(t)?29:28,31,30,31,30,31,31,30,31,30,31][e]},h=function(t){return c(t.getFullYear(),t.getMonth())},d=function(t){return t.setHours(0),t.setMinutes(0),t.setSeconds(0),t.setMilliseconds(0),t},u=function(t,e){var i=t.getDate();return t.setDate(1),t.setMonth(t.getMonth()+e),t.setDate(Math.min(i,h(t))),t},p=function(t,e){e=e||1;for(var i=new Date(t.getTime());i.getDay()!=e;)i=s(i,-1);return d(i)},f=function(t,e){return t.toDateString()===e.toDateString()},g=function(t,e){var i=p(t),n=s(r(i),7);return e>=i&&e1){var i;if(2==arguments.length&&"object"==typeof e)for(var n in e)void 0!==e[n]&&(i=new RegExp("({"+n+"})","g"),t=t.replace(i,e[n]));else for(var o=1;othis.length)&&(e=this.length),this.substring(e-t.length,e)===t}),String.prototype.startsWith||Object.defineProperty(String.prototype,"startsWith",{value:function(t,e){return e=!e||e<0?0:+e,this.substring(e,e+t.length)===t}}),String.prototype.includes||(String.prototype.includes=function(){return String.prototype.indexOf.apply(this,arguments)!==-1}))}(),/*! @@ -16,7 +16,7 @@ function(t,e,i){"$:nomunge";function n(){o=e[r](function(){a.each(function(){var * Copyright 2006, 2014 Klaus Hartl * Released under the MIT license */ -function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t("object"==typeof exports?require("jquery"):jQuery)}(function(t){function e(t){return r.raw?t:encodeURIComponent(t)}function i(t){return r.raw?t:decodeURIComponent(t)}function n(t){return e(r.json?JSON.stringify(t):String(t))}function o(t){0===t.indexOf('"')&&(t=t.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return t=decodeURIComponent(t.replace(s," ")),r.json?JSON.parse(t):t}catch(e){}}function a(t,e){var i=r.raw?t:o(t);return"function"==typeof e?e(i):i}var s=/\+/g,r=t.cookie=function(o,s,l){if(void 0!==s&&"function"!=typeof s){if(l=t.extend({},r.defaults,l),"number"==typeof l.expires){var c=l.expires,h=l.expires=new Date;h.setTime(+h+864e5*c)}return document.cookie=[e(o),"=",n(s),l.expires?"; expires="+l.expires.toUTCString():"",l.path?"; path="+l.path:"",l.domain?"; domain="+l.domain:"",l.secure?"; secure":""].join("")}for(var d=o?void 0:{},u=document.cookie?document.cookie.split("; "):[],p=0,f=u.length;p=0;t--)delete this.page[i[t]];this.set(a,this.page)}},s.prototype.pageRemove=function(t){"undefined"!=typeof this.page[t]&&(this.page[t]=null,this.pageSave())},s.prototype.pageClear=function(){this.page={},this.pageSave()},s.prototype.pageGet=function(t,e){var i=this.page[t];return void 0===e||null!==i&&void 0!==i?i:e},s.prototype.pageSet=function(t,i){e.isPlainObject(t)?e.extend(!0,this.page,t):this.page[this.serialize(t)]=i,this.pageSave()},s.prototype.check=function(){if(!this.enable&&!this.silence)throw new Error("Browser not support localStorage or enable status been set true.");return this.enable},s.prototype.length=function(){return this.check()?i.getLength?i.getLength():i.length:0},s.prototype.removeItem=function(t){return i.removeItem(t),this},s.prototype.remove=function(t){return this.removeItem(t)},s.prototype.getItem=function(t){return i.getItem(t)},s.prototype.get=function(t,e){var i=this.deserialize(this.getItem(t));return"undefined"!=typeof i&&null!==i||"undefined"==typeof e?i:e},s.prototype.key=function(t){return i.key(t)},s.prototype.setItem=function(t,e){return i.setItem(t,e),this},s.prototype.set=function(t,e){return void 0===e?this.remove(t):(this.setItem(t,this.serialize(e)),this)},s.prototype.clear=function(){return i.clear(),this},s.prototype.forEach=function(t){for(var e=this.length(),n=e-1;n>=0;n--){var o=i.key(n);t(o,this.get(o))}return this},s.prototype.getAll=function(){var t={};return this.forEach(function(e,i){t[e]=i}),t},s.prototype.serialize=function(t){return"string"==typeof t?t:JSON.stringify(t)},s.prototype.deserialize=function(t){if("string"==typeof t)try{return JSON.parse(t)}catch(e){return t||void 0}},e.zui({store:new s})}(window,jQuery),function(t){"use strict";var e="zui.searchBox",i=function(e,n){var o=this;o.name=name,o.$=t(e),o.options=n=t.extend({},i.DEFAULTS,o.$.data(),n);var a=o.$.is(n.inputSelector)?o.$:o.$.find(n.inputSelector);if(a.length){var s=function(){o.changeTimer&&(clearTimeout(o.changeTimer),o.changeTimer=null)},r=function(){s();var t=o.getSearch();if(t!==o.lastValue){var e=""===t;a.toggleClass("empty",e),o.$.callComEvent(o,"onSearchChange",[t,e]),o.lastValue=t}};o.$input=a=a.first(),a.on(n.listenEvent,function(t){o.changeTimer=setTimeout(function(){r()},n.changeDelay)}).on("focus",function(t){a.addClass("focus"),o.$.callComEvent(o,"onFocus",[t])}).on("blur",function(t){a.removeClass("focus"),o.$.callComEvent(o,"onBlur",[t])}).on("keydown",function(t){var e=0,i=t.which;27===i&&n.escToClear?(this.setSearch("",!0),r(),e=1):13===i&&n.onPressEnter&&(r(),o.$.callComEvent(o,"onPressEnter",[t]));var a=o.$.callComEvent(o,"onKeyDown",[t]);a===!1&&(e=1),e&&t.preventDefault()}),o.$.on("click",".search-clear-btn",function(t){o.setSearch("",!0),r(),o.focus(),t.preventDefault()}),r()}else console.error("ZUI: search box init error, cannot find search box input element.")};i.DEFAULTS={inputSelector:'input[type="search"],input[type="text"]',listenEvent:"change input paste",changeDelay:500},i.prototype.getSearch=function(){return this.$input&&t.trim(this.$input.val())},i.prototype.setSearch=function(t,e){var i=this.$input;i&&(i.val(t),e||i.trigger("change"))},i.prototype.focus=function(){this.$input&&this.$input.focus()},t.fn.searchBox=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.searchBox.Constructor=i}(jQuery),function(t,e){"use strict";var i="zui.draggable",n={container:"body",move:!0},o=0,a=function(e,i){var a=this;a.$=t(e),a.id=o++,a.options=t.extend({},n,a.$.data(),i),a.init()};a.DEFAULTS=n,a.NAME=i,a.prototype.init=function(){var n,o,a,s,r,l=this,c=l.$,h="before",d="drag",u="finish",p="."+i+"."+l.id,f="mousedown"+p,g="mouseup"+p,m="mousemove"+p,v=l.options,y=v.selector,b=v.handle,w=c,x="function"==typeof v.move,C=function(t){var e=t.pageX,i=t.pageY;r=!0;var o={left:e-a.x,top:i-a.y};w.removeClass("drag-ready").addClass("dragging"),v.move&&(x?v.move(o,w):w.css(o)),v[d]&&v[d]({event:t,element:w,startOffset:a,pos:o,offset:{x:e-n.x,y:i-n.y},smallOffset:{x:e-s.x,y:i-s.y}}),s.x=e,s.y=i,v.stopPropagation&&t.stopPropagation()},_=0,k=function(e){_&&(t.zui.clearAsap||clearTimeout)(_),_=(t.zui.asap||setTimeout)(function(){_=0,C(e)},0)},T=function(i){if(t(e).off(p),!r)return void w.removeClass("drag-ready");var o={left:i.pageX-a.x,top:i.pageY-a.y};w.removeClass("drag-ready dragging"),v.move&&(x?v.move(o,w):w.css(o)),v[u]&&v[u]({event:i,element:w,startOffset:a,pos:o,offset:{x:i.pageX-n.x,y:i.pageY-n.y},smallOffset:{x:i.pageX-s.x,y:i.pageY-s.y}}),i.preventDefault(),v.stopPropagation&&i.stopPropagation()},S=function(i){var l=t.zui.getMouseButtonCode(v.mouseButton);if(!(l>-1&&i.button!==l)){var c=t(this);if(y&&(w=b?c.closest(y):c),v[h]){var d=v[h]({event:i,element:w});if(d===!1)return}var u=t(v.container),p=w.offset();o=u.offset(),n={x:i.pageX,y:i.pageY},a={x:i.pageX-p.left+o.left,y:i.pageY-p.top+o.top},s=t.extend({},n),r=!1,w.addClass("drag-ready"),i.preventDefault(),v.stopPropagation&&i.stopPropagation(),t(e).on(m,k).on(g,T)}};b?c.on(f,b,S):y?c.on(f,y,S):c.on(f,S)},a.prototype.destroy=function(){var n="."+i+"."+this.id;this.$.off(n),t(e).off(n),this.$.data(i,null)},t.fn.draggable=function(e){return this.each(function(){var n=t(this),o=n.data(i),s="object"==typeof e&&e;o||n.data(i,o=new a(this,s)),"string"==typeof e&&o[e]()})},t.fn.draggable.Constructor=a}(jQuery,document),function(t,e,i){"use strict";var n="zui.droppable",o={target:".droppable-target",deviation:5,sensorOffsetX:0,sensorOffsetY:0,dropToClass:"drop-to",dropTargetClass:"drop-target"},a=0,s=function(e,i){var n=this;n.id=a++,n.$=t(e),n.options=t.extend({},o,n.$.data(),i),n.init()};s.DEFAULTS=o,s.NAME=n,s.prototype.trigger=function(e,i){return t.zui.callEvent(this.options[e],i,this)},s.prototype.init=function(){var o,a,s,r,l,c,h,d,u,p,f,g,m,v,y=this,b=y.$,w=y.options,x=w.deviation,C="."+n+"."+y.id,_="mousedown"+C,k="mouseup"+C,T="mousemove"+C,S=w.selector,D=w.handle,M=w.flex,L=w.canMoveHere,z=w.dropToClass,P=w.noShadow,$=b,I=!1;w.dropOnMouseleave&&(k+=" mouseleave"+C);var F=function(e){if(I){if(g={left:e.pageX,top:e.pageY},!r){if(i.abs(g.left-u.left)a&&g.top>s&&g.left-1&&i.button!==n)){var g=t(this);S&&($=D?g.closest(S):g),$.hasClass("drag-shadow")||w.before&&w.before({event:i,element:$})===!1||(I=!0,o=w.container?"function"==typeof w.container?w.container($,b):t(w.container).first():S?b:t("body"),a="function"==typeof w.target?w.target($,b):o.find(w.target),s=null,r=null,l=!1,c=!0,h=null,d=$.offset(),p=o.offset(),p.top=p.top-o.scrollTop(),p.left=p.left-o.scrollLeft(),u={left:i.pageX,top:i.pageY},m=t.extend({},u),f={left:u.left-d.left,top:u.top-d.top},$.addClass("drag-from"),t(e).on(T,E).on(k,O),v=setTimeout(function(){t(e).on(_,O)},10),i.preventDefault(),w.stopPropagation&&i.stopPropagation())}};D?b.on(_,D,R):S?b.on(_,S,R):b.on(_,R)},s.prototype.destroy=function(){var i="."+n+"."+this.id;this.$.off(i),t(e).off(i),this.$.data(n,null)},s.prototype.reset=function(){this.destroy(),this.init()},t.fn.droppable=function(e){return this.each(function(){var i=t(this),o=i.data(n),a="object"==typeof e&&e;o||i.data(n,o=new s(this,a)),"string"==typeof e&&o[e]()})},t.fn.droppable.Constructor=s}(jQuery,document,Math),+function(t,e){"use strict";function i(e,i,a){return this.each(function(){var s=t(this),r=s.data(n),l=t.extend({},o.DEFAULTS,s.data(),"object"==typeof e&&e);r||s.data(n,r=new o(this,l)),"string"==typeof e?r[e](i,a):l.show&&r.show(i,a)})}var n="zui.modal",o=function(i,o){var a=this;a.options=o,a.$body=t(document.body),a.$element=t(i),a.$backdrop=a.isShown=null,a.scrollbarWidth=0,o.moveable===e&&(a.options.moveable=a.$element.hasClass("modal-moveable")),o.remote&&a.$element.find(".modal-content").load(o.remote,function(){a.$element.trigger("loaded."+n)}),o.scrollInside&&t(window).on("resize."+n,function(){a.isShown&&a.adjustPosition(e,100)})};o.VERSION="3.2.0",o.TRANSITION_DURATION=300,o.BACKDROP_TRANSITION_DURATION=150,o.DEFAULTS={backdrop:!0,keyboard:!0,show:!0,position:"fit"};var a=function(e,i){var n=t(window);i.left=Math.max(0,Math.min(i.left,n.width()-e.outerWidth())),i.top=Math.max(0,Math.min(i.top,n.height()-e.outerHeight())),e.css(i)};o.prototype.toggle=function(t,e){return this.isShown?this.hide():this.show(t,e)},o.prototype.adjustPosition=function(i,o){var s=this;if(clearTimeout(s.reposTask),o)return void(s.reposTask=setTimeout(s.adjustPosition.bind(s,i,0),o));var r=s.options;if(i===e&&(i=r.position),i!==e&&null!==i){"function"==typeof i&&(i=i(s));var l=s.$element.find(".modal-dialog"),c=t(window).height(),h={maxHeight:"initial",overflow:"visible"},d=l.find(".modal-body").css(h);if(r.scrollInside&&d.length){var u=r.headerHeight,p=r.footerHeight,f=l.find(".modal-header"),g=l.find(".modal-footer");"number"!=typeof u&&(u=f.length?f.outerHeight():"function"==typeof u?u(f):0),"number"!=typeof p&&(p=g.length?g.outerHeight():"function"==typeof p?p(g):0),h.maxHeight=c-u-p,h.overflow=d[0].scrollHeight>h.maxHeight?"auto":"visible",d.css(h)}var m=Math.max(0,(c-l.outerHeight())/2);if("fit"===i?i={top:m>50?Math.floor(2*m/3):m}:"center"===i?i={top:m}:t.isPlainObject(i)||(i={top:i}),l.hasClass("modal-moveable")){var v=null,y=r.rememberPos;y&&(y===!0?v=s.$element.data("modal-pos"):t.zui.store&&(v=t.zui.store.pageGet(n+".rememberPos."+y))),i=t.extend(i,{left:Math.max(0,(t(window).width()-l.outerWidth())/2)},v),"inside"===r.moveable?a(l,i):l.css(i)}else l.css(i)}},o.prototype.setMoveable=function(){t.fn.draggable||console.error("Moveable modal requires draggable.js.");var e=this,i=e.options,o=e.$element.find(".modal-dialog").removeClass("modal-dragged");o.toggleClass("modal-moveable",!!i.moveable),e.$element.data("modal-moveable-setup")||o.draggable({container:e.$element,handle:".modal-header",before:function(){var t=o.css("margin-top");t&&"0px"!==t&&o.css("top",t).css("margin-top","").addClass("modal-dragged")},finish:function(o){var a=i.rememberPos;a&&(e.$element.data("modal-pos",o.pos),t.zui.store&&a!==!0&&t.zui.store.pageSet(n+".rememberPos."+a,o.pos))},move:"inside"!==i.moveable||function(t){a(o,t)}})},o.prototype.show=function(e,i){var a=this,s=t.Event("show."+n,{relatedTarget:e});a.$element.trigger(s),a.$element.toggleClass("modal-scroll-inside",!!a.options.scrollInside),a.isShown||s.isDefaultPrevented()||(a.isShown=!0,a.options.moveable&&a.setMoveable(),a.options.backdrop!==!1&&(a.setScrollbar(),a.$body.addClass("modal-open")),a.escape(),a.$element.on("click.dismiss."+n,'[data-dismiss="modal"]',function(t){a.hide(),t.stopPropagation()}),a.backdrop(function(){var s=t.support.transition&&a.$element.hasClass("fade");a.$element.parent().length||a.$element.appendTo(a.$body),a.$element.show().scrollTop(0),s&&a.$element[0].offsetWidth,a.$element.addClass("in").attr("aria-hidden",!1),a.adjustPosition(i),a.enforceFocus();var r=t.Event("shown."+n,{relatedTarget:e});s?a.$element.find(".modal-dialog").one("bsTransitionEnd",function(){a.$element.trigger("focus").trigger(r)}).emulateTransitionEnd(o.TRANSITION_DURATION):a.$element.trigger("focus").trigger(r)}))},o.prototype.hide=function(e){e&&e.preventDefault&&e.preventDefault();var i=this;e=t.Event("hide."+n),i.$element.trigger(e),i.isShown&&!e.isDefaultPrevented()&&(i.isShown=!1,i.options.backdrop!==!1&&(i.$body.removeClass("modal-open"),i.resetScrollbar()),i.escape(),t(document).off("focusin."+n),i.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss."+n),t.support.transition&&i.$element.hasClass("fade")?i.$element.one("bsTransitionEnd",i.hideModal.bind(i)).emulateTransitionEnd(o.TRANSITION_DURATION):i.hideModal())},o.prototype.enforceFocus=function(){t(document).off("focusin."+n).on("focusin."+n,function(t){this.$element[0]===t.target||this.$element.has(t.target).length||this.$element.trigger("focus")}.bind(this))},o.prototype.escape=function(){this.isShown&&this.options.keyboard?t(document).on("keydown.dismiss."+n,function(i){if(27==i.which){var o=t.Event("escaping."+n),a=this.$element.triggerHandler(o,"esc");if(a!=e&&!a)return;this.hide()}}.bind(this)):this.isShown||t(document).off("keydown.dismiss."+n)},o.prototype.hideModal=function(){var t=this;this.$element.hide(),this.backdrop(function(){t.$element.trigger("hidden."+n)})},o.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},o.prototype.backdrop=function(e){var i=this,a=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var s=t.support.transition&&a;if(this.$backdrop=t('').append(t('
  • idAB;?>'>user->company;?> '> user->dept;?> user->account;?> user->realname;?>
    +
    + 1 ? 'ditto' : '', "class='form-control chosen'");?> + company->create);?> +
    +
    ' style='overflow:visible'> 1 ? 'ditto' : $deptID, "class='form-control chosen'");?>
    ').addClass(i.attr("class")).append(n.clone())).insertAfter(i)),h){var d=c[0].getBoundingClientRect();l.css({left:d.left,width:c.width(),overflow:"hidden"}),l.find(".fixed-header-copy").css({left:o.left-d.left,position:"relative",minWidth:i.width()}),a||c.data("fixHeaderScroll")||(c.data("fixHeaderScroll",1),i.width()>c.width()&&c.on("scroll",function(){e.fixHeader()}))}else l.css({left:o.left,width:o.width});var u=l.find("th");n.find("th").each(function(e){u.eq(e).css("width",t(this).outerWidth())})}else l.remove()},r.prototype.fixFooter=function(){var e,i=this,n=i.getTable(),o=i.$.find(".table-footer");if(i.isDataTable)e=n[0].getBoundingClientRect();else{var a=n.find("tbody");if(!a.length)return;e=a[0].getBoundingClientRect()}var s=i.options.fixFooter;o.toggleClass("fixed-footer",!!r);var r="function"==typeof s?s(e,o):e.bottom>window.innerHeight-50-("number"==typeof s?s:i.pageFooterHeight||5);o.toggleClass("fixed-footer",!!r),n.toggleClass("with-footer-fixed",!!r),n.trigger("fixFooter",r);var l=t("body"),c=l.hasClass("body-modal");if(r){var h=n.parent(),d=h.is(".table-responsive");o.css({bottom:i.pageFooterHeight||0,left:d?h[0].getBoundingClientRect().left:e.left,width:d?h.width():e.width}),c&&l.css("padding-bottom",40)}else o.css({width:"",left:0,bottom:0}),c&&l.css("padding-bottom",0)},r.prototype.checkAll=function(e){var i=this,n=i.$.find(i.isDataTable?".fixed-left tbody>tr":"tbody>tr");n.each(function(){i.checkRow(t(this),e,!0)}),i.updateCheckUI()},r.prototype.checkRow=function(i,n,o){var a=this,s=a.getTable();a.isDataTable&&!i.is(".datatable-row-left")&&(i=s.find('.datatable-row-left[data-index="'+i.data("index")+'"]'));var r=i.find('input[type="checkbox"]');if(r.length&&!r.is(":disabled")){n===e&&(n=!r.is(":checked")),a.isDataTable?s.find('.datatable-row[data-index="'+i.data("index")+'"]').toggleClass("checked",n):i.toggleClass("checked",n);var l=i.data("id");this.checkItems[l]=n,r.prop("checked",n).trigger("change"),o||(i.hasClass("table-parent")&&s.find((a.isDataTable?".fixed-left ":"")+"tbody>tr.parent-"+l).each(function(){a.checkRow(t(this),n,!0)}),a.updateCheckUI())}},r.prototype.updateCheckUI=function(){var e=this,i=e.getTable(),n=i.find(e.isDataTable?".fixed-left tbody>tr":"tbody>tr").not(".group-summary"),o=!1,a=null,s=0,r=!1,l=n.length;n.each(function(n){var c=t(this),h=c.find('input[type="checkbox"]');if(!h.length)return void l--;r=h.is(":checked");var d=e.isDataTable?i.find('.datatable-row[data-index="'+c.data("index")+'"]'):c;d.toggleClass("checked",r),d.toggleClass("row-check-begin",r&&!o),a&&a.toggleClass("row-check-end",!r&&o),r&&(s+=1),a=d,o=r,l===n+1&&d.toggleClass("row-check-end",r)}),e.$.toggleClass("has-row-checked",s>0).find(".check-all").toggleClass("checked",!(!l||s!==l)),e.updateStatistic(),e.options.onCheckChange&&e.options.onCheckChange(),i.trigger("checkChange")},r.DEFAULTS={checkable:!0,checkOnClickRow:!0,ajaxForm:!1,selectable:!0,fixHeader:!a,fixFooter:!a,iframeWidth:900,replaceId:"self", -nestLevelIndent:18,nested:!1,preserveNested:!0,hot:!1,iframeModalTrigger:".iframe:not(.disabled,[disabled])"},t.fn.table=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new r(this,a)),"string"==typeof e&&o[e]()})},r.NAME=i,t.fn.table.Constructor=r,t(function(){t('[data-ride="table"]').table()})}(jQuery,void 0),function(t,e,i){t.fn._ajaxForm=t.fn.ajaxForm;var n={timeout:e.config?e.config.timeout:0,dataType:"json",method:"post"},o="";t.fn.enableForm=function(e,n,o){return e===i&&(e=!0),this.each(function(){var i=t(this);n||i.find('[type="submit"]').attr("disabled",e?null:"disabled"),!o&&i.hasClass("load-indicator")&&i.toggleClass("loading",!e),i.toggleClass("form-disabled",!e)})},t.enableForm=function(e,i,n,o){"string"==typeof e||e instanceof t?e=t(e):(o=n,n=i,i=e,e=t("form")),e.enableForm(i!==!1,n,o)},t.disableForm=function(e,i,n){t.enableForm(e,!1,i,n)};var a=function(e,i,n){i=i||"show",t.zui.messager?(n?n.html=!0:n={html:!0},e=e.toString().replace(/\n/g,"
    "),t.zui.messager[i](e,n)):alert(e)};t.ajaxForm=function(s,r){var l=t(s);if(l.length>1)return l.each(function(){t.ajaxForm(this,r)});"function"==typeof r&&(r={complete:r}),r=t.extend({},n,l.data(),r);var c=r.beforeSubmit,h=r.error,d=r.success,u=r.finish;delete r.finish,delete r.success,delete r.onError,delete r.beforeSubmit,r=t.extend({beforeSubmit:function(n,a,s){if((c&&c(n,a,s))===!1)return!1;l.removeClass("form-watched").enableForm(!1);var r={},h=a.find('[type="file"]');r.fileapi=h.length&&h[0].files!==i,r.formdata=e.FormData!==i;var d=r.fileapi&&a.find('input[type="file"]:enabled').filter(function(){return""!==t(this).val()}),u=d.length,p="multipart/form-data",f=a.attr("enctype")==p||a.attr("encoding")==p,g=r.fileapi&&r.formdata,m=u&&!g||f&&!r.formdata;m&&(""==o&&(o=s.url),s.url!=o&&(s.url=o),s.url=s.url.indexOf("&")>=0?s.url+"&HTTP_X_REQUESTED_WITH=XMLHttpRequest":s.url+"?HTTP_X_REQUESTED_WITH=XMLHttpRequest")},success:function(i,n,o){if((d&&d(i,n,o,l))!==!1){try{"string"==typeof i&&(i=JSON.parse(i))}catch(s){}if(null===i||"object"!=typeof i)return i?alert(i):a("No response.","danger");var c=r.responser?t(r.responser):l.find(".form-responser");c.length||(c=t("#responser"));var h=i.message,p=function(){var n=i.callback;if(n)if("object"==typeof n){var o=n.target?e[n.target]:e,a=o[n.name];a.apply(l,Array.isArray(n.params)?n.params:[n.params])}else{var s=n.indexOf("("),r=(s>0?n.substr(0,s):n).split("."),c=e,h=r[0];r.length>1&&(h=r[1],"top"===r[0]?c=e.top:"parent"===r[0]&&(c=e.parent));var a=c[h];if("function"==typeof a){var d=[];return s>0&&")"==n[n.length-1]&&(d=t.parseJSON("["+n.substring(s+1,n.length-1)+"]")),d.push(i),a.apply(l,d)}}};if("success"===i.result){var f=r.locate||i.locate,g=r.closeModal||i.closeModal,m=r.ajaxReload||i.ajaxReload;if(l.enableForm(!0,!!(f||g||m)),h){var v=l.find('[type="submit"]').first(),y=!1;v.length&&(v.popover({container:"body",trigger:"manual",content:h,tipClass:"popover-in-modal popover-success popover-form-result",placement:i.placement||v.data("placement")||r.popoverPlacement||"right"}).popover("show"),setTimeout(function(){v.popover("destroy")},r.popoverTime||2e3),y=!0),c.length&&(c.html(''+h+"").show().delay(3e3).fadeOut(100),y=!0),y||a(h,"success")}if(u)return u(i,!0,l);if(g&&setTimeout(t.zui.closeModal,"number"==typeof g?g:r.closeModalTime||2e3),p()===!1)return;if(f)if("loadInModal"==f){var b=t(".modal");setTimeout(function(){b.load(b.attr("ref"),function(){t(this).find(".modal-dialog").css("width",t(this).data("width")),t.zui.ajustModalPosition()})},1e3)}else"parent"===f||"top"===f?e[f]&&setTimeout(function(){e[f].location.reload()},1200):"reload"===f?setTimeout(function(){e.location.href=e.location.href},1200):setTimeout(function(){t.apps?t.apps.open(f):e.location.href=f},1200);if(m){var w=t(m);w.length&&w.load(e.location.href+" "+m,function(){w.find('[data-toggle="modal"]').modalTrigger()})}}else{if(l.enableForm(),"string"==typeof h)c.length?c.html(''+h+"").show().delay(3e3).fadeOut(100):a(h,"danger");else if("object"==typeof h){var x=!1,C=[];t.each(h,function(e,i){var n=t.isArray(i)?i.join(""):i,o=t("#"+e);if(!o.length)return void C.push(n);var a=e+"Label",s=t("#"+a);if(!s.length){var r=o.closest(".input-group").length,l=o.closest("td").length;s=t('
    ').appendTo(l?o.closest("td"):r?o.closest(".input-group").parent():o.parent())}s.empty().append(n),o.addClass("has-error");var c=function(){var e=t("#"+a);if(e.length)return e.remove(),o.removeClass("has-error"),!0};o.on("change input mousedown",c);var h=t("#"+e+"_chosen");if(h.length&&h.find(".chosen-single,.chosen-choices").addClass("has-error").on("mousedown",function(){c()===!0&&t(this).removeClass("has-error")}),!x&&!o.data("datetimepicker")){var d=o[0];if(o.hasClass("chosen"))o.trigger("chosen:activate").trigger("chosen:open"),d=o.parent().find(".chosen-container")[0];else if(o.is("textarea")&&o.data("keditor")){var u=o.data("keditor");u.focus(),u.edit.doc.body.focus(),d=o.parent().find(".ke-container")[0]}else o.focus();d.scrollIntoView&&d.scrollIntoView(),x=!0}}),C.length&&a(C.join(""),"danger")}if(u)return u(i,!1,l);if(p()===!1)return}}},error:function(t,i,n){if((h&&h(t,i,n,l))!==!1){l.enableForm();var o="timeout"==i||"error"==i?e.lang?e.lang.timeout:i:t.responseText+i+n;a(o,"danger")}}},r),l._ajaxForm(r).data("zui.ajaxform",!0),l.on("click","[data-form-action]",function(){l.attr("action",t(this).data("formAction")).submit()})},t.setAjaxForm=function(e,i,n){t.ajaxForm(e,t.isPlainObject(i)?i:{finish:i,beforeSubmit:n})},t.fn.ajaxForm=function(e){return this.each(function(){t.ajaxForm(this,e)})},t.fn.setInputRequired=function(){return this.each(function(){var e=t(this),i=e.parent();i.is(".input-control,td")?i.addClass("required"):e.is(".chosen")?e.attr("required",null).next(".chosen-container").addClass("required"):i.addClass("required"),e.attr("required",null);var n=i.closest(".input-group");n.length&&1===n.find(".required,input[required],select[required]").length&&n.addClass("required")})},t(function(){t('.form-ajax,form[data-type="ajax"]').ajaxForm(),setTimeout(function(){var i=e.config.requiredFields,n=t("form");i&&(i=i.split(",")),i&&i.length&&t.each(i,function(t,e){n.find("#"+e).attr("required","required")}),n.find("input[required],select[required],textarea[required]").setInputRequired()},400),t('form[target="hiddenwin"]').on("submit",function(){var e=t(this);e.data("zui.ajaxform")||e.enableForm(!1).data("disabledTime",(new Date).getTime())}).on("click",function(){var e=t(this),i=e.data("disabledTime");i&&(new Date).getTime()-i>1e4&&e.enableForm(!0).data("disabledTime",null)})})}(jQuery,window,void 0),function(t){"use strict";var e="zui.searchList",i=function(t,e){if(t&&t.length)for(var i=0;i
    ').append(s)),i.$menu.append(s),i.$menu.removeClass("loading"),i.isLoaded=!0,e&&e(!0)},error:function(){i.$menu.removeClass("loading").append('
    '+(n.errorText||window.lang&&window.lang.timeout)+"
    "),e&&e(!1)}},n.ajax))},n.prototype.scrollTo=function(t){t.length&&t[0].scrollIntoViewIfNeeded&&t[0].scrollIntoViewIfNeeded({behavior:"smooth"})},n.prototype.getItems=function(){return this.$.find(this.options.selector).addClass("search-list-item")},n.prototype.getActiveItem=function(){return this.getItems().filter(".active:first")},n.prototype.search=function(e){var n=this,o=void 0===e||null===e||""===e;n.$.toggleClass("has-search-text",!o);var a=n.getItems().removeClass("active");if(o)a.removeClass("hidden");else{var s=e.trim().split(" ");a.each(function(){var e=t(this),n=(e.text()+" "+(e.data("key")||e.data("filter")||"")).trim();e.toggleClass("hidden",!i(s,n))})}n.scrollTo(a.not(".hidden").first().addClass("active")),n.$.trigger("onSearchComplete",e)},n.DEFAULTS={selector:".list-group a:not(.not-list-item)",searchBox:".search-box",onSelectItem:null},t.fn.searchList=function(i){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof i&&i;a||o.data(e,a=new n(this,s)),"string"==typeof i&&a[i]()})},n.NAME=e,t.fn.searchList.Constructor=n,t(function(){t('[data-ride="searchList"]').searchList()})}(jQuery),function(t){"use strict";var e="zui.labelSelector",i=function(n,o){var a=this;a.name=e,a.$=t(n),o=a.options=t.extend({},i.DEFAULTS,this.$.data(),o),a.$.hide(),a.update()};i.prototype.select=function(t){t+="",this.$wrapper.find(".label.active").removeClass("active"),this.$wrapper.find('.label[data-value="'+t+'"]').addClass("active"),this.$.val(t).trigger("change")},i.prototype.update=function(){var e=this,i=e.options,n=e.$wrapper;if(!n){if(i.wrapper)n=t(i.wrapper);else{var o=e.$.next();n=o.hasClass(".label-selector")?o:t('
    ')}n.parent().length||e.$.after(n),e.$wrapper=n,n.on("click",".label",function(i){var n=e.$.val(),o=t(this).data("value");e.hasEmptyValue!==!1&&o==n&&(o=e.hasEmptyValue),e.select(o),i.preventDefault()})}n.empty();var a=e.$.val();e.hasEmptyValue=!1,e.$.children("option").each(function(){var e=t(this),o={label:e.text(),value:e.val()},s=(""===o.value||"0"===o.value)&&!o.label,r=t(i.labelTemplate||'');i.labelClass&&!s&&r.addClass(i.labelClass),i.labelCreator?r=i.labelCreator(r):(r.data("option",o).attr("data-value",o.value),s?r.addClass("empty").append(''):r.text(o.label).toggleClass("active",a===o.value)),n.append(r)})},i.DEFAULTS={},t.fn.labelSelector=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.labelSelector.Constructor=i,t(function(){t('[data-provide="labelSelector"]').labelSelector()})}(jQuery),function(t){"use strict";var e="zui.fileInput",i=t.BYTE_UNITS={B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776},n=t.formatBytes=function(t,e,n){return void 0===e&&(e=2),n||(n=ti.fileMaxSize||e.push(s)}t.length!=e.length&&(window.bootbox||window).alert(i.fileSizeError.format(n(i.fileMaxSize))),e.forEach(function(t){o.add(t)})})};r.prototype.add=function(t){var e=this,i=e.options,n=e.$template.clone();"before"===i.appendWay?e.$.prepend(n):e.$.append(n),n.fileInput({file:t,fileMaxSize:i.eachFileMaxSize,fileSizeError:i.fileSizeError,onDelete:function(t){t.$.remove(),e.options.onDelete&&e.options.onDelete(t,e)},onSelect:function(t,i){e.options.onSelect&&e.options.onSelect(t,i,e)}})},r.DEFAULTS={fileMaxSize:0,eachFileMaxSize:0,appendWay:"after",fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInputList=function(e){return this.each(function(){var i=t(this),n=i.data(s),o="object"==typeof e&&e;n||i.data(s,n=new r(this,o)),"string"==typeof e&&n[e]()})},r.NAME=s,t.fn.fileInputList.Constructor=r,t(function(){t('[data-provide="fileInputList"]').fileInputList()})}(jQuery),function(t){window.config||(window.config={}),t.createLink=window.createLink=function(e,n,o,a,s,r,l,c){if("object"==typeof e)return t.createLink(e.moduleName,e.methodName,e.vars,e.viewType,e.isOnlyBody,e.hash,e.tid,e.params);if(c&&(c.tid&!l&&(l=c.tid),void 0!==c.isOnlyBody&&void 0===s&&(s=c.isOnlyBody)),t.tabSession&&!l&&(l=t.tabSession.getTid()),a||(a=config.defaultView),s||(s=!1),o)for("string"==typeof o&&(o=o.split("&")),i=0;i'+d+"")}}t.val()||(time=e(a.format("hh:mm")),time=time-time%10+10,t.val(n(time)))};t.fn.timeSpanControl=function(i){return this.each(function(){var s=t(this),r=t.extend({},i,s.data()),l=s.find('[name="begin"],.control-time-begin'),c=s.find('[name="end"],.control-time-end'),h=function(){var t=l.val();if(s.find(".hide-empty-begin").toggleClass("hide",!t),t){var i=n(e(t)+30);c.find('option[value="'+i+'"]').length&&c.val(i),r.onChange&&r.onChange(c,i)}};if(s.data("timeSpanControlInit")){if(r.begin){var d=o(r.begin).format("hh:mm");l.find('option[value="'+d+'"]').length&&l.val(d),r.onChange&&r.onChange(l,d)}if(r.end){var u=o(r.end).format("hh:mm");c.find('option[value="'+u+'"]').length&&c.val(u),r.onChange&&r.onChange(c,u)}}else l.on("change",h),a(l,r.begin),a(c,r.end),s.data("timeSpanControlInit",!0);r.end||h()})},t.timeSpanControl={convertTimeToNum:e,convertNumToTime:n,initTimeSelect:a,createTime:o};var s=t.setSearchType=function(e,i){var n=t("#searchType");e||(e=n.val()),e=e||"bug",n.val(e);var o=t("#searchTypeMenu");o.find("li.selected").removeClass("selected");var a=o.find('a[data-value="'+e+'"]'),s=a.text();a.parent().addClass("selected"),t("#searchTypeName").text(s),i||t("#searchInput").focus()};t.gotoObject=function(e,i){if(e||(e=t("#searchType").val()),i||(i=t("#searchInput").val()),i&&e)if(i=i.replace(/[^\d]/g,"")){var n=e.split("-");e=n[0];var o=n.length>1?n[1]:"testsuite"===e?"library":"view",a=t.createLink(e,o,"id="+i);t.apps?t.apps.open(a):window.location.href=a}else{var s={zh_cn:"请输入数字ID进行搜索",zh_tw:"請輸入數值ID行搜索"};alert(lang.searchTip||s[t.zui.clientLang()]||"Please enter a numberic id to search")}t("#searchInput").val(i).focus()},t(function(){s(null,!0),t(document).on("keydown",function(e){e.ctrlKey&&71===e.keyCode&&(t("#searchInput").val("").focus(),e.stopPropagation(),e.preventDefault())})}),t.removeAnchor=window.removeAnchor=function(t){var e=t.lastIndexOf("#");return e>-1?t.substr(0,e):t},t.refreshPage=function(t){t?window.top.location.reload():window.location.reload()},t.selectLang=window.selectLang=function(e){t.cookie("lang",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectLang"),t.refreshPage(1)},t.selectTheme=window.selectTheme=function(e){t.cookie("theme",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectTheme"),t.refreshPage(1)},t.zui.Picker&&(t.extend(t.zui.Picker.DEFAULTS,{optionRender:function(e,i,n){if("user"===n.options.type){var o=n.options.users;if(!o)return;var a=o[i.value];if(!a)return;if(e.find(".picker-option-text").text(a.realname||a.account),e.hasClass("picker-user-option"))return;return e.prepend(t('
    ').avatar({user:a})),a.deptName&&e.append(t('').text(a.deptName)),a.roleName&&e.append(t('').text(a.roleName)),e.addClass("picker-user-option")}},checkable:!0,maxListCount:500,disableScrollOnShow:!1}),t.zui.setUserPickerInfos=function(e){t.zui.Picker.DEFAULTS.users=t.extend({},t.zui.Picker.DEFAULTS.users,e)},t(function(){t(".picker-select[data-pickertype!='remote']").picker({chosenMode:!0}),t("[data-pickertype='remote']").each(function(){var e=t(this).attr("data-pickerremote");t(this).picker({chosenMode:!0,remote:e})}),window.pickerUsers&&t.zui.setUserPickerInfos(window.pickerUsers),t(".user-picker").picker({type:"user"})})),t.chosenDefaultOptions={middle_highlight:!0,disable_search_threshold:1,compact_search:!0,allow_single_deselect:!0,placeholder_text_single:" ",placeholder_text_multiple:" ",search_contains:!0,max_drop_width:500,max_drop_height:245,no_wrap:!0,drop_direction:function(){var e=t(this.container).closest(".table-responsive:not(.scroll-none)");if(e.length){if(this.drop_directionFixed)return this.drop_directionFixed;e.css("position","relative");var i="down",n=this.container.find(".chosen-drop"),o=this.container.position(),a=n.outerHeight();return o.top>=a&&o.top+31+a>e.outerHeight()&&(i="up"),this.drop_directionFixed=i,i}return"auto"}},t.chosenSimpleOptions=t.extend({},t.chosenDefaultOptions,{disable_search_threshold:6}),t.fn._chosen=t.fn.chosen,t.fn.chosen=function(e){return"string"==typeof e?this._chosen(e):this.each(function(){var i=t(this).addClass("chosen-controled");return i._chosen(t.extend({},i.hasClass("chosen-simple")?t.chosenSimpleOptions:t.chosenDefaultOptions,i.data(),e))})},t.fn.chosen.Constructor=t.fn._chosen.Constructor,t(function(){t(".chosen,.chosen-simple").each(function(){var e=t(this);e.closest(".template").length||e.chosen()})}),t.extend(t.fn.pager.Constructor.DEFAULTS,{maxNavCount:8,prevIcon:"icon-angle-left",nextIcon:"icon-angle-right",firstIcon:"icon-first-page",lastIcon:"icon-last-page",navEllipsisItem:"…",menuDirection:"dropup",pageSizeOptions:[5,10,15,20,25,30,35,40,45,50,100,200,500,1e3,2e3],elements:["total_text","size_menu","first_icon","prev_icon",'
    {page}/{totalPage}
    ',"next_icon","last_icon"],onPageChange:function(e,i){e.recPerPage!==i.recPerPage&&t.cookie(this.options.pageCookie,e.recPerPage,{expires:config.cookieLife,path:config.webRoot}),e.recPerPage!==i.recPerPage&&(window.location.href=this.createLink())}}),t.extend(!0,t.zui.Messager.DEFAULTS,{cssClass:"messagger-zt",icons:{success:"check-circle",info:"chat-line",warning:"exclamation-sign",danger:"exclamation-sign"}}),t.fn.reverseOrder=function(){return this.each(function(){var e=t(this);e.prependTo(e.parent())})};var r=function(e,i){var n=t(e);if(!n.data("historiesInited")){n.data("historiesInited",1),i=t.extend({},n.data(),i);var o=n.find(".histories-list"),a=!0,s=!1;n.on("click",".btn-reverse",function(){o.children("li").reverseOrder(),a=!a,t(this).find(".icon").toggleClass("icon-arrow-up",a).toggleClass("icon-arrow-down",!a);var e="#lastComment",i=t(e);i.length&&window.KindEditor&&(window.KindEditor.remove(e),i.kindeditor())}).on("click",".btn-expand-all",function(){var e=t(this).find(".icon");s=!s,e.toggleClass("icon-plus",!s).toggleClass("icon-minus",s),o.children("li").toggleClass("show-changes",s)}).on("click",".btn-expand",function(){t(this).closest("li").toggleClass("show-changes")}).on("click",".btn-strip",function(){var e=t(this),n=e.find(".icon"),o=n.hasClass("icon-code");n.toggleClass("icon-code",!o).toggleClass("icon-text",o),e.attr("title",o?i.original:i.textdiff),e.closest("li").toggleClass("show-original",o)}),o.find(".btn-strip").attr("title",i.original);var r=n.find(".modal-comment").modal({show:!1}).on("shown.zui.modal",function(){var t=r.find("#comment");t.length&&(t.focus(),window.editor&&window.editor.comment&&window.editor.comment.focus())}).on("show.zui.modal",function(){var e=r.find("#comment");e.length&&!e.data("keditor")&&t.fn.kindeditor&&e.kindeditor()});n.on("click",".btn-comment",function(t){r.modal("toggle"),t.preventDefault()}).on("click",".btn-edit-comment,.btn-hide-form",function(){t(this).closest("li").toggleClass("show-form")});var l=n.find(".comment-edit-form");l.ajaxForm({success:function(t,e,i,n){setTimeout(function(){l.closest("li").removeClass("show-form")},2e3)}})}};t.fn.histories=function(t){return this.each(function(){r(this,t)})},t(function(){t(".histories").histories()});var l=0,c=0;t.toggleSidebar=function(e){var i=t("#sidebar");if(i.length){var n=t("main");if(void 0===e)e=n.hasClass("hide-sidebar");else if(e&&!n.hasClass("hide-sidebar"))return;n.toggleClass("hide-sidebar",!e),clearTimeout(l),t.zui.store.set(c,e);var o=i.children(".cell"),a={overflow:"visible",maxHeight:"initial"};e?(i.addClass("showing"),l=setTimeout(function(){i.removeClass("showing"),i.trigger("sidebar.toggle",e)},210)):(i.trigger("sidebar.toggle",e),t(window).width()<1900&&(a={overflow:"hidden",maxHeight:t(window).height()-45})),o.css(a)}};var h=t.initSidebar=function(){var e=t("#sidebar");if(e.length){if(e.data("init"))return!0;c="sidebar:"+(e.data("id")||config.currentModule+"/"+config.currentMethod);var i=t("main");if(i.length){i.on("click",".sidebar-toggle",function(){t.toggleSidebar(i.hasClass("hide-sidebar"))});var n=t.zui.store.get(c,e.data("hide")!==!1);n===!1&&e.addClass("no-animate"),t.toggleSidebar(n),n===!1&&setTimeout(function(){e.removeClass("no-animate")},500);var o=e.find(".sidebar-toggle");if(o.length){var a=function(){var e=o[0].getBoundingClientRect(),i=t(window).height(),n=Math.max(0,Math.floor(Math.min(i-40,e.top+e.height)-Math.max(e.top,0))/2)+(e.top<0?0-e.top:0);o.removeClass("fade").find(".icon").css("top",n+(t.zui.browser.isIE()?(i-80)/2:0))};a(),e.data("init",1).on("sidebar.toggle",a);var s=t.zui.browser.isIE()?1500:0,r=0,l=null,h=function(){var t=Date.now();return l&&(clearTimeout(l),l=null),t-rtr input[type="checkbox"]:checked');i.each(function(){var i=parseInt(t(this).val(),10);NaN!==i&&e.push(i)}),t.cookie("checkedItem",e.join(","),{expires:config.cookieLife,path:config.webRoot})},t.extend(t.fn.modal.bs.Constructor.DEFAULTS,{scrollInside:!0,backdrop:"static",headerHeight:100}),t.extend(t.zui.ModalTrigger.DEFAULTS,{scrollInside:!0,backdrop:"static"}),t.fn.initIframeModal=function(){return this.each(function(){var e=t(this);if(!e.is("[disabled],.disabled")&&!e.parents('[data-ride="table"],.skip-iframe-modal').length){var i={type:"iframe"};e.hasClass("export")&&t.extend(i,{width:800,shown:setCheckedCookie},e.data()),e.modalTrigger(i)}})},t(function(){t("a.iframe,.export").initIframeModal()}),t.fixedTableHead=window.fixedTableHead=function(e,i){var n=t(e);if(n.is("table")||(n=n.find("table")),n.length){var o=t(i||window),a=null,s=function(){var e=n.children("thead"),i=e[0].getBoundingClientRect(),o=n.next(".fixed-head-table");if(i.top<0){var s=e.width();if(o.length){if(a!==s){a=s;var r=o.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())})}}else{var o=t("
    ").addClass(n.attr("class")),l=e.clone(),r=l.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())}),o.append(l).insertAfter(n)}o.css({left:i.left,width:i.width}).show()}else o.hide()};o.on("scroll",s).on("resize",s),s()}},t(document).on("click","tr[data-url]",function(){var e=t(this),i=e.data("href")||e.data("url");i&&(window.location.href=i)}),"yes"===config.onlybody&&self===parent&&(window.location.href=window.location.href.replace("?onlybody=yes","").replace("&onlybody=yes","")),t(function(){t("body").addClass("m-{currentModule}-{currentMethod}".format(config))});var d,u,p,f,g,m=function(){d||(d=t("#subNavbar"),u=t("#pageNav"),p=t("#pageActions"),f=d.children(".nav"),g=f.outerWidth());var e=d.outerWidth(),i=u.outerWidth()||0,n=p.outerWidth()||0;if(i=i?i+15:0,n=n?n+15:0,!i&&!n)return void f.css({maxWidth:null,left:null,position:"static"});var o=Math.max(300,e-i-n),a=Math.min(o,g),s=(e-a)/2,r=i&&s.btn-toolbar");if(e.length){var i,n,o=e.children(),a=o.length,s=!1,r=null;if(a)for(o.each(function(e){i=t(this),n=i.is(".divider"),n&&!r&&i.hide(),s||n||(s=!0),r=n?null:i,!n||e!==a-1&&0!==e||i.hide()});i.length&&i.is(".divider");)i=i.hide().prev();s||e.hide()}};t(function(){t(".input-group,.btn-group").fixInputGroup(), -x()}),window.holders&&t.each(window.holders,function(e){var i=t("#"+e);i.length&&i.is("input")&&i.attr("placeholder",window.holders[e])}),t(function(){var e=t(".table-responsive"),i=t.fixTableResponsive=function(){e.each(function(){this.scrollHeight-3<=this.clientHeight&&this.scrollWidth-3<=this.clientWidth?t(this).addClass("scroll-none").css("overflow","visible"):t(this).removeClass("scroll-none").css("overflow","auto")})};e.length&&(t(window).on("resize",i),setTimeout(i,100))});var C=function(){var e=this,i=t(e),n=i.closest("tr").find("textarea");if(n.length){var o=32;n.each(function(){var e=t(this).closest("td"),i=e.css("height");e.css("height",this.style.height),this.style.height="auto";var n=this.value?this.scrollHeight+2:32;o=Math.max(o,n),e.css("height",i)}),n.css("height",o)}else{e.style.height="auto";var a=e.value?e.scrollHeight+2:32;e.style.height=a+"px"}};t.autoResizeTextarea=function(e){t(e).each(C)},t(function(){t("textarea.autosize").each(C),t(document).on("input paste change","textarea.autosize",C)}),t(function(){var e=t("#dropMenu,.drop-menu");e.length&&e.on("click",".toggle-right-col",function(e){t(this).closest("#dropMenu,.drop-menu").toggleClass("show-right-col"),e.stopPropagation(),e.preventDefault()})});var _="undefined"!=typeof InstallTrigger;t.zui.browser.firefox=_,t("html").toggleClass("is-firefox",_).toggleClass("not-firefox",!_),t(function(){var e=t("#mainContent>.main-col"),i=e.children(".main-actions");if(i.length){var n=i.prev();if(i.length&&n.length){t('
    ').css("height",i.outerHeight()).insertAfter(i);var o=0,a=function(){var e=n[0].getBoundingClientRect(),s=e.top+e.height+120>t(window).height();if(t("body").toggleClass("main-actions-fixed",s),s){var r=n.width();r?i.width(r):o<10&&setTimeout(a,1e3)}o++};t.resetToolbarPosition=a,a(),t(window).on("resize scroll",a)}}}),t(document).on("show.zui.modal",function(e){t("body.body-modal").length&&window.parent&&window.parent!==window&&t(e.target).is(".modal")&&window.parent.$("body").addClass("hide-modal-close")}).on("hidden.zui.modal",function(e){t("body.body-modal").length&&window.parent&&window.parent!==window&&window.parent.$("body").removeClass("hide-modal-close")}).on("loaded.zui.modal",function(e){t("body").removeClass("hide-modal-close")}),t(function(){var e=t(".dropdown-menu.with-search");e.length&&(e.find(".menu-search").on("click",function(t){return t.stopPropagation(),!1}),e.on("keyup change paste","input",function(){var e=t(this),i=e.closest(".dropdown-menu.with-search"),n=e.val().toLowerCase(),o=i.find(".option");""==n?o.removeClass("hide"):o.each(function(){var e=t(this);e.toggleClass("hide",e.text().toString().toLowerCase().indexOf(n)<0&&e.data("key").toString().toLowerCase().indexOf(n)<0)})}),e.parents(".dropdown-submenu").one("mouseenter",function(){var e=t(this).find(".dropdown-list")[0];e&&e.getBoundingClientRect&&setTimeout(function(){var i=270,n=e.getBoundingClientRect();n.top<0&&(i=Math.min(270,n.height)+n.top),e.style.maxHeight=Math.min(270,i,t(window).height()-28)+"px"},50)})),t(".dropdown-menu.with-search .menu-search").on("click",function(t){return t.stopPropagation(),!1})})}(jQuery),function(t){function e(){if(!config.skipRedirect&&!window.skipRedirect){var e=window.parent,i=config.currentModule,n=config.currentMethod;if("file"!==i||"download"!==n){var o="index"===i&&"index"===n,a="#_single"===location.hash||/(\?|\&)_single/.test(location.search)||o||!t("#mainHeader,#editorNav").length||"tutorial"===i||"install"===i||"upgrade"===i||"user"===i&&("login"===n||"deny"===n)||"my"===i&&"changepassword"===n||t("body").hasClass("allow-self-open"),s=location.href;if(e===window&&!a){var r=location.pathname+location.search+location.hash;return void(location.href=t.createLink("index","index","")+"#app="+encodeURIComponent(r))}if(e!==window&&e.$.apps){o&&e.location.reload();var l=window.name;if(0===l.indexOf("app-")){t.apps=window.apps=e.$.apps;var c=l.substring(4);t.appCode=c,t(document).on("click",function(t){var i=e.document.getElementById(window.name);if(i){var n=e.document.getElementById(i.name)||i;if(n){var o;"function"==typeof Event?o=new Event(t.type,{bubbles:!0}):(o=document.createEvent("Event"),o.initEvent(t.type,!0,!0)),n.dispatchEvent(o)}}}).on("click","a,.open-in-app,.show-in-app",function(e){var i=t(this);if(!i.is("[data-modal],[data-toggle],[data-ride],[data-tab],.iframe,.not-in-app,[target]")&&!i.data("zui.modaltrigger")){var n=i.hasClass("show-in-app")?"":i.attr("href")||(i.is("a")?"":i.data("url")),o=i.data("app")||i.data("group");if(n){if(0===n.indexOf("javascript:")||"#"===n[0])return;var a=t.parseLink(n);if(a.external||"file"===a.moduleName&&"download"===a.methodName)return;if("index"===a.moduleName&&"index"===a.methodName)return window.location.reload(),void e.preventDefault()}else if(!o)return;o||(o=t.apps.getAppCode(n)),o&&("help"===o&&(t.apps.appsMap.help.text=i.text(),t.apps.appsMap.help.url||(t.apps.appsMap.help.url=n)),t.apps.open(n,o)&&e.preventDefault())}}),t.apps.updateUrl(c,s,document.title)}}}}}function i(){var e=t("#navbar>.nav");if(e.length){var i=t("#heading"),n=+i.css("left").replace("px",""),o=i.outerWidth(),a=e.width(),s=t("#mainHeader>.container").width()-2*n,r=Math.floor((s-a)/2);e.css("marginLeft",r>>0;if(0===o)return!1;for(var a=0|e,s=Math.max(a>=0?a:o-Math.abs(a),0);s1&&("?"===e[0]&&(e=e.substr(1)),e.split("&").forEach(function(t){var e=t.split("=",2);if(e.length>1)try{i[e[0]]=decodeURIComponent(e[1])}catch(n){i[e[0]]=""}else i[e[0]]=""})),t?i[t]:i},t.parseLink=function(e){if(!e)return{};var i=0===e.indexOf("http:")||0===e.indexOf("https:");if(i){var n=window.location.origin;if(e.indexOf(n)<0)return{external:!0,url:e};e=e.substr((n+config.webRoot).length)}var o=e.split("#"),a=o[0].split("?"),s=a[1],r=s?t.getSearchParam("",s):{},l=a[0],c={url:e,isOnlyBody:"yes"===r.onlybody,vars:[],hash:o[1]||"",params:r,tid:r.tid||""};if("GET"===config.requestType){c.moduleName=r[config.moduleVar]||"index",c.methodName=r[config.methodVar]||"index",c.viewType=r[config.viewVar]||config.defaultView;for(var h in r)h!==config.moduleVar&&h!==config.methodVar&&h!==config.viewVar&&"onlybody"!==h&&"tid"!==h&&c.vars.push([h,r[h]])}else{var d=l.lastIndexOf("/");d===l.length-1&&(l=l.substr(0,d),d=l.lastIndexOf("/")),d>=0&&(l=l.substr(d+1));var u=l.lastIndexOf(".");u>=0?(c.viewType=l.substr(u+1),l=l.substr(0,u)):c.viewType=config.defaultView;var p=l.split(config.requestFix);if(c.moduleName=p[0]||"index",c.methodName=p[1]||"index",p.length>2)for(var f=2;f.nav>li").length>10&&(i(),t(window).on("resize",i)),setTimeout(n,1e3)})}(jQuery),function(t){"use strict";function e(e,i){"object"!=typeof i&&(i={user:i});var n=t(e);i=t.extend({},n.data(),i);var o=i.user;"string"==typeof o&&(o={account:o});var a={},s=i.size;s&&(a.width=s,a.height=s,a.lineHeight=s,Number.isNaN(+s)||n.addClass("size-"+s));var r=!!o.avatar;if(n.toggleClass("has-image",r).toggleClass("has-text",!r),n.empty(),r)n.append(t("").attr("src",o.avatar));else{var l=t.zui.strCode(o.account)*(i.hueDistance||43)%360;a.background="hsl("+l+","+(i.saturation||"40%")+","+(i.lightness||"60%")+")",Number.isNaN(+s)||(a.fontSize=Math.round(s/2)+"px");var c=o.name||o.realname||o.account;c=/^[\u4e00-\u9fa5\s]+$/.test(c)?c.length<=2?c:c.substring(c.length-2):/^[A-Za-z\d\s]+$/.test(c)?c[0].toUpperCase():c.length<=2?c:c.substring(0,2),n.append(t('').text(c))}return n.css(a)}t.fn.avatar=function(t){return this.each(function(){e(this,t)})}}(jQuery),$.zui.lang("de",{"zui.pager":{pageOfText:"Seite {0}",prev:"Zurück",next:"Nächste Seite",first:"Erste Seite",last:"Letzte Seite","goto":"Goto",pageOf:"Seite {page}",totalPage:"{totalPage} Seiten",totalCount:"Total: {recTotal} Artikel",pageSize:"{recPerPage} Artikel pro Seite",itemsRange:"Seiten {start} bis {end}",pageOfTotal:"Seite {page}/{totalPage}"},"zui.boards":{append2end:"Gehen Sie zum Ende"},"zui.browser":{tip:"Online. Sorgenfrei. Aktualisiere deinen Browser noch heute!"},"zui.calendar":{weekNames:["Son","Mon","Die","Mit","Don","Fri","Sam"],monthNames:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",year:"{0}Jahr",month:"{0}Monat",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Kein Icon]",commonIcons:"Gemeinsame Symbole",webIcons:"Web-Symbol",editorIcons:"Editor-Symbol",directionalIcons:"Pfeil Zusammenfluss",otherIcons:"Andere Symbole"},"zui.colorPicker":{errorTip:"Kein gültiger Farbwert"},"zui.datagrid":{errorCannotGetDataFromRemote:"Daten vom Remote-Server ({0}) können nicht abgerufen werden.",errorCannotHandleRemoteData:"Die vom Remote-Server zurückgegebenen Daten können nicht verarbeitet werden."},"zui.guideViewer":{prevStep:"Vorheriger Schritt",nextStep:"Nächster Schritt"},"zui.tabs":{reload:"Neu laden",close:"Schliessen",closeOthers:"Schließen Sie andere Registerkarten",closeRight:"Schließen Sie die rechte Registerkarte",reopenLast:"Letzten geschlossenen Tab wiederherstellen",errorCannotFetchFromRemote:"Inhalt kann nicht vom Remote-Server abgerufen werden ({0})."},"zui.uploader":{},datetimepicker:{days:["Sonntag","Montag","Diensteg","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fri","Sam"],daysMin:["Son","Mon","Die","Mit","Don","Fri","Sam"],months:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",suffix:[],meridiem:[]},chosen:{no_results_text:"Nicht gefunden"},bootbox:{OK:"OK",CANCEL:"Stornieren",CONFIRM:"Bestätigen"}}),$.zui.lang("fr",{"zui.pager":{pageOfText:"Page {0}",prev:"Prev",next:"Suivant",first:"First",last:"Last","goto":"Goto",pageOf:"Page {page}",totalPage:"{totalPage} pages",totalCount:"Total: {recTotal} items",pageSize:"{recPerPage} per page",itemsRange:"De {start} à {end}",pageOfTotal:"Page {page} de {totalPage}"},"zui.boards":{append2end:"Aller jusqu'au bout"},"zui.browser":{tip:"Naviguez sans crainte sur Internet. Mettez votre navigateur à jour dès aujourd'hui!"},"zui.calendar":{weekNames:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],monthNames:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",year:"{0} Année",month:"{0} Mois",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Aucune icône]",commonIcons:"Icônes communes",webIcons:"Icône Web",editorIcons:"Icône de l'éditeur",directionalIcons:"Flèche confluence",otherIcons:"Autres icônes"},"zui.colorPicker":{errorTip:"Pas une valeur de couleur valide"},"zui.datagrid":{errorCannotGetDataFromRemote:"Impossible d'obtenir les données du serveur distant ({0}).",errorCannotHandleRemoteData:"Impossible de traiter les données renvoyées par le serveur distant."},"zui.guideViewer":{prevStep:"Étape précédente",nextStep:"Prochaine étape"},"zui.tabs":{reload:"Recharger",close:"Fermer",closeOthers:"Fermez les autres onglets",closeRight:"Fermer l'onglet de droite",reopenLast:"Restaurer le dernier onglet fermé",errorCannotFetchFromRemote:"Impossible d'obtenir le contenu du serveur distant ({0})."},"zui.uploader":{},datetimepicker:{days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",suffix:[],meridiem:[]},chosen:{no_results_text:"Pas trouvé"},bootbox:{OK:"D'accord",CANCEL:"Annuler",CONFIRM:"Confirmer"}}); +nestLevelIndent:20,nested:!1,preserveNested:!0,hot:!1,iframeModalTrigger:".iframe:not(.disabled,[disabled])"},t.fn.table=function(e){return this.each(function(){var n=t(this),o=n.data(i),a="object"==typeof e&&e;o||n.data(i,o=new r(this,a)),"string"==typeof e&&o[e]()})},r.NAME=i,t.fn.table.Constructor=r,t(function(){t('[data-ride="table"]').table()})}(jQuery,void 0),function(t,e,i){t.fn._ajaxForm=t.fn.ajaxForm;var n={timeout:e.config?e.config.timeout:0,dataType:"json",method:"post"},o="";t.fn.enableForm=function(e,n,o){return e===i&&(e=!0),this.each(function(){var i=t(this);n||i.find('[type="submit"]').attr("disabled",e?null:"disabled"),!o&&i.hasClass("load-indicator")&&i.toggleClass("loading",!e),i.toggleClass("form-disabled",!e)})},t.enableForm=function(e,i,n,o){"string"==typeof e||e instanceof t?e=t(e):(o=n,n=i,i=e,e=t("form")),e.enableForm(i!==!1,n,o)},t.disableForm=function(e,i,n){t.enableForm(e,!1,i,n)};var a=function(e,i,n){i=i||"show",t.zui.messager?(n?n.html=!0:n={html:!0},e=e.toString().replace(/\n/g,"
    "),t.zui.messager[i](e,n)):alert(e)};t.ajaxForm=function(s,r){var l=t(s);if(l.length>1)return l.each(function(){t.ajaxForm(this,r)});"function"==typeof r&&(r={complete:r}),r=t.extend({},n,l.data(),r);var c=r.beforeSubmit,h=r.error,d=r.success,u=r.finish;delete r.finish,delete r.success,delete r.onError,delete r.beforeSubmit,r=t.extend({beforeSubmit:function(n,a,s){if((c&&c(n,a,s))===!1)return!1;l.removeClass("form-watched").enableForm(!1);var r={},h=a.find('[type="file"]');r.fileapi=h.length&&h[0].files!==i,r.formdata=e.FormData!==i;var d=r.fileapi&&a.find('input[type="file"]:enabled').filter(function(){return""!==t(this).val()}),u=d.length,p="multipart/form-data",f=a.attr("enctype")==p||a.attr("encoding")==p,g=r.fileapi&&r.formdata,m=u&&!g||f&&!r.formdata;m&&(""==o&&(o=s.url),s.url!=o&&(s.url=o),s.url=s.url.indexOf("&")>=0?s.url+"&HTTP_X_REQUESTED_WITH=XMLHttpRequest":s.url+"?HTTP_X_REQUESTED_WITH=XMLHttpRequest")},success:function(i,n,o){if((d&&d(i,n,o,l))!==!1){try{"string"==typeof i&&(i=JSON.parse(i))}catch(s){}if(null===i||"object"!=typeof i)return i?alert(i):a("No response.","danger");var c=r.responser?t(r.responser):l.find(".form-responser");c.length||(c=t("#responser"));var h=i.message,p=function(){var n=i.callback;if(n)if("object"==typeof n){var o=n.target?e[n.target]:e,a=o[n.name];a.apply(l,Array.isArray(n.params)?n.params:[n.params])}else{var s=n.indexOf("("),r=(s>0?n.substr(0,s):n).split("."),c=e,h=r[0];r.length>1&&(h=r[1],"top"===r[0]?c=e.top:"parent"===r[0]&&(c=e.parent));var a=c[h];if("function"==typeof a){var d=[];return s>0&&")"==n[n.length-1]&&(d=t.parseJSON("["+n.substring(s+1,n.length-1)+"]")),d.push(i),a.apply(l,d)}}};if("success"===i.result){var f=r.locate||i.locate,g=r.closeModal||i.closeModal,m=r.ajaxReload||i.ajaxReload;if(l.enableForm(!0,!!(f||g||m)),h){var v=l.find('[type="submit"]').first(),y=!1;v.length&&(v.popover({container:"body",trigger:"manual",content:h,tipClass:"popover-in-modal popover-success popover-form-result",placement:i.placement||v.data("placement")||r.popoverPlacement||"right"}).popover("show"),setTimeout(function(){v.popover("destroy")},r.popoverTime||2e3),y=!0),c.length&&(c.html(''+h+"").show().delay(3e3).fadeOut(100),y=!0),y||a(h,"success")}if(u)return u(i,!0,l);if(g&&setTimeout(t.zui.closeModal,"number"==typeof g?g:r.closeModalTime||2e3),p()===!1)return;if(f)if("loadInModal"==f){var b=t(".modal");setTimeout(function(){b.load(b.attr("ref"),function(){t(this).find(".modal-dialog").css("width",t(this).data("width")),t.zui.ajustModalPosition()})},1e3)}else"parent"===f||"top"===f?e[f]&&setTimeout(function(){e[f].location.reload()},1200):"reload"===f?setTimeout(function(){e.location.href=e.location.href},1200):setTimeout(function(){t.apps?t.apps.open(f):e.location.href=f},1200);if(m){var w=t(m);w.length&&w.load(e.location.href+" "+m,function(){w.find('[data-toggle="modal"]').modalTrigger()})}}else{if(l.enableForm(),"string"==typeof h)c.length?c.html(''+h+"").show().delay(3e3).fadeOut(100):a(h,"danger");else if("object"==typeof h){var x=!1,C=[];t.each(h,function(e,i){var n=t.isArray(i)?i.join(""):i,o=t("#"+e);if(!o.length)return void C.push(n);var a=e+"Label",s=t("#"+a);if(!s.length){var r=o.closest(".input-group").length,l=o.closest("td").length;s=t('
    ').appendTo(l?o.closest("td"):r?o.closest(".input-group").parent():o.parent())}s.empty().append(n),o.addClass("has-error");var c=function(){var e=t("#"+a);if(e.length)return e.remove(),o.removeClass("has-error"),!0};o.on("change input mousedown",c);var h=t("#"+e+"_chosen");if(h.length&&h.find(".chosen-single,.chosen-choices").addClass("has-error").on("mousedown",function(){c()===!0&&t(this).removeClass("has-error")}),!x&&!o.data("datetimepicker")){var d=o[0];if(o.hasClass("chosen"))o.trigger("chosen:activate").trigger("chosen:open"),d=o.parent().find(".chosen-container")[0];else if(o.is("textarea")&&o.data("keditor")){var u=o.data("keditor");u.focus(),u.edit.doc.body.focus(),d=o.parent().find(".ke-container")[0]}else o.focus();d.scrollIntoView&&d.scrollIntoView(),x=!0}}),C.length&&a(C.join(""),"danger")}if(u)return u(i,!1,l);if(p()===!1)return}}},error:function(t,i,n){if((h&&h(t,i,n,l))!==!1){l.enableForm();var o="timeout"==i||"error"==i?e.lang?e.lang.timeout:i:t.responseText+i+n;a(o,"danger")}}},r),l._ajaxForm(r).data("zui.ajaxform",!0),l.on("click","[data-form-action]",function(){l.attr("action",t(this).data("formAction")).submit()})},t.setAjaxForm=function(e,i,n){t.ajaxForm(e,t.isPlainObject(i)?i:{finish:i,beforeSubmit:n})},t.fn.ajaxForm=function(e){return this.each(function(){t.ajaxForm(this,e)})},t.fn.setInputRequired=function(){return this.each(function(){var e=t(this),i=e.parent();i.is(".input-control,td")?i.addClass("required"):e.is(".chosen")?e.attr("required",null).next(".chosen-container").addClass("required"):i.addClass("required"),e.attr("required",null);var n=i.closest(".input-group");n.length&&1===n.find(".required,input[required],select[required]").length&&n.addClass("required")})},t(function(){t('.form-ajax,form[data-type="ajax"]').ajaxForm(),setTimeout(function(){var i=e.config.requiredFields,n=t("form");i&&(i=i.split(",")),i&&i.length&&t.each(i,function(t,e){n.find("#"+e).attr("required","required")}),n.find("input[required],select[required],textarea[required]").setInputRequired()},400),t('form[target="hiddenwin"]').on("submit",function(){var e=t(this);e.data("zui.ajaxform")||e.enableForm(!1).data("disabledTime",(new Date).getTime())}).on("click",function(){var e=t(this),i=e.data("disabledTime");i&&(new Date).getTime()-i>1e4&&e.enableForm(!0).data("disabledTime",null)})})}(jQuery,window,void 0),function(t){"use strict";var e="zui.searchList",i=function(t,e){if(t&&t.length)for(var i=0;i
    ').append(s)),i.$menu.append(s),i.$menu.removeClass("loading"),i.isLoaded=!0,e&&e(!0)},error:function(){i.$menu.removeClass("loading").append('
    '+(n.errorText||window.lang&&window.lang.timeout)+"
    "),e&&e(!1)}},n.ajax))},n.prototype.scrollTo=function(t){t.length&&t[0].scrollIntoViewIfNeeded&&t[0].scrollIntoViewIfNeeded({behavior:"smooth"})},n.prototype.getItems=function(){return this.$.find(this.options.selector).addClass("search-list-item")},n.prototype.getActiveItem=function(){return this.getItems().filter(".active:first")},n.prototype.search=function(e){var n=this,o=void 0===e||null===e||""===e;n.$.toggleClass("has-search-text",!o);var a=n.getItems().removeClass("active");if(o)a.removeClass("hidden");else{var s=e.trim().split(" ");a.each(function(){var e=t(this),n=(e.text()+" "+(e.data("key")||e.data("filter")||"")).trim();e.toggleClass("hidden",!i(s,n))})}n.scrollTo(a.not(".hidden").first().addClass("active")),n.$.trigger("onSearchComplete",e)},n.DEFAULTS={selector:".list-group a:not(.not-list-item)",searchBox:".search-box",onSelectItem:null},t.fn.searchList=function(i){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof i&&i;a||o.data(e,a=new n(this,s)),"string"==typeof i&&a[i]()})},n.NAME=e,t.fn.searchList.Constructor=n,t(function(){t('[data-ride="searchList"]').searchList()})}(jQuery),function(t){"use strict";var e="zui.labelSelector",i=function(n,o){var a=this;a.name=e,a.$=t(n),o=a.options=t.extend({},i.DEFAULTS,this.$.data(),o),a.$.hide(),a.update()};i.prototype.select=function(t){t+="",this.$wrapper.find(".label.active").removeClass("active"),this.$wrapper.find('.label[data-value="'+t+'"]').addClass("active"),this.$.val(t).trigger("change")},i.prototype.update=function(){var e=this,i=e.options,n=e.$wrapper;if(!n){if(i.wrapper)n=t(i.wrapper);else{var o=e.$.next();n=o.hasClass(".label-selector")?o:t('
    ')}n.parent().length||e.$.after(n),e.$wrapper=n,n.on("click",".label",function(i){var n=e.$.val(),o=t(this).data("value");e.hasEmptyValue!==!1&&o==n&&(o=e.hasEmptyValue),e.select(o),i.preventDefault()})}n.empty();var a=e.$.val();e.hasEmptyValue=!1,e.$.children("option").each(function(){var e=t(this),o={label:e.text(),value:e.val()},s=(""===o.value||"0"===o.value)&&!o.label,r=t(i.labelTemplate||'');i.labelClass&&!s&&r.addClass(i.labelClass),i.labelCreator?r=i.labelCreator(r):(r.data("option",o).attr("data-value",o.value),s?r.addClass("empty").append(''):r.text(o.label).toggleClass("active",a===o.value)),n.append(r)})},i.DEFAULTS={},t.fn.labelSelector=function(n){return this.each(function(){var o=t(this),a=o.data(e),s="object"==typeof n&&n;a||o.data(e,a=new i(this,s)),"string"==typeof n&&a[n]()})},i.NAME=e,t.fn.labelSelector.Constructor=i,t(function(){t('[data-provide="labelSelector"]').labelSelector()})}(jQuery),function(t){"use strict";var e="zui.fileInput",i=t.BYTE_UNITS={B:1,KB:1024,MB:1048576,GB:1073741824,TB:1099511627776},n=t.formatBytes=function(t,e,n){return void 0===e&&(e=2),n||(n=ti.fileMaxSize||e.push(s)}t.length!=e.length&&(window.bootbox||window).alert(i.fileSizeError.format(n(i.fileMaxSize))),e.forEach(function(t){o.add(t)})})};r.prototype.add=function(t){var e=this,i=e.options,n=e.$template.clone();"before"===i.appendWay?e.$.prepend(n):e.$.append(n),n.fileInput({file:t,fileMaxSize:i.eachFileMaxSize,fileSizeError:i.fileSizeError,onDelete:function(t){t.$.remove(),e.options.onDelete&&e.options.onDelete(t,e)},onSelect:function(t,i){e.options.onSelect&&e.options.onSelect(t,i,e)}})},r.DEFAULTS={fileMaxSize:0,eachFileMaxSize:0,appendWay:"after",fileSizeError:"无法上传大于 {0} 的文件。"},t.fn.fileInputList=function(e){return this.each(function(){var i=t(this),n=i.data(s),o="object"==typeof e&&e;n||i.data(s,n=new r(this,o)),"string"==typeof e&&n[e]()})},r.NAME=s,t.fn.fileInputList.Constructor=r,t(function(){t('[data-provide="fileInputList"]').fileInputList()})}(jQuery),function(t){window.config||(window.config={}),t.createLink=window.createLink=function(e,n,o,a,s,r,l,c){if("object"==typeof e)return t.createLink(e.moduleName,e.methodName,e.vars,e.viewType,e.isOnlyBody,e.hash,e.tid,e.params);if(c&&(c.tid&!l&&(l=c.tid),void 0!==c.isOnlyBody&&void 0===s&&(s=c.isOnlyBody)),t.tabSession&&!l&&(l=t.tabSession.getTid()),a||(a=config.defaultView),s||(s=!1),o)for("string"==typeof o&&(o=o.split("&")),i=0;i'+d+"")}}t.val()||(time=e(a.format("hh:mm")),time=time-time%10+10,t.val(n(time)))};t.fn.timeSpanControl=function(i){return this.each(function(){var s=t(this),r=t.extend({},i,s.data()),l=s.find('[name="begin"],.control-time-begin'),c=s.find('[name="end"],.control-time-end'),h=function(){var t=l.val();if(s.find(".hide-empty-begin").toggleClass("hide",!t),t){var i=n(e(t)+30);c.find('option[value="'+i+'"]').length&&c.val(i),r.onChange&&r.onChange(c,i)}};if(s.data("timeSpanControlInit")){if(r.begin){var d=o(r.begin).format("hh:mm");l.find('option[value="'+d+'"]').length&&l.val(d),r.onChange&&r.onChange(l,d)}if(r.end){var u=o(r.end).format("hh:mm");c.find('option[value="'+u+'"]').length&&c.val(u),r.onChange&&r.onChange(c,u)}}else l.on("change",h),a(l,r.begin),a(c,r.end),s.data("timeSpanControlInit",!0);r.end||h()})},t.timeSpanControl={convertTimeToNum:e,convertNumToTime:n,initTimeSelect:a,createTime:o};var s=t.setSearchType=function(e,i){var n=t("#searchType");e||(e=n.val()),e=e||"bug",n.val(e);var o=t("#searchTypeMenu");o.find("li.selected").removeClass("selected");var a=o.find('a[data-value="'+e+'"]'),s=a.text();a.parent().addClass("selected"),t("#searchTypeName").text(s),i||t("#searchInput").focus()};t.gotoObject=function(e,i){if(e||(e=t("#searchType").val()),i||(i=t("#searchInput").val()),i&&e)if(i=i.replace(/[^\d]/g,"")){var n=e.split("-");e=n[0];var o=n.length>1?n[1]:"testsuite"===e?"library":"view",a=t.createLink(e,o,"id="+i);t.apps?t.apps.open(a):window.location.href=a}else{var s={zh_cn:"请输入数字ID进行搜索",zh_tw:"請輸入數值ID行搜索"};alert(lang.searchTip||s[t.zui.clientLang()]||"Please enter a numberic id to search")}t("#searchInput").val(i).focus()},t(function(){s(null,!0),t(document).on("keydown",function(e){e.ctrlKey&&71===e.keyCode&&(t("#searchInput").val("").focus(),e.stopPropagation(),e.preventDefault())})}),t.removeAnchor=window.removeAnchor=function(t){var e=t.lastIndexOf("#");return e>-1?t.substr(0,e):t},t.refreshPage=function(t){t?window.top.location.reload():window.location.reload()},t.selectLang=window.selectLang=function(e){t.cookie("lang",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectLang"),t.refreshPage(1)},t.selectTheme=window.selectTheme=function(e){t.cookie("theme",e,{expires:config.cookieLife,path:config.webRoot}),t.ajaxSendScore("selectTheme"),t.refreshPage(1)},t.zui.Picker&&(t.extend(t.zui.Picker.DEFAULTS,{optionRender:function(e,i,n){if("user"===n.options.type){var o=n.options.users;if(!o)return;var a=o[i.value];if(!a)return;if(e.find(".picker-option-text").text(a.realname||a.account),e.hasClass("picker-user-option"))return;return e.prepend(t('
    ').avatar({user:a})),a.deptName&&e.append(t('').text(a.deptName)),a.roleName&&e.append(t('').text(a.roleName)),e.addClass("picker-user-option")}},checkable:!0,maxListCount:500,disableScrollOnShow:!1}),t.zui.setUserPickerInfos=function(e){t.zui.Picker.DEFAULTS.users=t.extend({},t.zui.Picker.DEFAULTS.users,e)},t(function(){t(".picker-select[data-pickertype!='remote']").picker({chosenMode:!0}),t("[data-pickertype='remote']").each(function(){var e=t(this).attr("data-pickerremote");t(this).picker({chosenMode:!0,remote:e})}),window.pickerUsers&&t.zui.setUserPickerInfos(window.pickerUsers),t(".user-picker").picker({type:"user"})})),t.chosenDefaultOptions={middle_highlight:!0,disable_search_threshold:1,compact_search:!0,allow_single_deselect:!0,placeholder_text_single:" ",placeholder_text_multiple:" ",search_contains:!0,max_drop_width:500,max_drop_height:245,no_wrap:!0,drop_direction:function(){var e=t(this.container).closest(".table-responsive:not(.scroll-none)");if(e.length){if(this.drop_directionFixed)return this.drop_directionFixed;e.css("position","relative");var i="down",n=this.container.find(".chosen-drop"),o=this.container.position(),a=n.outerHeight();return o.top>=a&&o.top+31+a>e.outerHeight()&&(i="up"),this.drop_directionFixed=i,i}return"auto"}},t.chosenSimpleOptions=t.extend({},t.chosenDefaultOptions,{disable_search_threshold:6}),t.fn._chosen=t.fn.chosen,t.fn.chosen=function(e){return"string"==typeof e?this._chosen(e):this.each(function(){var i=t(this).addClass("chosen-controled");return i._chosen(t.extend({},i.hasClass("chosen-simple")?t.chosenSimpleOptions:t.chosenDefaultOptions,i.data(),e))})},t.fn.chosen.Constructor=t.fn._chosen.Constructor,t(function(){t(".chosen,.chosen-simple").each(function(){var e=t(this);e.closest(".template").length||e.chosen()})}),t.extend(t.fn.pager.Constructor.DEFAULTS,{maxNavCount:8,prevIcon:"icon-angle-left",nextIcon:"icon-angle-right",firstIcon:"icon-first-page",lastIcon:"icon-last-page",navEllipsisItem:"…",menuDirection:"dropup",pageSizeOptions:[5,10,15,20,25,30,35,40,45,50,100,200,500,1e3,2e3],elements:["total_text","size_menu","first_icon","prev_icon",'
    {page}/{totalPage}
    ',"next_icon","last_icon"],onPageChange:function(e,i){e.recPerPage!==i.recPerPage&&t.cookie(this.options.pageCookie,e.recPerPage,{expires:config.cookieLife,path:config.webRoot}),e.recPerPage!==i.recPerPage&&(window.location.href=this.createLink())}}),t.extend(!0,t.zui.Messager.DEFAULTS,{cssClass:"messagger-zt",icons:{success:"check-circle",info:"chat-line",warning:"exclamation-sign",danger:"exclamation-sign"}}),t.fn.reverseOrder=function(){return this.each(function(){var e=t(this);e.prependTo(e.parent())})};var r=function(e,i){var n=t(e);if(!n.data("historiesInited")){n.data("historiesInited",1),i=t.extend({},n.data(),i);var o=n.find(".histories-list"),a=!0,s=!1;n.on("click",".btn-reverse",function(){o.children("li").reverseOrder(),a=!a,t(this).find(".icon").toggleClass("icon-arrow-up",a).toggleClass("icon-arrow-down",!a);var e="#lastComment",i=t(e);i.length&&window.KindEditor&&(window.KindEditor.remove(e),i.kindeditor())}).on("click",".btn-expand-all",function(){var e=t(this).find(".icon");s=!s,e.toggleClass("icon-plus",!s).toggleClass("icon-minus",s),o.children("li").toggleClass("show-changes",s)}).on("click",".btn-expand",function(){t(this).closest("li").toggleClass("show-changes")}).on("click",".btn-strip",function(){var e=t(this),n=e.find(".icon"),o=n.hasClass("icon-code");n.toggleClass("icon-code",!o).toggleClass("icon-text",o),e.attr("title",o?i.original:i.textdiff),e.closest("li").toggleClass("show-original",o)}),o.find(".btn-strip").attr("title",i.original);var r=n.find(".modal-comment").modal({show:!1}).on("shown.zui.modal",function(){var t=r.find("#comment");t.length&&(t.focus(),window.editor&&window.editor.comment&&window.editor.comment.focus())}).on("show.zui.modal",function(){var e=r.find("#comment");e.length&&!e.data("keditor")&&t.fn.kindeditor&&e.kindeditor()});n.on("click",".btn-comment",function(t){r.modal("toggle"),t.preventDefault()}).on("click",".btn-edit-comment,.btn-hide-form",function(){t(this).closest("li").toggleClass("show-form")});var l=n.find(".comment-edit-form");l.ajaxForm({success:function(t,e,i,n){setTimeout(function(){l.closest("li").removeClass("show-form")},2e3)}})}};t.fn.histories=function(t){return this.each(function(){r(this,t)})},t(function(){t(".histories").histories()});var l=0,c=0;t.toggleSidebar=function(e){var i=t("#sidebar");if(i.length){var n=t("main");if(void 0===e)e=n.hasClass("hide-sidebar");else if(e&&!n.hasClass("hide-sidebar"))return;n.toggleClass("hide-sidebar",!e),clearTimeout(l),t.zui.store.set(c,e);var o=i.children(".cell"),a={overflow:"visible",maxHeight:"initial"};e?(i.addClass("showing"),l=setTimeout(function(){i.removeClass("showing"),i.trigger("sidebar.toggle",e)},210)):(i.trigger("sidebar.toggle",e),t(window).width()<1900&&(a={overflow:"hidden",maxHeight:t(window).height()-45})),o.css(a)}};var h=t.initSidebar=function(){var e=t("#sidebar");if(e.length){if(e.data("init"))return!0;c="sidebar:"+(e.data("id")||config.currentModule+"/"+config.currentMethod);var i=t("main");if(i.length){i.on("click",".sidebar-toggle",function(){t.toggleSidebar(i.hasClass("hide-sidebar"))});var n=t.zui.store.get(c,e.data("hide")!==!1);n===!1&&e.addClass("no-animate"),t.toggleSidebar(n),n===!1&&setTimeout(function(){e.removeClass("no-animate")},500);var o=e.find(".sidebar-toggle");if(o.length){var a=function(){var e=o[0].getBoundingClientRect(),i=t(window).height(),n=Math.max(0,Math.floor(Math.min(i-40,e.top+e.height)-Math.max(e.top,0))/2)+(e.top<0?0-e.top:0);o.removeClass("fade").find(".icon").css("top",n+(t.zui.browser.isIE()?(i-80)/2:0))};a(),e.data("init",1).on("sidebar.toggle",a);var s=t.zui.browser.isIE()?1500:0,r=0,l=null,h=function(){var t=Date.now();return l&&(clearTimeout(l),l=null),t-rtr input[type="checkbox"]:checked');i.each(function(){var i=parseInt(t(this).val(),10);NaN!==i&&e.push(i)}),t.cookie("checkedItem",e.join(","),{expires:config.cookieLife,path:config.webRoot})},t.extend(t.fn.modal.bs.Constructor.DEFAULTS,{scrollInside:!0,backdrop:"static",headerHeight:100}),t.extend(t.zui.ModalTrigger.DEFAULTS,{scrollInside:!0,backdrop:"static"}),t.fn.initIframeModal=function(){return this.each(function(){var e=t(this);if(!e.is("[disabled],.disabled")&&!e.parents('[data-ride="table"],.skip-iframe-modal').length){var i={type:"iframe"};e.hasClass("export")&&t.extend(i,{width:800,shown:setCheckedCookie},e.data()),e.modalTrigger(i)}})},t(function(){t("a.iframe,.export").initIframeModal()}),t.fixedTableHead=window.fixedTableHead=function(e,i){var n=t(e);if(n.is("table")||(n=n.find("table")),n.length){var o=t(i||window),a=null,s=function(){var e=n.children("thead"),i=e[0].getBoundingClientRect(),o=n.next(".fixed-head-table");if(i.top<0){var s=e.width();if(o.length){if(a!==s){a=s;var r=o.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())})}}else{var o=t("
    ").addClass(n.attr("class")),l=e.clone(),r=l.find("th");e.find("th").each(function(e){r.eq(e).width(t(this).width())}),o.append(l).insertAfter(n)}o.css({left:i.left,width:i.width}).show()}else o.hide()};o.on("scroll",s).on("resize",s),s()}},t(document).on("click","tr[data-url]",function(){var e=t(this),i=e.data("href")||e.data("url");i&&(window.location.href=i)}),"yes"===config.onlybody&&self===parent&&(window.location.href=window.location.href.replace("?onlybody=yes","").replace("&onlybody=yes","")),t(function(){t("body").addClass("m-{currentModule}-{currentMethod}".format(config))});var d,u,p,f,g,m=function(){d||(d=t("#subNavbar"),u=t("#pageNav"),p=t("#pageActions"),f=d.children(".nav"),g=f.outerWidth());var e=d.outerWidth(),i=u.outerWidth()||0,n=p.outerWidth()||0;if(i=i?i+15:0,n=n?n+15:0,!i&&!n)return void f.css({maxWidth:null,left:null,position:"static"});var o=Math.max(300,e-i-n),a=Math.min(o,g),s=(e-a)/2,r=i&&s.btn-toolbar");if(e.length){var i,n,o=e.children(),a=o.length,s=!1,r=null;if(a)for(o.each(function(e){i=t(this),n=i.is(".divider"),n&&!r&&i.hide(),s||n||(s=!0),r=n?null:i,!n||e!==a-1&&0!==e||i.hide()});i.length&&i.is(".divider");)i=i.hide().prev();s||e.hide()}};t(function(){t(".input-group,.btn-group").fixInputGroup(), +x()}),window.holders&&t.each(window.holders,function(e){var i=t("#"+e);i.length&&i.is("input")&&i.attr("placeholder",window.holders[e])}),t(function(){var e=t(".table-responsive"),i=t.fixTableResponsive=function(){e.each(function(){this.scrollHeight-3<=this.clientHeight&&this.scrollWidth-3<=this.clientWidth?t(this).addClass("scroll-none").css("overflow","visible"):t(this).removeClass("scroll-none").css("overflow","auto")})};e.length&&(t(window).on("resize",i),setTimeout(i,100))});var C=function(){var e=this,i=t(e),n=i.closest("tr").find("textarea");if(n.length){var o=32;n.each(function(){var e=t(this).closest("td"),i=e.css("height");e.css("height",this.style.height),this.style.height="auto";var n=this.value?this.scrollHeight+2:32;o=Math.max(o,n),e.css("height",i)}),n.css("height",o)}else{e.style.height="auto";var a=e.value?e.scrollHeight+2:32;e.style.height=a+"px"}};t.autoResizeTextarea=function(e){t(e).each(C)},t(function(){t("textarea.autosize").each(C),t(document).on("input paste change","textarea.autosize",C)}),t(function(){var e=t("#dropMenu,.drop-menu");e.length&&e.on("click",".toggle-right-col",function(e){t(this).closest("#dropMenu,.drop-menu").toggleClass("show-right-col"),e.stopPropagation(),e.preventDefault()})});var _="undefined"!=typeof InstallTrigger;t.zui.browser.firefox=_,t("html").toggleClass("is-firefox",_).toggleClass("not-firefox",!_),t(function(){var e=t("#mainContent>.main-col"),i=e.children(".main-actions");if(i.length){var n=i.prev();if(i.length&&n.length){t('
    ').css("height",i.outerHeight()).insertAfter(i);var o=0,a=function(){var e=n[0].getBoundingClientRect(),s=e.top+e.height+120>t(window).height();if(t("body").toggleClass("main-actions-fixed",s),s){var r=n.width();r?i.width(r):o<10&&setTimeout(a,1e3)}o++};t.resetToolbarPosition=a,a(),t(window).on("resize scroll",a)}}}),t(document).on("show.zui.modal",function(e){t("body.body-modal").length&&window.parent&&window.parent!==window&&t(e.target).is(".modal")&&window.parent.$("body").addClass("hide-modal-close")}).on("hidden.zui.modal",function(e){t("body.body-modal").length&&window.parent&&window.parent!==window&&window.parent.$("body").removeClass("hide-modal-close")}).on("loaded.zui.modal",function(e){t("body").removeClass("hide-modal-close")}),t(function(){var e=t(".dropdown-menu.with-search");e.length&&(e.find(".menu-search").on("click",function(t){return t.stopPropagation(),!1}),e.on("keyup change paste","input",function(){var e=t(this),i=e.closest(".dropdown-menu.with-search"),n=e.val().toLowerCase(),o=i.find(".option");""==n?o.removeClass("hide"):o.each(function(){var e=t(this);e.toggleClass("hide",e.text().toString().toLowerCase().indexOf(n)<0&&e.data("key").toString().toLowerCase().indexOf(n)<0)})}),e.parents(".dropdown-submenu").one("mouseenter",function(){var e=t(this).find(".dropdown-list")[0];e&&e.getBoundingClientRect&&setTimeout(function(){var i=270,n=e.getBoundingClientRect();n.top<0&&(i=Math.min(270,n.height)+n.top),e.style.maxHeight=Math.min(270,i,t(window).height()-28)+"px"},50)})),t(".dropdown-menu.with-search .menu-search").on("click",function(t){return t.stopPropagation(),!1})})}(jQuery),function(t){function e(){if(!config.skipRedirect&&!window.skipRedirect){var e=window.parent,i=config.currentModule,n=config.currentMethod;if("file"!==i||"download"!==n){var o="index"===i&&"index"===n,a="#_single"===location.hash||/(\?|\&)_single/.test(location.search)||o||!t("#mainHeader,#editorNav").length||"tutorial"===i||"install"===i||"upgrade"===i||"user"===i&&("login"===n||"deny"===n)||"my"===i&&"changepassword"===n||t("body").hasClass("allow-self-open"),s=location.href;if(e===window&&!a){var r=location.pathname+location.search+location.hash;return void(location.href=t.createLink("index","index","")+"#app="+encodeURIComponent(r))}if(e!==window&&e.$.apps){o&&e.location.reload();var l=window.name;if(0===l.indexOf("app-")){t.apps=window.apps=e.$.apps;var c=l.substring(4);t.appCode=c,t(document).on("click",function(t){var i=e.document.getElementById(window.name);if(i){var n=e.document.getElementById(i.name)||i;if(n){var o;"function"==typeof Event?o=new Event(t.type,{bubbles:!0}):(o=document.createEvent("Event"),o.initEvent(t.type,!0,!0)),n.dispatchEvent(o)}}}).on("click","a,.open-in-app,.show-in-app",function(e){var i=t(this);if(!i.is("[data-modal],[data-toggle],[data-ride],[data-tab],.iframe,.not-in-app,[target]")&&!i.data("zui.modaltrigger")){var n=i.hasClass("show-in-app")?"":i.attr("href")||(i.is("a")?"":i.data("url")),o=i.data("app")||i.data("group");if(n){if(0===n.indexOf("javascript:")||"#"===n[0])return;var a=t.parseLink(n);if(a.external||"file"===a.moduleName&&"download"===a.methodName)return;if("index"===a.moduleName&&"index"===a.methodName)return window.location.reload(),void e.preventDefault()}else if(!o)return;o||(o=t.apps.getAppCode(n)),o&&("help"===o&&(t.apps.appsMap.help.text=i.text(),t.apps.appsMap.help.url||(t.apps.appsMap.help.url=n)),t.apps.open(n,o)&&e.preventDefault())}}),t.apps.updateUrl(c,s,document.title)}}}}}function i(){var e=t("#navbar>.nav");if(e.length){var i=t("#heading"),n=+i.css("left").replace("px",""),o=i.outerWidth(),a=e.width(),s=t("#mainHeader>.container").width()-2*n,r=Math.floor((s-a)/2);e.css("marginLeft",r>>0;if(0===o)return!1;for(var a=0|e,s=Math.max(a>=0?a:o-Math.abs(a),0);s1&&("?"===e[0]&&(e=e.substr(1)),e.split("&").forEach(function(t){var e=t.split("=",2);if(e.length>1)try{i[e[0]]=decodeURIComponent(e[1])}catch(n){i[e[0]]=""}else i[e[0]]=""})),t?i[t]:i},t.parseLink=function(e){if(!e)return{};var i=0===e.indexOf("http:")||0===e.indexOf("https:");if(i){var n=window.location.origin;if(e.indexOf(n)<0)return{external:!0,url:e};e=e.substr((n+config.webRoot).length)}var o=e.split("#"),a=o[0].split("?"),s=a[1],r=s?t.getSearchParam("",s):{},l=a[0],c={url:e,isOnlyBody:"yes"===r.onlybody,vars:[],hash:o[1]||"",params:r,tid:r.tid||""};if("GET"===config.requestType){c.moduleName=r[config.moduleVar]||"index",c.methodName=r[config.methodVar]||"index",c.viewType=r[config.viewVar]||config.defaultView;for(var h in r)h!==config.moduleVar&&h!==config.methodVar&&h!==config.viewVar&&"onlybody"!==h&&"tid"!==h&&c.vars.push([h,r[h]])}else{var d=l.lastIndexOf("/");d===l.length-1&&(l=l.substr(0,d),d=l.lastIndexOf("/")),d>=0&&(l=l.substr(d+1));var u=l.lastIndexOf(".");u>=0?(c.viewType=l.substr(u+1),l=l.substr(0,u)):c.viewType=config.defaultView;var p=l.split(config.requestFix);if(c.moduleName=p[0]||"index",c.methodName=p[1]||"index",p.length>2)for(var f=2;f.nav>li").length>10&&(i(),t(window).on("resize",i)),setTimeout(n,1e3)}),parent!==window&&parent.$.apps){var o=window.name;if(o&&0===o.indexOf("app-")){var a=o.substring(4),s=parent.$.apps.openedApps[a];s&&s.$app.removeClass("loading")}}}(jQuery),function(t){"use strict";function e(e,i){"object"!=typeof i&&(i={user:i});var n=t(e);i=t.extend({},n.data(),i);var o=i.user;"string"==typeof o&&(o={account:o});var a={},s=i.size;s&&(a.width=s,a.height=s,a.lineHeight=s,Number.isNaN(+s)||n.addClass("size-"+s));var r=!!o.avatar;if(n.toggleClass("has-image",r).toggleClass("has-text",!r),n.empty(),r)n.append(t("").attr("src",o.avatar));else{var l=t.zui.strCode(o.account)*(i.hueDistance||43)%360;a.background="hsl("+l+","+(i.saturation||"40%")+","+(i.lightness||"60%")+")",Number.isNaN(+s)||(a.fontSize=Math.round(s/2)+"px");var c=o.name||o.realname||o.account;c=/^[\u4e00-\u9fa5\s]+$/.test(c)?c.length<=2?c:c.substring(c.length-2):/^[A-Za-z\d\s]+$/.test(c)?c[0].toUpperCase():c.length<=2?c:c.substring(0,2),n.append(t('').text(c))}return n.css(a)}t.fn.avatar=function(t){return this.each(function(){e(this,t)})}}(jQuery),$.zui.lang("de",{"zui.pager":{pageOfText:"Seite {0}",prev:"Zurück",next:"Nächste Seite",first:"Erste Seite",last:"Letzte Seite","goto":"Goto",pageOf:"Seite {page}",totalPage:"{totalPage} Seiten",totalCount:"Total: {recTotal} Artikel",pageSize:"{recPerPage} Artikel pro Seite",itemsRange:"Seiten {start} bis {end}",pageOfTotal:"Seite {page}/{totalPage}"},"zui.boards":{append2end:"Gehen Sie zum Ende"},"zui.browser":{tip:"Online. Sorgenfrei. Aktualisiere deinen Browser noch heute!"},"zui.calendar":{weekNames:["Son","Mon","Die","Mit","Don","Fri","Sam"],monthNames:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",year:"{0}Jahr",month:"{0}Monat",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Kein Icon]",commonIcons:"Gemeinsame Symbole",webIcons:"Web-Symbol",editorIcons:"Editor-Symbol",directionalIcons:"Pfeil Zusammenfluss",otherIcons:"Andere Symbole"},"zui.colorPicker":{errorTip:"Kein gültiger Farbwert"},"zui.datagrid":{errorCannotGetDataFromRemote:"Daten vom Remote-Server ({0}) können nicht abgerufen werden.",errorCannotHandleRemoteData:"Die vom Remote-Server zurückgegebenen Daten können nicht verarbeitet werden."},"zui.guideViewer":{prevStep:"Vorheriger Schritt",nextStep:"Nächster Schritt"},"zui.tabs":{reload:"Neu laden",close:"Schliessen",closeOthers:"Schließen Sie andere Registerkarten",closeRight:"Schließen Sie die rechte Registerkarte",reopenLast:"Letzten geschlossenen Tab wiederherstellen",errorCannotFetchFromRemote:"Inhalt kann nicht vom Remote-Server abgerufen werden ({0})."},"zui.uploader":{},datetimepicker:{days:["Sonntag","Montag","Diensteg","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fri","Sam"],daysMin:["Son","Mon","Die","Mit","Don","Fri","Sam"],months:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",suffix:[],meridiem:[]},chosen:{no_results_text:"Nicht gefunden"},bootbox:{OK:"OK",CANCEL:"Stornieren",CONFIRM:"Bestätigen"}}),$.zui.lang("fr",{"zui.pager":{pageOfText:"Page {0}",prev:"Prev",next:"Suivant",first:"First",last:"Last","goto":"Goto",pageOf:"Page {page}",totalPage:"{totalPage} pages",totalCount:"Total: {recTotal} items",pageSize:"{recPerPage} per page",itemsRange:"De {start} à {end}",pageOfTotal:"Page {page} de {totalPage}"},"zui.boards":{append2end:"Aller jusqu'au bout"},"zui.browser":{tip:"Naviguez sans crainte sur Internet. Mettez votre navigateur à jour dès aujourd'hui!"},"zui.calendar":{weekNames:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],monthNames:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",year:"{0} Année",month:"{0} Mois",yearMonth:"{0}-{1}"},"zui.chosenIcons":{emptyIcon:"[Aucune icône]",commonIcons:"Icônes communes",webIcons:"Icône Web",editorIcons:"Icône de l'éditeur",directionalIcons:"Flèche confluence",otherIcons:"Autres icônes"},"zui.colorPicker":{errorTip:"Pas une valeur de couleur valide"},"zui.datagrid":{errorCannotGetDataFromRemote:"Impossible d'obtenir les données du serveur distant ({0}).",errorCannotHandleRemoteData:"Impossible de traiter les données renvoyées par le serveur distant."},"zui.guideViewer":{prevStep:"Étape précédente",nextStep:"Prochaine étape"},"zui.tabs":{reload:"Recharger",close:"Fermer",closeOthers:"Fermez les autres onglets",closeRight:"Fermer l'onglet de droite",reopenLast:"Restaurer le dernier onglet fermé",errorCannotFetchFromRemote:"Impossible d'obtenir le contenu du serveur distant ({0})."},"zui.uploader":{},datetimepicker:{days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],months:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Juin","Juil","Août","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",suffix:[],meridiem:[]},chosen:{no_results_text:"Pas trouvé"},bootbox:{OK:"D'accord",CANCEL:"Annuler",CONFIRM:"Confirmer"}}); \ No newline at end of file diff --git a/www/theme/blackberry/style.css b/www/theme/blackberry/style.css index 3453848b56..71ed46bf0a 100644 --- a/www/theme/blackberry/style.css +++ b/www/theme/blackberry/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - blackberry - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - blackberry - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#23304d}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#161f31;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b0f18;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#161f31;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b0f18;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#23304d;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#23304d;background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:#ccdbf0;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#b0c8e7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:#ccdbf0;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#b0c8e7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ebf1f9;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#23304d}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#23304d}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#131a2a}.label-primary.label-outline{color:#23304d;background:0 0;border:1px solid #23304d}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#131a2a}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#435c93}.text-primary{color:#23304d}.text-primary:hover{color:#131a2a}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#23304d}a.bg-primary:hover{background-color:#131a2a}.hl-primary{background-color:#ebf1f9}a.hl-primary:hover{background-color:#c4d6ed}.progress{background-color:#ebf1f9;border-radius:3px}.progress-bar{color:#fff;background-color:#23304d;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#23304d;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.form-control:focus{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#23304d;border-color:#23304d}.switch input:focus+label{color:#23304d}.switch input:focus+label:before{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #23304d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #23304d}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#23304d;border-color:#23304d}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#23304d;-webkit-box-shadow:0 0 8px #23304d;box-shadow:0 0 8px #23304d}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#23304d}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#23304d}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#304269}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#ebf1f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#23304d;border-color:#23304d}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#304269;border-color:#202c46}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#283758}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3a4f7e}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#40588c}.navbar-inverse .navbar-toggle{border-color:#40588c}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#283758}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#253351}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#40588c}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#202c46}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3a4f7e}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#40588c}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #40588c;-webkit-box-shadow:inset 0 -1px 0 #202c46;box-shadow:inset 0 -1px 0 #202c46}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#23304d}.nav>li>a:focus,.nav>li>a:hover{color:#23304d}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#23304d}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#23304d;border-color:#23304d}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#23304d;border-bottom-color:#23304d}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #23304d;box-shadow:inset 2px 0 0 #23304d}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#23304d;border-color:#23304d}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#23304d}.panel-primary>.panel-heading{color:#fff;background-color:#23304d;border-color:#23304d}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#23304d}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#23304d}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf1f9}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#23304d!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#23304d!important;border-bottom-left-radius:#23304d!important}.chosen-container .chosen-results li.highlighted{background-color:#23304d!important}.chosen-container-active .chosen-single{border-color:#23304d!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#23304d!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#23304d!important;border-bottom-left-radius:#23304d!important}.chosen-container.chosen-highlight-selected .result-selected{color:#23304d;background:#ebf1f9}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#23304d;border-color:#23304d}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#23304d}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#23304d}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#23304d}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#23304d!important;border-color:#131a2a!important}.datetimepicker td.day.active:hover{background-color:#131a2a!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#23304d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important}.ke-menu-item-on{background-color:#23304d!important}.ke-colorpicker-cell-on{background-color:#23304d!important}.ke-input-text:focus{border-color:#23304d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#23304d}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#ebf1f9}.alert-primary hr{border-top-color:#d0def1}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#23304d;border-color:#23304d}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ebf1f9}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#23304d}.tree-drag-holder{background-color:#ebf1f9}.tree-menu li.active>a{color:#fff;background-color:#23304d;border-color:#23304d}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#304269}a.text-primary{color:#23304d}.nav-primary>li.active>a{color:#0b0f18}.nav-primary>li.active>a:hover{color:#0b0f18}.bg-primary,.m-user-login{background:#304269 -webkit-gradient(linear,right top,left top,from(#23304d),to(#304269))!important;background:#304269 -webkit-linear-gradient(right,#23304d 0,#304269 100%)!important;background:#304269 -o-linear-gradient(right,#23304d 0,#304269 100%)!important;background:#304269 linear-gradient(-90deg,#23304d 0,#304269 100%)!important}.bg-primary-pure{color:#fff;background-color:#23304d}.bg-primary-pale{color:#23304d;background-color:#ebf1f9}.bg-secondary{background:#304269}.alert-info{color:#23304d;background:#ebf1f9}.btn-primary{color:#fff;background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(35,48,77,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1b253b;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#23304d;border-color:transparent}.btn-secondary{color:#fff;background-color:#304269;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(48,66,105,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#283758;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#304269;border-color:transparent}.btn-info{color:#23304d;background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:rgba(235,241,249,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d7e3f3;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(35,48,77,.3);background-color:#ebf1f9;border-color:transparent}.btn-icon-left>.icon{color:#304269;background:#ebf1f9}.btn-active-line{color:#23304d}.btn-active-line:after{border-bottom-color:#23304d}.btn-active-line:hover{color:#23304d}.btn-active-text .text{color:#0b0f18}.btn-active-text .text:after{border-bottom-color:#0b0f18}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(35,48,77,.8)}.label-primary{background:#23304d!important}.label-pale{background:#c4d6ed!important}.label-outline.label-primary{background:#ebf1f9!important;border-color:rgba(35,48,77,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#23304d;border-color:#23304d}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#23304d;-webkit-box-shadow:0 0 0 3px rgba(35,48,77,.2);box-shadow:0 0 0 3px rgba(35,48,77,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#23304d}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#23304d!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#23304d!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#23304d!important}.nav-tabs>li.active>a:before{background:#23304d}.nav-tabs-primary>li.active>a{color:#23304d!important}.panel-actions .btn.text-primary{color:#23304d}.picker-focus .picker-selections{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.status-bars .bar{background:#23304d}.status-bars-h .bar{background:#23304d}.messagger-zt .messager-content>.icon{color:#23304d}.tree li.active>a{color:#23304d}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#23304d}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#304269}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#ebf1f9}.dropdown-submenu:hover>a:after{border-left-color:#23304d}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#304269}.timeline>li>a:after,.timeline>li>div:after{background-color:#23304d}.timeline>li.active:before{background-color:rgba(35,48,77,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#23304d!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#23304d!important}#mainHeader{background:#304269 -webkit-gradient(linear,right top,left top,from(#23304d),to(#304269));background:#304269 -webkit-linear-gradient(right,#23304d 0,#304269 100%);background:#304269 -o-linear-gradient(right,#23304d 0,#304269 100%);background:#304269 linear-gradient(-90deg,#23304d 0,#304269 100%);background-color:#304269;border-top-color:#23304d;border-bottom-color:#ebf1f9}#searchGo{background-color:#304269}#searchGo:hover{background-color:#23304d}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#23304d}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#23304d}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#23304d}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #23304d}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #23304d}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #23304d}#sidebarHeader .title{color:#23304d}#sidebar>.sidebar-toggle>.icon{background:#506eaf}#main .querybox-toggle.querybox-opened{color:#23304d}#contentNav .nav>li.active>a{color:#23304d}#contentNav .nav>li.active>a:before{background:#23304d}td.c-actions .btn{color:#304269}td.c-actions .btn:hover{color:#23304d;background-color:#d7e3f3}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#23304d;background:#ebf1f9}.main-table table .btn-icon-left:hover>.icon{background:#ebf1f9}.main-table tbody>tr:hover{background:#ebf1f9}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#23304d}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f3f6fb}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f3f6fb}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#304269}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#5773b2}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#23304d}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#23304d}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#23304d}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#ebf1f9}.table-nest-toggle:hover{color:#23304d}.table-footer .checkbox-primary.checked label:after{border-color:#23304d!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#334670!important;border-color:#334670!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#23304d}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#23304d;border-color:#23304d}.article-content a{color:#23304d}.article-content a:focus,.article-content a:hover{color:#304269}.list-group{overflow-y:auto}.list-group>a.selected{color:#ebf1f9;background-color:#23304d}.list-group>a.active{color:#23304d;background-color:#ebf1f9}.list-group>a.active:hover,.list-group>a:hover{background-color:#23304d}#swapper #dropMenu .tree li>.selected{color:#23304d!important;background:#ebf1f9!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#23304d!important}.release-line>li>a:hover:before{background-color:#ebf1f9}.release-line>li>a:hover .title{color:#23304d}.release-line>li.active>a:before{border-color:#23304d}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#304269}#poweredBy .icon-zentao{color:#304269}#poweredBy a:hover{color:#23304d}#poweredBy a:hover .icon-zentao{color:#23304d}#poweredBy a.text-primary{color:#23304d}#poweredBy a.text-primary:hover{color:#304269}.block-statistic .nav-secondary>li.active>a:before{background:#23304d!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#304269!important}.dynamic.active .dynamic-date:before{background-color:#304269!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#23304d!important}.table td.has-child>.task-toggle:hover{color:#23304d!important}#openTaskPage.open:hover,#task .task-nav{color:#23304d!important;background:#ebf1f9!important}#tasksProgress>.progress-bar{background:#23304d!important}#tasksProgress .progress-text{color:#23304d!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#23304d!important;background:#ebf1f9!important;border-left-color:#23304d!important;-webkit-box-shadow:inset 4px 0 0 #23304d!important;box-shadow:inset 4px 0 0 #23304d!important}#copyProjectModal a:hover{border-color:#304269!important}#zeroTaskStory.checked{background:#ebf1f9!important;border-color:#304269!important}.cols-list .col:hover{background:#ebf1f9!important}.files-grid .actions,.files-grid .col:hover .file{background:#ebf1f9!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#304269!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#304269!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#23304d!important}#bars>li.active:after{background:#ebf1f9!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#0b0f18;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#23304d}.main-table tbody>tr:hover{background:rgba(235,241,249,.8)}.main-table tbody>tr>td.c-name a{color:#000}.main-table tbody>tr>td.c-name a:hover{color:#0b0f18}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#23304d!important}.assigned-none{color:#0b0f18!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#0b0f18!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#0b0f18!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#3b5182}#assigntomeBlock .nav>li.active>a{color:#0b0f18}.consumedTotally{color:#23304d;background:#ebf1f9}#toggleFoldIcon .icon-border{border:1px solid #7a90c2}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#23304d}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#23304d}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#161f31;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b0f18;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#161f31;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0b0f18;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#23304d;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#23304d;background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:#ccdbf0;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#b0c8e7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:#ccdbf0;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#b0c8e7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ebf1f9;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#23304d}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#23304d}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#131a2a}.label-primary.label-outline{color:#23304d;background:0 0;border:1px solid #23304d}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#131a2a}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#435c93}.text-primary{color:#23304d}.text-primary:hover{color:#131a2a}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#23304d}a.bg-primary:hover{background-color:#131a2a}.hl-primary{background-color:#ebf1f9}a.hl-primary:hover{background-color:#c4d6ed}.progress{background-color:#ebf1f9;border-radius:3px}.progress-bar{color:#fff;background-color:#23304d;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#23304d;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.form-control:focus{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#23304d;border-color:#23304d}.switch input:focus+label{color:#23304d}.switch input:focus+label:before{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #23304d;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #23304d}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#23304d;border-color:#23304d}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#23304d;-webkit-box-shadow:0 0 8px #23304d;box-shadow:0 0 8px #23304d}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#23304d}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#23304d}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#304269}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#ebf1f9}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#23304d;border-color:#23304d}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#304269;border-color:#202c46}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#283758}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3a4f7e}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#40588c}.navbar-inverse .navbar-toggle{border-color:#40588c}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#283758}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#253351}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#40588c}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#202c46}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3a4f7e}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#40588c}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #40588c;-webkit-box-shadow:inset 0 -1px 0 #202c46;box-shadow:inset 0 -1px 0 #202c46}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#23304d}.nav>li>a:focus,.nav>li>a:hover{color:#23304d}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#23304d}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#23304d;border-color:#23304d}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#23304d;border-bottom-color:#23304d}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #23304d;box-shadow:inset 2px 0 0 #23304d}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#23304d;border-color:#23304d}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#23304d}.panel-primary>.panel-heading{color:#fff;background-color:#23304d;border-color:#23304d}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#23304d}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#23304d}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ebf1f9}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#23304d!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#23304d!important;border-bottom-left-radius:#23304d!important}.chosen-container .chosen-results li.highlighted{background-color:#23304d!important}.chosen-container-active .chosen-single{border-color:#23304d!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#23304d!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#23304d!important;border-bottom-left-radius:#23304d!important}.chosen-container.chosen-highlight-selected .result-selected{color:#23304d;background:#ebf1f9}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#23304d;border-color:#23304d}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#23304d}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#23304d}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#23304d}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#23304d!important;border-color:#131a2a!important}.datetimepicker td.day.active:hover{background-color:#131a2a!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#23304d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important}.ke-menu-item-on{background-color:#23304d!important}.ke-colorpicker-cell-on{background-color:#23304d!important}.ke-input-text:focus{border-color:#23304d!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#23304d}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#ebf1f9}.alert-primary hr{border-top-color:#d0def1}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#23304d;border-color:#23304d}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ebf1f9}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#23304d}.tree-drag-holder{background-color:#ebf1f9}.tree-menu li.active>a{color:#fff;background-color:#23304d;border-color:#23304d}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#304269}a.text-primary{color:#23304d}.nav-primary>li.active>a{color:#0b0f18}.nav-primary>li.active>a:hover{color:#0b0f18}.bg-primary,.m-user-login{background:#304269 -webkit-gradient(linear,right top,left top,from(#23304d),to(#304269))!important;background:#304269 -webkit-linear-gradient(right,#23304d 0,#304269 100%)!important;background:#304269 -o-linear-gradient(right,#23304d 0,#304269 100%)!important;background:#304269 linear-gradient(-90deg,#23304d 0,#304269 100%)!important}.bg-primary-pure{color:#fff;background-color:#23304d}.bg-primary-pale{color:#23304d;background-color:#ebf1f9}.bg-secondary{background:#304269}.alert-info{color:#23304d;background:#ebf1f9}.btn-primary{color:#fff;background-color:#23304d;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(35,48,77,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1b253b;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#23304d;border-color:transparent}.btn-secondary{color:#fff;background-color:#304269;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(48,66,105,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#283758;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#304269;border-color:transparent}.btn-info{color:#23304d;background-color:#ebf1f9;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#23304d;background-color:rgba(235,241,249,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d7e3f3;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(35,48,77,.3);background-color:#ebf1f9;border-color:transparent}.btn-icon-left>.icon{color:#304269;background:#ebf1f9}.btn-active-line{color:#23304d}.btn-active-line:after{border-bottom-color:#23304d}.btn-active-line:hover{color:#23304d}.btn-active-text .text{color:#0b0f18}.btn-active-text .text:after{border-bottom-color:#0b0f18}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(35,48,77,.8)}.label-primary{background:#23304d!important}.label-pale{background:#c4d6ed!important}.label-outline.label-primary{background:#ebf1f9!important;border-color:rgba(35,48,77,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#23304d;border-color:#23304d}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#23304d;-webkit-box-shadow:0 0 0 3px rgba(35,48,77,.2);box-shadow:0 0 0 3px rgba(35,48,77,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#23304d}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#23304d!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#23304d!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#23304d!important}.nav-tabs>li.active>a:before{background:#23304d}.nav-tabs-primary>li.active>a{color:#23304d!important}.panel-actions .btn.text-primary{color:#23304d}.picker-focus .picker-selections{border-color:#23304d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(35,48,77,.6)}.status-bars .bar{background:#23304d}.status-bars-h .bar{background:#23304d}.messagger-zt .messager-content>.icon{color:#23304d}.tree li.active>a{color:#23304d}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#23304d}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#304269}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#ebf1f9}.dropdown-submenu:hover>a:after{border-left-color:#23304d}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#304269}.timeline>li>a:after,.timeline>li>div:after{background-color:#23304d}.timeline>li.active:before{background-color:rgba(35,48,77,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#23304d!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#23304d!important}#mainHeader{background:#304269 -webkit-gradient(linear,right top,left top,from(#23304d),to(#304269));background:#304269 -webkit-linear-gradient(right,#23304d 0,#304269 100%);background:#304269 -o-linear-gradient(right,#23304d 0,#304269 100%);background:#304269 linear-gradient(-90deg,#23304d 0,#304269 100%);background-color:#304269;border-top-color:#23304d;border-bottom-color:#ebf1f9}#searchGo{background-color:#304269}#searchGo:hover{background-color:#23304d}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#23304d}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#23304d}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#23304d}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #23304d}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #23304d}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #23304d}#sidebarHeader .title{color:#23304d}#sidebar>.sidebar-toggle>.icon{background:#506eaf}#main .querybox-toggle.querybox-opened{color:#23304d}#contentNav .nav>li.active>a{color:#23304d}#contentNav .nav>li.active>a:before{background:#23304d}td.c-actions .btn{color:#304269}td.c-actions .btn:hover{color:#23304d;background-color:#d7e3f3}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#23304d;background:#ebf1f9}.main-table table .btn-icon-left:hover>.icon{background:#ebf1f9}.main-table tbody>tr:hover{background:#ebf1f9}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#23304d}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f3f6fb}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f3f6fb}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#304269}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#5773b2}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#23304d}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#23304d}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#23304d}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#ebf1f9}.table-nest-toggle:hover{color:#23304d}.table-footer .checkbox-primary.checked label:after{border-color:#23304d!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#334670!important;border-color:#334670!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#23304d}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#23304d;border-color:#23304d}.article-content a{color:#23304d}.article-content a:focus,.article-content a:hover{color:#304269}.list-group{overflow-y:auto}.list-group>a.selected{color:#ebf1f9;background-color:#23304d}.list-group>a.active{color:#23304d;background-color:#ebf1f9}.list-group>a.active:hover,.list-group>a:hover{background-color:#23304d}#swapper #dropMenu .tree li>.selected{color:#23304d!important;background:#ebf1f9!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#23304d!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#23304d!important;background:#ebf1f9!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#23304d!important}.release-line>li>a:hover:before{background-color:#ebf1f9}.release-line>li>a:hover .title{color:#23304d}.release-line>li.active>a:before{border-color:#23304d}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#304269}#poweredBy .icon-zentao{color:#304269}#poweredBy a:hover{color:#23304d}#poweredBy a:hover .icon-zentao{color:#23304d}#poweredBy a.text-primary{color:#23304d}#poweredBy a.text-primary:hover{color:#304269}.block-statistic .nav-secondary>li.active>a:before{background:#23304d!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#304269!important}.dynamic.active .dynamic-date:before{background-color:#304269!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#23304d!important}.table td.has-child>.task-toggle:hover{color:#23304d!important}#openTaskPage.open:hover,#task .task-nav{color:#23304d!important;background:#ebf1f9!important}#tasksProgress>.progress-bar{background:#23304d!important}#tasksProgress .progress-text{color:#23304d!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#23304d!important;background:#ebf1f9!important;border-left-color:#23304d!important;-webkit-box-shadow:inset 4px 0 0 #23304d!important;box-shadow:inset 4px 0 0 #23304d!important}#copyProjectModal a:hover{border-color:#304269!important}#zeroTaskStory.checked{background:#ebf1f9!important;border-color:#304269!important}.cols-list .col:hover{background:#ebf1f9!important}.files-grid .actions,.files-grid .col:hover .file{background:#ebf1f9!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#304269!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#304269!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#23304d!important}#bars>li.active:after{background:#ebf1f9!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#0b0f18;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#23304d}.main-table tbody>tr:hover{background:rgba(235,241,249,.8)}.main-table tbody>tr>td.c-name a{color:#000}.main-table tbody>tr>td.c-name a:hover{color:#0b0f18}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#23304d!important}.assigned-none{color:#0b0f18!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#0b0f18!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#0b0f18!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#3b5182}#assigntomeBlock .nav>li.active>a{color:#0b0f18}.consumedTotally{color:#23304d;background:#ebf1f9}#toggleFoldIcon .icon-border{border:1px solid #7a90c2}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#23304d}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file diff --git a/www/theme/blue/style.css b/www/theme/blue/style.css index a4b374699d..eeae41c370 100644 --- a/www/theme/blue/style.css +++ b/www/theme/blue/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - blue - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - blue - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#0d88f8}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0673d6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0560b3;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0673d6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0560b3;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0d88f8;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#0d88f8;background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:#c1e2ff;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#9dd1ff;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:#c1e2ff;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#9dd1ff;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#eaf5ff;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d88f8}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#0d88f8}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#066ecc}.label-primary.label-outline{color:#0d88f8;background:0 0;border:1px solid #0d88f8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#066ecc}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#70b9fb}.text-primary{color:#0d88f8}.text-primary:hover{color:#066ecc}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#0d88f8}a.bg-primary:hover{background-color:#066ecc}.hl-primary{background-color:#eaf5ff}a.hl-primary:hover{background-color:#b7ddff}.progress{background-color:#eaf5ff;border-radius:3px}.progress-bar{color:#fff;background-color:#0d88f8;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#0d88f8;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.form-control:focus{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#0d88f8;border-color:#0d88f8}.switch input:focus+label{color:#0d88f8}.switch input:focus+label:before{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #0d88f8;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #0d88f8}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#0d88f8;border-color:#0d88f8}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#0d88f8;-webkit-box-shadow:0 0 8px #0d88f8;box-shadow:0 0 8px #0d88f8}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#0d88f8}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#0d88f8}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#eaf5ff}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#0d88f8}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#0d88f8}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#0d88f8;border-bottom-color:#0d88f8}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #0d88f8;box-shadow:inset 2px 0 0 #0d88f8}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#0d88f8}.panel-primary>.panel-heading{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#0d88f8}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#0d88f8}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eaf5ff}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#0d88f8!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#0d88f8!important;border-bottom-left-radius:#0d88f8!important}.chosen-container .chosen-results li.highlighted{background-color:#0d88f8!important}.chosen-container-active .chosen-single{border-color:#0d88f8!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#0d88f8!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#0d88f8!important;border-bottom-left-radius:#0d88f8!important}.chosen-container.chosen-highlight-selected .result-selected{color:#0d88f8;background:#eaf5ff}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#0d88f8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0d88f8}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#0d88f8}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#0d88f8!important;border-color:#066ecc!important}.datetimepicker td.day.active:hover{background-color:#066ecc!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#0d88f8!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important}.ke-menu-item-on{background-color:#0d88f8!important}.ke-colorpicker-cell-on{background-color:#0d88f8!important}.ke-input-text:focus{border-color:#0d88f8!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#0d88f8}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#eaf5ff}.alert-primary hr{border-top-color:#c6e4ff}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#eaf5ff}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#0d88f8}.tree-drag-holder{background-color:#eaf5ff}.tree-menu li.active>a{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#0d88f8}.nav-primary>li.active>a{color:#0080f9}.nav-primary>li.active>a:hover{color:#0080f9}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#0d88f8),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#0d88f8 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#0d88f8 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#0d88f8 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#0d88f8}.bg-primary-pale{color:#0d88f8;background-color:#eaf5ff}.bg-secondary{background:#23c8ec}.alert-info{color:#0d88f8;background:#eaf5ff}.btn-primary{color:#fff;background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(13,136,248,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#077be5;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#0d88f8;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#23c8ec;border-color:transparent}.btn-info{color:#0d88f8;background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:rgba(234,245,255,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d0e9ff;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(13,136,248,.3);background-color:#eaf5ff;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#eaf5ff}.btn-active-line{color:#0d88f8}.btn-active-line:after{border-bottom-color:#0d88f8}.btn-active-line:hover{color:#0d88f8}.btn-active-text .text{color:#0080f9}.btn-active-text .text:after{border-bottom-color:#0080f9}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(13,136,248,.8)}.label-primary{background:#0d88f8!important}.label-pale{background:#b7ddff!important}.label-outline.label-primary{background:#eaf5ff!important;border-color:rgba(13,136,248,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#0d88f8;border-color:#0d88f8}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#0d88f8;-webkit-box-shadow:0 0 0 3px rgba(13,136,248,.2);box-shadow:0 0 0 3px rgba(13,136,248,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#0d88f8}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#0d88f8!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#0d88f8!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#0d88f8!important}.nav-tabs>li.active>a:before{background:#0d88f8}.nav-tabs-primary>li.active>a{color:#0d88f8!important}.panel-actions .btn.text-primary{color:#0d88f8}.picker-focus .picker-selections{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.status-bars .bar{background:#0d88f8}.status-bars-h .bar{background:#0d88f8}.messagger-zt .messager-content>.icon{color:#0d88f8}.tree li.active>a{color:#0d88f8}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0d88f8}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#eaf5ff}.dropdown-submenu:hover>a:after{border-left-color:#0d88f8}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#0d88f8}.timeline>li.active:before{background-color:rgba(13,136,248,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#0d88f8!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#0d88f8!important}#mainHeader{background:#2294fb;border-top-color:#0d88f8;border-bottom-color:#eaf5ff}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#0d88f8}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#0d88f8}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#0d88f8}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#0d88f8}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #0d88f8}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #0d88f8}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #0d88f8}#sidebarHeader .title{color:#0d88f8}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#0d88f8}#contentNav .nav>li.active>a{color:#0d88f8}#contentNav .nav>li.active>a:before{background:#0d88f8}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#0d88f8;background-color:#d0e9ff}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#0d88f8;background:#eaf5ff}.main-table table .btn-icon-left:hover>.icon{background:#eaf5ff}.main-table tbody>tr:hover{background:#eaf5ff}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#0d88f8}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f4faff}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f4faff}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#0c60e1}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#033869}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#0d88f8}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#0d88f8}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#0d88f8}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#eaf5ff}.table-nest-toggle:hover{color:#0d88f8}.table-footer .checkbox-primary.checked label:after{border-color:#0d88f8!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#3fa0f9!important;border-color:#3fa0f9!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#0d88f8}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#0d88f8;border-color:#0d88f8}.article-content a{color:#0d88f8}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#eaf5ff;background-color:#0d88f8}.list-group>a.active{color:#0d88f8;background-color:#eaf5ff}.list-group>a.active:hover,.list-group>a:hover{background-color:#0d88f8}#swapper #dropMenu .tree li>.selected{color:#0d88f8!important;background:#eaf5ff!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#0d88f8!important}.release-line>li>a:hover:before{background-color:#eaf5ff}.release-line>li>a:hover .title{color:#0d88f8}.release-line>li.active>a:before{border-color:#0d88f8}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#0d88f8}#poweredBy a:hover .icon-zentao{color:#0d88f8}#poweredBy a.text-primary{color:#0d88f8}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#0d88f8!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#0d88f8!important}.table td.has-child>.task-toggle:hover{color:#0d88f8!important}#openTaskPage.open:hover,#task .task-nav{color:#0d88f8!important;background:#eaf5ff!important}#tasksProgress>.progress-bar{background:#0d88f8!important}#tasksProgress .progress-text{color:#0d88f8!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#0d88f8!important;background:#eaf5ff!important;border-left-color:#0d88f8!important;-webkit-box-shadow:inset 4px 0 0 #0d88f8!important;box-shadow:inset 4px 0 0 #0d88f8!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#eaf5ff!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#eaf5ff!important}.files-grid .actions,.files-grid .col:hover .file{background:#eaf5ff!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#0d88f8!important}#bars>li.active:after{background:#eaf5ff!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#0080f9;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#0d88f8}.main-table tbody>tr:hover{background:rgba(234,245,255,.8)}.main-table tbody>tr>td.c-name a{color:#0071db}.main-table tbody>tr>td.c-name a:hover{color:#0080f9}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#0d88f8!important}.assigned-none{color:#0080f9!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#0080f9!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#0080f9!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#2294fb}#assigntomeBlock .nav>li.active>a{color:#0080f9}.consumedTotally{color:#0d88f8;background:#eaf5ff}#toggleFoldIcon .icon-border{border:1px solid #cfe7fe}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#0d88f8}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}body{background-color:#f4f5f7}#mainHeader{font-size:14px;background:#fff;border-bottom:1px solid #e3e1e1;-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.04);box-shadow:0 4px 8px 0 rgba(0,0,0,.04)}#heading .header-btn .btn,#navbar .nav>li>a{color:#3c4353}.header-btn+.header-btn:before{color:#3c4353}#navbar .nav>li.active>a{position:relative;font-weight:400;color:#0d88f8;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#0d88f8}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#userNav>li>a{color:#3c4353}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#subNavbar{font-size:14px}#subHeader{margin-top:-1px;border-top:1px solid #efefef;border-bottom:1px solid #e3e1e1;-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.04);box-shadow:0 4px 8px 0 rgba(0,0,0,.04)}.main-content>.cell,.main-content>.panel{border:none}.body-modal #mainContent{border:none}.dropdown-menu{border:1px solid #f2f2f2;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.09);box-shadow:0 4px 10px 0 rgba(0,0,0,.09)}.btn.btn-action,.c-actions .btn{width:26px;height:26px;padding:0}.btn.btn-action>i,.c-actions .btn>i{top:3px}.btn.btn-action+.btn,.c-actions .btn+.btn{margin-left:-3px}.btn.btn-action.disabled,.c-actions .btn.disabled{border-color:transparent}.btn.btn-action:hover,.c-actions .btn:hover{border-color:rgba(0,0,0,.1)}.c-actions button.btn>i,button.btn.btn-action>i{top:0}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{opacity:.2}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #e5e5e5}.calendar-view .table-bordered,.calendar-view .table-bordered th{border:none}.main-table table tr{border-color:#f2f4f7!important}.main-table tbody>tr.checked{background:#fff3e0!important}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:3px 8px;line-height:30px}.main-table thead>tr>th{border-color:#e5e5e5}.main-table tbody>tr>td{border-bottom:none!important}.main-table .table-nested>tbody>tr[data-parent="0"]{background:0 0}.main-table .table-nested>tbody>tr[data-parent="0"]+.is-nest-child{border-top:1px solid #e5e5e5}.main-table .table-nested>tbody>tr:hover{background:#ebf3fe!important}.main-table tbody>tr.checked.row-check-begin>td:first-child:before,.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-radius:0}#sidebar>.cell>.panel{border:none}#queryBox{border-width:0}#queryBox.show{border-width:1px}.checkbox-primary>label:after,.radio-primary>label:after{border-color:#d9dbe1}body.m-index-index{height:100vh;background-color:#0d88f8!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAJYBAMAAACuq3YLAAAAG1BMVEUAAAD////////////////////////////////rTT7CAAAACXRSTlMAJhQfBgsPGhdNj7JjAAAHm0lEQVR42uTNQQ0DQAhFwQ0BhCAFCUjAv4iee9tL+5L9Y2COGj933onjQPLceSe2c+eduA9kzp134j2QOneeiV0uDipOudjk4qbikYuXikstdioOuTip2Ki45eKh4qXiUoudikMuTio2Km65eKh4qbjUYqfioOKkYpOLm4qHipeKSy12Kg4qTio2uXjk4qXigmKn4qDipGKTi5uKh4qXiguKnYqDipOKjYqbioeKl4pLLQ652OTikYtLLQ652OTioeKl4oJip+Kg4qRio+Km4qHipeKCYqfioGKj4qbioeKl4oJip+KkYqPipuKh4qXiguKg4qRio+Km4qXigmKn4qBi+2P8pal4qLig2Kk4qNiouKl4qLig2Kk4qNiouKl4qLig2Kk4qNiouKl4qbig2Kk4qdioeKh4odgLioOKjYqbipeKC4qDiu3H8Yd4OraBIISBKLpCQE4JmIBNaYESKIEOtgQ6v/QSbAJG8xt40lje1lnwZMFCggMLdiy4s+DJgoUEBxbsWHBnwZMEeyHBgQU7FjxYsJBgz4IjC+4seLLgnfs+2MIOrg82t4PLg22wYNmVH2ieBcctvB5ofQt/D7S5hduDzAsJjns4Pcg6ATZO/Cow9MRVgaEnLlC4s+C5hzMS9rJvIeGowB8S7grckPBU4ASEvRBg68SvAkNPXJDwJMDmiTMQjhq8gHDX4A8Ii1bDwYEFOxVOOHho7guERavg4MiCuwpnHDxV+IPBXtQaDHY6nGDwYMD20hUGRx0uMLjrcIbBordQcDDgDwU7A24oeBpwAsHecKsCQ5cuKHgYcAbBXowWCI4W3EDwsOCkwMilXwWGLl02MGTp/zIG9mK1MHA04YaBhwknBUYu/SowdOmiwNClMwT2YrYgsLPhBoGHDScFRi5dFRi6dIHA04YXAg5i1xBwF7uEgMWuIuAodgUBD7FbANjLQQ0AuxM4AeApdhUABzmoAOB+Aq/7sJeT2n3YHcHpPjyPTnwfDnJSvg+PI/i7Dns5Kl2H+5Fb78NyVL4OxzP4uw7PM7jdhsOZ+6b/EL/048UObiUHgSiKShZmXyE0LOwtKbCYAAiBDByCNYnPZqS/+hK3de2XwNErCtrqX1JtOJW13DbcF+EGYLPwGTK8LcLVhstiLhneVuGQ4VX3kOG8Cn9keH55xPFW4RIANgtXAKuFPy48l+EGYLPwGSpcllNVOK/DlwqX9YQJ93W3mnAq67lNuAM4RHgHbjXhAeBbhHMBaSI8gXuEB/cC8vHgVEiaBw/inqHBeyH5ePBEcNPgP8g9woJTQbk1uDO4WfDO3BoWPOGkLXgrLCHBCbrVgjuELwneoXuGBA86aQnOBaZJ8NQKx6ObVS4HTkVbrYhHC38ceC80zYEHdWsocC40lwNP6p6hwFuh+ThwwWkK3LFbw4CTXTgeLGzAfuF4qvARBrwXnEuBh184Xi78k2cKnwFgs/ANYLewAWenMIenUpjDueBcADYLHwHg1wvHE4UB/H7h0AvXWIteuCnweKxwyK/02RR46I/lT9zCRyjw8K/ST9TCNRS4Y7gpcHI2i8OdbxaJWPhy4I1vlgNP6J7hwJkPmsUqXANG+3uYRnotmwQnPGgJ7vTpsGA6aAvO9I224AkP2IJ3eMAa3BHcNDjBp1KDN3bAHjzRAXvwjr7fRbijxfLghBZLhPO6+zdMeLzjxveTrqHCHVwkFQYXSYUzuEgqPN5y47vVukKGM7hIKjzARTLhBC6SCuf33MCTPpsD40lLbtBvnjukwEnXsMImfYYWttPtEXiAA1ZhcMAqnMEBq3AHB6zC4CdJhXfwRKtwB4NW4Qk22oQT2GgVzmDQKtzBoFV4gkGbcAJfsyq8gUGr8ACbpcKvF46F9zL+5x/3dWzDIBRDUdRCQP9GSAVz/BH+CGyQEdg85S2sSGm4Rd4CR/a3TfIEvDhf/w4Pd5WAL3WVgFd3soB3d5WAh1sw8HQLBnYLBt7cgoF3t2Dg4RYMPN2Cgd2CgVe3YODdLRh4cf6zdHi4nyXgKX6HydehfuXZMNTSaAFv7i4B727BwIu7S8DD+U3b4enuEvDl7hKwO1rAqztawJs8WsBup4F392oBL+4HEXh0OI8HuHf6qQC7owU85XMJ7J5L4EvuNLDbaWC508Dy9QC2Ow3sXw9gv9MdjpWSOw2s//YA9s9Wh49oKf1sAfvL1OF4KXmZgO0nBvaXqcMRU/4Td/iOmNKfuMNnzJT+xB2+Y6b0J+5w1AAfUVP2oe7wO16A9dkCPuOm9PMB7M8WsD9bwFEDfEROybMFbM8WsD9bwP7dAo6d8oca2B9q4Dt2Sp2tDkcN8Bk9pc8WsH8wge/oqR+H+t/gqAE+4qfkbQK2twnY3ybgd/yUuE0djhrgM/FTP27Tf8GfdurYBkAYiKHoreARIgpoGS0jsDkTIFxEOsX6f4FX2UMNVdOaVOaasmAZRcGnOipzxlHwkFEUPNVRmf8RBctqPXyppTKPKwk+5JQEDzklwY+ckuCplsq8auAFsKyC4Es91SmrIPiQFfDG8JAV8MbwI6sgeMoqCL5lBQwMDAyskhcwMDAwMPBnwMDAwMDAnwEDA//2AvAZt8geDw8jAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:left bottom;-webkit-background-size:120px 300px;background-size:120px 300px}.m-index-index #menu{background:0 0!important}.m-index-index #apps{overflow:hidden}.m-index-index #appsBar{border-color:#e2e2e2}.m-index-index #menu .nav>li>a{opacity:.75}.m-index-index #menu .nav>li.active>a,.m-index-index #menu .nav>li>a:focus,.m-index-index #menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.2)),to(rgba(0,0,0,0)))!important;background:-webkit-linear-gradient(left,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;background:-o-linear-gradient(left,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;background:linear-gradient(90deg,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;border-radius:4px;opacity:1}.m-index-index #menu .nav>li.active>a:hover{background-color:#0d88f8!important}.m-index-index.menu-hide #menu .nav>li.active>a,.m-index-index.menu-hide #menu .nav>li>a:focus,.m-index-index.menu-hide #menu .nav>li>a:hover{background:rgba(0,0,0,.12)!important}.m-index-index #bars>li>a{color:#838a9d}.m-index-index #bars>li>a:hover{color:#fff!important;background-color:#0d88f8!important}.m-index-index #bars>li.active>a:active>span,.m-index-index #bars>li.active>a:focus>span,.m-index-index #bars>li.active>a>span{font-weight:400;border-color:#23c8ec}.m-index-index #bars>li.active>a{color:#3c4353}.m-index-index #bars>li.active>a:hover{color:#fff!important}.m-project-browse #cards{padding:0;margin:0 -10px;background:0 0;border:0;-webkit-box-shadow:none;box-shadow:none}.m-project-browse #cards .pager .btn{background-color:transparent}.m-product-all #productList>thead>tr{border-top:1px solid #ededed}.m-product-all #productList>thead>tr>th{border-color:#ededed!important}.m-product-all #productList>thead>tr:first-child>th:first-child{border-left:none}.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(10),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(11),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(12),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(2),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(3),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(8){border-right:1px solid #ededed}.m-repo-browse #logForm,.m-repo-browse .main-table{border:1px solid #ededed}#userNav>li>a>.icon{color:#23c8ec;filter:none;-webkit-filter:none}#mainMenu>.btn-toobar .btn-link:active,#mainMenu>.btn-toolBar .btn-link:active,#mainMenu>.btn-toolbar .btn-link:active{background:#e6eaf1}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.table-actions .btn:hover{color:#fff}#programTableList>tr:hover{background:#eaf5ffcc}#programTableList>tr:hover>.c-name>a{color:#0080f9!important}#programTableList>tr[data-type=project]>.c-name>a{color:#0071db!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c0e9!important} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#0d88f8}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0673d6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0560b3;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#0673d6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#0560b3;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#0d88f8;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#0d88f8;background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:#c1e2ff;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#9dd1ff;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:#c1e2ff;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#9dd1ff;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#eaf5ff;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0d88f8}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#0d88f8}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#066ecc}.label-primary.label-outline{color:#0d88f8;background:0 0;border:1px solid #0d88f8}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#066ecc}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#70b9fb}.text-primary{color:#0d88f8}.text-primary:hover{color:#066ecc}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#0d88f8}a.bg-primary:hover{background-color:#066ecc}.hl-primary{background-color:#eaf5ff}a.hl-primary:hover{background-color:#b7ddff}.progress{background-color:#eaf5ff;border-radius:3px}.progress-bar{color:#fff;background-color:#0d88f8;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#0d88f8;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.form-control:focus{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#0d88f8;border-color:#0d88f8}.switch input:focus+label{color:#0d88f8}.switch input:focus+label:before{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #0d88f8;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #0d88f8}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#0d88f8;border-color:#0d88f8}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#0d88f8;-webkit-box-shadow:0 0 8px #0d88f8;box-shadow:0 0 8px #0d88f8}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#0d88f8}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#0d88f8}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#eaf5ff}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#0d88f8}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#0d88f8}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#0d88f8;border-bottom-color:#0d88f8}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #0d88f8;box-shadow:inset 2px 0 0 #0d88f8}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#0d88f8}.panel-primary>.panel-heading{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#0d88f8}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#0d88f8}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#eaf5ff}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#0d88f8!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#0d88f8!important;border-bottom-left-radius:#0d88f8!important}.chosen-container .chosen-results li.highlighted{background-color:#0d88f8!important}.chosen-container-active .chosen-single{border-color:#0d88f8!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#0d88f8!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#0d88f8!important;border-bottom-left-radius:#0d88f8!important}.chosen-container.chosen-highlight-selected .result-selected{color:#0d88f8;background:#eaf5ff}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#0d88f8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#0d88f8}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#0d88f8}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#0d88f8!important;border-color:#066ecc!important}.datetimepicker td.day.active:hover{background-color:#066ecc!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#0d88f8!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important}.ke-menu-item-on{background-color:#0d88f8!important}.ke-colorpicker-cell-on{background-color:#0d88f8!important}.ke-input-text:focus{border-color:#0d88f8!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#0d88f8}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#eaf5ff}.alert-primary hr{border-top-color:#c6e4ff}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#eaf5ff}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#0d88f8}.tree-drag-holder{background-color:#eaf5ff}.tree-menu li.active>a{color:#fff;background-color:#0d88f8;border-color:#0d88f8}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#0d88f8}.nav-primary>li.active>a{color:#0080f9}.nav-primary>li.active>a:hover{color:#0080f9}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#0d88f8),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#0d88f8 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#0d88f8 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#0d88f8 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#0d88f8}.bg-primary-pale{color:#0d88f8;background-color:#eaf5ff}.bg-secondary{background:#23c8ec}.alert-info{color:#0d88f8;background:#eaf5ff}.btn-primary{color:#fff;background-color:#0d88f8;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(13,136,248,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#077be5;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#0d88f8;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#23c8ec;border-color:transparent}.btn-info{color:#0d88f8;background-color:#eaf5ff;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#0d88f8;background-color:rgba(234,245,255,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d0e9ff;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(13,136,248,.3);background-color:#eaf5ff;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#eaf5ff}.btn-active-line{color:#0d88f8}.btn-active-line:after{border-bottom-color:#0d88f8}.btn-active-line:hover{color:#0d88f8}.btn-active-text .text{color:#0080f9}.btn-active-text .text:after{border-bottom-color:#0080f9}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(13,136,248,.8)}.label-primary{background:#0d88f8!important}.label-pale{background:#b7ddff!important}.label-outline.label-primary{background:#eaf5ff!important;border-color:rgba(13,136,248,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#0d88f8;border-color:#0d88f8}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#0d88f8;-webkit-box-shadow:0 0 0 3px rgba(13,136,248,.2);box-shadow:0 0 0 3px rgba(13,136,248,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#0d88f8}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#0d88f8!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#0d88f8!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#0d88f8!important}.nav-tabs>li.active>a:before{background:#0d88f8}.nav-tabs-primary>li.active>a{color:#0d88f8!important}.panel-actions .btn.text-primary{color:#0d88f8}.picker-focus .picker-selections{border-color:#0d88f8;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(13,136,248,.6)}.status-bars .bar{background:#0d88f8}.status-bars-h .bar{background:#0d88f8}.messagger-zt .messager-content>.icon{color:#0d88f8}.tree li.active>a{color:#0d88f8}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#0d88f8}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#eaf5ff}.dropdown-submenu:hover>a:after{border-left-color:#0d88f8}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#0d88f8}.timeline>li.active:before{background-color:rgba(13,136,248,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#0d88f8!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#0d88f8!important}#mainHeader{background:#2294fb;border-top-color:#0d88f8;border-bottom-color:#eaf5ff}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#0d88f8}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#0d88f8}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#0d88f8}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#0d88f8}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #0d88f8}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #0d88f8}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #0d88f8}#sidebarHeader .title{color:#0d88f8}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#0d88f8}#contentNav .nav>li.active>a{color:#0d88f8}#contentNav .nav>li.active>a:before{background:#0d88f8}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#0d88f8;background-color:#d0e9ff}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#0d88f8;background:#eaf5ff}.main-table table .btn-icon-left:hover>.icon{background:#eaf5ff}.main-table tbody>tr:hover{background:#eaf5ff}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#0d88f8}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f4faff}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f4faff}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#0c60e1}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#033869}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#0d88f8}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#0d88f8}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#0d88f8}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#eaf5ff}.table-nest-toggle:hover{color:#0d88f8}.table-footer .checkbox-primary.checked label:after{border-color:#0d88f8!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#3fa0f9!important;border-color:#3fa0f9!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#0d88f8}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#0d88f8;border-color:#0d88f8}.article-content a{color:#0d88f8}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#eaf5ff;background-color:#0d88f8}.list-group>a.active{color:#0d88f8;background-color:#eaf5ff}.list-group>a.active:hover,.list-group>a:hover{background-color:#0d88f8}#swapper #dropMenu .tree li>.selected{color:#0d88f8!important;background:#eaf5ff!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#0d88f8!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#0d88f8!important;background:#eaf5ff!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#0d88f8!important}.release-line>li>a:hover:before{background-color:#eaf5ff}.release-line>li>a:hover .title{color:#0d88f8}.release-line>li.active>a:before{border-color:#0d88f8}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#0d88f8}#poweredBy a:hover .icon-zentao{color:#0d88f8}#poweredBy a.text-primary{color:#0d88f8}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#0d88f8!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#0d88f8!important}.table td.has-child>.task-toggle:hover{color:#0d88f8!important}#openTaskPage.open:hover,#task .task-nav{color:#0d88f8!important;background:#eaf5ff!important}#tasksProgress>.progress-bar{background:#0d88f8!important}#tasksProgress .progress-text{color:#0d88f8!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#0d88f8!important;background:#eaf5ff!important;border-left-color:#0d88f8!important;-webkit-box-shadow:inset 4px 0 0 #0d88f8!important;box-shadow:inset 4px 0 0 #0d88f8!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#eaf5ff!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#eaf5ff!important}.files-grid .actions,.files-grid .col:hover .file{background:#eaf5ff!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#0d88f8!important}#bars>li.active:after{background:#eaf5ff!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#0080f9;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#0d88f8}.main-table tbody>tr:hover{background:rgba(234,245,255,.8)}.main-table tbody>tr>td.c-name a{color:#0071db}.main-table tbody>tr>td.c-name a:hover{color:#0080f9}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#0d88f8!important}.assigned-none{color:#0080f9!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#0080f9!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#0080f9!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#2294fb}#assigntomeBlock .nav>li.active>a{color:#0080f9}.consumedTotally{color:#0d88f8;background:#eaf5ff}#toggleFoldIcon .icon-border{border:1px solid #cfe7fe}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#0d88f8}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}body{background-color:#f4f5f7}#mainHeader{font-size:14px;background:#fff;border-bottom:1px solid #e3e1e1;-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.04);box-shadow:0 4px 8px 0 rgba(0,0,0,.04)}#heading .header-btn .btn,#navbar .nav>li>a{color:#3c4353}.header-btn+.header-btn:before{color:#3c4353}#navbar .nav>li.active>a{position:relative;font-weight:400;color:#0d88f8;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#0d88f8}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#userNav>li>a{color:#3c4353}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#subNavbar{font-size:14px}#subHeader{margin-top:-1px;border-top:1px solid #efefef;border-bottom:1px solid #e3e1e1;-webkit-box-shadow:0 4px 8px 0 rgba(0,0,0,.04);box-shadow:0 4px 8px 0 rgba(0,0,0,.04)}.main-content>.cell,.main-content>.panel{border:none}.body-modal #mainContent{border:none}.dropdown-menu{border:1px solid #f2f2f2;-webkit-box-shadow:0 4px 10px 0 rgba(0,0,0,.09);box-shadow:0 4px 10px 0 rgba(0,0,0,.09)}.btn.btn-action,.c-actions .btn{width:26px;height:26px;padding:0}.btn.btn-action>i,.c-actions .btn>i{top:3px}.btn.btn-action+.btn,.c-actions .btn+.btn{margin-left:-3px}.btn.btn-action.disabled,.c-actions .btn.disabled{border-color:transparent}.btn.btn-action:hover,.c-actions .btn:hover{border-color:rgba(0,0,0,.1)}.c-actions button.btn>i,button.btn.btn-action>i{top:0}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{opacity:.2}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #e5e5e5}.calendar-view .table-bordered,.calendar-view .table-bordered th{border:none}.main-table table tr{border-color:#f2f4f7!important}.main-table tbody>tr.checked{background:#fff3e0!important}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:3px 8px;line-height:30px}.main-table thead>tr>th{border-color:#e5e5e5}.main-table tbody>tr>td{border-bottom:none!important}.main-table .table-nested>tbody>tr[data-parent="0"]{background:0 0}.main-table .table-nested>tbody>tr[data-parent="0"]+.is-nest-child{border-top:1px solid #e5e5e5}.main-table .table-nested>tbody>tr:hover{background:#ebf3fe!important}.main-table tbody>tr.checked.row-check-begin>td:first-child:before,.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-radius:0}#sidebar>.cell>.panel{border:none}#queryBox{border-width:0}#queryBox.show{border-width:1px}.checkbox-primary>label:after,.radio-primary>label:after{border-color:#d9dbe1}body.m-index-index{height:100vh;background-color:#0d88f8!important;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAJYBAMAAACuq3YLAAAAG1BMVEUAAAD////////////////////////////////rTT7CAAAACXRSTlMAJhQfBgsPGhdNj7JjAAAHm0lEQVR42uTNQQ0DQAhFwQ0BhCAFCUjAv4iee9tL+5L9Y2COGj933onjQPLceSe2c+eduA9kzp134j2QOneeiV0uDipOudjk4qbikYuXikstdioOuTip2Ki45eKh4qXiUoudikMuTio2Km65eKh4qbjUYqfioOKkYpOLm4qHipeKSy12Kg4qTio2uXjk4qXigmKn4qDipGKTi5uKh4qXiguKnYqDipOKjYqbioeKl4pLLQ652OTikYtLLQ652OTioeKl4oJip+Kg4qRio+Km4qHipeKCYqfioGKj4qbioeKl4oJip+KkYqPipuKh4qXiguKg4qRio+Km4qXigmKn4qBi+2P8pal4qLig2Kk4qNiouKl4qLig2Kk4qNiouKl4qLig2Kk4qNiouKl4qbig2Kk4qdioeKh4odgLioOKjYqbipeKC4qDiu3H8Yd4OraBIISBKLpCQE4JmIBNaYESKIEOtgQ6v/QSbAJG8xt40lje1lnwZMFCggMLdiy4s+DJgoUEBxbsWHBnwZMEeyHBgQU7FjxYsJBgz4IjC+4seLLgnfs+2MIOrg82t4PLg22wYNmVH2ieBcctvB5ofQt/D7S5hduDzAsJjns4Pcg6ATZO/Cow9MRVgaEnLlC4s+C5hzMS9rJvIeGowB8S7grckPBU4ASEvRBg68SvAkNPXJDwJMDmiTMQjhq8gHDX4A8Ii1bDwYEFOxVOOHho7guERavg4MiCuwpnHDxV+IPBXtQaDHY6nGDwYMD20hUGRx0uMLjrcIbBordQcDDgDwU7A24oeBpwAsHecKsCQ5cuKHgYcAbBXowWCI4W3EDwsOCkwMilXwWGLl02MGTp/zIG9mK1MHA04YaBhwknBUYu/SowdOmiwNClMwT2YrYgsLPhBoGHDScFRi5dFRi6dIHA04YXAg5i1xBwF7uEgMWuIuAodgUBD7FbANjLQQ0AuxM4AeApdhUABzmoAOB+Aq/7sJeT2n3YHcHpPjyPTnwfDnJSvg+PI/i7Dns5Kl2H+5Fb78NyVL4OxzP4uw7PM7jdhsOZ+6b/EL/048UObiUHgSiKShZmXyE0LOwtKbCYAAiBDByCNYnPZqS/+hK3de2XwNErCtrqX1JtOJW13DbcF+EGYLPwGTK8LcLVhstiLhneVuGQ4VX3kOG8Cn9keH55xPFW4RIANgtXAKuFPy48l+EGYLPwGSpcllNVOK/DlwqX9YQJ93W3mnAq67lNuAM4RHgHbjXhAeBbhHMBaSI8gXuEB/cC8vHgVEiaBw/inqHBeyH5ePBEcNPgP8g9woJTQbk1uDO4WfDO3BoWPOGkLXgrLCHBCbrVgjuELwneoXuGBA86aQnOBaZJ8NQKx6ObVS4HTkVbrYhHC38ceC80zYEHdWsocC40lwNP6p6hwFuh+ThwwWkK3LFbw4CTXTgeLGzAfuF4qvARBrwXnEuBh184Xi78k2cKnwFgs/ANYLewAWenMIenUpjDueBcADYLHwHg1wvHE4UB/H7h0AvXWIteuCnweKxwyK/02RR46I/lT9zCRyjw8K/ST9TCNRS4Y7gpcHI2i8OdbxaJWPhy4I1vlgNP6J7hwJkPmsUqXANG+3uYRnotmwQnPGgJ7vTpsGA6aAvO9I224AkP2IJ3eMAa3BHcNDjBp1KDN3bAHjzRAXvwjr7fRbijxfLghBZLhPO6+zdMeLzjxveTrqHCHVwkFQYXSYUzuEgqPN5y47vVukKGM7hIKjzARTLhBC6SCuf33MCTPpsD40lLbtBvnjukwEnXsMImfYYWttPtEXiAA1ZhcMAqnMEBq3AHB6zC4CdJhXfwRKtwB4NW4Qk22oQT2GgVzmDQKtzBoFV4gkGbcAJfsyq8gUGr8ACbpcKvF46F9zL+5x/3dWzDIBRDUdRCQP9GSAVz/BH+CGyQEdg85S2sSGm4Rd4CR/a3TfIEvDhf/w4Pd5WAL3WVgFd3soB3d5WAh1sw8HQLBnYLBt7cgoF3t2Dg4RYMPN2Cgd2CgVe3YODdLRh4cf6zdHi4nyXgKX6HydehfuXZMNTSaAFv7i4B727BwIu7S8DD+U3b4enuEvDl7hKwO1rAqztawJs8WsBup4F392oBL+4HEXh0OI8HuHf6qQC7owU85XMJ7J5L4EvuNLDbaWC508Dy9QC2Ow3sXw9gv9MdjpWSOw2s//YA9s9Wh49oKf1sAfvL1OF4KXmZgO0nBvaXqcMRU/4Td/iOmNKfuMNnzJT+xB2+Y6b0J+5w1AAfUVP2oe7wO16A9dkCPuOm9PMB7M8WsD9bwFEDfEROybMFbM8WsD9bwP7dAo6d8oca2B9q4Dt2Sp2tDkcN8Bk9pc8WsH8wge/oqR+H+t/gqAE+4qfkbQK2twnY3ybgd/yUuE0djhrgM/FTP27Tf8GfdurYBkAYiKHoreARIgpoGS0jsDkTIFxEOsX6f4FX2UMNVdOaVOaasmAZRcGnOipzxlHwkFEUPNVRmf8RBctqPXyppTKPKwk+5JQEDzklwY+ckuCplsq8auAFsKyC4Es91SmrIPiQFfDG8JAV8MbwI6sgeMoqCL5lBQwMDAyskhcwMDAwMPBnwMDAwMDAnwEDA//2AvAZt8geDw8jAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:left bottom;-webkit-background-size:120px 300px;background-size:120px 300px}.m-index-index #menu{background:0 0!important}.m-index-index #apps{overflow:hidden}.m-index-index #appsBar{border-color:#e2e2e2}.m-index-index #menu .nav>li>a{opacity:.75}.m-index-index #menu .nav>li.active>a,.m-index-index #menu .nav>li>a:focus,.m-index-index #menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.2)),to(rgba(0,0,0,0)))!important;background:-webkit-linear-gradient(left,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;background:-o-linear-gradient(left,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;background:linear-gradient(90deg,rgba(0,0,0,.2) 0,rgba(0,0,0,0) 100%)!important;border-radius:4px;opacity:1}.m-index-index #menu .nav>li.active>a:hover{background-color:#0d88f8!important}.m-index-index.menu-hide #menu .nav>li.active>a,.m-index-index.menu-hide #menu .nav>li>a:focus,.m-index-index.menu-hide #menu .nav>li>a:hover{background:rgba(0,0,0,.12)!important}.m-index-index #bars>li>a{color:#838a9d}.m-index-index #bars>li>a:hover{color:#fff!important;background-color:#0d88f8!important}.m-index-index #bars>li.active>a:active>span,.m-index-index #bars>li.active>a:focus>span,.m-index-index #bars>li.active>a>span{font-weight:400;border-color:#23c8ec}.m-index-index #bars>li.active>a{color:#3c4353}.m-index-index #bars>li.active>a:hover{color:#fff!important}.m-project-browse #cards{padding:0;margin:0 -10px;background:0 0;border:0;-webkit-box-shadow:none;box-shadow:none}.m-project-browse #cards .pager .btn{background-color:transparent}.m-product-all #productList>thead>tr{border-top:1px solid #ededed}.m-product-all #productList>thead>tr>th{border-color:#ededed!important}.m-product-all #productList>thead>tr:first-child>th:first-child{border-left:none}.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(10),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(11),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(12),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(2),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(3),.m-product-all #productTableList>tr[data-parent="0"]>td:nth-child(8){border-right:1px solid #ededed}.m-repo-browse #logForm,.m-repo-browse .main-table{border:1px solid #ededed}#userNav>li>a>.icon{color:#23c8ec;filter:none;-webkit-filter:none}#mainMenu>.btn-toobar .btn-link:active,#mainMenu>.btn-toolBar .btn-link:active,#mainMenu>.btn-toolbar .btn-link:active{background:#e6eaf1}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.table-actions .btn:hover{color:#fff}#programTableList>tr:hover{background:#eaf5ffcc}#programTableList>tr:hover>.c-name>a{color:#0080f9!important}#programTableList>tr[data-type=project]>.c-name>a{color:#0071db!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c0e9!important} \ No newline at end of file diff --git a/www/theme/classic/style.css b/www/theme/classic/style.css index b947a2a58e..a6c2dc0301 100644 --- a/www/theme/classic/style.css +++ b/www/theme/classic/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - classic - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - classic - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#036}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:0}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#001f3d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#000d1a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#001f3d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#000d1a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#036;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#036;background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:#c6d9fc;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#a5c3fa;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:#c6d9fc;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#a5c3fa;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#edf3fe;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#036}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:0}.label{border-radius:0}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#036}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#001933}.label-primary.label-outline{color:#036;background:0 0;border:1px solid #036}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#001933}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#06c}.text-primary{color:#036}.text-primary:hover{color:#001933}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#036}a.bg-primary:hover{background-color:#001933}.hl-primary{background-color:#edf3fe}a.hl-primary:hover{background-color:#bdd3fb}.progress{background-color:#edf3fe;border-radius:3px}.progress-bar{color:#fff;background-color:#036;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#036;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.form-control:focus{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:0}.switch>input:checked+label:before{background-color:#036;border-color:#036}.switch input:focus+label{color:#036}.switch input:focus+label:before{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #036;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #036}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#036;border-color:#036}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#036;-webkit-box-shadow:0 0 8px #036;box-shadow:0 0 8px #036}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#036}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#036}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#114f8e}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:0}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#edf3fe}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#036;border-color:#036}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:0}@media (min-width:768px){.navbar{border-radius:0}}.navbar-inverse{background-color:#114f8e;border-color:#0c3660}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#0e4277}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#145ea9}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#1668bc}.navbar-inverse .navbar-toggle{border-color:#1668bc}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#0e4277}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0d3d6e}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#1668bc}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#0c3660}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#145ea9}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1668bc}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #1668bc;-webkit-box-shadow:inset 0 -1px 0 #0c3660;box-shadow:inset 0 -1px 0 #0c3660}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#0d3b6a}.nav>li>a:focus,.nav>li>a:hover{color:#036}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#036}.nav-primary>li:first-child>a{border-top-left-radius:0;border-bottom-left-radius:0}.nav-primary>li:last-child>a{border-top-right-radius:0;border-bottom-right-radius:0}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#036;border-color:#036}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#036;border-bottom-color:#036}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #036;box-shadow:inset 2px 0 0 #036}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:0}.pager{border-radius:0}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:0;border-bottom-left-radius:0}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:0;border-bottom-right-radius:0}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#036;border-color:#036}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:0}.panel>.panel-heading{background-image:none;border-top-left-radius:0;border-top-right-radius:0}.panel-group .panel{border-radius:0}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#036}.panel-primary>.panel-heading{color:#fff;background-color:#036;border-color:#036}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#036}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#036}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#edf3fe}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#036!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#036!important;border-bottom-left-radius:#036!important}.chosen-container .chosen-results li.highlighted{background-color:#036!important}.chosen-container-active .chosen-single{border-color:#036!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#036!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#036!important;border-bottom-left-radius:#036!important}.chosen-container.chosen-highlight-selected .result-selected{color:#036;background:#edf3fe}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#036;border-color:#036}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:0}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#036}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#036}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#036}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#036!important;border-color:#001933!important}.datetimepicker td.day.active:hover{background-color:#001933!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:0!important}.ke-container.focus{border-color:#036!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important}.ke-menu-item-on{background-color:#036!important}.ke-colorpicker-cell-on{background-color:#036!important}.ke-input-text:focus{border-color:#036!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important}.messager{border-radius:0}.messager-primary{background-color:#036}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:0}.alert-primary{color:#273042;background-color:#edf3fe}.alert-primary hr{border-top-color:#cbdcfc}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#036;border-color:#036}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:0}.card{border-radius:0;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:0}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#edf3fe}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#036}.tree-drag-holder{background-color:#edf3fe}.tree-menu li.active>a{color:#fff;background-color:#036;border-color:#036}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#114f8e}a.text-primary{color:#036}.nav-primary>li.active>a{color:#000d1a}.nav-primary>li.active>a:hover{color:#000d1a}.bg-primary,.m-user-login{background:#114f8e -webkit-gradient(linear,right top,left top,from(#036),to(#114f8e))!important;background:#114f8e -webkit-linear-gradient(right,#036 0,#114f8e 100%)!important;background:#114f8e -o-linear-gradient(right,#036 0,#114f8e 100%)!important;background:#114f8e linear-gradient(-90deg,#036 0,#114f8e 100%)!important}.bg-primary-pure{color:#fff;background-color:#036}.bg-primary-pale{color:#036;background-color:#edf3fe}.bg-secondary{background:#114f8e}.alert-info{color:#036;background:#edf3fe}.btn-primary{color:#fff;background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(0,51,102,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#00264d;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#036;border-color:transparent}.btn-secondary{color:#fff;background-color:#114f8e;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(17,79,142,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#0e4277;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#114f8e;border-color:transparent}.btn-info{color:#036;background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:rgba(237,243,254,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d5e3fd;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(0,51,102,.3);background-color:#edf3fe;border-color:transparent}.btn-icon-left>.icon{color:#114f8e;background:#edf3fe}.btn-active-line{color:#036}.btn-active-line:after{border-bottom-color:#036}.btn-active-line:hover{color:#036}.btn-active-text .text{color:#000d1a}.btn-active-text .text:after{border-bottom-color:#000d1a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(0,51,102,.8)}.label-primary{background:#036!important}.label-pale{background:#bdd3fb!important}.label-outline.label-primary{background:#edf3fe!important;border-color:rgba(0,51,102,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#114f8e;border-color:#114f8e}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#114f8e;-webkit-box-shadow:0 0 0 3px rgba(17,79,142,.2);box-shadow:0 0 0 3px rgba(17,79,142,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#114f8e}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#114f8e!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#114f8e!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#114f8e!important}.nav-tabs>li.active>a:before{background:#036}.nav-tabs-primary>li.active>a{color:#036!important}.panel-actions .btn.text-primary{color:#036}.picker-focus .picker-selections{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.status-bars .bar{background:#036}.status-bars-h .bar{background:#036}.messagger-zt .messager-content>.icon{color:#036}.tree li.active>a{color:#036}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#036}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#114f8e}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#edf3fe}.dropdown-submenu:hover>a:after{border-left-color:#036}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#114f8e}.timeline>li>a:after,.timeline>li>div:after{background-color:#036}.timeline>li.active:before{background-color:rgba(0,51,102,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#036!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#036!important}#mainHeader{background:#114f8e -webkit-gradient(linear,right top,left top,from(#036),to(#114f8e));background:#114f8e -webkit-linear-gradient(right,#036 0,#114f8e 100%);background:#114f8e -o-linear-gradient(right,#036 0,#114f8e 100%);background:#114f8e linear-gradient(-90deg,#036 0,#114f8e 100%);background-color:#114f8e;border-top-color:#036;border-bottom-color:#edf3fe}#searchGo{background-color:#114f8e}#searchGo:hover{background-color:#036}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#036}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#036}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#036}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #036}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #036}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #036}#sidebarHeader .title{color:#036}#sidebar>.sidebar-toggle>.icon{background:#2182e4}#main .querybox-toggle.querybox-opened{color:#036}#contentNav .nav>li.active>a{color:#036}#contentNav .nav>li.active>a:before{background:#036}td.c-actions .btn{color:#114f8e}td.c-actions .btn:hover{color:#036;background-color:#d5e3fd}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#036;background:#edf3fe}.main-table table .btn-icon-left:hover>.icon{background:#edf3fe}.main-table tbody>tr:hover{background:#edf3fe}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#036}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f7f9ff}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f7f9ff}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#03c}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#000}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#1a53ff}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#036}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#036}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#edf3fe}.table-nest-toggle:hover{color:#036}.table-footer .checkbox-primary.checked label:after{border-color:#114f8e!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#1668bc!important;border-color:#1668bc!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#036}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#036;border-color:#036}.article-content a{color:#036}.article-content a:focus,.article-content a:hover{color:#114f8e}.list-group{overflow-y:auto}.list-group>a.selected{color:#edf3fe;background-color:#036}.list-group>a.active{color:#036;background-color:#edf3fe}.list-group>a.active:hover,.list-group>a:hover{background-color:#036}#swapper #dropMenu .tree li>.selected{color:#036!important;background:#edf3fe!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#036!important}.release-line>li>a:hover:before{background-color:#edf3fe}.release-line>li>a:hover .title{color:#036}.release-line>li.active>a:before{border-color:#036}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#114f8e}#poweredBy .icon-zentao{color:#114f8e}#poweredBy a:hover{color:#036}#poweredBy a:hover .icon-zentao{color:#036}#poweredBy a.text-primary{color:#036}#poweredBy a.text-primary:hover{color:#114f8e}.block-statistic .nav-secondary>li.active>a:before{background:#036!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#114f8e!important}.dynamic.active .dynamic-date:before{background-color:#114f8e!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#036!important}.table td.has-child>.task-toggle:hover{color:#036!important}#openTaskPage.open:hover,#task .task-nav{color:#036!important;background:#edf3fe!important}#tasksProgress>.progress-bar{background:#036!important}#tasksProgress .progress-text{color:#036!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#036!important;background:#edf3fe!important;border-left-color:#036!important;-webkit-box-shadow:inset 4px 0 0 #036!important;box-shadow:inset 4px 0 0 #036!important}#copyProjectModal a:hover{border-color:#114f8e!important}#zeroTaskStory.checked{background:#edf3fe!important;border-color:#114f8e!important}.cols-list .col:hover{background:#edf3fe!important}.files-grid .actions,.files-grid .col:hover .file{background:#edf3fe!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06)}#menu .nav>li.active>a{background:#114f8e!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#114f8e!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#036!important}#bars>li.active:after{background:#edf3fe!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#000d1a;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#036}.main-table tbody>tr:hover{background:rgba(237,243,254,.8)}.main-table tbody>tr>td.c-name a{color:#000}.main-table tbody>tr>td.c-name a:hover{color:#000d1a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#036!important}.assigned-none{color:#000d1a!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#000d1a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#000d1a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#0059b3}#assigntomeBlock .nav>li.active>a{color:#000d1a}.consumedTotally{color:#036;background:#edf3fe}#toggleFoldIcon .icon-border{border:1px solid #39f}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#036}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}#loginPanel,#productsBox .product,#sidebarHeader,#task .task-desc>ul>li[data-target]:after,.block-todoes .todoes-form,.btn,.btn>.label-icon,.cell,.checkbox-primary>label:after,.chosen-container .chosen-results>li,.chosen-container-multi .chosen-choices li.search-choice,.chosen-container-single .chosen-drop,.chosen-container-single .chosen-search input[type=text],.datetimepicker td,.datetimepicker th,.dropdown-menu,.dropdown-menu>li>a,.files-grid .actions,.files-grid .file,.form-control,.ke-container,.list-group>a,.main-actions .btn-toolbar,.main-content,.main-table,.main-table tbody>tr.checked.row-check-begin>td:first-child:before,.main-table tbody>tr.checked.row-check-end>td:first-child:before,.modal-dialog,.modal-iframe .modal-body>iframe,.nav>li>a,.panel,.progress,.progress-bar,.radio-primary>label:after,.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control,.table,.table-footer{border-radius:0!important}#header,#mainMenu+#mainContent.main-row .cell,#sidebarHeader,.cell,.main-content,.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive,.panel{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06)}#footer{border-top-color:transparent;-webkit-box-shadow:0 -1px 3px 0 rgba(0,0,0,.08),0 -1px 1px 0 rgba(0,0,0,.05),0 -2px 1px -1px rgba(0,0,0,.06);box-shadow:0 -1px 3px 0 rgba(0,0,0,.08),0 -1px 1px 0 rgba(0,0,0,.05),0 -2px 1px -1px rgba(0,0,0,.06)}.block-statistic .nav-stacked,.main-table thead>tr>th,.table-footer{border-color:#e5e5e5;border-top-width:1px;border-bottom-width:1px}td.c-actions .btn{opacity:.85}td.c-actions .btn:hover{opacity:1}.main-table tbody>tr.checked{background:#fff4ea;-webkit-box-shadow:none!important;box-shadow:none!important}.main-table tbody>tr.checked:hover{background:#ffe7d0}.main-table td.c-actions .btn.disabled{opacity:.5} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#036}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:0}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#001f3d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#000d1a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#001f3d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#000d1a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#036;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#036;background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:#c6d9fc;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#a5c3fa;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:#c6d9fc;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#a5c3fa;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#edf3fe;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#036}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:0}.label{border-radius:0}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#036}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#001933}.label-primary.label-outline{color:#036;background:0 0;border:1px solid #036}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#001933}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#06c}.text-primary{color:#036}.text-primary:hover{color:#001933}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#036}a.bg-primary:hover{background-color:#001933}.hl-primary{background-color:#edf3fe}a.hl-primary:hover{background-color:#bdd3fb}.progress{background-color:#edf3fe;border-radius:3px}.progress-bar{color:#fff;background-color:#036;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#036;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.form-control:focus{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:0}.switch>input:checked+label:before{background-color:#036;border-color:#036}.switch input:focus+label{color:#036}.switch input:focus+label:before{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #036;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #036}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#036;border-color:#036}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#036;-webkit-box-shadow:0 0 8px #036;box-shadow:0 0 8px #036}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#036}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#036}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#114f8e}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:0}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#edf3fe}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#036;border-color:#036}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:0}@media (min-width:768px){.navbar{border-radius:0}}.navbar-inverse{background-color:#114f8e;border-color:#0c3660}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#0e4277}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#145ea9}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#1668bc}.navbar-inverse .navbar-toggle{border-color:#1668bc}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#0e4277}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0d3d6e}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#1668bc}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#0c3660}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#145ea9}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#1668bc}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #1668bc;-webkit-box-shadow:inset 0 -1px 0 #0c3660;box-shadow:inset 0 -1px 0 #0c3660}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#0d3b6a}.nav>li>a:focus,.nav>li>a:hover{color:#036}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#036}.nav-primary>li:first-child>a{border-top-left-radius:0;border-bottom-left-radius:0}.nav-primary>li:last-child>a{border-top-right-radius:0;border-bottom-right-radius:0}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#036;border-color:#036}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#036;border-bottom-color:#036}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:0;border-bottom-right-radius:0;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #036;box-shadow:inset 2px 0 0 #036}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:0}.pager{border-radius:0}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:0;border-bottom-left-radius:0}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:0;border-bottom-right-radius:0}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#036;border-color:#036}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:0}.panel>.panel-heading{background-image:none;border-top-left-radius:0;border-top-right-radius:0}.panel-group .panel{border-radius:0}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#036}.panel-primary>.panel-heading{color:#fff;background-color:#036;border-color:#036}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#036}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#036}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#edf3fe}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#036!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#036!important;border-bottom-left-radius:#036!important}.chosen-container .chosen-results li.highlighted{background-color:#036!important}.chosen-container-active .chosen-single{border-color:#036!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#036!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#036!important;border-bottom-left-radius:#036!important}.chosen-container.chosen-highlight-selected .result-selected{color:#036;background:#edf3fe}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#036;border-color:#036}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:0;border-top-right-radius:0}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:0}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#036}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#036}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#036}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#036!important;border-color:#001933!important}.datetimepicker td.day.active:hover{background-color:#001933!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:0!important}.ke-container.focus{border-color:#036!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important}.ke-menu-item-on{background-color:#036!important}.ke-colorpicker-cell-on{background-color:#036!important}.ke-input-text:focus{border-color:#036!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)!important}.messager{border-radius:0}.messager-primary{background-color:#036}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:0}.alert-primary{color:#273042;background-color:#edf3fe}.alert-primary hr{border-top-color:#cbdcfc}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#036;border-color:#036}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:0}.card{border-radius:0;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:0}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#edf3fe}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#036}.tree-drag-holder{background-color:#edf3fe}.tree-menu li.active>a{color:#fff;background-color:#036;border-color:#036}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#114f8e}a.text-primary{color:#036}.nav-primary>li.active>a{color:#000d1a}.nav-primary>li.active>a:hover{color:#000d1a}.bg-primary,.m-user-login{background:#114f8e -webkit-gradient(linear,right top,left top,from(#036),to(#114f8e))!important;background:#114f8e -webkit-linear-gradient(right,#036 0,#114f8e 100%)!important;background:#114f8e -o-linear-gradient(right,#036 0,#114f8e 100%)!important;background:#114f8e linear-gradient(-90deg,#036 0,#114f8e 100%)!important}.bg-primary-pure{color:#fff;background-color:#036}.bg-primary-pale{color:#036;background-color:#edf3fe}.bg-secondary{background:#114f8e}.alert-info{color:#036;background:#edf3fe}.btn-primary{color:#fff;background-color:#036;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(0,51,102,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#00264d;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#036;border-color:transparent}.btn-secondary{color:#fff;background-color:#114f8e;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(17,79,142,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#0e4277;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#114f8e;border-color:transparent}.btn-info{color:#036;background-color:#edf3fe;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#036;background-color:rgba(237,243,254,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#d5e3fd;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(0,51,102,.3);background-color:#edf3fe;border-color:transparent}.btn-icon-left>.icon{color:#114f8e;background:#edf3fe}.btn-active-line{color:#036}.btn-active-line:after{border-bottom-color:#036}.btn-active-line:hover{color:#036}.btn-active-text .text{color:#000d1a}.btn-active-text .text:after{border-bottom-color:#000d1a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(0,51,102,.8)}.label-primary{background:#036!important}.label-pale{background:#bdd3fb!important}.label-outline.label-primary{background:#edf3fe!important;border-color:rgba(0,51,102,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#114f8e;border-color:#114f8e}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#114f8e;-webkit-box-shadow:0 0 0 3px rgba(17,79,142,.2);box-shadow:0 0 0 3px rgba(17,79,142,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#114f8e}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#114f8e!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#114f8e!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#114f8e!important}.nav-tabs>li.active>a:before{background:#036}.nav-tabs-primary>li.active>a{color:#036!important}.panel-actions .btn.text-primary{color:#036}.picker-focus .picker-selections{border-color:#036;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(0,51,102,.6)}.status-bars .bar{background:#036}.status-bars-h .bar{background:#036}.messagger-zt .messager-content>.icon{color:#036}.tree li.active>a{color:#036}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#036}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#114f8e}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#edf3fe}.dropdown-submenu:hover>a:after{border-left-color:#036}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#114f8e}.timeline>li>a:after,.timeline>li>div:after{background-color:#036}.timeline>li.active:before{background-color:rgba(0,51,102,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#036!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#036!important}#mainHeader{background:#114f8e -webkit-gradient(linear,right top,left top,from(#036),to(#114f8e));background:#114f8e -webkit-linear-gradient(right,#036 0,#114f8e 100%);background:#114f8e -o-linear-gradient(right,#036 0,#114f8e 100%);background:#114f8e linear-gradient(-90deg,#036 0,#114f8e 100%);background-color:#114f8e;border-top-color:#036;border-bottom-color:#edf3fe}#searchGo{background-color:#114f8e}#searchGo:hover{background-color:#036}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#036}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#036}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#036}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #036}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #036}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #036}#sidebarHeader .title{color:#036}#sidebar>.sidebar-toggle>.icon{background:#2182e4}#main .querybox-toggle.querybox-opened{color:#036}#contentNav .nav>li.active>a{color:#036}#contentNav .nav>li.active>a:before{background:#036}td.c-actions .btn{color:#114f8e}td.c-actions .btn:hover{color:#036;background-color:#d5e3fd}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#036;background:#edf3fe}.main-table table .btn-icon-left:hover>.icon{background:#edf3fe}.main-table tbody>tr:hover{background:#edf3fe}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#036}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f7f9ff}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f7f9ff}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#03c}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#000}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#1a53ff}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#036}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#036}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#edf3fe}.table-nest-toggle:hover{color:#036}.table-footer .checkbox-primary.checked label:after{border-color:#114f8e!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#1668bc!important;border-color:#1668bc!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#036}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#036;border-color:#036}.article-content a{color:#036}.article-content a:focus,.article-content a:hover{color:#114f8e}.list-group{overflow-y:auto}.list-group>a.selected{color:#edf3fe;background-color:#036}.list-group>a.active{color:#036;background-color:#edf3fe}.list-group>a.active:hover,.list-group>a:hover{background-color:#036}#swapper #dropMenu .tree li>.selected{color:#036!important;background:#edf3fe!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#036!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#036!important;background:#edf3fe!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#036!important}.release-line>li>a:hover:before{background-color:#edf3fe}.release-line>li>a:hover .title{color:#036}.release-line>li.active>a:before{border-color:#036}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#114f8e}#poweredBy .icon-zentao{color:#114f8e}#poweredBy a:hover{color:#036}#poweredBy a:hover .icon-zentao{color:#036}#poweredBy a.text-primary{color:#036}#poweredBy a.text-primary:hover{color:#114f8e}.block-statistic .nav-secondary>li.active>a:before{background:#036!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#114f8e!important}.dynamic.active .dynamic-date:before{background-color:#114f8e!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#036!important}.table td.has-child>.task-toggle:hover{color:#036!important}#openTaskPage.open:hover,#task .task-nav{color:#036!important;background:#edf3fe!important}#tasksProgress>.progress-bar{background:#036!important}#tasksProgress .progress-text{color:#036!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#036!important;background:#edf3fe!important;border-left-color:#036!important;-webkit-box-shadow:inset 4px 0 0 #036!important;box-shadow:inset 4px 0 0 #036!important}#copyProjectModal a:hover{border-color:#114f8e!important}#zeroTaskStory.checked{background:#edf3fe!important;border-color:#114f8e!important}.cols-list .col:hover{background:#edf3fe!important}.files-grid .actions,.files-grid .col:hover .file{background:#edf3fe!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06)}#menu .nav>li.active>a{background:#114f8e!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#114f8e!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#036!important}#bars>li.active:after{background:#edf3fe!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#000d1a;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#036}.main-table tbody>tr:hover{background:rgba(237,243,254,.8)}.main-table tbody>tr>td.c-name a{color:#000}.main-table tbody>tr>td.c-name a:hover{color:#000d1a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#036!important}.assigned-none{color:#000d1a!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#000d1a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#000d1a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#0059b3}#assigntomeBlock .nav>li.active>a{color:#000d1a}.consumedTotally{color:#036;background:#edf3fe}#toggleFoldIcon .icon-border{border:1px solid #39f}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#036}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}#loginPanel,#productsBox .product,#sidebarHeader,#task .task-desc>ul>li[data-target]:after,.block-todoes .todoes-form,.btn,.btn>.label-icon,.cell,.checkbox-primary>label:after,.chosen-container .chosen-results>li,.chosen-container-multi .chosen-choices li.search-choice,.chosen-container-single .chosen-drop,.chosen-container-single .chosen-search input[type=text],.datetimepicker td,.datetimepicker th,.dropdown-menu,.dropdown-menu>li>a,.files-grid .actions,.files-grid .file,.form-control,.ke-container,.list-group>a,.main-actions .btn-toolbar,.main-content,.main-table,.main-table tbody>tr.checked.row-check-begin>td:first-child:before,.main-table tbody>tr.checked.row-check-end>td:first-child:before,.modal-dialog,.modal-iframe .modal-body>iframe,.nav>li>a,.panel,.progress,.progress-bar,.radio-primary>label:after,.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control,.table,.table-footer{border-radius:0!important}#header,#mainMenu+#mainContent.main-row .cell,#sidebarHeader,.cell,.main-content,.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive,.panel{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.08),0 1px 1px 0 rgba(0,0,0,.05),0 2px 1px -1px rgba(0,0,0,.06)}#footer{border-top-color:transparent;-webkit-box-shadow:0 -1px 3px 0 rgba(0,0,0,.08),0 -1px 1px 0 rgba(0,0,0,.05),0 -2px 1px -1px rgba(0,0,0,.06);box-shadow:0 -1px 3px 0 rgba(0,0,0,.08),0 -1px 1px 0 rgba(0,0,0,.05),0 -2px 1px -1px rgba(0,0,0,.06)}.block-statistic .nav-stacked,.main-table thead>tr>th,.table-footer{border-color:#e5e5e5;border-top-width:1px;border-bottom-width:1px}td.c-actions .btn{opacity:.85}td.c-actions .btn:hover{opacity:1}.main-table tbody>tr.checked{background:#fff4ea;-webkit-box-shadow:none!important;box-shadow:none!important}.main-table tbody>tr.checked:hover{background:#ffe7d0}.main-table td.c-actions .btn.disabled{opacity:.5} \ No newline at end of file diff --git a/www/theme/default/images/severity/severity-sprite.png b/www/theme/default/images/severity/severity-sprite.png index e589db598d..d176986444 100644 Binary files a/www/theme/default/images/severity/severity-sprite.png and b/www/theme/default/images/severity/severity-sprite.png differ diff --git a/www/theme/default/style.css b/www/theme/default/style.css index 42b28041f7..3688826f8f 100644 --- a/www/theme/default/style.css +++ b/www/theme/default/style.css @@ -195,35 +195,35 @@ tbody tr td.c-actions .dividing-line {width: 1px; height: 16px; display: inline- .label-pri-4, .label-pri-5, .label-selector > .label-pri[data-value="4"], .label-selector > .label-pri[data-value="5"] {color: #9EA3B0; border-color: #9EA3B0;} .label-severity:before {content: '';} -.label-selector > .label.label-severity, .label-selector > .label.label-severity.active, .c-severity > .label-severity, .pri-text > .label-severity {background: url('images/severity/severity-sprite.png') no-repeat; background-size:cover; border: none; height: 26px; line-height: 32px; background-position: 0px -165px; color: #9EA3B0;} -.label-selector > .label.label-severity[data-severity="1"], .label-selector > .label.label-severity[data-value="1"] {color: #FB2B2B; background-position: 0px -1px;} -.label-selector > .label.label-severity[data-severity="2"], .label-selector > .label.label-severity[data-value="2"] {color: #FF8058; background-position: 0px -41px;} +.label-selector > .label.label-severity, .label-selector > .label.label-severity.active, .c-severity > .label-severity, .pri-text > .label-severity {background: url('images/severity/severity-sprite.png') no-repeat; background-size:cover; border: none; height: 26px; line-height: 32px; background-position: 0px -162px; color: #9EA3B0;} +.label-selector > .label.label-severity[data-severity="1"], .label-selector > .label.label-severity[data-value="1"] {color: #FB2B2B; background-position: 0px 2px;} +.label-selector > .label.label-severity[data-severity="2"], .label-selector > .label.label-severity[data-value="2"] {color: #FF8058; background-position: 0px -39px;} .label-selector > .label.label-severity[data-severity="3"], .label-selector > .label.label-severity[data-value="3"] {color: #FAAE1A; background-position: 0px -80px;} -.label-selector > .label.label-severity[data-severity="4"], .label-selector > .label.label-severity[data-value="4"] {color: #B89664; background-position: 0px -123px;} +.label-selector > .label.label-severity[data-severity="4"], .label-selector > .label.label-severity[data-value="4"] {color: #B89664; background-position: 0px -121px;} .c-severity > .label-severity:after {top: 9px;} #legendBasicInfo .label-severity:after {top: 8px;} .kanban-item-bug .label-severity, #legendBasicInfo .label-severity, .c-severity > .label-severity {height: 28px;} -.kanban-item-bug .label-severity, #legendBasicInfo .label-severity, .c-severity > .label-severity {background: url('images/severity/severity-sprite.png') no-repeat; border: none; height: 26px; line-height: 32px; background-position: 2px -136px; color: #9EA3B0; background-size: 83%;} -#legendBasicInfo .label-severity[data-severity="1"], .c-severity > .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 2px 1px;} -#legendBasicInfo .label-severity[data-severity="2"], .c-severity > .label-severity[data-severity="2"] {color: #FF8058; background-position: 2px -32px;} +.kanban-item-bug .label-severity, #legendBasicInfo .label-severity, .c-severity > .label-severity {background: url('images/severity/severity-sprite.png') no-repeat; border: none; height: 26px; line-height: 32px; background-position: 2px -133px; color: #9EA3B0; background-size: 83%;} +#legendBasicInfo .label-severity[data-severity="1"], .c-severity > .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 2px 3px;} +#legendBasicInfo .label-severity[data-severity="2"], .c-severity > .label-severity[data-severity="2"] {color: #FF8058; background-position: 2px -31px;} #legendBasicInfo .label-severity[data-severity="3"], .c-severity > .label-severity[data-severity="3"] {color: #FAAE1A; background-position: 2px -65px;} -#legendBasicInfo .label-severity[data-severity="4"], .c-severity > .label-severity[data-severity="4"] {color: #B89664; background-position: 2px -101px;} +#legendBasicInfo .label-severity[data-severity="4"], .c-severity > .label-severity[data-severity="4"] {color: #B89664; background-position: 2px -99px;} .kanban-item-bug .label-severity:after {top: 9px;} -.kanban-item-bug .label-severity {background-position: 1px -147px; background-size: 90%;} -.kanban-item-bug .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 1px 0px;} -.kanban-item-bug .label-severity[data-severity="2"] {color: #FF8058; background-position: 1px -36px;} -.kanban-item-bug .label-severity[data-severity="3"] {color: #FAAE1A; background-position: 1px -71px;} -.kanban-item-bug .label-severity[data-severity="4"] {color: #B89664; background-position: 1px -110px;} +.kanban-item-bug .label-severity {background-position: 1px -145px; background-size: 90%;} +.kanban-item-bug .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 1px 2px;} +.kanban-item-bug .label-severity[data-severity="2"] {color: #FF8058; background-position: 1px -34px;} +.kanban-item-bug .label-severity[data-severity="3"] {color: #FAAE1A; background-position: 0px -72px;} +.kanban-item-bug .label-severity[data-severity="4"] {color: #B89664; background-position: 1px -108px;} .pri-text > .label-pri {padding: 1px 5px;} .pri-text > .label-pri, .pri-text > .label-severity {height: 20px;} -.pri-text > .label-severity {background-size: 80%; background-position: 2px -132px;} -.pri-text > .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 2px -1px;} -.pri-text > .label-severity[data-severity="2"] {color: #FF8058; background-position: 2px -33px;} +.pri-text > .label-severity {background-size: 80%; background-position: 2px -130px;} +.pri-text > .label-severity[data-severity="1"] {color: #FB2B2B; background-position: 2px 1px;} +.pri-text > .label-severity[data-severity="2"] {color: #FF8058; background-position: 2px -31px;} .pri-text > .label-severity[data-severity="3"] {color: #FAAE1A; background-position: 2px -64px;} -.pri-text > .label-severity[data-severity="4"] {color: #B89664; background-position: 2px -99px;} +.pri-text > .label-severity[data-severity="4"] {color: #B89664; background-position: 2px -97px;} .flow-block .footerbar span.label-success {background-color: #0DBB7D;} .flow-block .footerbar span.label-default {background-color: #9EA3B0;} diff --git a/www/theme/green/style.css b/www/theme/green/style.css index 811c3280cc..11354ffe9e 100644 --- a/www/theme/green/style.css +++ b/www/theme/green/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - Green - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - Green - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#29aa93}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#29aa93;border-color:transparent}.btn-warning{color:#fff;background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ffba34;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f0fdfb;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#29aa93}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#29aa93}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#1f816f}.label-primary.label-outline{color:#29aa93;background:0 0;border:1px solid #29aa93}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#1f816f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ffba34}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ffa901}.label-warning.label-outline{color:#ffba34;background:0 0;border:1px solid #ffba34}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ffa901}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#60d9c3}.text-primary{color:#29aa93}.text-primary:hover{color:#1f816f}.text-warning{color:#ffba34}.text-warning:hover{color:#ffa901}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#29aa93}a.bg-primary:hover{background-color:#1f816f}.hl-primary{background-color:#f0fdfb}a.hl-primary:hover{background-color:#c3f7ef}.progress{background-color:#f0fdfb;border-radius:3px}.progress-bar{color:#fff;background-color:#29aa93;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#29aa93;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-control:focus{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#29aa93;border-color:#29aa93}.switch input:focus+label{color:#29aa93}.switch input:focus+label:before{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 8px #29aa93;box-shadow:0 0 8px #29aa93}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#29aa93}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f0fdfb}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#29aa93}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#29aa93}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#29aa93;border-bottom-color:#29aa93}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #29aa93;box-shadow:inset 2px 0 0 #29aa93}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#29aa93}.panel-primary>.panel-heading{color:#fff;background-color:#29aa93;border-color:#29aa93}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#29aa93}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#29aa93}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f0fdfb}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#29aa93!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container .chosen-results li.highlighted{background-color:#29aa93!important}.chosen-container-active .chosen-single{border-color:#29aa93!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#29aa93!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container.chosen-highlight-selected .result-selected{color:#29aa93;background:#f0fdfb}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#29aa93}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#29aa93}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#29aa93}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ffba34!important;border-color:#ffba34!important}.datetimepicker td.day.active{background-color:#29aa93!important;border-color:#1f816f!important}.datetimepicker td.day.active:hover{background-color:#1f816f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ffa901!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.ke-menu-item-on{background-color:#29aa93!important}.ke-colorpicker-cell-on{background-color:#29aa93!important}.ke-input-text:focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#29aa93}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ffba34}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f0fdfb}.alert-primary hr{border-top-color:#d1f9f3}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ffb11a;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#f6a200}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#29aa93;border-color:#29aa93}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f0fdfb}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#29aa93}.tree-drag-holder{background-color:#f0fdfb}.tree-menu li.active>a{color:#fff;background-color:#29aa93;border-color:#29aa93}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#29aa93}.nav-primary>li.active>a{color:#27988a}.nav-primary>li.active>a:hover{color:#27988a}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#29aa93),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#29aa93 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#29aa93}.bg-primary-pale{color:#29aa93;background-color:#f0fdfb}.bg-secondary{background:#23c8ec}.alert-info{color:#29aa93;background:#f0fdfb}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(41,170,147,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#249581;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#29aa93;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#23c8ec;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:rgba(240,253,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#dafaf5;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(41,170,147,.3);background-color:#f0fdfb;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#f0fdfb}.btn-active-line{color:#29aa93}.btn-active-line:after{border-bottom-color:#29aa93}.btn-active-line:hover{color:#29aa93}.btn-active-text .text{color:#27988a}.btn-active-text .text:after{border-bottom-color:#27988a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(41,170,147,.8)}.label-primary{background:#29aa93!important}.label-pale{background:#c3f7ef!important}.label-outline.label-primary{background:#f0fdfb!important;border-color:rgba(41,170,147,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 0 3px rgba(41,170,147,.2);box-shadow:0 0 0 3px rgba(41,170,147,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#29aa93}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#29aa93!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#29aa93!important}.nav-tabs>li.active>a:before{background:#29aa93}.nav-tabs-primary>li.active>a{color:#29aa93!important}.panel-actions .btn.text-primary{color:#29aa93}.picker-focus .picker-selections{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.status-bars .bar{background:#29aa93}.status-bars-h .bar{background:#29aa93}.messagger-zt .messager-content>.icon{color:#29aa93}.tree li.active>a{color:#29aa93}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#29aa93}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f0fdfb}.dropdown-submenu:hover>a:after{border-left-color:#29aa93}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#29aa93}.timeline>li.active:before{background-color:rgba(41,170,147,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#29aa93!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#29aa93!important}#mainHeader{background:#33c6ab;border-top-color:#29aa93;border-bottom-color:#f0fdfb}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#29aa93}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#29aa93}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#29aa93}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#29aa93}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #29aa93}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #29aa93}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #29aa93}#sidebarHeader .title{color:#29aa93}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#29aa93}#contentNav .nav>li.active>a{color:#29aa93}#contentNav .nav>li.active>a:before{background:#29aa93}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#29aa93;background-color:#dafaf5}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#29aa93;background:#f0fdfb}.main-table table .btn-icon-left:hover>.icon{background:#f0fdfb}.main-table tbody>tr:hover{background:#f0fdfb}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#29aa93}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f9fefd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f9fefd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#2f8a8f}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0b2f28}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#29aa93}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#f0fdfb}.table-nest-toggle:hover{color:#29aa93}.table-footer .checkbox-primary.checked label:after{border-color:#29aa93!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#37cfb4!important;border-color:#37cfb4!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#29aa93}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#29aa93;border-color:#29aa93}.article-content a{color:#29aa93}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#f0fdfb;background-color:#29aa93}.list-group>a.active{color:#29aa93;background-color:#f0fdfb}.list-group>a.active:hover,.list-group>a:hover{background-color:#29aa93}#swapper #dropMenu .tree li>.selected{color:#29aa93!important;background:#f0fdfb!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#29aa93!important}.release-line>li>a:hover:before{background-color:#f0fdfb}.release-line>li>a:hover .title{color:#29aa93}.release-line>li.active>a:before{border-color:#29aa93}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#29aa93}#poweredBy a:hover .icon-zentao{color:#29aa93}#poweredBy a.text-primary{color:#29aa93}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#29aa93!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#29aa93!important}.table td.has-child>.task-toggle:hover{color:#29aa93!important}#openTaskPage.open:hover,#task .task-nav{color:#29aa93!important;background:#f0fdfb!important}#tasksProgress>.progress-bar{background:#29aa93!important}#tasksProgress .progress-text{color:#29aa93!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#29aa93!important;background:#f0fdfb!important;border-left-color:#29aa93!important;-webkit-box-shadow:inset 4px 0 0 #29aa93!important;box-shadow:inset 4px 0 0 #29aa93!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#f0fdfb!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#f0fdfb!important}.files-grid .actions,.files-grid .col:hover .file{background:#f0fdfb!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#29aa93!important}#bars>li.active:after{background:#f0fdfb!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#27988a;background:#e7eded}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#29aa93}.main-table tbody>tr:hover{background:rgba(240,253,251,.8)}.main-table tbody>tr>td.c-name a{color:#2f8a8f}.main-table tbody>tr>td.c-name a:hover{color:#27988a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#29aa93!important}.assigned-none{color:#27988a!important}.assigned-current{color:#faae1a!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#27988a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#27988a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#33c6ab}#assigntomeBlock .nav>li.active>a{color:#27988a}.consumedTotally{color:#29aa93;background:#f0fdfb}#toggleFoldIcon .icon-border{border:1px solid #d4eee9}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#29aa93}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#faae1a;border-color:#faae1a}#mainHeader{color:#313c52;background:#fff;border-bottom:1px solid #eee}#heading .header-btn .btn,#navbar .nav>li>a,#userNav>li>a{color:#313c52}#navbar .nav>li.active>a{position:relative;font-weight:500;color:#27988a;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#27988a}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#menu{position:relative;background:#248f83!important}#menu::after{position:absolute;bottom:0;left:0;z-index:-1;width:96px;height:108px;content:'';background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABsCAYAAACVWrdDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA7dSURBVHgB7V1Nc9vGGV4QBL8pSjLp2LUddWK3jWvVOdjptMk4Mzl0euk1/gnN78ifyEzPuSk9J9PpIZlm6saTpJ00VJQ2jhJaiiOLFKkvghS/0H2ABQ1RILEgdkEi1ePBQCJpgXiffT/33YVCBMMwjAQ9pemR0Ikex2sZkhnQ0wkORVFa5BxDKEQQqOCz9JSjQo9N+hwlo0dPx+dEWAhMABvxeSr4hJ//R4kAAQeUCIP8HyMQAVT4C1TwWTIlKAnQhCP2txTzJUKS9NCgScx0denR+rFqzFQEUGGp9FSgQkqSgKBCPqAnmK3sJPPFTFedEtEnPyL4JoCZnILtYMMEyKIE6ExblujRpL+fkAjDlxDhaKngF8js0GPCX2Y+J0l/P6IkHJOIgosAdtP5IPZeEJJkxOHTn/P0+5GokuBpgpi9X/Qb5YQNap4iqQkTCSiXy4nSTzNLMSXGnGOWZBCnmMHK/CGKJIwlgI58CJ2aqHXy9GlfSyRy8XrnOBlXNWgEyZpMgJD5IoOSUI+SY54mClIbjc3cvJJhEGOQJdlaVMLVqRMxEFGtrqd1JZZ3vg4yMpkSmSWQZVMC9kkEIKIUoW4frhf6ndippGzWRNCrVykJPTLnEFaM290t50a1AZgVEVFxyMIIALa2ttL91NGi23thExEVMxQjAnHt2rWW2s673nRT10m1ViEhIhJVVqEaYGOSJgBhaAO9wm4UIiGhGmADmpAxBkfj3oc26HqVyAIVvh6VMFQKAcDFi6vHamIwNiGSbJJOzR3QSC1w2VwWpBEAXF24dWAYg4m2WDQJAzLo09Hfwc8ondMDldNlep7L+olUAmAGaPnUMxQECTrVCBHIkVyLCltjgr9gTxrRc4HNZcwVpBIAvP32n3UvLQCa1CcIIgHTmcUxs3UFVlqfG4TyZb7e+3hBGyxwzSWUiitEJpzz0PMA6RoAnPyQa/N+VnauQDUjN0+mKBQCbt265SskDCFhy5E5QSgEvPXWW76zUpkkwD9QLUiTOUBoDmnroLw8WjH1gsyMGW0u1BfIywY5EYoGADw5wSisjFlMeDoKtNXMgxaERgBygr3H7b1ev+vLHzR1qYN05gQINUEsxo6xv4szWgv7zv5PTOA8qj/Mxvu5jKLEuK8vKzylpmjPzpxlYW1tTX3jjZKyvZ3U6tpRTI0lzPvuDzp8SQkTLOZ/NXZ2HjZiZLxGDXs86dGBNuBvbm9vp+icSaaX9A4Ls9QXyJhzFp0XWPf1j1QzNYgbJ1qipxnxk1ZnrKVRxv0RYvWeaOwQ3YbY2zneIc4qxUm763kNGVqA2lFeye+SAIC81tc/zJJCMtHu97gDDa2n9hWXP4ZRvUzEC/0MarUaaRJ+Gy8rKpp27gCm5YU7SzmiJqdSzefU+L6bkAskBOEDxWIR4Qi3o0VUJKnzBffLTQBG/MNH7+fjWm7qVs1+vNO5dvW11hnb9OjRw55O5IR+bihmiqZ954WkBI07GiyX1xL/2vmoGET4wE+MjO564Rs3HjepPTNqenjzt35JkJUbeOHzz/+SbecuXaDTTIEsBGz/tWuvmJNGZwhQlPv9WHt779tv141KbYOEBZDA23MqITfwND8PttbS3UJaSGt+bjk5nCl0Vb27d9/svnyrWT14stXfqHxEoA1hjLrS7LTAk4Br5CoRhReWNofh3/j4lGrC7dsHe4Pj+Eml8hUBERXJVUrE+bymSJQWdEm3zRMBvff0CyFddksLaBi4P7zeROeDD66uvlInagdJFKlVvyKyHbRlivgQVAuQAxRI4dDtPcP4II4w0/79TWoVBkY/cK9Ra2nzVMMAn/c/+uFgMLAuXql8Jp2EMLQAGTCdP66Ojn5EOeWtB8ufVdTSC7++dPHTb/5asInIxJOBShYIPVeV+6f+BnctBhFAVzNMJwRTsbJyBzdBZIE3ACgVQRb/92Dt6w23+s/HX7+34BZe0iJ6r01z91g7pwUJP1MrO3ujBHDHvy+99Hta3kiaNROovmxN4NUCXW8SP1CIgnsuOEvRSKww6scJF2Fnon9psZC+oJEp4Tb6AV/l6NXV14/DIoHXFzSn8AOYC6DHIhX8IswLEiueGk6zdzL1XHL2St214Od7PgAkaF3lED5hSIKkELWU4Su+Td/m+KRz496l5aCJlRcQ+biNfiDACpk19YsvMgudeDyF34ul581qpWi/wFuw818p1cl/djZ6soUP3FnZ2XWGnk4EnpDBSsqmupNXjV7CqtdTCrJF0zmKIgMaVjVH+XhN8+uMK5UNEkbNK5XpH61efH1sd6DA7WrW1M3NpVzjpG8tZJUQKdX02tjQ00+pGgW9WrNGZAM1n5duvDpxrkHYnDBU7Pr13x2cdtJia0lwzOP8Aq8zDkv4wO3r3+95feYUAQjH6GF2C7Ajy4406zT2tJdw0ktJ1ZSGTkcsDpGAZo0jwTsYoEanGU4l9bKGjUXue5Y44mz6EfFvgmf7mabRhFmBR0dtBOfOaDb5zjt/P/rD/d+YtqdSrZCbK/zlBR6YNSNScjFHyAnGm7xKpRKa3b9y8S7XhRQq0MskICghKK8OJ9zxWrn8YLkdOzQJvXnznpSs2SoOnr7PcdEQQtVK9TERAdSEYh3S02MtJaPl4vg9mU4MkqrR6hUXT1aVVe6ShZAQjGmOKWyqUSCi9fDh+734AuuEg4wkVC1Qvq6emThyv1gqk8LAUIkAxBRViS0Q5d6lNC1pvBaoSiq8MYuSkcaKlOu/+uUwra9Kml1zK1+PK03kyHP7KTUubA8J5A8o2JXLHwRq9A2lM64mSPXdMFqyOB0NWZFY/fBbbJfZ6WtHwjfxaOfUPCqm0y78kEZAJnO6riU6GnLCvXCnD53u00Y9+c8f/lZSa1e6RAI0I0NN7btTydLVB1jhXNNqjnWJGuBQrcQnS8Yb94xpIuzQUEY05Pw+TsODa5pLnhzfHSajnatfIBKgXi/sK8qrUy2LZQTopu2sYpQ2iWeohvdr7I4z2YwpALdSAN6zCYAGYG65mBHf3Qai4w2lgxZHdGD3BwcDmmwJcbheMEsNPqKeUSjfVb+8jORERHwMgSNJsns4zdCPzicP35c7kYPtL+EQjz578mGWdNWpa/e84Ck1eCGGtFxUcgIiK9UNNpulm7UZZ0OtLndxtinwRmMzEYbwEfvzlBq8IMUJg4gNGn1A2CVapnYCEZEkhwxz2tvv6ikSAi7Hk1ylBi/EctnYsZZqHT63Et/HAZuG1zCFFrQLANpVrdbOtJVDSySUBEybX281pIfWkI/d2RYUnrFr2Sgn0o12+rh+kuzG+9M5NpciGSZwVoo3iUB0G41Gd/Ow7MvBZEjR9F2AzmOOT/rdu794XZgKe1c3LQ9vevmtrQfp+omR900ENGCEBCs5o05ZXM+/0SCbXB80o7bSypkkzqwsNR8PSbGCk2eyhtO9/fOdBhEIX7UgpnatqYhwJeErGjVht0Uh+UGn1ex4Ot9i9vmxpNutkcP32ddCULF7/NTo7m/Q2s+bQrfBmcpeggiEX/AXJCA2xE3qd7w6GzCyJ2mcGSa7vI9MuxevHty588cemx/JsXPgXCOQw8JcJyacoZpc/2HM6gr0nQYkgV7/3YlVySC5R2qQ6v/26htoSblEDzSn5dn5IsggASBsTri8+0Gurat5rg+PEXax9OK0PuFofX29M1pqKGatdQe2rUdofHNFqOMfXn/aHRqFhWzQBu2gdcj14TGaAJ8wxZoELIM9rmY/Gd4L7PydlXtmlOV0tKWStH3q8tNuCCV8q4JPP/2Tpi2uLnE56DGa4KNkgTzFbLBFYNBPLS46SyFnL6fL3l7Z95pjKXtFoEXl399cucAdJY01SUVWW3KNkiB83LBZYt7f318qFAqhZMETgPXQvvatlrZZxzQkQNBuZQqMWsTlWfq+WV+yNAM7Ix5Y1zK7tmf9cAkbmPyp835Y6m4pfkmwnaZZyzfbR0Y1AwmURYK9wJo9v2yWj1Vxg/msG54PSt+uBiR88l2phIlsns8XzbZGvkgIC6yJlS6FtukIJ2CKdnmekSb9i5urLvf+y122tbrWvAcPNIBY9f95Ez5gPpaL94PSgVWX3CEqsRqovGAQAwTMo/BtZHkm6kO7Aayw4c2YUQLzmrjJ42FKhPhbHhMuIFvPBR2hPoxNbRf2u5wT4zBF41rOmfnB8lI6yAy0moSxNTHsOQi3WzIHozbesV+SHXR4dmGEvonpuIVwbkC4ueJSOsDDGYg1eAx2lrkNJcjel7WpUyidA05cvfCz7s9ffj5JBjHPa3fpv2xCI5p2mi8Nm+NaBTF7AylZQH1nX+ZO7DPZxtdvfmAV0DKm6YmRmMo0gK/w5/OrESuEBFph7LA7kyjC3Abh+vd7vE65WrPa0HMkt0eFj/8jy+bDru+yI5TtjWcWxtkk8DTMYjaKPUkVwh+QZ6NUNEKXx1zsJI5K5hNFz6i9xClnqqXUfqK33H/xyouGXV+hkQZ29IKgRBfeQG7DLu6Fhbnayt3c/I6sm/O6X5Iv+/eplrCNtvHs4F0WdiL7ReQDAkR9fwh/bxaPPQn9ocyTwOLqzshrHRZfa+w9CCnFfhbhCzDiG7N65sw8p/JOQNi2eQJJiJ5E9PrbZmdmD/yJIgF2DSiorbYndGb6tKWoEID03+75sSMgCM6vFoA0u9TamodHXc2VD5gAaECM9eHY9Rf4BWSq8ANtdvZyygabRTsgc4JIaAAVmrkJOD0S7GcbpjOmr8GO77DXkECBEJA2948zjIoGADAfdukCgoVJgl8wTQp7AjjQcvbosAgK96mQOQu7gSgR4FznOyDPdnO3O+IUx3tDsNA21OTKD6LihAEI0emIMXgGjjKxSQ7PPOw8IUoEYKQ7NSBNno1+4ng9UogSARBubKQj2Zk1414iNfqByBDgiNlh6+2fnQTg9XMNkAwIXhv53YYzR4gMokYAbP4wlKRaMeoDIvEQZyeiqAF218GosM81ICRA0Cg7uBFwrgGSYc8FAG5Lks6dsGTAxIz7znafUKQQNQImjXDcy7kJkoxJI/w8DwgBrgJ2ZMfnJihEjCZhZB5muPzifzvaxdIXFrNVAAAAAElFTkSuQmCC) no-repeat}#userNav>li>a>.icon{color:#23c8ec}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(229,244,169,.4)),to(rgba(237,254,171,.036)))!important;background:-webkit-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:-o-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:linear-gradient(90deg,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;border-radius:4px;opacity:1}#featurebar .nav li.active a{color:#27988a!important}#featurebar .nav li.active a:after{border-bottom:2px solid #27988a!important}.btn.btn-action,.c-actions .btn,td.c-name a{color:#29aa93}#logForm .table .versions a,#mainMenu .page-title strong a,#readOnlyOfKanban i{color:#29aa93!important}.picker-drop-menu .picker-option-list .picker-option.picker-option-active,.picker-drop-menu .picker-option-list .picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background:#29aa93}.table-actions .btn{background:#29aa93!important;border-color:#29aa93!important}.table-actions .btn:hover{color:#fff;background:#27988a;border-color:#27988a}a.programName:focus,a.programName:hover{background:#29aa93!important}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#29aa93!important}.btn.btn-action:hover,.c-actions .btn:hover{color:#29aa93;background:#f0fdfb}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.main-table table tr{border-color:#f2f6f8!important}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.c-manager .avatar.avatar-top{border-color:#faae1a}#programTableList>tr:hover{background:#f0fdfbcc}#programTableList>tr:hover>.c-name>a{color:#27988a!important}#programTableList>tr[data-type=project]>.c-name>a{color:#2f8a8f!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c4d0!important}#featuresNav.nav-simple>li.active>a,.nav-simple>li.active>a,.nav-simple>li.active>a:focus,.nav-simple>li.active>a:hover{color:#29aa93}#featuresCarousel .carousel-indicators .active{background-color:#29aa93!important;border-color:#29aa93!important}#dashboard .block-welcome .progress{background:#eee} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#29aa93}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#218977;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1a6c5e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#29aa93;border-color:transparent}.btn-warning{color:#fff;background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ffba34;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ffac0b;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#e69800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ffba34;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:#ccf8f1;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#acf4e9;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f0fdfb;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#29aa93}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#29aa93}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#1f816f}.label-primary.label-outline{color:#29aa93;background:0 0;border:1px solid #29aa93}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#1f816f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ffba34}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ffa901}.label-warning.label-outline{color:#ffba34;background:0 0;border:1px solid #ffba34}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ffa901}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#60d9c3}.text-primary{color:#29aa93}.text-primary:hover{color:#1f816f}.text-warning{color:#ffba34}.text-warning:hover{color:#ffa901}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#29aa93}a.bg-primary:hover{background-color:#1f816f}.hl-primary{background-color:#f0fdfb}a.hl-primary:hover{background-color:#c3f7ef}.progress{background-color:#f0fdfb;border-radius:3px}.progress-bar{color:#fff;background-color:#29aa93;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#29aa93;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-control:focus{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#29aa93;border-color:#29aa93}.switch input:focus+label{color:#29aa93}.switch input:focus+label:before{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #29aa93}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 8px #29aa93;box-shadow:0 0 8px #29aa93}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#29aa93}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#23c8ec}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f0fdfb}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#23c8ec;border-color:#11a9cb}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#14bde2}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#52d4f0}.navbar-inverse .navbar-toggle{border-color:#52d4f0}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#14bde2}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#13b5d9}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#52d4f0}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#11a9cb}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#3fcfee}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#52d4f0}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #52d4f0;-webkit-box-shadow:inset 0 -1px 0 #11a9cb;box-shadow:inset 0 -1px 0 #11a9cb}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#12b1d4}.nav>li>a:focus,.nav>li>a:hover{color:#29aa93}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#29aa93}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#29aa93;border-bottom-color:#29aa93}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #29aa93;box-shadow:inset 2px 0 0 #29aa93}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#29aa93}.panel-primary>.panel-heading{color:#fff;background-color:#29aa93;border-color:#29aa93}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#29aa93}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#29aa93}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f0fdfb}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#29aa93!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container .chosen-results li.highlighted{background-color:#29aa93!important}.chosen-container-active .chosen-single{border-color:#29aa93!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#29aa93!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#29aa93!important;border-bottom-left-radius:#29aa93!important}.chosen-container.chosen-highlight-selected .result-selected{color:#29aa93;background:#f0fdfb}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#29aa93;border-color:#29aa93}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#29aa93}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#29aa93}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#29aa93}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ffba34!important;border-color:#ffba34!important}.datetimepicker td.day.active{background-color:#29aa93!important;border-color:#1f816f!important}.datetimepicker td.day.active:hover{background-color:#1f816f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ffa901!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.ke-menu-item-on{background-color:#29aa93!important}.ke-colorpicker-cell-on{background-color:#29aa93!important}.ke-input-text:focus{border-color:#29aa93!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#29aa93}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ffba34}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f0fdfb}.alert-primary hr{border-top-color:#d1f9f3}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ffb11a;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#f6a200}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#29aa93;border-color:#29aa93}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f0fdfb}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#29aa93}.tree-drag-holder{background-color:#f0fdfb}.tree-menu li.active>a{color:#fff;background-color:#29aa93;border-color:#29aa93}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#23c8ec}a.text-primary{color:#29aa93}.nav-primary>li.active>a{color:#27988a}.nav-primary>li.active>a:hover{color:#27988a}.bg-primary,.m-user-login{background:#23c8ec -webkit-gradient(linear,right top,left top,from(#29aa93),to(#23c8ec))!important;background:#23c8ec -webkit-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec -o-linear-gradient(right,#29aa93 0,#23c8ec 100%)!important;background:#23c8ec linear-gradient(-90deg,#29aa93 0,#23c8ec 100%)!important}.bg-primary-pure{color:#fff;background-color:#29aa93}.bg-primary-pale{color:#29aa93;background-color:#f0fdfb}.bg-secondary{background:#23c8ec}.alert-info{color:#29aa93;background:#f0fdfb}.btn-primary{color:#fff;background-color:#29aa93;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(41,170,147,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#249581;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#29aa93;border-color:transparent}.btn-secondary{color:#fff;background-color:#23c8ec;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(35,200,236,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#14bde2;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#23c8ec;border-color:transparent}.btn-info{color:#29aa93;background-color:#f0fdfb;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#29aa93;background-color:rgba(240,253,251,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#dafaf5;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(41,170,147,.3);background-color:#f0fdfb;border-color:transparent}.btn-icon-left>.icon{color:#23c8ec;background:#f0fdfb}.btn-active-line{color:#29aa93}.btn-active-line:after{border-bottom-color:#29aa93}.btn-active-line:hover{color:#29aa93}.btn-active-text .text{color:#27988a}.btn-active-text .text:after{border-bottom-color:#27988a}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(41,170,147,.8)}.label-primary{background:#29aa93!important}.label-pale{background:#c3f7ef!important}.label-outline.label-primary{background:#f0fdfb!important;border-color:rgba(41,170,147,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#29aa93;border-color:#29aa93}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#29aa93;-webkit-box-shadow:0 0 0 3px rgba(41,170,147,.2);box-shadow:0 0 0 3px rgba(41,170,147,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#29aa93}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#29aa93!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#29aa93!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#29aa93!important}.nav-tabs>li.active>a:before{background:#29aa93}.nav-tabs-primary>li.active>a{color:#29aa93!important}.panel-actions .btn.text-primary{color:#29aa93}.picker-focus .picker-selections{border-color:#29aa93;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(41,170,147,.6)}.status-bars .bar{background:#29aa93}.status-bars-h .bar{background:#29aa93}.messagger-zt .messager-content>.icon{color:#29aa93}.tree li.active>a{color:#29aa93}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#29aa93}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#23c8ec}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f0fdfb}.dropdown-submenu:hover>a:after{border-left-color:#29aa93}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#23c8ec}.timeline>li>a:after,.timeline>li>div:after{background-color:#29aa93}.timeline>li.active:before{background-color:rgba(41,170,147,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#29aa93!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#29aa93!important}#mainHeader{background:#33c6ab;border-top-color:#29aa93;border-bottom-color:#f0fdfb}#searchGo{background-color:#23c8ec}#searchGo:hover{background-color:#29aa93}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#29aa93}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#29aa93}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#29aa93}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #29aa93}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #29aa93}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #29aa93}#sidebarHeader .title{color:#29aa93}#sidebar>.sidebar-toggle>.icon{background:#81dff4}#main .querybox-toggle.querybox-opened{color:#29aa93}#contentNav .nav>li.active>a{color:#29aa93}#contentNav .nav>li.active>a:before{background:#29aa93}td.c-actions .btn{color:#23c8ec}td.c-actions .btn:hover{color:#29aa93;background-color:#dafaf5}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#29aa93;background:#f0fdfb}.main-table table .btn-icon-left:hover>.icon{background:#f0fdfb}.main-table tbody>tr:hover{background:#f0fdfb}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#29aa93}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f9fefd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f9fefd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#2f8a8f}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0b2f28}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#29aa93}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#29aa93}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#f0fdfb}.table-nest-toggle:hover{color:#29aa93}.table-footer .checkbox-primary.checked label:after{border-color:#29aa93!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#37cfb4!important;border-color:#37cfb4!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#29aa93}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#29aa93;border-color:#29aa93}.article-content a{color:#29aa93}.article-content a:focus,.article-content a:hover{color:#23c8ec}.list-group{overflow-y:auto}.list-group>a.selected{color:#f0fdfb;background-color:#29aa93}.list-group>a.active{color:#29aa93;background-color:#f0fdfb}.list-group>a.active:hover,.list-group>a:hover{background-color:#29aa93}#swapper #dropMenu .tree li>.selected{color:#29aa93!important;background:#f0fdfb!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#29aa93!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#29aa93!important;background:#f0fdfb!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#29aa93!important}.release-line>li>a:hover:before{background-color:#f0fdfb}.release-line>li>a:hover .title{color:#29aa93}.release-line>li.active>a:before{border-color:#29aa93}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#23c8ec}#poweredBy .icon-zentao{color:#23c8ec}#poweredBy a:hover{color:#29aa93}#poweredBy a:hover .icon-zentao{color:#29aa93}#poweredBy a.text-primary{color:#29aa93}#poweredBy a.text-primary:hover{color:#23c8ec}.block-statistic .nav-secondary>li.active>a:before{background:#29aa93!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#23c8ec!important}.dynamic.active .dynamic-date:before{background-color:#23c8ec!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#29aa93!important}.table td.has-child>.task-toggle:hover{color:#29aa93!important}#openTaskPage.open:hover,#task .task-nav{color:#29aa93!important;background:#f0fdfb!important}#tasksProgress>.progress-bar{background:#29aa93!important}#tasksProgress .progress-text{color:#29aa93!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#29aa93!important;background:#f0fdfb!important;border-left-color:#29aa93!important;-webkit-box-shadow:inset 4px 0 0 #29aa93!important;box-shadow:inset 4px 0 0 #29aa93!important}#copyProjectModal a:hover{border-color:#23c8ec!important}#zeroTaskStory.checked{background:#f0fdfb!important;border-color:#23c8ec!important}.cols-list .col:hover{background:#f0fdfb!important}.files-grid .actions,.files-grid .col:hover .file{background:#f0fdfb!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#23c8ec!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#23c8ec!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#29aa93!important}#bars>li.active:after{background:#f0fdfb!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#27988a;background:#e7eded}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#29aa93}.main-table tbody>tr:hover{background:rgba(240,253,251,.8)}.main-table tbody>tr>td.c-name a{color:#2f8a8f}.main-table tbody>tr>td.c-name a:hover{color:#27988a}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#29aa93!important}.assigned-none{color:#27988a!important}.assigned-current{color:#faae1a!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#27988a!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#27988a!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#33c6ab}#assigntomeBlock .nav>li.active>a{color:#27988a}.consumedTotally{color:#29aa93;background:#f0fdfb}#toggleFoldIcon .icon-border{border:1px solid #d4eee9}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#29aa93}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#faae1a;border-color:#faae1a}#mainHeader{color:#313c52;background:#fff;border-bottom:1px solid #eee}#heading .header-btn .btn,#navbar .nav>li>a,#userNav>li>a{color:#313c52}#navbar .nav>li.active>a{position:relative;font-weight:500;color:#27988a;background:0 0}#navbar .nav>li.active>a:before{position:absolute;right:10px;bottom:0;left:10px;display:block;height:2px;content:' ';background-color:#27988a}#navbar .nav>li>a.active:hover,#navbar .nav>li>a:hover{background-color:rgba(0,0,0,.1)}#navbar .nav>li.divider{background-color:#f1f1f1}#visionSwitcher .dropdown-toggle>div,#visionSwitcher>div{background-color:rgba(0,0,0,.1)}#menu{position:relative;background:#248f83!important}#menu::after{position:absolute;bottom:0;left:0;z-index:-1;width:96px;height:108px;content:'';background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABsCAYAAACVWrdDAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA7dSURBVHgB7V1Nc9vGGV4QBL8pSjLp2LUddWK3jWvVOdjptMk4Mzl0euk1/gnN78ifyEzPuSk9J9PpIZlm6saTpJ00VJQ2jhJaiiOLFKkvghS/0H2ABQ1RILEgdkEi1ePBQCJpgXiffT/33YVCBMMwjAQ9pemR0Ikex2sZkhnQ0wkORVFa5BxDKEQQqOCz9JSjQo9N+hwlo0dPx+dEWAhMABvxeSr4hJ//R4kAAQeUCIP8HyMQAVT4C1TwWTIlKAnQhCP2txTzJUKS9NCgScx0denR+rFqzFQEUGGp9FSgQkqSgKBCPqAnmK3sJPPFTFedEtEnPyL4JoCZnILtYMMEyKIE6ExblujRpL+fkAjDlxDhaKngF8js0GPCX2Y+J0l/P6IkHJOIgosAdtP5IPZeEJJkxOHTn/P0+5GokuBpgpi9X/Qb5YQNap4iqQkTCSiXy4nSTzNLMSXGnGOWZBCnmMHK/CGKJIwlgI58CJ2aqHXy9GlfSyRy8XrnOBlXNWgEyZpMgJD5IoOSUI+SY54mClIbjc3cvJJhEGOQJdlaVMLVqRMxEFGtrqd1JZZ3vg4yMpkSmSWQZVMC9kkEIKIUoW4frhf6ndippGzWRNCrVykJPTLnEFaM290t50a1AZgVEVFxyMIIALa2ttL91NGi23thExEVMxQjAnHt2rWW2s673nRT10m1ViEhIhJVVqEaYGOSJgBhaAO9wm4UIiGhGmADmpAxBkfj3oc26HqVyAIVvh6VMFQKAcDFi6vHamIwNiGSbJJOzR3QSC1w2VwWpBEAXF24dWAYg4m2WDQJAzLo09Hfwc8ondMDldNlep7L+olUAmAGaPnUMxQECTrVCBHIkVyLCltjgr9gTxrRc4HNZcwVpBIAvP32n3UvLQCa1CcIIgHTmcUxs3UFVlqfG4TyZb7e+3hBGyxwzSWUiitEJpzz0PMA6RoAnPyQa/N+VnauQDUjN0+mKBQCbt265SskDCFhy5E5QSgEvPXWW76zUpkkwD9QLUiTOUBoDmnroLw8WjH1gsyMGW0u1BfIywY5EYoGADw5wSisjFlMeDoKtNXMgxaERgBygr3H7b1ev+vLHzR1qYN05gQINUEsxo6xv4szWgv7zv5PTOA8qj/Mxvu5jKLEuK8vKzylpmjPzpxlYW1tTX3jjZKyvZ3U6tpRTI0lzPvuDzp8SQkTLOZ/NXZ2HjZiZLxGDXs86dGBNuBvbm9vp+icSaaX9A4Ls9QXyJhzFp0XWPf1j1QzNYgbJ1qipxnxk1ZnrKVRxv0RYvWeaOwQ3YbY2zneIc4qxUm763kNGVqA2lFeye+SAIC81tc/zJJCMtHu97gDDa2n9hWXP4ZRvUzEC/0MarUaaRJ+Gy8rKpp27gCm5YU7SzmiJqdSzefU+L6bkAskBOEDxWIR4Qi3o0VUJKnzBffLTQBG/MNH7+fjWm7qVs1+vNO5dvW11hnb9OjRw55O5IR+bihmiqZ954WkBI07GiyX1xL/2vmoGET4wE+MjO564Rs3HjepPTNqenjzt35JkJUbeOHzz/+SbecuXaDTTIEsBGz/tWuvmJNGZwhQlPv9WHt779tv141KbYOEBZDA23MqITfwND8PttbS3UJaSGt+bjk5nCl0Vb27d9/svnyrWT14stXfqHxEoA1hjLrS7LTAk4Br5CoRhReWNofh3/j4lGrC7dsHe4Pj+Eml8hUBERXJVUrE+bymSJQWdEm3zRMBvff0CyFddksLaBi4P7zeROeDD66uvlInagdJFKlVvyKyHbRlivgQVAuQAxRI4dDtPcP4II4w0/79TWoVBkY/cK9Ra2nzVMMAn/c/+uFgMLAuXql8Jp2EMLQAGTCdP66Ojn5EOeWtB8ufVdTSC7++dPHTb/5asInIxJOBShYIPVeV+6f+BnctBhFAVzNMJwRTsbJyBzdBZIE3ACgVQRb/92Dt6w23+s/HX7+34BZe0iJ6r01z91g7pwUJP1MrO3ujBHDHvy+99Hta3kiaNROovmxN4NUCXW8SP1CIgnsuOEvRSKww6scJF2Fnon9psZC+oJEp4Tb6AV/l6NXV14/DIoHXFzSn8AOYC6DHIhX8IswLEiueGk6zdzL1XHL2St214Od7PgAkaF3lED5hSIKkELWU4Su+Td/m+KRz496l5aCJlRcQ+biNfiDACpk19YsvMgudeDyF34ul581qpWi/wFuw818p1cl/djZ6soUP3FnZ2XWGnk4EnpDBSsqmupNXjV7CqtdTCrJF0zmKIgMaVjVH+XhN8+uMK5UNEkbNK5XpH61efH1sd6DA7WrW1M3NpVzjpG8tZJUQKdX02tjQ00+pGgW9WrNGZAM1n5duvDpxrkHYnDBU7Pr13x2cdtJia0lwzOP8Aq8zDkv4wO3r3+95feYUAQjH6GF2C7Ajy4406zT2tJdw0ktJ1ZSGTkcsDpGAZo0jwTsYoEanGU4l9bKGjUXue5Y44mz6EfFvgmf7mabRhFmBR0dtBOfOaDb5zjt/P/rD/d+YtqdSrZCbK/zlBR6YNSNScjFHyAnGm7xKpRKa3b9y8S7XhRQq0MskICghKK8OJ9zxWrn8YLkdOzQJvXnznpSs2SoOnr7PcdEQQtVK9TERAdSEYh3S02MtJaPl4vg9mU4MkqrR6hUXT1aVVe6ShZAQjGmOKWyqUSCi9fDh+734AuuEg4wkVC1Qvq6emThyv1gqk8LAUIkAxBRViS0Q5d6lNC1pvBaoSiq8MYuSkcaKlOu/+uUwra9Kml1zK1+PK03kyHP7KTUubA8J5A8o2JXLHwRq9A2lM64mSPXdMFqyOB0NWZFY/fBbbJfZ6WtHwjfxaOfUPCqm0y78kEZAJnO6riU6GnLCvXCnD53u00Y9+c8f/lZSa1e6RAI0I0NN7btTydLVB1jhXNNqjnWJGuBQrcQnS8Yb94xpIuzQUEY05Pw+TsODa5pLnhzfHSajnatfIBKgXi/sK8qrUy2LZQTopu2sYpQ2iWeohvdr7I4z2YwpALdSAN6zCYAGYG65mBHf3Qai4w2lgxZHdGD3BwcDmmwJcbheMEsNPqKeUSjfVb+8jORERHwMgSNJsns4zdCPzicP35c7kYPtL+EQjz578mGWdNWpa/e84Ck1eCGGtFxUcgIiK9UNNpulm7UZZ0OtLndxtinwRmMzEYbwEfvzlBq8IMUJg4gNGn1A2CVapnYCEZEkhwxz2tvv6ikSAi7Hk1ylBi/EctnYsZZqHT63Et/HAZuG1zCFFrQLANpVrdbOtJVDSySUBEybX281pIfWkI/d2RYUnrFr2Sgn0o12+rh+kuzG+9M5NpciGSZwVoo3iUB0G41Gd/Ow7MvBZEjR9F2AzmOOT/rdu794XZgKe1c3LQ9vevmtrQfp+omR900ENGCEBCs5o05ZXM+/0SCbXB80o7bSypkkzqwsNR8PSbGCk2eyhtO9/fOdBhEIX7UgpnatqYhwJeErGjVht0Uh+UGn1ex4Ot9i9vmxpNutkcP32ddCULF7/NTo7m/Q2s+bQrfBmcpeggiEX/AXJCA2xE3qd7w6GzCyJ2mcGSa7vI9MuxevHty588cemx/JsXPgXCOQw8JcJyacoZpc/2HM6gr0nQYkgV7/3YlVySC5R2qQ6v/26htoSblEDzSn5dn5IsggASBsTri8+0Gurat5rg+PEXax9OK0PuFofX29M1pqKGatdQe2rUdofHNFqOMfXn/aHRqFhWzQBu2gdcj14TGaAJ8wxZoELIM9rmY/Gd4L7PydlXtmlOV0tKWStH3q8tNuCCV8q4JPP/2Tpi2uLnE56DGa4KNkgTzFbLBFYNBPLS46SyFnL6fL3l7Z95pjKXtFoEXl399cucAdJY01SUVWW3KNkiB83LBZYt7f318qFAqhZMETgPXQvvatlrZZxzQkQNBuZQqMWsTlWfq+WV+yNAM7Ix5Y1zK7tmf9cAkbmPyp835Y6m4pfkmwnaZZyzfbR0Y1AwmURYK9wJo9v2yWj1Vxg/msG54PSt+uBiR88l2phIlsns8XzbZGvkgIC6yJlS6FtukIJ2CKdnmekSb9i5urLvf+y122tbrWvAcPNIBY9f95Ez5gPpaL94PSgVWX3CEqsRqovGAQAwTMo/BtZHkm6kO7Aayw4c2YUQLzmrjJ42FKhPhbHhMuIFvPBR2hPoxNbRf2u5wT4zBF41rOmfnB8lI6yAy0moSxNTHsOQi3WzIHozbesV+SHXR4dmGEvonpuIVwbkC4ueJSOsDDGYg1eAx2lrkNJcjel7WpUyidA05cvfCz7s9ffj5JBjHPa3fpv2xCI5p2mi8Nm+NaBTF7AylZQH1nX+ZO7DPZxtdvfmAV0DKm6YmRmMo0gK/w5/OrESuEBFph7LA7kyjC3Abh+vd7vE65WrPa0HMkt0eFj/8jy+bDru+yI5TtjWcWxtkk8DTMYjaKPUkVwh+QZ6NUNEKXx1zsJI5K5hNFz6i9xClnqqXUfqK33H/xyouGXV+hkQZ29IKgRBfeQG7DLu6Fhbnayt3c/I6sm/O6X5Iv+/eplrCNtvHs4F0WdiL7ReQDAkR9fwh/bxaPPQn9ocyTwOLqzshrHRZfa+w9CCnFfhbhCzDiG7N65sw8p/JOQNi2eQJJiJ5E9PrbZmdmD/yJIgF2DSiorbYndGb6tKWoEID03+75sSMgCM6vFoA0u9TamodHXc2VD5gAaECM9eHY9Rf4BWSq8ANtdvZyygabRTsgc4JIaAAVmrkJOD0S7GcbpjOmr8GO77DXkECBEJA2948zjIoGADAfdukCgoVJgl8wTQp7AjjQcvbosAgK96mQOQu7gSgR4FznOyDPdnO3O+IUx3tDsNA21OTKD6LihAEI0emIMXgGjjKxSQ7PPOw8IUoEYKQ7NSBNno1+4ng9UogSARBubKQj2Zk1414iNfqByBDgiNlh6+2fnQTg9XMNkAwIXhv53YYzR4gMokYAbP4wlKRaMeoDIvEQZyeiqAF218GosM81ICRA0Cg7uBFwrgGSYc8FAG5Lks6dsGTAxIz7znafUKQQNQImjXDcy7kJkoxJI/w8DwgBrgJ2ZMfnJihEjCZhZB5muPzifzvaxdIXFrNVAAAAAElFTkSuQmCC) no-repeat}#userNav>li>a>.icon{color:#23c8ec}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:-webkit-gradient(linear,left top,right top,from(rgba(229,244,169,.4)),to(rgba(237,254,171,.036)))!important;background:-webkit-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:-o-linear-gradient(left,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;background:linear-gradient(90deg,rgba(229,244,169,.4) 0,rgba(237,254,171,.036) 100%)!important;border-radius:4px;opacity:1}#featurebar .nav li.active a{color:#27988a!important}#featurebar .nav li.active a:after{border-bottom:2px solid #27988a!important}.btn.btn-action,.c-actions .btn,td.c-name a{color:#29aa93}#logForm .table .versions a,#mainMenu .page-title strong a,#readOnlyOfKanban i{color:#29aa93!important}.picker-drop-menu .picker-option-list .picker-option.picker-option-active,.picker-drop-menu .picker-option-list .picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background:#29aa93}.table-actions .btn{background:#29aa93!important;border-color:#29aa93!important}.table-actions .btn:hover{color:#fff;background:#27988a;border-color:#27988a}.table-actions>.btn-group:first-child>.btn:first-child{border-right:1px solid rgba(255,255,255,.2)!important}a.programName:focus,a.programName:hover{background:#29aa93!important}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#29aa93!important}.btn.btn-action:hover,.c-actions .btn:hover{color:#29aa93;background:#f0fdfb}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent}.main-table table tr{border-color:#f2f6f8!important}#mainHeader #headerActions .btn-group>.btn{color:#313c52!important}.c-manager .avatar.avatar-top{border-color:#faae1a}#programTableList>tr:hover{background:#f0fdfbcc}#programTableList>tr:hover>.c-name>a{color:#27988a!important}#programTableList>tr[data-type=project]>.c-name>a{color:#2f8a8f!important}.m-product-all #mainMenu>div.btn-toolbar.pull-right>a.btn.btn-link.iframe{color:#00c4d0!important}#featuresNav.nav-simple>li.active>a,.nav-simple>li.active>a,.nav-simple>li.active>a:focus,.nav-simple>li.active>a:hover{color:#29aa93}#featuresCarousel .carousel-indicators .active{background-color:#29aa93!important;border-color:#29aa93!important}#dashboard .block-welcome .progress{background:#eee} \ No newline at end of file diff --git a/www/theme/pink/style.css b/www/theme/pink/style.css index 184f3528de..043c3e10cc 100644 --- a/www/theme/pink/style.css +++ b/www/theme/pink/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - pink - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - pink - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#a050d7}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#8e2fcf;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#7a29b2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#8e2fcf;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#7a29b2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#a050d7;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#a050d7;background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:#ffc2ea;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ff9edd;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:#ffc2ea;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ff9edd;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ffebf8;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#a050d7}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#a050d7}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#882dc7}.label-primary.label-outline{color:#a050d7;background:0 0;border:1px solid #a050d7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#882dc7}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#cda3ea}.text-primary{color:#a050d7}.text-primary:hover{color:#882dc7}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#a050d7}a.bg-primary:hover{background-color:#882dc7}.hl-primary{background-color:#ffebf8}a.hl-primary:hover{background-color:#ffb8e6}.progress{background-color:#ffebf8;border-radius:3px}.progress-bar{color:#fff;background-color:#a050d7;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#a050d7;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.form-control:focus{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#a050d7;border-color:#a050d7}.switch input:focus+label{color:#a050d7}.switch input:focus+label:before{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #a050d7;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #a050d7}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#a050d7;border-color:#a050d7}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#a050d7;-webkit-box-shadow:0 0 8px #a050d7;box-shadow:0 0 8px #a050d7}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#a050d7}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#a050d7}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#f7889c}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#ffebf8}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#f7889c;border-color:#f45874}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#f57088}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#f9a5b4}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#fab8c4}.navbar-inverse .navbar-toggle{border-color:#fab8c4}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#f57088}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#f56780}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#fab8c4}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#f45874}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#f9a5b4}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#fab8c4}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #fab8c4;-webkit-box-shadow:inset 0 -1px 0 #f45874;box-shadow:inset 0 -1px 0 #f45874}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#f4627c}.nav>li>a:focus,.nav>li>a:hover{color:#a050d7}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#a050d7}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#a050d7;border-bottom-color:#a050d7}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #a050d7;box-shadow:inset 2px 0 0 #a050d7}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#a050d7}.panel-primary>.panel-heading{color:#fff;background-color:#a050d7;border-color:#a050d7}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#a050d7}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#a050d7}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ffebf8}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#a050d7!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#a050d7!important;border-bottom-left-radius:#a050d7!important}.chosen-container .chosen-results li.highlighted{background-color:#a050d7!important}.chosen-container-active .chosen-single{border-color:#a050d7!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#a050d7!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#a050d7!important;border-bottom-left-radius:#a050d7!important}.chosen-container.chosen-highlight-selected .result-selected{color:#a050d7;background:#ffebf8}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#a050d7}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#a050d7}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#a050d7}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#a050d7!important;border-color:#882dc7!important}.datetimepicker td.day.active:hover{background-color:#882dc7!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#a050d7!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important}.ke-menu-item-on{background-color:#a050d7!important}.ke-colorpicker-cell-on{background-color:#a050d7!important}.ke-input-text:focus{border-color:#a050d7!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#a050d7}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#ffebf8}.alert-primary hr{border-top-color:#ffc7ec}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#a050d7;border-color:#a050d7}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ffebf8}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#a050d7}.tree-drag-holder{background-color:#ffebf8}.tree-menu li.active>a{color:#fff;background-color:#a050d7;border-color:#a050d7}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#f7889c}a.text-primary{color:#a050d7}.nav-primary>li.active>a{color:#c92d79}.nav-primary>li.active>a:hover{color:#c92d79}.bg-primary,.m-user-login{background:#f7889c -webkit-gradient(linear,right top,left top,from(#a050d7),to(#f7889c))!important;background:#f7889c -webkit-linear-gradient(right,#a050d7 0,#f7889c 100%)!important;background:#f7889c -o-linear-gradient(right,#a050d7 0,#f7889c 100%)!important;background:#f7889c linear-gradient(-90deg,#a050d7 0,#f7889c 100%)!important}.bg-primary-pure{color:#fff;background-color:#a050d7}.bg-primary-pale{color:#a050d7;background-color:#ffebf8}.bg-secondary{background:#f7889c}.alert-info{color:#a050d7;background:#ffebf8}.btn-primary{color:#fff;background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(160,80,215,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#953bd2;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#a050d7;border-color:transparent}.btn-secondary{color:#fff;background-color:#f7889c;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(247,136,156,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#f57088;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#f7889c;border-color:transparent}.btn-info{color:#a050d7;background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:rgba(255,235,248,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ffd1ef;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(160,80,215,.3);background-color:#ffebf8;border-color:transparent}.btn-icon-left>.icon{color:#f7889c;background:#ffebf8}.btn-active-line{color:#a050d7}.btn-active-line:after{border-bottom-color:#a050d7}.btn-active-line:hover{color:#a050d7}.btn-active-text .text{color:#c92d79}.btn-active-text .text:after{border-bottom-color:#c92d79}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(160,80,215,.8)}.label-primary{background:#a050d7!important}.label-pale{background:#ffb8e6!important}.label-outline.label-primary{background:#ffebf8!important;border-color:rgba(160,80,215,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#a050d7;border-color:#a050d7}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#a050d7;-webkit-box-shadow:0 0 0 3px rgba(160,80,215,.2);box-shadow:0 0 0 3px rgba(160,80,215,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#a050d7}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#a050d7!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#a050d7!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#a050d7!important}.nav-tabs>li.active>a:before{background:#a050d7}.nav-tabs-primary>li.active>a{color:#a050d7!important}.panel-actions .btn.text-primary{color:#a050d7}.picker-focus .picker-selections{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.status-bars .bar{background:#a050d7}.status-bars-h .bar{background:#a050d7}.messagger-zt .messager-content>.icon{color:#a050d7}.tree li.active>a{color:#a050d7}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#a050d7}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#f7889c}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#ffebf8}.dropdown-submenu:hover>a:after{border-left-color:#a050d7}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#f7889c}.timeline>li>a:after,.timeline>li>div:after{background-color:#a050d7}.timeline>li.active:before{background-color:rgba(160,80,215,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#a050d7!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#a050d7!important}#mainHeader{background:#f7889c -webkit-gradient(linear,right top,left top,from(#a050d7),to(#f7889c));background:#f7889c -webkit-linear-gradient(right,#a050d7 0,#f7889c 100%);background:#f7889c -o-linear-gradient(right,#a050d7 0,#f7889c 100%);background:#f7889c linear-gradient(-90deg,#a050d7 0,#f7889c 100%);background-color:#f7889c;border-top-color:#a050d7;border-bottom-color:#ffebf8}#searchGo{background-color:#f7889c}#searchGo:hover{background-color:#a050d7}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#a050d7}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#a050d7}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#a050d7}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #a050d7}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #a050d7}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #a050d7}#sidebarHeader .title{color:#a050d7}#sidebar>.sidebar-toggle>.icon{background:#fde8ec}#main .querybox-toggle.querybox-opened{color:#a050d7}#contentNav .nav>li.active>a{color:#a050d7}#contentNav .nav>li.active>a:before{background:#a050d7}td.c-actions .btn{color:#f7889c}td.c-actions .btn:hover{color:#a050d7;background-color:#ffd1ef}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#a050d7;background:#ffebf8}.main-table table .btn-icon-left:hover>.icon{background:#ffebf8}.main-table tbody>tr:hover{background:#ffebf8}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#a050d7}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#fff5fc}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#fff5fc}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#a01c5d}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#4f1a74}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#a050d7}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#a050d7}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#a050d7}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#ffebf8}.table-nest-toggle:hover{color:#a050d7}.table-footer .checkbox-primary.checked label:after{border-color:#a050d7!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#b77ae0!important;border-color:#b77ae0!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#a050d7}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#a050d7;border-color:#a050d7}.article-content a{color:#a050d7}.article-content a:focus,.article-content a:hover{color:#f7889c}.list-group{overflow-y:auto}.list-group>a.selected{color:#ffebf8;background-color:#a050d7}.list-group>a.active{color:#a050d7;background-color:#ffebf8}.list-group>a.active:hover,.list-group>a:hover{background-color:#a050d7}#swapper #dropMenu .tree li>.selected{color:#a050d7!important;background:#ffebf8!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#a050d7!important}.release-line>li>a:hover:before{background-color:#ffebf8}.release-line>li>a:hover .title{color:#a050d7}.release-line>li.active>a:before{border-color:#a050d7}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#f7889c}#poweredBy .icon-zentao{color:#f7889c}#poweredBy a:hover{color:#a050d7}#poweredBy a:hover .icon-zentao{color:#a050d7}#poweredBy a.text-primary{color:#a050d7}#poweredBy a.text-primary:hover{color:#f7889c}.block-statistic .nav-secondary>li.active>a:before{background:#a050d7!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#f7889c!important}.dynamic.active .dynamic-date:before{background-color:#f7889c!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#a050d7!important}.table td.has-child>.task-toggle:hover{color:#a050d7!important}#openTaskPage.open:hover,#task .task-nav{color:#a050d7!important;background:#ffebf8!important}#tasksProgress>.progress-bar{background:#a050d7!important}#tasksProgress .progress-text{color:#a050d7!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#a050d7!important;background:#ffebf8!important;border-left-color:#a050d7!important;-webkit-box-shadow:inset 4px 0 0 #a050d7!important;box-shadow:inset 4px 0 0 #a050d7!important}#copyProjectModal a:hover{border-color:#f7889c!important}#zeroTaskStory.checked{background:#ffebf8!important;border-color:#f7889c!important}.cols-list .col:hover{background:#ffebf8!important}.files-grid .actions,.files-grid .col:hover .file{background:#ffebf8!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#f7889c!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#f7889c!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#a050d7!important}#bars>li.active:after{background:#ffebf8!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#c92d79;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#a050d7}.main-table tbody>tr:hover{background:rgba(255,235,248,.8)}.main-table tbody>tr>td.c-name a{color:#a01c5d}.main-table tbody>tr>td.c-name a:hover{color:#c92d79}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#a050d7!important}.assigned-none{color:#c92d79!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#c92d79!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#c92d79!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#eb599f}#assigntomeBlock .nav>li.active>a{color:#c92d79}.consumedTotally{color:#a050d7;background:#ffebf8}#toggleFoldIcon .icon-border{border:1px solid #fbdeec}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#a050d7}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#a050d7}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#8e2fcf;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#7a29b2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#8e2fcf;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#7a29b2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#a050d7;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#a050d7;background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:#ffc2ea;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ff9edd;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:#ffc2ea;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ff9edd;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#ffebf8;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#a050d7}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#a050d7}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#882dc7}.label-primary.label-outline{color:#a050d7;background:0 0;border:1px solid #a050d7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#882dc7}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#cda3ea}.text-primary{color:#a050d7}.text-primary:hover{color:#882dc7}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#a050d7}a.bg-primary:hover{background-color:#882dc7}.hl-primary{background-color:#ffebf8}a.hl-primary:hover{background-color:#ffb8e6}.progress{background-color:#ffebf8;border-radius:3px}.progress-bar{color:#fff;background-color:#a050d7;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#a050d7;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.form-control:focus{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#a050d7;border-color:#a050d7}.switch input:focus+label{color:#a050d7}.switch input:focus+label:before{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #a050d7;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #a050d7}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#a050d7;border-color:#a050d7}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#a050d7;-webkit-box-shadow:0 0 8px #a050d7;box-shadow:0 0 8px #a050d7}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#a050d7}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#a050d7}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#f7889c}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#ffebf8}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#f7889c;border-color:#f45874}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#f57088}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#f9a5b4}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#fab8c4}.navbar-inverse .navbar-toggle{border-color:#fab8c4}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#f57088}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#f56780}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#fab8c4}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#f45874}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#f9a5b4}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#fab8c4}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #fab8c4;-webkit-box-shadow:inset 0 -1px 0 #f45874;box-shadow:inset 0 -1px 0 #f45874}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#f4627c}.nav>li>a:focus,.nav>li>a:hover{color:#a050d7}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#a050d7}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#a050d7;border-bottom-color:#a050d7}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #a050d7;box-shadow:inset 2px 0 0 #a050d7}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#a050d7}.panel-primary>.panel-heading{color:#fff;background-color:#a050d7;border-color:#a050d7}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#a050d7}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#a050d7}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#ffebf8}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#a050d7!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#a050d7!important;border-bottom-left-radius:#a050d7!important}.chosen-container .chosen-results li.highlighted{background-color:#a050d7!important}.chosen-container-active .chosen-single{border-color:#a050d7!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#a050d7!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#a050d7!important;border-bottom-left-radius:#a050d7!important}.chosen-container.chosen-highlight-selected .result-selected{color:#a050d7;background:#ffebf8}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#a050d7;border-color:#a050d7}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#a050d7}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#a050d7}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#a050d7}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#a050d7!important;border-color:#882dc7!important}.datetimepicker td.day.active:hover{background-color:#882dc7!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#a050d7!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important}.ke-menu-item-on{background-color:#a050d7!important}.ke-colorpicker-cell-on{background-color:#a050d7!important}.ke-input-text:focus{border-color:#a050d7!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#a050d7}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#ffebf8}.alert-primary hr{border-top-color:#ffc7ec}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#a050d7;border-color:#a050d7}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#ffebf8}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#a050d7}.tree-drag-holder{background-color:#ffebf8}.tree-menu li.active>a{color:#fff;background-color:#a050d7;border-color:#a050d7}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#f7889c}a.text-primary{color:#a050d7}.nav-primary>li.active>a{color:#c92d79}.nav-primary>li.active>a:hover{color:#c92d79}.bg-primary,.m-user-login{background:#f7889c -webkit-gradient(linear,right top,left top,from(#a050d7),to(#f7889c))!important;background:#f7889c -webkit-linear-gradient(right,#a050d7 0,#f7889c 100%)!important;background:#f7889c -o-linear-gradient(right,#a050d7 0,#f7889c 100%)!important;background:#f7889c linear-gradient(-90deg,#a050d7 0,#f7889c 100%)!important}.bg-primary-pure{color:#fff;background-color:#a050d7}.bg-primary-pale{color:#a050d7;background-color:#ffebf8}.bg-secondary{background:#f7889c}.alert-info{color:#a050d7;background:#ffebf8}.btn-primary{color:#fff;background-color:#a050d7;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(160,80,215,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#953bd2;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#a050d7;border-color:transparent}.btn-secondary{color:#fff;background-color:#f7889c;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(247,136,156,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#f57088;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#f7889c;border-color:transparent}.btn-info{color:#a050d7;background-color:#ffebf8;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#a050d7;background-color:rgba(255,235,248,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#ffd1ef;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(160,80,215,.3);background-color:#ffebf8;border-color:transparent}.btn-icon-left>.icon{color:#f7889c;background:#ffebf8}.btn-active-line{color:#a050d7}.btn-active-line:after{border-bottom-color:#a050d7}.btn-active-line:hover{color:#a050d7}.btn-active-text .text{color:#c92d79}.btn-active-text .text:after{border-bottom-color:#c92d79}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(160,80,215,.8)}.label-primary{background:#a050d7!important}.label-pale{background:#ffb8e6!important}.label-outline.label-primary{background:#ffebf8!important;border-color:rgba(160,80,215,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#a050d7;border-color:#a050d7}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#a050d7;-webkit-box-shadow:0 0 0 3px rgba(160,80,215,.2);box-shadow:0 0 0 3px rgba(160,80,215,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#a050d7}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#a050d7!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#a050d7!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#a050d7!important}.nav-tabs>li.active>a:before{background:#a050d7}.nav-tabs-primary>li.active>a{color:#a050d7!important}.panel-actions .btn.text-primary{color:#a050d7}.picker-focus .picker-selections{border-color:#a050d7;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(160,80,215,.6)}.status-bars .bar{background:#a050d7}.status-bars-h .bar{background:#a050d7}.messagger-zt .messager-content>.icon{color:#a050d7}.tree li.active>a{color:#a050d7}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#a050d7}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#f7889c}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#ffebf8}.dropdown-submenu:hover>a:after{border-left-color:#a050d7}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#f7889c}.timeline>li>a:after,.timeline>li>div:after{background-color:#a050d7}.timeline>li.active:before{background-color:rgba(160,80,215,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#a050d7!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#a050d7!important}#mainHeader{background:#f7889c -webkit-gradient(linear,right top,left top,from(#a050d7),to(#f7889c));background:#f7889c -webkit-linear-gradient(right,#a050d7 0,#f7889c 100%);background:#f7889c -o-linear-gradient(right,#a050d7 0,#f7889c 100%);background:#f7889c linear-gradient(-90deg,#a050d7 0,#f7889c 100%);background-color:#f7889c;border-top-color:#a050d7;border-bottom-color:#ffebf8}#searchGo{background-color:#f7889c}#searchGo:hover{background-color:#a050d7}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#a050d7}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#a050d7}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#a050d7}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #a050d7}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #a050d7}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #a050d7}#sidebarHeader .title{color:#a050d7}#sidebar>.sidebar-toggle>.icon{background:#fde8ec}#main .querybox-toggle.querybox-opened{color:#a050d7}#contentNav .nav>li.active>a{color:#a050d7}#contentNav .nav>li.active>a:before{background:#a050d7}td.c-actions .btn{color:#f7889c}td.c-actions .btn:hover{color:#a050d7;background-color:#ffd1ef}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#a050d7;background:#ffebf8}.main-table table .btn-icon-left:hover>.icon{background:#ffebf8}.main-table tbody>tr:hover{background:#ffebf8}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#a050d7}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#fff5fc}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#fff5fc}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#a01c5d}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#4f1a74}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#a050d7}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#a050d7}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#a050d7}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#ffebf8}.table-nest-toggle:hover{color:#a050d7}.table-footer .checkbox-primary.checked label:after{border-color:#a050d7!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#b77ae0!important;border-color:#b77ae0!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#a050d7}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#a050d7;border-color:#a050d7}.article-content a{color:#a050d7}.article-content a:focus,.article-content a:hover{color:#f7889c}.list-group{overflow-y:auto}.list-group>a.selected{color:#ffebf8;background-color:#a050d7}.list-group>a.active{color:#a050d7;background-color:#ffebf8}.list-group>a.active:hover,.list-group>a:hover{background-color:#a050d7}#swapper #dropMenu .tree li>.selected{color:#a050d7!important;background:#ffebf8!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#a050d7!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#a050d7!important;background:#ffebf8!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#a050d7!important}.release-line>li>a:hover:before{background-color:#ffebf8}.release-line>li>a:hover .title{color:#a050d7}.release-line>li.active>a:before{border-color:#a050d7}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#f7889c}#poweredBy .icon-zentao{color:#f7889c}#poweredBy a:hover{color:#a050d7}#poweredBy a:hover .icon-zentao{color:#a050d7}#poweredBy a.text-primary{color:#a050d7}#poweredBy a.text-primary:hover{color:#f7889c}.block-statistic .nav-secondary>li.active>a:before{background:#a050d7!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#f7889c!important}.dynamic.active .dynamic-date:before{background-color:#f7889c!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#a050d7!important}.table td.has-child>.task-toggle:hover{color:#a050d7!important}#openTaskPage.open:hover,#task .task-nav{color:#a050d7!important;background:#ffebf8!important}#tasksProgress>.progress-bar{background:#a050d7!important}#tasksProgress .progress-text{color:#a050d7!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#a050d7!important;background:#ffebf8!important;border-left-color:#a050d7!important;-webkit-box-shadow:inset 4px 0 0 #a050d7!important;box-shadow:inset 4px 0 0 #a050d7!important}#copyProjectModal a:hover{border-color:#f7889c!important}#zeroTaskStory.checked{background:#ffebf8!important;border-color:#f7889c!important}.cols-list .col:hover{background:#ffebf8!important}.files-grid .actions,.files-grid .col:hover .file{background:#ffebf8!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#f7889c!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#f7889c!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#a050d7!important}#bars>li.active:after{background:#ffebf8!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#c92d79;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#a050d7}.main-table tbody>tr:hover{background:rgba(255,235,248,.8)}.main-table tbody>tr>td.c-name a{color:#a01c5d}.main-table tbody>tr>td.c-name a:hover{color:#c92d79}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#a050d7!important}.assigned-none{color:#c92d79!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#c92d79!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#c92d79!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#eb599f}#assigntomeBlock .nav>li.active>a{color:#c92d79}.consumedTotally{color:#a050d7;background:#ffebf8}#toggleFoldIcon .icon-border{border:1px solid #fbdeec}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#a050d7}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file diff --git a/www/theme/purple/style.css b/www/theme/purple/style.css index 598fbeed97..2c89f545f3 100644 --- a/www/theme/purple/style.css +++ b/www/theme/purple/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - purple - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - purple - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#3123ae}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#271c8c;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1f166e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#271c8c;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1f166e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3123ae;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#3123ae;background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:#dcc6f7;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#c9a7f2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:#dcc6f7;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#c9a7f2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f2eafc;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#3123ae}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#3123ae}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#251a84}.label-primary.label-outline{color:#3123ae;background:0 0;border:1px solid #3123ae}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#251a84}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#6759de}.text-primary{color:#3123ae}.text-primary:hover{color:#251a84}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#3123ae}a.bg-primary:hover{background-color:#251a84}.hl-primary{background-color:#f2eafc}a.hl-primary:hover{background-color:#d6bdf6}.progress{background-color:#f2eafc;border-radius:3px}.progress-bar{color:#fff;background-color:#3123ae;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#3123ae;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.form-control:focus{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#3123ae;border-color:#3123ae}.switch input:focus+label{color:#3123ae}.switch input:focus+label:before{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #3123ae;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #3123ae}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#3123ae;border-color:#3123ae}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#3123ae;-webkit-box-shadow:0 0 8px #3123ae;box-shadow:0 0 8px #3123ae}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#3123ae}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#3123ae}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#9958dc}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f2eafc}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#9958dc;border-color:#7f2ed3}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#8c43d8}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#a871e1}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#b382e5}.navbar-inverse .navbar-toggle{border-color:#b382e5}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#8c43d8}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#873ad6}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#b382e5}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#7f2ed3}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#a871e1}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#b382e5}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #b382e5;-webkit-box-shadow:inset 0 -1px 0 #7f2ed3;box-shadow:inset 0 -1px 0 #7f2ed3}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#8436d5}.nav>li>a:focus,.nav>li>a:hover{color:#3123ae}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#3123ae}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3123ae;border-bottom-color:#3123ae}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3123ae;box-shadow:inset 2px 0 0 #3123ae}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#3123ae}.panel-primary>.panel-heading{color:#fff;background-color:#3123ae;border-color:#3123ae}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3123ae}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3123ae}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f2eafc}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#3123ae!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3123ae!important;border-bottom-left-radius:#3123ae!important}.chosen-container .chosen-results li.highlighted{background-color:#3123ae!important}.chosen-container-active .chosen-single{border-color:#3123ae!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#3123ae!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3123ae!important;border-bottom-left-radius:#3123ae!important}.chosen-container.chosen-highlight-selected .result-selected{color:#3123ae;background:#f2eafc}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#3123ae}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#3123ae}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#3123ae}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#3123ae!important;border-color:#251a84!important}.datetimepicker td.day.active:hover{background-color:#251a84!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#3123ae!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important}.ke-menu-item-on{background-color:#3123ae!important}.ke-colorpicker-cell-on{background-color:#3123ae!important}.ke-input-text:focus{border-color:#3123ae!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#3123ae}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f2eafc}.alert-primary hr{border-top-color:#dfcbf8}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#3123ae;border-color:#3123ae}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f2eafc}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#3123ae}.tree-drag-holder{background-color:#f2eafc}.tree-menu li.active>a{color:#fff;background-color:#3123ae;border-color:#3123ae}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#9958dc}a.text-primary{color:#3123ae}.nav-primary>li.active>a{color:#7055df}.nav-primary>li.active>a:hover{color:#7055df}.bg-primary,.m-user-login{background:#9958dc -webkit-gradient(linear,right top,left top,from(#3123ae),to(#9958dc))!important;background:#9958dc -webkit-linear-gradient(right,#3123ae 0,#9958dc 100%)!important;background:#9958dc -o-linear-gradient(right,#3123ae 0,#9958dc 100%)!important;background:#9958dc linear-gradient(-90deg,#3123ae 0,#9958dc 100%)!important}.bg-primary-pure{color:#fff;background-color:#3123ae}.bg-primary-pale{color:#3123ae;background-color:#f2eafc}.bg-secondary{background:#9958dc}.alert-info{color:#3123ae;background:#f2eafc}.btn-primary{color:#fff;background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(49,35,174,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b1f99;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#3123ae;border-color:transparent}.btn-secondary{color:#fff;background-color:#9958dc;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(153,88,220,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#8c43d8;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#9958dc;border-color:transparent}.btn-info{color:#3123ae;background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:rgba(242,234,252,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#e4d4f9;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(49,35,174,.3);background-color:#f2eafc;border-color:transparent}.btn-icon-left>.icon{color:#9958dc;background:#f2eafc}.btn-active-line{color:#3123ae}.btn-active-line:after{border-bottom-color:#3123ae}.btn-active-line:hover{color:#3123ae}.btn-active-text .text{color:#7055df}.btn-active-text .text:after{border-bottom-color:#7055df}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(49,35,174,.8)}.label-primary{background:#3123ae!important}.label-pale{background:#d6bdf6!important}.label-outline.label-primary{background:#f2eafc!important;border-color:rgba(49,35,174,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#3123ae;border-color:#3123ae}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#3123ae;-webkit-box-shadow:0 0 0 3px rgba(49,35,174,.2);box-shadow:0 0 0 3px rgba(49,35,174,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#3123ae}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#3123ae!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#3123ae!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#3123ae!important}.nav-tabs>li.active>a:before{background:#3123ae}.nav-tabs-primary>li.active>a{color:#3123ae!important}.panel-actions .btn.text-primary{color:#3123ae}.picker-focus .picker-selections{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.status-bars .bar{background:#3123ae}.status-bars-h .bar{background:#3123ae}.messagger-zt .messager-content>.icon{color:#3123ae}.tree li.active>a{color:#3123ae}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#3123ae}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#9958dc}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f2eafc}.dropdown-submenu:hover>a:after{border-left-color:#3123ae}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#9958dc}.timeline>li>a:after,.timeline>li>div:after{background-color:#3123ae}.timeline>li.active:before{background-color:rgba(49,35,174,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#3123ae!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#3123ae!important}#mainHeader{background:#9958dc -webkit-gradient(linear,right top,left top,from(#3123ae),to(#9958dc));background:#9958dc -webkit-linear-gradient(right,#3123ae 0,#9958dc 100%);background:#9958dc -o-linear-gradient(right,#3123ae 0,#9958dc 100%);background:#9958dc linear-gradient(-90deg,#3123ae 0,#9958dc 100%);background-color:#9958dc;border-top-color:#3123ae;border-bottom-color:#f2eafc}#searchGo{background-color:#9958dc}#searchGo:hover{background-color:#3123ae}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#3123ae}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#3123ae}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#3123ae}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #3123ae}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #3123ae}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #3123ae}#sidebarHeader .title{color:#3123ae}#sidebar>.sidebar-toggle>.icon{background:#cdacee}#main .querybox-toggle.querybox-opened{color:#3123ae}#contentNav .nav>li.active>a{color:#3123ae}#contentNav .nav>li.active>a:before{background:#3123ae}td.c-actions .btn{color:#9958dc}td.c-actions .btn:hover{color:#3123ae;background-color:#e4d4f9}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#3123ae;background:#f2eafc}.main-table table .btn-icon-left:hover>.icon{background:#f2eafc}.main-table tbody>tr:hover{background:#f2eafc}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#3123ae}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f8f3fd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f8f3fd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#513baa}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0d092f}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#3123ae}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#3123ae}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#3123ae}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#f2eafc}.table-nest-toggle:hover{color:#3123ae}.table-footer .checkbox-primary.checked label:after{border-color:#3123ae!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#402fd5!important;border-color:#402fd5!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#3123ae}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#3123ae;border-color:#3123ae}.article-content a{color:#3123ae}.article-content a:focus,.article-content a:hover{color:#9958dc}.list-group{overflow-y:auto}.list-group>a.selected{color:#f2eafc;background-color:#3123ae}.list-group>a.active{color:#3123ae;background-color:#f2eafc}.list-group>a.active:hover,.list-group>a:hover{background-color:#3123ae}#swapper #dropMenu .tree li>.selected{color:#3123ae!important;background:#f2eafc!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#3123ae!important}.release-line>li>a:hover:before{background-color:#f2eafc}.release-line>li>a:hover .title{color:#3123ae}.release-line>li.active>a:before{border-color:#3123ae}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#9958dc}#poweredBy .icon-zentao{color:#9958dc}#poweredBy a:hover{color:#3123ae}#poweredBy a:hover .icon-zentao{color:#3123ae}#poweredBy a.text-primary{color:#3123ae}#poweredBy a.text-primary:hover{color:#9958dc}.block-statistic .nav-secondary>li.active>a:before{background:#3123ae!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#9958dc!important}.dynamic.active .dynamic-date:before{background-color:#9958dc!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#3123ae!important}.table td.has-child>.task-toggle:hover{color:#3123ae!important}#openTaskPage.open:hover,#task .task-nav{color:#3123ae!important;background:#f2eafc!important}#tasksProgress>.progress-bar{background:#3123ae!important}#tasksProgress .progress-text{color:#3123ae!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#3123ae!important;background:#f2eafc!important;border-left-color:#3123ae!important;-webkit-box-shadow:inset 4px 0 0 #3123ae!important;box-shadow:inset 4px 0 0 #3123ae!important}#copyProjectModal a:hover{border-color:#9958dc!important}#zeroTaskStory.checked{background:#f2eafc!important;border-color:#9958dc!important}.cols-list .col:hover{background:#f2eafc!important}.files-grid .actions,.files-grid .col:hover .file{background:#f2eafc!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#9958dc!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#9958dc!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#3123ae!important}#bars>li.active:after{background:#f2eafc!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#7055df;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#3123ae}.main-table tbody>tr:hover{background:rgba(242,234,252,.8)}.main-table tbody>tr>td.c-name a{color:#513baa}.main-table tbody>tr>td.c-name a:hover{color:#7055df}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#3123ae!important}.assigned-none{color:#7055df!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#7055df!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#7055df!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#8a6ff5}#assigntomeBlock .nav>li.active>a{color:#7055df}.consumedTotally{color:#3123ae;background:#f2eafc}#toggleFoldIcon .icon-border{border:1px solid #e4dff7}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#3123ae}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#3123ae}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#271c8c;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1f166e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#271c8c;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#1f166e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#3123ae;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#3123ae;background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:#dcc6f7;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#c9a7f2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:#dcc6f7;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#c9a7f2;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#f2eafc;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#3123ae}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#3123ae}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#251a84}.label-primary.label-outline{color:#3123ae;background:0 0;border:1px solid #3123ae}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#251a84}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#6759de}.text-primary{color:#3123ae}.text-primary:hover{color:#251a84}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#3123ae}a.bg-primary:hover{background-color:#251a84}.hl-primary{background-color:#f2eafc}a.hl-primary:hover{background-color:#d6bdf6}.progress{background-color:#f2eafc;border-radius:3px}.progress-bar{color:#fff;background-color:#3123ae;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#3123ae;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.form-control:focus{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#3123ae;border-color:#3123ae}.switch input:focus+label{color:#3123ae}.switch input:focus+label:before{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #3123ae;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #3123ae}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#3123ae;border-color:#3123ae}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#3123ae;-webkit-box-shadow:0 0 8px #3123ae;box-shadow:0 0 8px #3123ae}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#3123ae}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#3123ae}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#9958dc}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#f2eafc}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#9958dc;border-color:#7f2ed3}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#8c43d8}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#a871e1}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#b382e5}.navbar-inverse .navbar-toggle{border-color:#b382e5}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#8c43d8}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#873ad6}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#b382e5}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#7f2ed3}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#a871e1}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#b382e5}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #b382e5;-webkit-box-shadow:inset 0 -1px 0 #7f2ed3;box-shadow:inset 0 -1px 0 #7f2ed3}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#8436d5}.nav>li>a:focus,.nav>li>a:hover{color:#3123ae}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#3123ae}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#3123ae;border-bottom-color:#3123ae}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #3123ae;box-shadow:inset 2px 0 0 #3123ae}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#3123ae}.panel-primary>.panel-heading{color:#fff;background-color:#3123ae;border-color:#3123ae}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#3123ae}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#3123ae}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f2eafc}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#3123ae!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3123ae!important;border-bottom-left-radius:#3123ae!important}.chosen-container .chosen-results li.highlighted{background-color:#3123ae!important}.chosen-container-active .chosen-single{border-color:#3123ae!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#3123ae!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#3123ae!important;border-bottom-left-radius:#3123ae!important}.chosen-container.chosen-highlight-selected .result-selected{color:#3123ae;background:#f2eafc}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#3123ae;border-color:#3123ae}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#3123ae}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#3123ae}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#3123ae}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#3123ae!important;border-color:#251a84!important}.datetimepicker td.day.active:hover{background-color:#251a84!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#3123ae!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important}.ke-menu-item-on{background-color:#3123ae!important}.ke-colorpicker-cell-on{background-color:#3123ae!important}.ke-input-text:focus{border-color:#3123ae!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#3123ae}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#f2eafc}.alert-primary hr{border-top-color:#dfcbf8}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#3123ae;border-color:#3123ae}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#f2eafc}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#3123ae}.tree-drag-holder{background-color:#f2eafc}.tree-menu li.active>a{color:#fff;background-color:#3123ae;border-color:#3123ae}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#9958dc}a.text-primary{color:#3123ae}.nav-primary>li.active>a{color:#7055df}.nav-primary>li.active>a:hover{color:#7055df}.bg-primary,.m-user-login{background:#9958dc -webkit-gradient(linear,right top,left top,from(#3123ae),to(#9958dc))!important;background:#9958dc -webkit-linear-gradient(right,#3123ae 0,#9958dc 100%)!important;background:#9958dc -o-linear-gradient(right,#3123ae 0,#9958dc 100%)!important;background:#9958dc linear-gradient(-90deg,#3123ae 0,#9958dc 100%)!important}.bg-primary-pure{color:#fff;background-color:#3123ae}.bg-primary-pale{color:#3123ae;background-color:#f2eafc}.bg-secondary{background:#9958dc}.alert-info{color:#3123ae;background:#f2eafc}.btn-primary{color:#fff;background-color:#3123ae;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(49,35,174,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#2b1f99;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#3123ae;border-color:transparent}.btn-secondary{color:#fff;background-color:#9958dc;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(153,88,220,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#8c43d8;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#9958dc;border-color:transparent}.btn-info{color:#3123ae;background-color:#f2eafc;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#3123ae;background-color:rgba(242,234,252,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#e4d4f9;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(49,35,174,.3);background-color:#f2eafc;border-color:transparent}.btn-icon-left>.icon{color:#9958dc;background:#f2eafc}.btn-active-line{color:#3123ae}.btn-active-line:after{border-bottom-color:#3123ae}.btn-active-line:hover{color:#3123ae}.btn-active-text .text{color:#7055df}.btn-active-text .text:after{border-bottom-color:#7055df}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(49,35,174,.8)}.label-primary{background:#3123ae!important}.label-pale{background:#d6bdf6!important}.label-outline.label-primary{background:#f2eafc!important;border-color:rgba(49,35,174,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#3123ae;border-color:#3123ae}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#3123ae;-webkit-box-shadow:0 0 0 3px rgba(49,35,174,.2);box-shadow:0 0 0 3px rgba(49,35,174,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#3123ae}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#3123ae!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#3123ae!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#3123ae!important}.nav-tabs>li.active>a:before{background:#3123ae}.nav-tabs-primary>li.active>a{color:#3123ae!important}.panel-actions .btn.text-primary{color:#3123ae}.picker-focus .picker-selections{border-color:#3123ae;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(49,35,174,.6)}.status-bars .bar{background:#3123ae}.status-bars-h .bar{background:#3123ae}.messagger-zt .messager-content>.icon{color:#3123ae}.tree li.active>a{color:#3123ae}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#3123ae}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#9958dc}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#f2eafc}.dropdown-submenu:hover>a:after{border-left-color:#3123ae}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#9958dc}.timeline>li>a:after,.timeline>li>div:after{background-color:#3123ae}.timeline>li.active:before{background-color:rgba(49,35,174,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#3123ae!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#3123ae!important}#mainHeader{background:#9958dc -webkit-gradient(linear,right top,left top,from(#3123ae),to(#9958dc));background:#9958dc -webkit-linear-gradient(right,#3123ae 0,#9958dc 100%);background:#9958dc -o-linear-gradient(right,#3123ae 0,#9958dc 100%);background:#9958dc linear-gradient(-90deg,#3123ae 0,#9958dc 100%);background-color:#9958dc;border-top-color:#3123ae;border-bottom-color:#f2eafc}#searchGo{background-color:#9958dc}#searchGo:hover{background-color:#3123ae}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#3123ae}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#3123ae}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#3123ae}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #3123ae}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #3123ae}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #3123ae}#sidebarHeader .title{color:#3123ae}#sidebar>.sidebar-toggle>.icon{background:#cdacee}#main .querybox-toggle.querybox-opened{color:#3123ae}#contentNav .nav>li.active>a{color:#3123ae}#contentNav .nav>li.active>a:before{background:#3123ae}td.c-actions .btn{color:#9958dc}td.c-actions .btn:hover{color:#3123ae;background-color:#e4d4f9}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#3123ae;background:#f2eafc}.main-table table .btn-icon-left:hover>.icon{background:#f2eafc}.main-table tbody>tr:hover{background:#f2eafc}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#3123ae}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#f8f3fd}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f8f3fd}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#513baa}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#0d092f}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#3123ae}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#3123ae}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#3123ae}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#f2eafc}.table-nest-toggle:hover{color:#3123ae}.table-footer .checkbox-primary.checked label:after{border-color:#3123ae!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#402fd5!important;border-color:#402fd5!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#3123ae}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#3123ae;border-color:#3123ae}.article-content a{color:#3123ae}.article-content a:focus,.article-content a:hover{color:#9958dc}.list-group{overflow-y:auto}.list-group>a.selected{color:#f2eafc;background-color:#3123ae}.list-group>a.active{color:#3123ae;background-color:#f2eafc}.list-group>a.active:hover,.list-group>a:hover{background-color:#3123ae}#swapper #dropMenu .tree li>.selected{color:#3123ae!important;background:#f2eafc!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#3123ae!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#3123ae!important;background:#f2eafc!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#3123ae!important}.release-line>li>a:hover:before{background-color:#f2eafc}.release-line>li>a:hover .title{color:#3123ae}.release-line>li.active>a:before{border-color:#3123ae}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#9958dc}#poweredBy .icon-zentao{color:#9958dc}#poweredBy a:hover{color:#3123ae}#poweredBy a:hover .icon-zentao{color:#3123ae}#poweredBy a.text-primary{color:#3123ae}#poweredBy a.text-primary:hover{color:#9958dc}.block-statistic .nav-secondary>li.active>a:before{background:#3123ae!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#9958dc!important}.dynamic.active .dynamic-date:before{background-color:#9958dc!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#3123ae!important}.table td.has-child>.task-toggle:hover{color:#3123ae!important}#openTaskPage.open:hover,#task .task-nav{color:#3123ae!important;background:#f2eafc!important}#tasksProgress>.progress-bar{background:#3123ae!important}#tasksProgress .progress-text{color:#3123ae!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#3123ae!important;background:#f2eafc!important;border-left-color:#3123ae!important;-webkit-box-shadow:inset 4px 0 0 #3123ae!important;box-shadow:inset 4px 0 0 #3123ae!important}#copyProjectModal a:hover{border-color:#9958dc!important}#zeroTaskStory.checked{background:#f2eafc!important;border-color:#9958dc!important}.cols-list .col:hover{background:#f2eafc!important}.files-grid .actions,.files-grid .col:hover .file{background:#f2eafc!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#9958dc!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#9958dc!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#3123ae!important}#bars>li.active:after{background:#f2eafc!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#7055df;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#3123ae}.main-table tbody>tr:hover{background:rgba(242,234,252,.8)}.main-table tbody>tr>td.c-name a{color:#513baa}.main-table tbody>tr>td.c-name a:hover{color:#7055df}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#3123ae!important}.assigned-none{color:#7055df!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#7055df!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#7055df!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#8a6ff5}#assigntomeBlock .nav>li.active>a{color:#7055df}.consumedTotally{color:#3123ae;background:#f2eafc}#toggleFoldIcon .icon-border{border:1px solid #e4dff7}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#3123ae}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file diff --git a/www/theme/red/style.css b/www/theme/red/style.css index 2c00152c05..e26cc3a886 100644 --- a/www/theme/red/style.css +++ b/www/theme/red/style.css @@ -1,6 +1,6 @@ /*! - * ZUI: Zentao Theme - red - v1.10.0 - 2022-11-07 + * ZUI: Zentao Theme - red - v1.10.0 - 2022-11-11 * http://openzui.com * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT - */a{color:#313c52}a:focus,a:hover{color:#e62340}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#c91731;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#a9132a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#c91731;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#a9132a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#e62340;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#e62340;background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:#f7c6c6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f2a7a7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:#f7c6c6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f2a7a7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#fceaea;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#e62340}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#e62340}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#c0162f}.label-primary.label-outline{color:#e62340;background:0 0;border:1px solid #e62340}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#c0162f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#f07f90}.text-primary{color:#e62340}.text-primary:hover{color:#c0162f}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#e62340}a.bg-primary:hover{background-color:#c0162f}.hl-primary{background-color:#fceaea}a.hl-primary:hover{background-color:#f6bdbd}.progress{background-color:#fceaea;border-radius:3px}.progress-bar{color:#fff;background-color:#e62340;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#e62340;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.form-control:focus{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#e62340;border-color:#e62340}.switch input:focus+label{color:#e62340}.switch input:focus+label:before{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #e62340;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #e62340}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#e62340;border-color:#e62340}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#e62340;-webkit-box-shadow:0 0 8px #e62340;box-shadow:0 0 8px #e62340}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#e62340}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#e62340}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#f5515f}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#fceaea}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#e62340;border-color:#e62340}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#f5515f;border-color:#f22133}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#f43949}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#f76e7a}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#f8818b}.navbar-inverse .navbar-toggle{border-color:#f8818b}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#f43949}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#f32f40}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#f8818b}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#f22133}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#f76e7a}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#f8818b}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #f8818b;-webkit-box-shadow:inset 0 -1px 0 #f22133;box-shadow:inset 0 -1px 0 #f22133}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#f32a3c}.nav>li>a:focus,.nav>li>a:hover{color:#e62340}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#e62340}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#e62340;border-color:#e62340}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#e62340;border-bottom-color:#e62340}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #e62340;box-shadow:inset 2px 0 0 #e62340}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#e62340;border-color:#e62340}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#e62340}.panel-primary>.panel-heading{color:#fff;background-color:#e62340;border-color:#e62340}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#e62340}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#e62340}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#fceaea}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#e62340!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#e62340!important;border-bottom-left-radius:#e62340!important}.chosen-container .chosen-results li.highlighted{background-color:#e62340!important}.chosen-container-active .chosen-single{border-color:#e62340!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#e62340!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#e62340!important;border-bottom-left-radius:#e62340!important}.chosen-container.chosen-highlight-selected .result-selected{color:#e62340;background:#fceaea}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#e62340;border-color:#e62340}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e62340}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#e62340}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#e62340}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#e62340!important;border-color:#c0162f!important}.datetimepicker td.day.active:hover{background-color:#c0162f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#e62340!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important}.ke-menu-item-on{background-color:#e62340!important}.ke-colorpicker-cell-on{background-color:#e62340!important}.ke-input-text:focus{border-color:#e62340!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#e62340}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#fceaea}.alert-primary hr{border-top-color:#f8cbcb}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#e62340;border-color:#e62340}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#fceaea}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#e62340}.tree-drag-holder{background-color:#fceaea}.tree-menu li.active>a{color:#fff;background-color:#e62340;border-color:#e62340}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#f5515f}a.text-primary{color:#e62340}.nav-primary>li.active>a{color:#fb2b2b}.nav-primary>li.active>a:hover{color:#fb2b2b}.bg-primary,.m-user-login{background:#f5515f -webkit-gradient(linear,right top,left top,from(#e62340),to(#f5515f))!important;background:#f5515f -webkit-linear-gradient(right,#e62340 0,#f5515f 100%)!important;background:#f5515f -o-linear-gradient(right,#e62340 0,#f5515f 100%)!important;background:#f5515f linear-gradient(-90deg,#e62340 0,#f5515f 100%)!important}.bg-primary-pure{color:#fff;background-color:#e62340}.bg-primary-pale{color:#e62340;background-color:#fceaea}.bg-secondary{background:#f5515f}.alert-info{color:#e62340;background:#fceaea}.btn-primary{color:#fff;background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(230,35,64,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#d71835;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#e62340;border-color:transparent}.btn-secondary{color:#fff;background-color:#f5515f;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(245,81,95,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#f43949;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#f5515f;border-color:transparent}.btn-info{color:#e62340;background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:rgba(252,234,234,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f9d4d4;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(230,35,64,.3);background-color:#fceaea;border-color:transparent}.btn-icon-left>.icon{color:#f5515f;background:#fceaea}.btn-active-line{color:#e62340}.btn-active-line:after{border-bottom-color:#e62340}.btn-active-line:hover{color:#e62340}.btn-active-text .text{color:#fb2b2b}.btn-active-text .text:after{border-bottom-color:#fb2b2b}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(230,35,64,.8)}.label-primary{background:#e62340!important}.label-pale{background:#f6bdbd!important}.label-outline.label-primary{background:#fceaea!important;border-color:rgba(230,35,64,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#e62340;border-color:#e62340}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#e62340;-webkit-box-shadow:0 0 0 3px rgba(230,35,64,.2);box-shadow:0 0 0 3px rgba(230,35,64,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#e62340}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#e62340!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#e62340!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#e62340!important}.nav-tabs>li.active>a:before{background:#e62340}.nav-tabs-primary>li.active>a{color:#e62340!important}.panel-actions .btn.text-primary{color:#e62340}.picker-focus .picker-selections{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.status-bars .bar{background:#e62340}.status-bars-h .bar{background:#e62340}.messagger-zt .messager-content>.icon{color:#e62340}.tree li.active>a{color:#e62340}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#e62340}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#f5515f}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#fceaea}.dropdown-submenu:hover>a:after{border-left-color:#e62340}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#f5515f}.timeline>li>a:after,.timeline>li>div:after{background-color:#e62340}.timeline>li.active:before{background-color:rgba(230,35,64,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#e62340!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#e62340!important}#mainHeader{background:#f5515f -webkit-gradient(linear,right top,left top,from(#e62340),to(#f5515f));background:#f5515f -webkit-linear-gradient(right,#e62340 0,#f5515f 100%);background:#f5515f -o-linear-gradient(right,#e62340 0,#f5515f 100%);background:#f5515f linear-gradient(-90deg,#e62340 0,#f5515f 100%);background-color:#f5515f;border-top-color:#e62340;border-bottom-color:#fceaea}#searchGo{background-color:#f5515f}#searchGo:hover{background-color:#e62340}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#e62340}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#e62340}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#e62340}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #e62340}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #e62340}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #e62340}#sidebarHeader .title{color:#e62340}#sidebar>.sidebar-toggle>.icon{background:#fbb1b8}#main .querybox-toggle.querybox-opened{color:#e62340}#contentNav .nav>li.active>a{color:#e62340}#contentNav .nav>li.active>a:before{background:#e62340}td.c-actions .btn{color:#f5515f}td.c-actions .btn:hover{color:#e62340;background-color:#f9d4d4}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#e62340;background:#fceaea}.main-table table .btn-icon-left:hover>.icon{background:#fceaea}.main-table tbody>tr:hover{background:#fceaea}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#e62340}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#fdf3f3}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#fdf3f3}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#d91b1b}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#650b19}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#e62340}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#e62340}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#e62340}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fceaea}.table-nest-toggle:hover{color:#e62340}.table-footer .checkbox-primary.checked label:after{border-color:#e62340!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#eb5168!important;border-color:#eb5168!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#e62340}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#e62340;border-color:#e62340}.article-content a{color:#e62340}.article-content a:focus,.article-content a:hover{color:#f5515f}.list-group{overflow-y:auto}.list-group>a.selected{color:#fceaea;background-color:#e62340}.list-group>a.active{color:#e62340;background-color:#fceaea}.list-group>a.active:hover,.list-group>a:hover{background-color:#e62340}#swapper #dropMenu .tree li>.selected{color:#e62340!important;background:#fceaea!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#e62340!important}.release-line>li>a:hover:before{background-color:#fceaea}.release-line>li>a:hover .title{color:#e62340}.release-line>li.active>a:before{border-color:#e62340}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#f5515f}#poweredBy .icon-zentao{color:#f5515f}#poweredBy a:hover{color:#e62340}#poweredBy a:hover .icon-zentao{color:#e62340}#poweredBy a.text-primary{color:#e62340}#poweredBy a.text-primary:hover{color:#f5515f}.block-statistic .nav-secondary>li.active>a:before{background:#e62340!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#f5515f!important}.dynamic.active .dynamic-date:before{background-color:#f5515f!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#e62340!important}.table td.has-child>.task-toggle:hover{color:#e62340!important}#openTaskPage.open:hover,#task .task-nav{color:#e62340!important;background:#fceaea!important}#tasksProgress>.progress-bar{background:#e62340!important}#tasksProgress .progress-text{color:#e62340!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#e62340!important;background:#fceaea!important;border-left-color:#e62340!important;-webkit-box-shadow:inset 4px 0 0 #e62340!important;box-shadow:inset 4px 0 0 #e62340!important}#copyProjectModal a:hover{border-color:#f5515f!important}#zeroTaskStory.checked{background:#fceaea!important;border-color:#f5515f!important}.cols-list .col:hover{background:#fceaea!important}.files-grid .actions,.files-grid .col:hover .file{background:#fceaea!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#f5515f!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#f5515f!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#e62340!important}#bars>li.active:after{background:#fceaea!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#fb2b2b;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#e62340}.main-table tbody>tr:hover{background:rgba(252,234,234,.8)}.main-table tbody>tr>td.c-name a{color:#d91b1b}.main-table tbody>tr>td.c-name a:hover{color:#fb2b2b}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#e62340!important}.assigned-none{color:#fb2b2b!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#fb2b2b!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#fb2b2b!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#ff7c7c}#assigntomeBlock .nav>li.active>a{color:#fb2b2b}.consumedTotally{color:#e62340;background:#fceaea}#toggleFoldIcon .icon-border{border:1px solid #ffd5d5}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#e62340}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file + */a{color:#313c52}a:focus,a:hover{color:#e62340}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde;border-radius:4px}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn.active,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:#ebebeb;border-color:#b7bcc2;-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#d9d9d9;background-image:none;border-color:#bcc2c7;-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{background-color:#fff;border-color:#d8dbde}.btn-primary{color:#fff;background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#c91731;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#a9132a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#c91731;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#a9132a;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#e62340;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ff8a1d;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#f87800;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#fb3131;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fb0e0e;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#1ca675;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#17885f;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#22c98d;border-color:transparent}.btn-info{color:#e62340;background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:#f7c6c6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f2a7a7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:#f7c6c6;border-color:rgba(0,0,0,0);-webkit-box-shadow:0 2px 1px rgba(0,0,0,.1);box-shadow:0 2px 1px rgba(0,0,0,.1)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f2a7a7;background-image:none;border-color:rgba(0,0,0,0);-webkit-box-shadow:inset 0 4px 6px rgba(0,0,0,.15);box-shadow:inset 0 4px 6px rgba(0,0,0,.15)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#fceaea;border-color:transparent}.btn-link{color:#313c52;background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#e62340}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4}.popover,.tooltip-inner{border-radius:4px}.label{border-radius:3px}.label-badge{border-radius:9px}.label-dot{border-radius:5px}.label-primary{background-color:#e62340}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#c0162f}.label-primary.label-outline{color:#e62340;background:0 0;border:1px solid #e62340}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#c0162f}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-success[href]:focus,.label-success[href]:hover{background-color:#1b9d6e}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-info[href]:focus,.label-info[href]:hover{background-color:#049efe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ff8513}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#fb2727}.btn-primary .label-badge,.btn-primary .label-dot{background-color:#f07f90}.text-primary{color:#e62340}.text-primary:hover{color:#c0162f}.text-warning{color:#ff9f46}.text-warning:hover{color:#ff8513}.text-danger{color:#fc5959}.text-danger:hover{color:#fb2727}.text-success{color:#22c98d}.text-success:hover{color:#1b9d6e}.text-info{color:#37b2fe}.text-info:hover{color:#049efe}.text-important{color:#ff6f42}.text-important:hover{color:#ff480f}.text-special{color:#8166ee}.text-special:hover{color:#5b38e9}.text-muted a:active,.text-muted a:hover{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.bg-primary{background-color:#e62340}a.bg-primary:hover{background-color:#c0162f}.hl-primary{background-color:#fceaea}a.hl-primary:hover{background-color:#f6bdbd}.progress{background-color:#fceaea;border-radius:3px}.progress-bar{color:#fff;background-color:#e62340;border-radius:3px}.form-control{border-radius:2px}.form-control.focus,.form-control:focus{border-color:#e62340;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.form-control:focus{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.form-condensed .btn,.form-condensed .form-control{border-radius:4px}.switch>input:checked+label:before{background-color:#e62340;border-color:#e62340}.switch input:focus+label{color:#e62340}.switch input:focus+label:before{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #e62340;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px #e62340}.checkbox-primary>label:after,.radio-primary>label:after{background:#fff;border-color:#838a9d}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#e62340;border-color:#e62340}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#e62340;-webkit-box-shadow:0 0 8px #e62340;box-shadow:0 0 8px #e62340}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5;border-color:#bbb}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#fff;border-color:#e62340}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#e62340}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#fff;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.form-control:focus+.input-control-label-left{color:#f5515f}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child>.btn:last-child,.btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.input-group-addon{background-color:#eee}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon{border-radius:4px}.input-group-btn.fix-border>.btn{border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.list-group-item{background-color:#fff;border:1px solid #c4c4c4}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{color:#313c52;text-decoration:none;background-color:#fceaea}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{color:#fff;background-color:#e62340;border-color:#e62340}.list-group-item.active .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#e6e6e6}.list-group-item-heading{color:#313c52}.navbar-toggle{border-radius:4px}@media (min-width:768px){.navbar{border-radius:4px}}.navbar-inverse{background-color:#f5515f;border-color:#f22133}.navbar-inverse .navbar-nav>li.nav-heading{background-color:#f43949}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{background-color:#f76e7a}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{background-color:#f8818b}.navbar-inverse .navbar-toggle{border-color:#f8818b}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#f43949}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#f32f40}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#f8818b}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#f22133}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{background-color:#f76e7a}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{background-color:#f8818b}}.navbar-fixed-left.navbar-inverse .navbar-header,.navbar-fixed-left.navbar-inverse .navbar-nav{border-bottom:1px solid #f8818b;-webkit-box-shadow:inset 0 -1px 0 #f22133;box-shadow:inset 0 -1px 0 #f22133}.navbar-fixed-left.navbar-inverse.navbar-collapsed .navbar-nav>li.nav-heading:hover{color:#d1d1d1;background-color:#f32a3c}.nav>li>a:focus,.nav>li>a:hover{color:#e62340}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{border-color:#313c52}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{background-color:#e62340}.nav-primary>li:first-child>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#e62340;border-color:#e62340}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#e62340;border-bottom-color:#e62340}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #e62340;box-shadow:inset 2px 0 0 #e62340}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-tabs>li>a{border-radius:4px 4px 0 0}.pager{border-radius:4px}.pager>li>a,.pager>li>span{background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{color:#fff;background-color:#e62340;border-color:#e62340}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;background-color:#fff;border-color:#c4c4c4}.panel{border-radius:4px}.panel>.panel-heading{background-image:none;border-top-left-radius:4px;border-top-right-radius:4px}.panel-group .panel{border-radius:4px}.dashboard .panel{-webkit-box-shadow:none;box-shadow:none}.panel-primary{border-color:#e62340}.panel-primary>.panel-heading{color:#fff;background-color:#e62340;border-color:#e62340}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#e62340}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#e62340}.panel-danger>.panel-body,.panel-info>.panel-body,.panel-primary>.panel-body,.panel-success>.panel-body,.panel-warning>.panel-body{-webkit-box-shadow:none;box-shadow:none}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#fceaea}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}table.tablesorter thead tr .headerSortDown:after,table.tablesorter thead tr .headerSortUp:after{color:#313c52!important}.chosen-container-single .chosen-search input[type=text]:focus,.chosen-container-single .chosen-search:focus{border-color:#e62340!important}.chosen-container-single .chosen-single{border-radius:2px!important}.chosen-container-single.chosen-with-drop .chosen-single{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-single.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#e62340!important;border-bottom-left-radius:#e62340!important}.chosen-container .chosen-results li.highlighted{background-color:#e62340!important}.chosen-container-active .chosen-single{border-color:#e62340!important}.chosen-container-active.chosen-with-drop .chosen-single{border-color:#b2b2b2!important;border-color:rgba(0,0,0,.15)!important}.chosen-container-active .chosen-choices{border-color:#e62340!important}.chosen-container-multi .chosen-choices{border-radius:2px!important}.chosen-container-multi.chosen-with-drop .chosen-choices{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.chosen-container-multi.chosen-with-drop.chosen-up .chosen-choices{border-top-left-radius:0!important;border-top-right-radius:0!important;border-bottom-right-radius:#e62340!important;border-bottom-left-radius:#e62340!important}.chosen-container.chosen-highlight-selected .result-selected{color:#e62340;background:#fceaea}.menu>.nav>li>.nav{background-color:#f6f6f6}.menu>.nav>li>.nav>li>a{border:1px solid #c4c4c4}.menu>.nav>li>.nav>li>a:focus,.menu>.nav>li>.nav>li>a:hover{background-color:#e4e4e4}.menu>.nav>li>.nav>li.active>a,.menu>.nav>li>.nav>li.active>a:focus,.menu>.nav>li>.nav>li.active>a:hover{color:#fff;background-color:#e62340;border-color:#e62340}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li:first-child.nav-heading,.menu>.nav>li:first-child>a{border-top-left-radius:4px;border-top-right-radius:4px}.menu>.nav>li.show>a,.menu>.nav>li.show>a:focus,.menu>.nav>li.show>a:hover{color:#313c52;background-color:#fff;border-color:#c4c4c4}.menu>.nav>li.show>a:focus>[class*=icon-],.menu>.nav>li.show>a:hover>[class*=icon-],.menu>.nav>li.show>a>[class*=icon-]{color:#313c52}.menu>.nav>li.show>a:hover{background-color:#f1f1f1}.menu>.nav>li.show:last-child>a{border-bottom-right-radius:0;border-bottom-left-radius:0}.menu>.nav>li.show:last-child>.nav>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.menu>.nav>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.dropdown-menu{border-radius:4px}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{background-color:#e62340}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{background-color:#e62340}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{background-color:#e62340}.dropdown-submenu:hover>a:after{border-left-color:#fff}.datetimepicker td.day.today{background-color:#ff9f46!important;border-color:#ff9f46!important}.datetimepicker td.day.active{background-color:#e62340!important;border-color:#c0162f!important}.datetimepicker td.day.active:hover{background-color:#c0162f!important}.datetimepicker td.day.today.active:hover,.datetimepicker td.day.today:hover{background-color:#ff8513!important}.ke-container{border-radius:4px!important}.ke-container.focus{border-color:#e62340!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important}.ke-menu-item-on{background-color:#e62340!important}.ke-colorpicker-cell-on{background-color:#e62340!important}.ke-input-text:focus{border-color:#e62340!important;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)!important}.messager{border-radius:4px}.messager-primary{background-color:#e62340}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.comment:hover>.content>.actions>a{color:#313c52}.alert:not(.alert-block){border-radius:3px}.alert-primary{color:#273042;background-color:#fceaea}.alert-primary hr{border-top-color:#f8cbcb}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-primary-inverse{color:#fff;background-color:#e62340;border-color:#e62340}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.modal-dialog{border-radius:6px}.card{border-radius:4px;-webkit-box-shadow:none;box-shadow:none}pre{border-radius:4px}.datagrid .datagrid-hover-col .datagrid-cell.hover,.datagrid .datagrid-hover-col .datagrid-row-cell.active .datagrid-cell.hover,.datagrid .datagrid-hover-row .datagrid-row-cell:hover .datagrid-cell{background-color:#fceaea}.datagrid .datagrid-loading>.content>.icon,.datagrid .datagrid-sort-down>.icon-sort:before,.datagrid .datagrid-sort-up>.icon-sort:before{color:#e62340}.tree-drag-holder{background-color:#fceaea}.tree-menu li.active>a{color:#fff;background-color:#e62340;border-color:#e62340}.tree-menu li.active>.list-toggle{color:#fff}.text-secondary{color:#f5515f}a.text-primary{color:#e62340}.nav-primary>li.active>a{color:#fb2b2b}.nav-primary>li.active>a:hover{color:#fb2b2b}.bg-primary,.m-user-login{background:#f5515f -webkit-gradient(linear,right top,left top,from(#e62340),to(#f5515f))!important;background:#f5515f -webkit-linear-gradient(right,#e62340 0,#f5515f 100%)!important;background:#f5515f -o-linear-gradient(right,#e62340 0,#f5515f 100%)!important;background:#f5515f linear-gradient(-90deg,#e62340 0,#f5515f 100%)!important}.bg-primary-pure{color:#fff;background-color:#e62340}.bg-primary-pale{color:#e62340;background-color:#fceaea}.bg-secondary{background:#f5515f}.alert-info{color:#e62340;background:#fceaea}.btn-primary{color:#fff;background-color:#e62340;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(230,35,64,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#d71835;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#e62340;border-color:transparent}.btn-secondary{color:#fff;background-color:#f5515f;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(245,81,95,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#f43949;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#f5515f;border-color:transparent}.btn-info{color:#e62340;background-color:#fceaea;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#e62340;background-color:rgba(252,234,234,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#f9d4d4;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(230,35,64,.3);background-color:#fceaea;border-color:transparent}.btn-icon-left>.icon{color:#f5515f;background:#fceaea}.btn-active-line{color:#e62340}.btn-active-line:after{border-bottom-color:#e62340}.btn-active-line:hover{color:#e62340}.btn-active-text .text{color:#fb2b2b}.btn-active-text .text:after{border-bottom-color:#fb2b2b}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(230,35,64,.8)}.label-primary{background:#e62340!important}.label-pale{background:#f6bdbd!important}.label-outline.label-primary{background:#fceaea!important;border-color:rgba(230,35,64,.25)!important}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#e62340;border-color:#e62340}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#e62340;-webkit-box-shadow:0 0 0 3px rgba(230,35,64,.2);box-shadow:0 0 0 3px rgba(230,35,64,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#e62340}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{border-color:#e62340!important}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#e62340!important}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#e62340!important}.nav-tabs>li.active>a:before{background:#e62340}.nav-tabs-primary>li.active>a{color:#e62340!important}.panel-actions .btn.text-primary{color:#e62340}.picker-focus .picker-selections{border-color:#e62340;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(230,35,64,.6)}.status-bars .bar{background:#e62340}.status-bars-h .bar{background:#e62340}.messagger-zt .messager-content>.icon{color:#e62340}.tree li.active>a{color:#e62340}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#e62340}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{background-color:#f5515f}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#fceaea}.dropdown-submenu:hover>a:after{border-left-color:#e62340}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager>li.active>a{background-color:#f5515f}.timeline>li>a:after,.timeline>li>div:after{background-color:#e62340}.timeline>li.active:before{background-color:rgba(230,35,64,.2)}.ke-container{border-color:#dcdcdc!important}.ke-container.focus{border-color:#e62340!important}.input-group .chosen-container-active .chosen-choices,.input-group .form-control:focus{border-color:#e62340!important}#mainHeader{background:#f5515f -webkit-gradient(linear,right top,left top,from(#e62340),to(#f5515f));background:#f5515f -webkit-linear-gradient(right,#e62340 0,#f5515f 100%);background:#f5515f -o-linear-gradient(right,#e62340 0,#f5515f 100%);background:#f5515f linear-gradient(-90deg,#e62340 0,#f5515f 100%);background-color:#f5515f;border-top-color:#e62340;border-bottom-color:#fceaea}#searchGo{background-color:#f5515f}#searchGo:hover{background-color:#e62340}#subNavbar{margin-top:7px;text-align:center}#subNavbar .nav>li.active>a{color:#e62340}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#e62340}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#e62340}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #e62340}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #e62340}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}#sidebarHeader{border-left:3px solid #e62340}#sidebarHeader .title{color:#e62340}#sidebar>.sidebar-toggle>.icon{background:#fbb1b8}#main .querybox-toggle.querybox-opened{color:#e62340}#contentNav .nav>li.active>a{color:#e62340}#contentNav .nav>li.active>a:before{background:#e62340}td.c-actions .btn{color:#f5515f}td.c-actions .btn:hover{color:#e62340;background-color:#f9d4d4}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#e62340;background:#fceaea}.main-table table .btn-icon-left:hover>.icon{background:#fceaea}.main-table tbody>tr:hover{background:#fceaea}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{background:#e62340}.main-table tbody>tr>td.c-side:before{display:none}.main-table .table-grouped tbody>tr:hover{background:#fdf3f3}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#fdf3f3}.main-table tbody>tr>td>a,.table-data tbody>tr>td>a{color:#d91b1b}.main-table tbody>tr>td>a:not(.btn):visited,.table-data tbody>tr>td>a:not(.btn):visited{color:#650b19}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover,.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#e62340}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up,.table.has-sort-head thead>tr>th>a:hover{color:#e62340}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#e62340}.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fceaea}.table-nest-toggle:hover{color:#e62340}.table-footer .checkbox-primary.checked label:after{border-color:#e62340!important}.table-footer.fixed-footer .checkbox-primary.checked label:after{background-color:#eb5168!important;border-color:#eb5168!important}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}.files-list>li>a:hover{color:#e62340}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#e62340;border-color:#e62340}.article-content a{color:#e62340}.article-content a:focus,.article-content a:hover{color:#f5515f}.list-group{overflow-y:auto}.list-group>a.selected{color:#fceaea;background-color:#e62340}.list-group>a.active{color:#e62340;background-color:#fceaea}.list-group>a.active:hover,.list-group>a:hover{background-color:#e62340}#swapper #dropMenu .tree li>.selected{color:#e62340!important;background:#fceaea!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .list-group>a.selected,#swapper #dropMenu .list-group>a.selected:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#e62340!important}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#e62340!important;background:#fceaea!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#e62340!important}.release-line>li>a:hover:before{background-color:#fceaea}.release-line>li>a:hover .title{color:#e62340}.release-line>li.active>a:before{border-color:#e62340}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#f5515f}#poweredBy .icon-zentao{color:#f5515f}#poweredBy a:hover{color:#e62340}#poweredBy a:hover .icon-zentao{color:#e62340}#poweredBy a.text-primary{color:#e62340}#poweredBy a.text-primary:hover{color:#f5515f}.block-statistic .nav-secondary>li.active>a:before{background:#e62340!important}.dynamic.active .dynamic-date,.dynamic.active .timeline{border-color:#f5515f!important}.dynamic.active .dynamic-date:before{background-color:#f5515f!important}.tablesorter-header-inner:hover,table.tablesorter tr.tablesorter-headerRow .header.headerSortDown .tablesorter-header-inner:after,table.tablesorter tr.tablesorter-headerRow .header.headerSortUp .tablesorter-header-inner:after{color:#e62340!important}.table td.has-child>.task-toggle:hover{color:#e62340!important}#openTaskPage.open:hover,#task .task-nav{color:#e62340!important;background:#fceaea!important}#tasksProgress>.progress-bar{background:#e62340!important}#tasksProgress .progress-text{color:#e62340!important}#tasks>li.active.finish>a,#tasks>li.active>a{color:#e62340!important;background:#fceaea!important;border-left-color:#e62340!important;-webkit-box-shadow:inset 4px 0 0 #e62340!important;box-shadow:inset 4px 0 0 #e62340!important}#copyProjectModal a:hover{border-color:#f5515f!important}#zeroTaskStory.checked{background:#fceaea!important;border-color:#f5515f!important}.cols-list .col:hover{background:#fceaea!important}.files-grid .actions,.files-grid .col:hover .file{background:#fceaea!important}.dashboard .panel,.panel-default{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#menu .nav>li.active>a{background:#f5515f!important}#menu .nav>li.active>a,#menu .nav>li>a:focus,#menu .nav>li>a:hover{background:#f5515f!important}#bars>li.active>a,#bars>li.active>a:active,#bars>li.active>a:focus{background:#e62340!important}#bars>li.active:after{background:#fceaea!important}#userNav>li>a>.icon{filter:none;opacity:1;-webkit-filter:none}#menu{background:#415a72}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#fb2b2b;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}td.c-actions .btn{color:#e62340}.main-table tbody>tr:hover{background:rgba(252,234,234,.8)}.main-table tbody>tr>td.c-name a{color:#d91b1b}.main-table tbody>tr>td.c-name a:hover{color:#fb2b2b}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}#programTableList>tr:hover{background:#e6f0ff;opacity:.8}#programTableList>tr>.c-name:hover>a{color:#e62340!important}.assigned-none{color:#fb2b2b!important}.assigned-current{color:#f38f19!important}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#fb2b2b!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#fb2b2b!important}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#ff7c7c}#assigntomeBlock .nav>li.active>a{color:#fb2b2b}.consumedTotally{color:#e62340;background:#fceaea}#toggleFoldIcon .icon-border{border:1px solid #ffd5d5}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#e62340}.btn.btn-action.disabled,.c-actions .btn.disabled,.c-actions .btn[disabled=disabled]{border-color:transparent} \ No newline at end of file diff --git a/www/theme/zui/css/min.css b/www/theme/zui/css/min.css index 816dccf603..59b4b70fed 100644 --- a/www/theme/zui/css/min.css +++ b/www/theme/zui/css/min.css @@ -1,7 +1,7 @@ /*! - * ZUI: ZUI for Zentao - v1.10.0 - 2022-11-07 + * ZUI: ZUI for Zentao - v1.10.0 - 2022-11-11 * http://openzui.com - * GitHub: https://github.com/easysoft/zui.git + * GitHub: https://github.com/easysoft/zui.git * Copyright (c) 2022 cnezsoft.com; Licensed MIT *//*! normalize.css v2.1.3 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a{background:0 0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{margin:.67em 0;font-size:2em}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}mark{color:#000;background:#ff0}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}button,input,select,textarea{margin:0;font-family:inherit;font-size:100%}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto;vertical-align:top}table{border-spacing:0;border-collapse:collapse}#userMenu:after,#userMenu:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fixed-md:after,.container-fixed-md:before,.container-fixed-sm:after,.container-fixed-sm:before,.container-fixed-xs:after,.container-fixed-xs:before,.container-fixed:after,.container-fixed:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.dl-inline:after,.dl-inline:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager-justify:after,.pager-justify:before,.pager-loose:after,.pager-loose:before,.row:after,.row:before,.table-footer:after,.table-footer:before{display:table;content:" "}#userMenu:after,.btn-toolbar:after,.clearfix:after,.container-fixed-md:after,.container-fixed-sm:after,.container-fixed-xs:after,.container-fixed:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.dl-inline:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager-justify:after,.pager-loose:after,.row:after,.table-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none}.showing{display:block}.hidden{display:none!important;visibility:hidden!important}.show{display:block!important;visibility:visible!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.affix{position:fixed}.with-padding{padding:5px 12px}.no-padding{padding:0!important}.no-margin{margin:0!important}.inline-block.visible-xs,.inline.visible-xs,.visible-xs,td.visible-xs,th.visible-xs,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}.inline.visible-xs{display:inline!important}.inline-block.visible-xs{display:inline-block!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}.inline.visible-xs.visible-sm{display:inline!important}.inline-block.visible-xs.visible-sm{display:inline-block!important}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1799px){.visible-xs.visible-md{display:block!important}.inline.visible-xs.visible-md{display:inline!important}.inline-block.visible-xs.visible-md{display:inline-block!important}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1800px){.visible-xs.visible-lg{display:block!important}.inline.visible-xs.visible-lg{display:inline!important}.inline-block.visible-xs.visible-lg{display:inline-block!important}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}.inline-block.visible-sm,.inline.visible-sm,.visible-sm,td.visible-sm,th.visible-sm,tr.visible-sm{display:none!important}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}.inline.visible-sm.visible-xs{display:inline!important}.inline-block.visible-sm.visible-xs{display:inline-block!important}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}.inline.visible-sm{display:inline!important}.inline-block.visible-sm{display:inline-block!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1799px){.visible-sm.visible-md{display:block!important}.inline.visible-sm.visible-md{display:inline!important}.inline-block.visible-sm.visible-md{display:inline-block!important}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1800px){.visible-sm.visible-lg{display:block!important}.inline.visible-sm.visible-lg{display:inline!important}.inline-block.visible-sm.visible-lg{display:inline-block!important}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}.inline-block.visible-md,.inline.visible-md,.visible-md,td.visible-md,th.visible-md,tr.visible-md{display:none!important}@media (max-width:767px){.visible-md.visible-xs{display:block!important}.inline.visible-md.visible-xs{display:inline!important}.inline-block.visible-md.visible-xs{display:inline-block!important}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}.inline.visible-md.visible-sm{display:inline!important}.inline-block.visible-md.visible-sm{display:inline-block!important}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1799px){.visible-md{display:block!important}.inline.visible-md{display:inline!important}.inline-block.visible-md{display:inline-block!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1800px){.visible-md.visible-lg{display:block!important}.inline.visible-md.visible-lg{display:inline!important}.inline-block.visible-md.visible-lg{display:inline-block!important}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}.inline-block.visible-lg,.inline.visible-lg,.visible-lg,td.visible-lg,th.visible-lg,tr.visible-lg{display:none!important}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}.inline.visible-lg.visible-xs{display:inline!important}.inline-block.visible-lg.visible-xs{display:inline-block!important}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}.inline.visible-lg.visible-sm{display:inline!important}.inline-block.visible-lg.visible-sm{display:inline-block!important}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1799px){.visible-lg.visible-md{display:block!important}.inline.visible-lg.visible-md{display:inline!important}.inline-block.visible-lg.visible-md{display:inline-block!important}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1800px){.visible-lg{display:block!important}.inline.visible-lg{display:inline!important}.inline-block.visible-lg{display:inline-block!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.hidden-xs{display:block!important}.inline.hidden-xs{display:inline!important}.inline-block.hidden-xs{display:inline-block!important}tr.hidden-xs{display:table-row!important}td.hidden-xs,th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,.inline-block.hidden-xs,.inline.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,.inline-block.hidden-xs.hidden-sm,.inline.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1799px){.hidden-xs.hidden-md,.inline-block.hidden-xs.hidden-md,.inline.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1800px){.hidden-xs.hidden-lg,.inline-block.hidden-xs.hidden-lg,.inline.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.hidden-sm{display:block!important}.inline.hidden-sm{display:inline!important}.inline-block.hidden-sm{display:inline-block!important}tr.hidden-sm{display:table-row!important}td.hidden-sm,th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,.inline-block.hidden-sm.hidden-xs,.inline.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,.inline-block.hidden-sm,.inline.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1799px){.hidden-sm.hidden-md,.inline-block.hidden-sm.hidden-md,.inline.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1800px){.hidden-sm.hidden-lg,.inline-block.hidden-sm.hidden-lg,.inline.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.hidden-md{display:block!important}.inline.hidden-md{display:inline!important}.inline-block.hidden-md{display:inline-block!important}tr.hidden-md{display:table-row!important}td.hidden-md,th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,.inline-block.hidden-md.hidden-xs,.inline.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,.inline-block.hidden-md.hidden-sm,.inline.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1799px){.hidden-md,.inline-block.hidden-md,.inline.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1800px){.hidden-md.hidden-lg,.inline-block.hidden-md.hidden-lg,.inline.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.hidden-lg{display:block!important}.inline.hidden-lg{display:inline!important}.inline-block.hidden-lg{display:inline-block!important}tr.hidden-lg{display:table-row!important}td.hidden-lg,th.hidden-lg{display:table-cell!important}@media (max-width:767px){.hidden-lg.hidden-xs,.inline-block.hidden-lg.hidden-xs,.inline.hidden-lg.hidden-xs,td.hidden-lg.hidden-xs,th.hidden-lg.hidden-xs,tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-lg.hidden-sm,.inline-block.hidden-lg.hidden-sm,.inline.hidden-lg.hidden-sm,td.hidden-lg.hidden-sm,th.hidden-lg.hidden-sm,tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1799px){.hidden-lg.hidden-md,.inline-block.hidden-lg.hidden-md,.inline.hidden-lg.hidden-md,td.hidden-lg.hidden-md,th.hidden-lg.hidden-md,tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1800px){.hidden-lg,.inline-block.hidden-lg,.inline.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}.inline-block.visible-print,.inline.visible-print,.visible-print,td.visible-print,th.visible-print,tr.visible-print{display:none!important}@media print{.visible-print{display:block!important}.inline.visible-print{display:inline!important}.inline-block.visible-print{display:inline-block!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}.hidden-print,.inline-block.hidden-print,.inline.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-size:13px;line-height:1.42857143;color:#313c52;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#313c52;text-decoration:none;cursor:pointer;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:color,background,opacity,-webkit-transform;-o-transition-property:color,background,opacity,-o-transform;transition-property:color,background,opacity,-webkit-transform;transition-property:color,background,transform,opacity;transition-property:color,background,transform,opacity,-webkit-transform,-o-transform}a:focus,a:hover{color:#2e7fff;text-decoration:none}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a.disabled,a.disabled:focus,a.disabled:hover,a[disabled],a[disabled]:focus,a[disabled]:hover{color:#aaa;text-decoration:none;cursor:default}audio,canvas,img,video{max-width:100%;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}::-moz-selection{text-shadow:none;background:#b3d4fc}::selection{text-shadow:none;background:#b3d4fc}fieldset{padding:0;margin:0;border:0}textarea{resize:vertical}ol,ul{padding-left:20px}.scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.container,.container-fixed,.container-fixed-md,.container-fixed-sm,.container-fixed-xs,.container-fluid{padding-right:10px;padding-left:10px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{max-width:972px}}@media (min-width:992px){.container{max-width:1760px}}@media (min-width:1800px){.container{max-width:1760px}}.container-fixed{width:1760px}.container-fixed-md{width:1760px}.container-fixed-sm{width:972px}.container-fixed-xs{width:748px}.row{margin-right:-10px;margin-left:-10px}.col,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:10px;padding-left:10px}.col,.col-xs,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-1,.col-xs-1{width:8.33333333%}.col-2,.col-xs-2{width:16.66666667%}.col-3,.col-xs-3{width:25%}.col-4,.col-xs-4{width:33.33333333%}.col-5,.col-xs-5{width:41.66666667%}.col-6,.col-xs-6{width:50%}.col-7,.col-xs-7{width:58.33333333%}.col-8,.col-xs-8{width:66.66666667%}.col-9,.col-xs-9{width:75%}.col-10,.col-xs-10{width:83.33333333%}.col-11,.col-xs-11{width:91.66666667%}.col-12,.col-xs-12{width:100%}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.33333333%}.col-sm-2{width:16.66666667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333333%}.col-sm-5{width:41.66666667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333333%}.col-sm-8{width:66.66666667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333333%}.col-sm-11{width:91.66666667%}.col-sm-12{width:100%}.col-sm-push-1{left:8.33333333%}.col-sm-push-2{left:16.66666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333333%}.col-sm-push-5{left:41.66666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333333%}.col-sm-push-8{left:66.66666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333333%}.col-sm-push-11{left:91.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-11{right:91.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-11{margin-left:91.66666667%}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.33333333%}.col-md-2{width:16.66666667%}.col-md-3{width:25%}.col-md-4{width:33.33333333%}.col-md-5{width:41.66666667%}.col-md-6{width:50%}.col-md-7{width:58.33333333%}.col-md-8{width:66.66666667%}.col-md-9{width:75%}.col-md-10{width:83.33333333%}.col-md-11{width:91.66666667%}.col-md-12{width:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333333%}.col-md-push-2{left:16.66666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333333%}.col-md-push-5{left:41.66666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333333%}.col-md-push-8{left:66.66666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333333%}.col-md-push-11{left:91.66666667%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333333%}.col-md-pull-2{right:16.66666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333333%}.col-md-pull-5{right:41.66666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333333%}.col-md-pull-8{right:66.66666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333333%}.col-md-pull-11{right:91.66666667%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-11{margin-left:91.66666667%}}@media (min-width:1800px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.33333333%}.col-lg-2{width:16.66666667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333333%}.col-lg-5{width:41.66666667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333333%}.col-lg-8{width:66.66666667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333333%}.col-lg-11{width:91.66666667%}.col-lg-12{width:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333333%}.col-lg-push-2{left:16.66666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333333%}.col-lg-push-5{left:41.66666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333333%}.col-lg-push-8{left:66.66666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333333%}.col-lg-push-11{left:91.66666667%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-11{right:91.66666667%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-11{margin-left:91.66666667%}}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:14px;line-height:1.4}@media (min-width:768px){.lead{font-size:19.5px}}.small,small{font-size:85%}cite{font-style:normal}.text-gray,.text-muted{color:#838a9d}.text-gray a,.text-muted a{color:#757d92}.text-gray a:active,.text-gray a:hover,.text-muted a:active,.text-muted a:hover{color:#313c52}.text-primary{color:#2e7fff}.text-warning,.text-yellow{color:#ff9f46}.text-danger,.text-red{color:#fc5959}.text-green,.text-success{color:#22c98d}.text-blue,.text-info{color:#37b2fe}.text-brown,.text-important{color:#ff6f42}.text-purple,.text-special{color:#8166ee}.text-link{color:#313c52}.text-link:active,.text-link:hover{color:#313c52}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.nobr,.text-nowrap{overflow:hidden;white-space:nowrap}.text-wrap{overflow:visible;white-space:normal}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}dl{margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}.dl-inline dt{display:inline-block}.dl-inline dd{display:inline-block;padding-right:1em}.dl-inline dd:last-child{padding-right:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}blockquote{padding:10px 20px;margin:0 0 20px;font-size:16.25px;border-left:5px solid #eee}blockquote ol,blockquote p,blockquote ul{font-weight:300}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.42857143;color:#838a9d}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}.ol-pd-2{padding-left:40px}.ol-pd-3{padding-left:60px}.ol-pd-4{padding-left:80px}.bg-black,.bg-default{color:#fff;background-color:#313c52}.bg-primary{color:#fff;background-color:#2e7fff}.bg-green,.bg-success{color:#fff;background-color:#22c98d}.bg-blue,.bg-info{color:#fff;background-color:#37b2fe}.bg-warning,.bg-yellow{color:#fff;background-color:#ff9f46}.bg-danger,.bg-red{color:#fff;background-color:#fc5959}.bg-brown,.bg-important{color:#fff;background-color:#ff6f42}.bg-purple,.bg-special{color:#fff;background-color:#8166ee}.hl-default,.hl-gray{background-color:#f1f1f1}.hl-primary{background-color:#e6f0ff}.hl-green,.hl-success{background-color:#ecfff8}.hl-blue,.hl-info{background-color:#e7f6ff}.hl-warning,.hl-yellow{background-color:#fff4ea}.hl-danger,.hl-red{background-color:#ffebeb}.hl-brown,.hl-important{background-color:#fff2ed}.hl-purple,.hl-special{background-color:#efecfa}.header-dividing,.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Source Han Serif','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft YaHei',sans-serif;font-weight:700;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:400;line-height:1;color:#838a9d}h1,h2,h3{margin-top:20px;margin-bottom:10px}h1 small,h2 small,h3 small{font-size:65%}h4,h5,h6{margin-top:10px;margin-bottom:10px}h4 small,h5 small,h6 small{font-size:75%}h1{font-size:24px}h2{font-size:20px}h3{font-size:18px}h4{font-size:14px}h5{font-size:13px}h6{font-size:12px}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}hr.divider-sm{margin-top:10px;margin-bottom:10px}hr.divider{margin:0}.label{display:inline;padding:.2em .6em .2em;font-size:85.71428571%;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#838a9d;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;background-color:#697084}.label.label-outline{color:#838a9d;background:0 0;border:1px solid #838a9d}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.label-badge{display:inline-block;min-width:18px;padding:3px 7px;font-size:12px;line-height:1;border-radius:9px}.label-dot{display:inline-block;width:8px;height:8px;padding:0;line-height:20px;text-indent:-9999em;border-radius:50%}.label-dot:empty{display:inline-block}.label-primary{background-color:#2e7fff}.label-primary[href]:focus,.label-primary[href]:hover{color:#fff;background-color:#0061fa}.label-primary.label-outline{color:#2e7fff;background:0 0;border:1px solid #2e7fff}.label-success{background-color:#22c98d}.label-success[href]:focus,.label-success[href]:hover{color:#fff;background-color:#1b9d6e}.label-success.label-outline{color:#22c98d;background:0 0;border:1px solid #22c98d}.label-info{background-color:#37b2fe}.label-info[href]:focus,.label-info[href]:hover{color:#fff;background-color:#049efe}.label-info.label-outline{color:#37b2fe;background:0 0;border:1px solid #37b2fe}.label-warning{background-color:#ff9f46}.label-warning[href]:focus,.label-warning[href]:hover{color:#fff;background-color:#ff8513}.label-warning.label-outline{color:#ff9f46;background:0 0;border:1px solid #ff9f46}.label-danger{background-color:#fc5959}.label-danger[href]:focus,.label-danger[href]:hover{color:#fff;background-color:#fb2727}.label-danger.label-outline{color:#fc5959;background:0 0;border:1px solid #fc5959}.btn .label,.nav-primary>li>a>.label{position:relative;top:-1px}.btn-danger .label,.btn-info .label,.btn-primary .label,.btn-success .label,.btn-warning .label{background-color:rgba(0,0,0,.2)}.list-group-item.active>.label,.nav-pills>.active>a>.label,.nav-primary>.active>a>.label{color:#313c52;background-color:#fff}.nav>li>a>.label{margin-left:3px}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#838a9d}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:8px;margin-bottom:20px;overflow:hidden;background-color:#e6f0ff;border-radius:3px}.progress-bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;background-color:#2e7fff;-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress>.progress-bar:first-child{border-top-left-radius:3px;border-bottom-left-radius:3px}.progress>.progress-bar:last-child{border-top-right-radius:3px;border-bottom-right-radius:3px}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#22c98d}.progress-bar-info{background-color:#37b2fe}.progress-bar-warning{background-color:#ff9f46}.progress-bar-danger{background-color:#fc5959}.avatar{position:relative;display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:30px;height:30px;overflow:hidden;font-size:15px;line-height:30px;text-align:center;background-position:center;-webkit-background-size:cover;background-size:cover;border-radius:4px;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.avatar img{display:block;width:100%;height:100%;margin:0}.avatar.has-text{color:#fff;background-color:#18a6fd}.avatar span{display:block;margin-right:-1em;margin-left:-1em;text-align:center}.avatar .text-len-2{-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.avatar .text-len-3,.avatar .text-len-4{-webkit-transform:scale(.6);-ms-transform:scale(.6);-o-transform:scale(.6);transform:scale(.6)}.avatar-sm{width:20px;height:20px;font-size:10px;line-height:20px}.avatar-sm .text-len-2{-webkit-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);transform:scale(.7)}.avatar-sm .text-len-3,.avatar-sm .text-len-4{-webkit-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}.avatar-md{width:24px;height:24px;font-size:12px;line-height:24px}.avatar-lg{width:40px;height:40px;font-size:20px;line-height:40px}.avatar-lg>.icon{font-size:20px}.avatar-xl{width:70px;height:70px;font-size:35px;line-height:70px}.avatar-xl>.icon{font-size:35px}.avatar-circle{border-radius:50%}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:19.5px;line-height:inherit;color:#313c52;border:0;border-bottom:1px solid #eee}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:5px 0 0;margin-top:0\9;line-height:normal}input[type=file]{display:block}select[multiple],select[size]{height:auto}select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.os-mac select.form-control{-webkit-appearance:none;padding-right:18px;background-image:url(data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==);background-repeat:no-repeat;background-position:right 5px top 14px;-moz-appearance:none}.input-sm .os-mac select.form-control{background-position:right 5px top 9px}.input-lg .os-mac select.form-control{background-position:right 5px top 19px}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}@-moz-document url-prefix(){input[type=radio]:focus{outline:0}}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}.form-control::-webkit-input-placeholder{color:#838a9d}.form-control::-moz-placeholder{color:#838a9d}.form-control:-ms-input-placeholder{color:#838a9d}.form-control::placeholder{color:#838a9d}.form-control{display:block;width:100%;height:32px;padding:5px 8px;font-size:13px;line-height:1.42857143;color:#0b0f18;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.form-control.focus,.form-control:focus{border-color:#2e7fff;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6)}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#f5f5f5}.form-control[readonly]{cursor:default}textarea.form-control{height:auto;min-height:32px}.form-group{margin-bottom:10px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:3px;margin-top:4px\9;margin-left:-20px}.os-android .checkbox input[type=checkbox],.os-android .checkbox-inline input[type=checkbox],.os-android .radio input[type=radio],.os-android .radio-inline input[type=radio]{margin-top:0}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.input-sm{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:24px;line-height:24px}textarea.input-sm{height:auto}.input-lg{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-lg{height:39px;line-height:39px}textarea.input-lg{height:auto}.has-warning .help-block,.has-warning>label{color:#ff9f46}.has-warning .form-control{border-color:#ff9f46;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#ff8513;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffd4ac;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffd4ac}.has-warning .input-group-addon{color:#ff9f46;background-color:#fff4ea;border-color:#ff9f46}.has-error .help-block,.has-error>label{color:#fc5959}.has-error .form-control{border-color:#fc5959;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#fb2727;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #febdbd;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #febdbd}.has-error .input-group-addon{color:#fc5959;background-color:#ffebeb;border-color:#fc5959}.has-success .help-block,.has-success>label{color:#22c98d}.has-success .form-control{border-color:#22c98d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#1b9d6e;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #6be6ba;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #6be6ba}.has-success .input-group-addon{color:#22c98d;background-color:#ecfff8;border-color:#22c98d}.form-control-static{min-height:33px;padding-top:6px;padding-bottom:6px;margin-bottom:0}.help-block{display:block;margin:5px 0;color:#6277a1}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .form-group>label,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:6px;margin-top:0;margin-bottom:0}.form-horizontal .form-group{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.form-horizontal .form-group>label{text-align:right}}.required{position:relative}.required:after{position:absolute;top:0;right:-10px;display:inline-block;font-size:14px;color:#fc5959;content:'*'}.form-horizontal .required:after{top:5px;right:-1px}.form-condensed .form-group{margin-bottom:10px}.form-condensed .form-control{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.form-condensed .form-control{height:24px;line-height:24px}textarea.form-condensed .form-control{height:auto}.form-condensed textarea.form-control{height:auto}.form-condensed .btn{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.form-condensed .input-group>.form-control,.form-condensed .input-group>.input-group-addon,.form-condensed .input-group>.input-group-btn>.btn{padding:2px 8px;font-size:12px;border-radius:3px}.form-condensed .input-group .form-control:first-child,.form-condensed .input-group-addon:first-child,.form-condensed .input-group-btn:first-child>.btn,.form-condensed .input-group-btn:first-child>.btn-group>.btn,.form-condensed .input-group-btn:first-child>.dropdown-toggle,.form-condensed .input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.form-condensed .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.form-condensed .input-group .form-control:last-child,.form-condensed .input-group-addon:last-child,.form-condensed .input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.form-condensed .input-group-btn:first-child>.btn:not(:first-child),.form-condensed .input-group-btn:last-child>.btn,.form-condensed .input-group-btn:last-child>.btn-group>.btn,.form-condensed .input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.form-condensed .input-group-addon:first-child{border-right:0}.form-condensed .input-group-addon:last-child{border-left:0}.form-condensed .input-group-addon.fix-border,.form-condensed .input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.form-condensed.form-horizontal .checkbox,.form-condensed.form-horizontal .checkbox-inline,.form-condensed.form-horizontal .form-group>label,.form-condensed.form-horizontal .radio,.form-condensed.form-horizontal .radio-inline{padding-top:1px}.close{float:right;font-size:19.5px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.load-indicator{position:relative}.load-indicator:after,.load-indicator:before{position:absolute;color:#838a9d;text-align:center;visibility:hidden;opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:visibility,opacity;-o-transition-property:visibility,opacity;transition-property:visibility,opacity}.load-indicator:before{top:0;right:0;bottom:0;left:0;z-index:10;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:12px;content:attr(data-loading);background-color:rgba(255,255,255,.8);-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.load-indicator[data-loading]:before{padding-top:50px}.load-indicator:after{top:50%;left:50%;z-index:11;display:block;width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-family:ZentaoIcon;font-size:14px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;text-transform:none;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.load-indicator.loading:after,.load-indicator.loading:before{visibility:visible;opacity:1}table{max-width:100%;font-size:inherit;background-color:transparent}caption{padding:8px 10px;color:#838a9d;text-align:left}th{text-align:left}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #f4f5f7;-webkit-transition:background .2s cubic-bezier(.175,.885,.32,1);-o-transition:background .2s cubic-bezier(.175,.885,.32,1);transition:background .2s cubic-bezier(.175,.885,.32,1)}.table>thead>tr>th{font-weight:700;color:#313c52;vertical-align:bottom;background-color:transparent;border-bottom:1px solid #f4f5f7}.table>tbody+tbody{border-top:2px solid #f4f5f7}.table-fixed{table-layout:fixed}.table-fixed td,.table-fixed th{overflow:hidden;white-space:nowrap}.table-fixed .nofixed,.table-fixed tfoot>tr>td,.table-fixed tfoot>tr>th{overflow:visible}.table-borderless td,.table-borderless th,.table-borderless thead>tr>th{border:none}.table-auto{width:auto;max-width:100%}.table-condensed td,.table-condensed th{padding:5px}.table-bordered{border:1px solid #f4f5f7}.table-bordered td,.table-bordered th{border:1px solid #f4f5f7}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#e6f0ff}table col[class*=col-]{display:table-column;float:none}table td[class*=col-],table th[class*=col-]{display:table-cell;float:none}.table tr.active>td,.table tr.active>th,.table tr>td.active,.table tr>th.active{background-color:#ffe7d0}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#ecfff8;border-color:#b9ffda}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d3ffef;border-color:#a0ffcc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#ffebeb;border-color:#ffd1d9}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ffd1d1;border-color:#ffb8c4}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fff4ea;border-color:#ffdfd0}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#ffe7d0;border-color:#ffcdb7}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #f4f5f7}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered th{border-top:none}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.alert{padding:15px;margin-bottom:20px;color:#273042;background-color:#f1f1f1;border-radius:3px;-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.alert hr{border-top-color:#e4e4e4}.alert .alert-link{color:#1a202c}.alert h4{margin-top:0;color:inherit}.alert hr{margin:10px 0}.alert p,.alert ul{margin-bottom:0}.alert p+p{margin-top:5px}.alert-link{font-weight:700}.alert>[class*=icon-]{float:left;margin-top:-5px;font-size:42px;opacity:.6;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1)}.alert>[class*=icon-]+.content{min-height:30px;margin-left:64px}.alert.with-icon{display:table;width:100%}.alert.with-icon>[class*=icon-],.alert.with-icon>[class*=icon-]+.content{display:table-cell;float:none;min-height:0;margin:0;vertical-align:middle}.alert.with-icon>[class*=icon-]{width:48px;text-align:center}.alert.with-icon>[class*=icon-]+.content{padding-left:1em}.alert-block{margin:0;border-radius:0}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-6px;right:-21px;color:inherit}.alert-primary{color:#273042;background-color:#e6f0ff}.alert-primary hr{border-top-color:#c2dbff}.alert-primary .alert-link{color:#1a202c}.alert-success{color:#1eb37e;background-color:#ecfff8}.alert-success hr{border-top-color:#b9ffda}.alert-success .alert-link{color:#199568}.alert-info{color:#1ea8fe;background-color:#e7f6ff}.alert-info hr{border-top-color:#9beaff}.alert-info .alert-link{color:#0199f7}.alert-warning{color:#ff922c;background-color:#fff4ea}.alert-warning hr{border-top-color:#ffdfd0}.alert-warning .alert-link{color:#ff7f09}.alert-danger{color:#fc4040;background-color:#ffebeb}.alert-danger hr{border-top-color:#ffd1d9}.alert-danger .alert-link{color:#fb1d1d}.alert-inverse{color:#fff;background-color:#313c52;border-color:#313c52}.alert-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-primary-inverse{color:#fff;background-color:#2e7fff;border-color:#2e7fff}.alert-primary-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-primary-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-success-inverse{color:#fff;background-color:#22c98d;border-color:#22c98d}.alert-success-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-success-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-info-inverse{color:#fff;background-color:#37b2fe;border-color:#37b2fe}.alert-info-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-info-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-warning-inverse{color:#fff;background-color:#ff9f46;border-color:#ff9f46}.alert-warning-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-warning-inverse .alert-link{color:rgba(255,255,255,.8)}.alert-danger-inverse{color:#fff;background-color:#fc5959;border-color:#fc5959}.alert-danger-inverse hr{border-top-color:#c4c4c4;border-top-color:rgba(196,196,196,.25)}.alert-danger-inverse .alert-link{color:rgba(255,255,255,.8)}.input-control-icon-left,.input-control-icon-right,.input-control-label-left,.input-control-label-right{position:absolute;top:1px;z-index:5;height:30px;line-height:30px;opacity:.5}.input-control-icon-left,.input-control-icon-right{width:30px;text-align:center}.input-control-icon-left,.input-control-label-left{left:1px}.input-control-icon-right,.input-control-label-right{right:1px}.input-control-label-left,.input-control-label-right{width:70px;padding:0 8px;overflow:hidden;text-overflow:ellipsis}.has-label-left-sm>.input-control-label-left,.has-label-left-sm>.input-control-label-right{width:55px}.has-label-left-lg>.input-control-label-left,.has-label-left-lg>.input-control-label-right{width:95px}.input-control{position:relative}.input-control.has-icon-left>.form-control{padding-left:30px}.input-control.has-icon-right>.form-control{padding-right:30px}.input-control.has-label-left>.form-control{padding-left:70px}.input-control.has-label-right>.form-control{padding-right:70px}.input-control.has-label-left-sm>.form-control{padding-left:55px}.input-control.has-label-right-sm>.form-control{padding-right:55px}.input-control.has-label-left-lg>.form-control{padding-left:95px}.input-control.has-label-right-lg>.form-control{padding-right:95px}.input-control>a:hover{background-color:#f1f1f1;opacity:1}.form-control:focus+[class^=input-control-],.form-control:focus+[class^=input-control-]+[class^=input-control-]{opacity:1}.form-control:focus+.input-control-label-left{color:#18a6fd}.empty+.search-clear-btn,.empty+.search-icon+.search-clear-btn{opacity:0!important}input:placeholder-shown+.search-clear-btn,input:placeholder-shown+.search-icon+.search-clear-btn{opacity:0!important}.search-box-circle .input-control-icon-left,.search-box-circle .input-control-icon-right,.search-box-circle>.form-control{border-radius:16px}.search-box-circle+.input-group-btn>.btn{border-radius:0 16px 16px 0}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:5px 12px;font-size:13px;font-weight:400;line-height:1;color:#313c52;text-align:center;background-color:#eee;border:1px solid #dcdcdc;border-radius:2px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon.fix-border{border-right:0;border-left:0}.input-group-addon:empty{width:1px;padding:0}.input-group-addon.fix-padding{width:1px;padding:0}.input-group-btn.fix-border>.btn{border-right:0;border-left:0;border-radius:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:first-child{border-right:0}.input-group-addon:last-child{border-left:0}.input-group-addon+.input-group-addon{border-left:1px solid #dcdcdc}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:39px;padding:10px 16px;font-size:14px;line-height:1.25;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:39px;line-height:39px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:24px;padding:2px 8px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:24px;line-height:24px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon.input-sm{padding:2px 8px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:14px;border-radius:6px}.code,code,kbd,pre,samp{font-family:Monaco,Menlo,Consolas,"Courier New",monospace}code,kbd{padding:2px 4px;font-size:90%;color:#37474f;background-color:#f3f5f7;border-radius:4px}kbd{padding:1px 4px;font-weight:700;color:#666;background-color:#f1f1f1;border:1px solid #d8d8d8;border-bottom-width:2px}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:12px;line-height:1.38461538;color:#313c52;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;margin:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.com{color:#93a1a1}.lit{color:#195f91}.clo,.opn,.pun{color:#93a1a1}.fun{color:#dc322f}.atv,.str{color:#d14}.kwd,.prettyprint .tag{color:#1e347b}.atn,.dec,.typ,.var{color:teal}.pln{color:#48484c}.prettyprint.linenums{-webkit-box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0;box-shadow:inset 40px 0 0 #fbfbfc,inset 41px 0 0 #ececf0}.prettyprint ol.linenums{padding-left:35px;margin-bottom:0;line-height:20px;color:#bebec5;text-shadow:0 1px 0 #fff}.pager{display:inline-block;padding-left:0;margin:20px 0;list-style:none}.pager>li{display:inline}.pager>li>a,.pager>li>span{position:relative;float:left;padding:5px 12px;margin-left:-1px;line-height:1.42857143;text-decoration:none;background-color:#fff;border:1px solid #c4c4c4}.pager>li:first-child>a,.pager>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pager>li:last-child>a,.pager>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager>li>a:focus,.pager>li>a:hover,.pager>li>span:focus,.pager>li>span:hover{z-index:2;background-color:#eee}.pager>li.active>a,.pager>li.active>a:hover,.pager>li.active>span,.pager>li.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#2e7fff;border-color:#2e7fff}.pager>li.disabled>a,.pager>li.disabled>a:focus,.pager>li.disabled>a:hover,.pager>li.disabled>span,.pager>li.disabled>span:focus,.pager>li.disabled>span:hover{color:#c4c4c4;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#c4c4c4}.pager-justify{display:block}.pager-justify .next>a,.pager-justify .next>span{float:right;border-radius:4px}.pager-justify .previous>a,.pager-justify .previous>span{float:left;border-radius:4px}.pager-goto{width:100px;text-align:center}.pager>li>div{float:left}.pager>li .pager-goto,.pager>li .pager-size-menu,.pager>li.space{margin:0 5px}.pager-label{position:relative;float:left;padding:5px 4px;margin-left:-1px;line-height:1.42857143;text-decoration:none;border:1px solid transparent}.pager-item-left>a{border-top-left-radius:4px;border-bottom-left-radius:4px}.pager-item-right>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.pager-lg>li>a,.pager-lg>li>span{padding:10px 16px;font-size:14px}.pager-lg>li:first-child>a,.pager-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pager-lg>li:last-child>a,.pager-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pager-sm>li>a,.pager-sm>li>span{padding:2px 8px;font-size:12px}.pager-sm>li:first-child>a,.pager-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pager-sm>li:last-child>a,.pager-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager-pills>li:first-child>a,.pager-pills>li:first-child>span{border-radius:16px 0 0 16px}.pager-pills>li:last-child>a,.pager-pills>li:last-child>span{border-radius:0 16px 16px 0}.pager-pills.pager-justify>li>a,.pager-pills.pager-justify>li>span{border-radius:16px}.pager-loose{display:block;margin:20px 0}.pager-loose.pager-pills>li>a,.pager-loose.pager-pills>li>span{border-radius:16px}.pager-loose>li>a,.pager-loose>li>span{margin-left:5px;border-radius:4px}.pager-loose>li:first-child>a,.pager-loose>li:first-child>span{margin-left:0}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>.nav-heading{padding:8px 15px;font-weight:700;color:#838a9d}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:8px 15px;color:#313c52}.nav>li>a:focus,.nav>li>a:hover{color:#2e7fff;text-decoration:none;background-color:#f1f1f1}.nav>li.disabled>a{color:#c4c4c4}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#c4c4c4;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#f1f1f1;border-color:#313c52}.nav>li>a>img{max-width:none}.nav-default>li{float:left}.nav-simple>li{float:left}.nav-simple>li>a{border-radius:4px}.nav-simple>li.active>a,.nav-simple>li.active>a:focus,.nav-simple>li.active>a:hover{color:#2e7fff;background-color:#e6f0ff}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:20px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#2e7fff}.nav-primary>li{float:left;margin-left:-1px}.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.nav-primary>li:last-child>a{border-top-right-radius:4px;border-bottom-right-radius:4px}.nav-primary>li>a{border:1px solid #c4c4c4}.nav-primary>li.active>a,.nav-primary>li.active>a:focus,.nav-primary>li.active>a:hover{color:#fff;background-color:#2e7fff;border-color:#2e7fff}.nav-secondary>li{float:left}.nav-secondary>li>a{border-bottom:2px solid #eee}.nav-secondary>li.active>a,.nav-secondary>li.active>a:focus,.nav-secondary>li.active>a:hover{color:#2e7fff;border-bottom-color:#2e7fff}.nav-secondary>li.nav-heading{border-bottom:2px solid #eee}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-stacked.nav-primary>li,.nav-stacked.nav-primary>li>a{margin-left:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.nav-stacked.nav-primary>li+li{margin-top:-1px}.nav-stacked.nav-primary>li:first-child{margin-top:0}.nav-stacked.nav-primary>li:first-child.nav-heading,.nav-stacked.nav-primary>li:first-child>a{margin-left:0;border-top-left-radius:4px;border-top-right-radius:4px}.nav-stacked.nav-primary>li:last-child>a{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-stacked.nav-primary>li.nav-heading{background-color:#f1f1f1;border:1px solid #c4c4c4}.nav-stacked.nav-secondary>li>a{border:none;border-top-right-radius:4px;border-bottom-right-radius:4px;-webkit-box-shadow:inset 2px 0 0 #f5f5f5;box-shadow:inset 2px 0 0 #f5f5f5}.nav-stacked.nav-secondary>li>a:hover{-webkit-box-shadow:inset 2px 0 0 #eee;box-shadow:inset 2px 0 0 #eee}.nav-stacked.nav-secondary>li+li{margin-top:-1px}.nav-stacked.nav-secondary>li:first-child{margin-top:0}.nav-stacked.nav-secondary>li.active>a,.nav-stacked.nav-secondary>li.active>a:focus,.nav-stacked.nav-secondary>li.active>a:hover{background-color:#f5f5f5;-webkit-box-shadow:inset 2px 0 0 #2e7fff;box-shadow:inset 2px 0 0 #2e7fff}.nav-stacked.nav-secondary>li.nav-heading{border-bottom:1px solid #c4c4c4}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs{border-bottom:1px solid #cbd0db}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #cbd0db}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#838a9d;cursor:default;background-color:#fff;border:1px solid #c4c4c4;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{padding-right:0;padding-left:0;margin-bottom:5px;text-align:center}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}.nav-tabs.nav-justified.nav-primary>li+li>a{border-left:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #c4c4c4}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #c4c4c4;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}@-moz-document url-prefix(){.nav-tabs>li.active>a:focus .nav-tabs>li>a:focus{outline:0}}.nav-tabs.nav-stacked{border-right:1px solid #cbd0db;border-bottom:none}.nav-tabs.nav-stacked>li{float:none;margin-right:-1px;margin-bottom:0}.nav-tabs.nav-stacked>li>a{margin-right:0;border-radius:4px 0 0 4px}.nav-tabs.nav-stacked>li.active>a,.nav-tabs.nav-stacked>li.active>a:focus,.nav-tabs.nav-stacked>li.active>a:hover{border:1px solid #c4c4c4;border-right-color:transparent}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #c4c4c4}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #c4c4c4;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:40px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:10px;padding-left:10px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-10px;margin-left:-10px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:40px;padding:10px 15px;font-size:14px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-10px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:3px;margin-right:3px;margin-bottom:3px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:5px -10px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px}.navbar-nav.nav-justified>li{float:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-nav.pull-right>li>.dropdown-menu,.navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar-btn{margin-top:4px;margin-bottom:4px}.navbar-text{float:left;margin-top:10px;margin-bottom:10px}@media (min-width:768px){.navbar-text{margin-right:10px;margin-left:10px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-10px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f7f7f7;border-color:#dedede}.navbar-default .navbar-brand{color:#313c52}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#1e2532;background-color:transparent}.navbar-default .navbar-text{color:#313c52}.navbar-default .navbar-nav>li>a{color:#313c52}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#0b0f18;background-color:#eee}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#c4c4c4}.navbar-default .navbar-toggle .icon-bar{background-color:#838a9d}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#dedede}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#313c52}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#0b0f18;background-color:#eee}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#313c52}.navbar-default .navbar-link:hover{color:#0b0f18}.navbar-default .btn-link{color:#313c52}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#0b0f18}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#18a6fd;border-color:#028ce0}.navbar-inverse .navbar-brand{color:#c4c4c4}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#c4c4c4}.navbar-inverse .navbar-nav>li>a{color:#c4c4c4}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:#36b2fd}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#4bb9fd}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#029bf9}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#0295ef}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#4bb9fd}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#028ce0}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#028ce0}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#c4c4c4}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:#36b2fd}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#4bb9fd}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#c4c4c4}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-form{padding:10px 10px;margin-top:4px;margin-right:-10px;margin-bottom:4px;margin-left:-10px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.no-animation,.no-animation *,.no-animation :after,.no-animation :before,.no-animation:after,.no-animation:before{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.scale{-webkit-transition:all .15s ease;-o-transition:all .15s ease;transition:all .15s ease;-webkit-transform:scale(.8);-ms-transform:scale(.8);-o-transform:scale(.8);transform:scale(.8)}.scale.in{-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.scrollbar-hover::-webkit-scrollbar,.scrollbar-hover::-webkit-scrollbar-button,.scrollbar-hover::-webkit-scrollbar-thumb,.scrollbar-hover::-webkit-scrollbar-track{visibility:hidden}.scrollbar-hover:hover::-webkit-scrollbar,.scrollbar-hover:hover::-webkit-scrollbar-button,.scrollbar-hover:hover::-webkit-scrollbar-thumb,.scrollbar-hover:hover::-webkit-scrollbar-track{visibility:visible}@media (min-width:768px){::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-button{width:0;height:0}::-webkit-scrollbar-button:end:increment,::-webkit-scrollbar-button:start:decrement{display:block}::-webkit-scrollbar-button:vertical:end:decrement,::-webkit-scrollbar-button:vertical:start:increment{display:none}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-color:transparent;border-style:solid}::-webkit-scrollbar-track:vertical::-webkit-scrollbar-track:horizontal{background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box}::-webkit-scrollbar-thumb{min-height:28px;background-color:rgba(0,0,0,.2);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:2px;-webkit-box-shadow:inset 1px 1px 0 rgba(0,0,0,.1),inset 0 -1px 0 rgba(0,0,0,.07)}::-webkit-scrollbar-thumb:hover{background-color:rgba(0,0,0,.4);-webkit-box-shadow:inset 1px 1px 1px rgba(0,0,0,.25)}::-webkit-scrollbar-thumb:active{background-color:rgba(0,0,0,.5);-webkit-box-shadow:inset 1px 1px 3px rgba(0,0,0,.35)}::-webkit-scrollbar-thumb:horizontal,::-webkit-scrollbar-thumb:vertical,::-webkit-scrollbar-track:horizontal,::-webkit-scrollbar-track:vertical{border-width:0}::-webkit-scrollbar-track:hover{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.1)}::-webkit-scrollbar-track:active{background-color:rgba(0,0,0,.05);-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,.14),inset -1px -1px 0 rgba(0,0,0,.07)}}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out,-o-transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal>.loader{display:none}.modal.modal-loading .loader,.modal.modal-updating .loader{position:absolute;top:35%;left:50%;display:block;width:80px;margin-left:-40px;font-size:56px;color:#fff;text-align:center}.modal.modal-loading .modal-dialog{opacity:0}.modal.modal-updating .modal-dialog{opacity:1}.modal.modal-updating .modal-body{opacity:0}.modal.modal-updating .loader{z-index:1;color:#eee}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-iframe .modal-body{overflow:hidden!important}.modal-iframe .modal-body>iframe{border-radius:0 0 6px 6px}.modal-dialog{position:relative;width:auto;margin:0 auto;pointer-events:initial;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-dialog.modal-moveable{position:absolute;margin:0}.modal-dialog.modal-moveable .modal-header{cursor:move}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.modal-fullscreen{position:relative;width:100%!important;height:100%!important;margin:0;border-radius:0}.modal-fullscreen .modal-body{position:absolute;top:52px;right:0;bottom:0;left:0;overflow-y:auto}.modal-scroll-inside{overflow:hidden!important}.body-modal-scroll-inside{overflow:auto}.tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=100);opacity:1}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#313c52;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#313c52}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#313c52}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#313c52}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#313c52}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#313c52}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#313c52}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#313c52}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#313c52}.tooltip-primary .tooltip-inner{background-color:#2e7fff}.tooltip-primary.tooltip.top .tooltip-arrow{border-top-color:#2e7fff}.tooltip-primary.tooltip.top-left .tooltip-arrow{border-top-color:#2e7fff}.tooltip-primary.tooltip.top-right .tooltip-arrow{border-top-color:#2e7fff}.tooltip-primary.tooltip.right .tooltip-arrow{border-right-color:#2e7fff}.tooltip-primary.tooltip.left .tooltip-arrow{border-left-color:#2e7fff}.tooltip-primary.tooltip.bottom .tooltip-arrow{border-bottom-color:#2e7fff}.tooltip-primary.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#2e7fff}.tooltip-primary.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#2e7fff}.tooltip-success .tooltip-inner{background-color:#22c98d}.tooltip-success.tooltip.top .tooltip-arrow{border-top-color:#22c98d}.tooltip-success.tooltip.top-left .tooltip-arrow{border-top-color:#22c98d}.tooltip-success.tooltip.top-right .tooltip-arrow{border-top-color:#22c98d}.tooltip-success.tooltip.right .tooltip-arrow{border-right-color:#22c98d}.tooltip-success.tooltip.left .tooltip-arrow{border-left-color:#22c98d}.tooltip-success.tooltip.bottom .tooltip-arrow{border-bottom-color:#22c98d}.tooltip-success.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#22c98d}.tooltip-success.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#22c98d}.tooltip-info .tooltip-inner{background-color:#37b2fe}.tooltip-info.tooltip.top .tooltip-arrow{border-top-color:#37b2fe}.tooltip-info.tooltip.top-left .tooltip-arrow{border-top-color:#37b2fe}.tooltip-info.tooltip.top-right .tooltip-arrow{border-top-color:#37b2fe}.tooltip-info.tooltip.right .tooltip-arrow{border-right-color:#37b2fe}.tooltip-info.tooltip.left .tooltip-arrow{border-left-color:#37b2fe}.tooltip-info.tooltip.bottom .tooltip-arrow{border-bottom-color:#37b2fe}.tooltip-info.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#37b2fe}.tooltip-info.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#37b2fe}.tooltip-warning .tooltip-inner{background-color:#ff9f46}.tooltip-warning.tooltip.top .tooltip-arrow{border-top-color:#ff9f46}.tooltip-warning.tooltip.top-left .tooltip-arrow{border-top-color:#ff9f46}.tooltip-warning.tooltip.top-right .tooltip-arrow{border-top-color:#ff9f46}.tooltip-warning.tooltip.right .tooltip-arrow{border-right-color:#ff9f46}.tooltip-warning.tooltip.left .tooltip-arrow{border-left-color:#ff9f46}.tooltip-warning.tooltip.bottom .tooltip-arrow{border-bottom-color:#ff9f46}.tooltip-warning.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#ff9f46}.tooltip-warning.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#ff9f46}.tooltip-danger .tooltip-inner{background-color:#fc5959}.tooltip-danger.tooltip.top .tooltip-arrow{border-top-color:#fc5959}.tooltip-danger.tooltip.top-left .tooltip-arrow{border-top-color:#fc5959}.tooltip-danger.tooltip.top-right .tooltip-arrow{border-top-color:#fc5959}.tooltip-danger.tooltip.right .tooltip-arrow{border-right-color:#fc5959}.tooltip-danger.tooltip.left .tooltip-arrow{border-left-color:#fc5959}.tooltip-danger.tooltip.bottom .tooltip-arrow{border-bottom-color:#fc5959}.tooltip-danger.tooltip.bottom-left .tooltip-arrow{border-bottom-color:#fc5959}.tooltip-danger.tooltip.bottom-right .tooltip-arrow{border-bottom-color:#fc5959}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:300px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:4px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover.no-arrow.top{margin-top:0}.popover.no-arrow.right{margin-left:0}.popover.no-arrow.bottom{margin-top:0}.popover.no-arrow.left{margin-left:0}.modal .popover,.popover-in-modal{z-index:1050}.popover-title{padding:8px 14px;margin:0;font-size:13px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:4px 4px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{content:"";border-width:10px}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom .arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.popover-primary{border-color:#2e7fff}.popover-primary .popover-title{color:#fff;background-color:#2e7fff}.popover-primary.popover.top .arrow{border-top-color:#2e7fff}.popover-primary.popover.right .arrow{border-right-color:#2e7fff}.popover-primary.popover.left .arrow{border-left-color:#2e7fff}.popover-primary.popover.bottom .arrow,.popover-primary.popover.bottom .arrow:after{border-bottom-color:#2e7fff}.popover-success{border-color:#22c98d}.popover-success .popover-title{color:#fff;background-color:#22c98d}.popover-success.popover.top .arrow{border-top-color:#22c98d}.popover-success.popover.right .arrow{border-right-color:#22c98d}.popover-success.popover.left .arrow{border-left-color:#22c98d}.popover-success.popover.bottom .arrow,.popover-success.popover.bottom .arrow:after{border-bottom-color:#22c98d}.popover-info{border-color:#37b2fe}.popover-info .popover-title{color:#fff;background-color:#37b2fe}.popover-info.popover.top .arrow{border-top-color:#37b2fe}.popover-info.popover.right .arrow{border-right-color:#37b2fe}.popover-info.popover.left .arrow{border-left-color:#37b2fe}.popover-info.popover.bottom .arrow,.popover-info.popover.bottom .arrow:after{border-bottom-color:#37b2fe}.popover-warning{border-color:#ff9f46}.popover-warning .popover-title{color:#fff;background-color:#ff9f46}.popover-warning.popover.top .arrow{border-top-color:#ff9f46}.popover-warning.popover.right .arrow{border-right-color:#ff9f46}.popover-warning.popover.left .arrow{border-left-color:#ff9f46}.popover-warning.popover.bottom .arrow,.popover-warning.popover.bottom .arrow:after{border-bottom-color:#ff9f46}.popover-danger{border-color:#fc5959}.popover-danger .popover-title{color:#fff;background-color:#fc5959}.popover-danger.popover.top .arrow{border-top-color:#fc5959}.popover-danger.popover.right .arrow{border-right-color:#fc5959}.popover-danger.popover.left .arrow{border-left-color:#fc5959}.popover-danger.popover.bottom .arrow,.popover-danger.popover.bottom .arrow:after{border-bottom-color:#fc5959}.caret{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent;opacity:.5}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:100px;padding:5px 0;margin:2px 0 0;font-size:13px;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#eee}.dropdown-menu>li>a{display:block;padding:5px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#313c52;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#fff;text-decoration:none;background-color:#2e7fff}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#2e7fff;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#c4c4c4}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.dropdown-hover .dropdown-menu{margin:-1px 0}.dropdown-hover:hover>.dropdown-menu,.open>.dropdown-menu{display:block;opacity:1}.dropdown-hover:hover>a,.open>a{outline:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;font-weight:700;line-height:1.42857143;color:#838a9d}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0 dotted;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:4px}.dropdown-submenu.open>.dropdown-menu,.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:4px}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;content:" ";border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu>a{min-width:100px}.dropdown-submenu>.dropdown-menu.pull-left{right:100%;left:auto}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#2e7fff}.messager{display:table;margin:10px;overflow:hidden;color:#fff;pointer-events:auto;background-color:#313c52;background-color:rgba(0,0,0,.8);border-radius:20px;-webkit-transition-property:opacity,-webkit-transform!important;-o-transition-property:opacity,-o-transform!important;transition-property:opacity,-webkit-transform!important;transition-property:opacity,transform!important;transition-property:opacity,transform,-webkit-transform,-o-transform!important}.messager-icon{display:table-cell;padding:10px 0 10px 15px;line-height:20px;text-align:center;vertical-align:top}.messager-content{display:table-cell;padding:10px 15px;vertical-align:top}.messager-content a{font-weight:700;color:inherit}.messager-title{font-size:14px;font-weight:700}.messager-title+.messager-text{margin-top:10px}.messager-actions{display:table-cell;vertical-align:top}.messager-actions>.action{min-width:40px;height:40px;padding:0 12px;color:#fafafa;color:rgba(255,255,255,.6);text-align:center;text-shadow:none;background:0 0;border:none}.messager-actions>.action.close{padding-bottom:5px;font-size:20px;font-weight:400;opacity:1}.messager-actions>.action:hover{color:#fff;background:rgba(0,0,0,.1)}.messager-actions .action-icon+.action-text{margin-left:8px}.messagers-holder{position:fixed;z-index:99999;padding:10px;pointer-events:none}.messagers-holder.top{top:0}.messagers-holder.top-left{top:0;left:0}.messagers-holder.top-right{top:0;right:0}.messagers-holder.bottom{bottom:0}.messagers-holder.bottom-left{bottom:0;left:0}.messagers-holder.bottom-right{right:0;bottom:0}.messagers-holder.bottom-right .messager,.messagers-holder.top-right .messager{margin-left:auto}.messagers-holder.center{top:0}.messagers-holder.bottom,.messagers-holder.center,.messagers-holder.top{right:0;left:0}.messagers-holder.bottom .messager,.messagers-holder.center .messager,.messagers-holder.top .messager{margin:10px auto}.messager-notification{min-width:250px;max-width:400px;border-radius:4px}.messager-notification .messager-icon{width:42px;vertical-align:middle}.messager-notification .messager-content{vertical-align:middle}.messager-text>p:last-child{margin:0}.messager-primary{background-color:#2e7fff}.messager-success{background-color:#22c98d}.messager-info{background-color:#37b2fe}.messager-warning{background-color:#ff9f46}.messager-danger{background-color:#fc5959}.messager-important{background-color:#ff6f42}.messager-special{background-color:#8166ee}.article{padding:20px}.article>header h1,.article>header h2,.article>header h3{margin-bottom:20px;line-height:1.5}.article>header>.abstract,.article>header>dl{padding:10px 15px;font-size:12px;color:#576b92;background-color:#f1f1f1}.article>header>.abstract>p:last-child,.article>header>dl>p:last-child{margin-bottom:0}.article>header>dl{margin:0;border-bottom:1px solid #e9e9e9}.article>header>dl.pull-right{background-color:transparent;border:none}.article>footer{border-top:1px dashed #d8d8d8}.article>footer>p{padding:10px 15px}.article-content,.article>.content{padding:20px 0;font-size:14px;line-height:1.57142857}.article-content h1,.article>.content h1{font-size:20px}.article-content h2,.article>.content h2{font-size:18px}.article-content h3,.article>.content h3{font-size:16px}.article-content h4,.article>.content h4{margin-top:15px;font-size:14px}.article-content h5,.article>.content h5{margin-top:15px;font-size:13px}.article-content h6,.article>.content h6{margin-top:15px;font-size:11px}.article-content img,.article>.content img{margin:10px 0}.article-content p>img+img,.article>.content p>img+img{margin-left:10px}.article-content p>img[align=right],.article>.content p>img[align=right]{margin-left:10px}.article-content dl,.article>.content dl{padding-right:2em;padding-left:2em}.article-content table,.article>.content table{margin-bottom:20px}.article-content table td,.article-content table th,.article>.content table td,.article>.content table th{padding:8px 10px;line-height:1.42857143;vertical-align:top;border-bottom:1px solid #f4f5f7}.article-content table>thead>tr>th,.article>.content table>thead>tr>th{vertical-align:bottom;background-color:transparent}.article-content p{margin-bottom:0}.article>.content table td,.article>.content table th,.article>.content table>thead>tr>th{border:1px solid #f4f5f7}body.article-content{padding:8px}.article-condensed{padding:20px 0}.article-condensed>header{padding:0 20px}.article-condensed>header>.abstract,.article-condensed>header>dl{padding:10px 15px;margin:0 -20px}.article-condensed>.article-content,.article-condensed>.content{padding:20px}.article-condensed>.article-content>img,.article-condensed>.article-content>pre,.article-condensed>.content>img,.article-condensed>.content>pre{margin-right:-20px;margin-left:-20px;border-radius:0}.article-condensed>.article-content>pre,.article-condensed>.content>pre{border-right:none;border-left:none}.article-condensed>footer{border-top:1px dashed #d8d8d8}.article-condensed>footer>p{padding:10px 15px}.article-condensed>footer>.pager-justify>.previous>a{border-left:none;border-radius:0}.article-condensed>footer>.pager-justify>.next>a{border-right:none;border-radius:0}/*! * Datetimepicker for Bootstrap @@ -13,4 +13,4 @@ * * Copyright (c) 2011-2016 Harvest http://getharvest.com * MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md -*/.chosen-container{position:relative;display:block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;display:none;width:100%;background:#fff;border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container .chosen-drop.chosen-auto-max-width{min-width:100%;border-top:1px solid rgba(0,0,0,.15);opacity:0}.chosen-container .chosen-drop.chosen-auto-max-width>.chosen-results>li{display:inline-block;white-space:nowrap}.chosen-container .chosen-drop.chosen-auto-max-width.in{opacity:1}.chosen-container .chosen-drop.chosen-auto-max-width.in>.chosen-results>li{display:block;white-space:normal}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}.chosen-container.chosen-with-drop .chosen-drop{display:block}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container.chosen-highlight-selected .result-selected{color:#2e7fff;background:#e6f0ff}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.42857143;color:#0b0f18;text-decoration:none;white-space:nowrap;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-single .chosen-default{color:#838a9d}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:5px;right:24px;display:block;width:20px;height:20px;font-family:sans-serif;font-size:18px;font-weight:700;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{display:block;content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent;opacity:.5}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#2e7fff}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#2e7fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 4px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;line-height:12px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:#838a9d;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #c4c4c4;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#ababab;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:1px;right:0;display:block;width:20px;height:18px;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#2e7fff;-webkit-box-shadow:none,0 0 8px rgba(46,127,255,.6);box-shadow:none,0 0 8px rgba(46,127,255,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#2e7fff;-webkit-box-shadow:none,0 0 8px rgba(46,127,255,.6);box-shadow:none,0 0 8px rgba(46,127,255,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{left:0;display:none;padding:3px 4px;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:25px;padding:2px 26px 2px 4px;font-size:inherit}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:9px}.chosen-compact.chosen-with-search.chosen-with-drop .chosen-single>.chosen-search{display:block;opacity:1}select.chosen[multiple]{height:32px;overflow:hidden}select.chosen[multiple] option{visibility:hidden}.picker{min-height:32px;background-color:#eee}.picker:not(.picker-ready)>*{display:none}.picker-selections{position:relative;min-height:32px;color:#0b0f18;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none}.picker-focus .picker-selections{border-color:#2e7fff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6)}.disabled .picker-selections{cursor:not-allowed;background-color:#f5f5f5}.picker-multi .picker-selections{padding:3px}.picker-multi.picker-focus .picker-selections:before{position:absolute;right:0;bottom:8px;display:block;width:24px;height:14px;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;content:"\e928";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-multi.picker-focus.picker-loading .picker-selections::before{display:inline-block;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.picker-multi .picker-selection{position:relative;display:inline-block;padding:0 20px 0 5px;margin:2px;line-height:18px;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #c4c4c4;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05)}.picker-selection-single{max-width:100%;padding:5px 20px 5px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-focus .picker-selection-single .picker-selection-text{display:none}.picker-selection-single:after{position:absolute;top:7px;right:0;display:block;width:24px;height:14px;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;content:"\f0d7";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-focus .picker-selection-single::after{content:"\e928"}.picker-focus.picker-loading .picker-selection-single::after{display:inline-block;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.picker-selection-remove{position:absolute;top:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:18px;height:18px;text-align:center;cursor:pointer;opacity:.2;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.picker-selection-remove:before{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-selection-remove:hover{opacity:.5}.picker-single .picker-selection-remove{top:5px;right:20px;z-index:1}.picker-no-value .picker-selection-remove,.picker-single.picker-focus .picker-selection-remove{display:none}.picker-multi.picker-sortable .picker-selection-text{cursor:move}.picker-search{color:transparent;background:0 0;border:none}.picker-search:focus{color:inherit;outline:0}.disabled .picker-search{cursor:not-allowed}.picker-single .picker-search{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;padding:5px 8px}.picker-multi .picker-search{display:inline-block;width:10px;min-width:10px;max-width:100%;padding:0 2px;margin:2px 0}.picker-placeholder{position:absolute;top:5px;right:20px;left:8px;z-index:0;display:none;overflow:hidden;color:#838a9d;text-overflow:ellipsis;white-space:nowrap}.picker-no-value.picker-focus .picker-placeholder{display:none}.picker-input-empty.picker-focus.picker-no-value .picker-placeholder,.picker-no-value .picker-placeholder{display:block}.picker-drop-menu{position:fixed;z-index:1200;display:none;min-width:100px;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);opacity:0}.picker-drop-menu.picker-drop-show{display:block}.picker-option-list{padding:5px 0;margin:0;overflow-y:auto}.picker-no-options .picker-option-list{display:none}.picker-option{display:block;min-height:30px;padding:5px 10px;overflow:hidden;clear:both;font-weight:400;line-height:1.42857143;color:#313c52;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:none;-o-transition:none;transition:none}.picker-single .picker-option.picker-option-selected{color:#2e7fff;background:#e6f0ff}.picker-option:focus,.picker-option:hover{text-decoration:none}.picker-option.picker-option-active,.picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background-color:#2e7fff}.picker-multi .picker-option.picker-option-selected,.picker-multi .picker-option.picker-option-selected.picker-option-active{color:#ccc;cursor:not-allowed;background-color:#fff}.picker-option.disabled{cursor:not-allowed!important}.picker-option-text-matched{position:relative;color:#2e7fff}.picker-option-text-matched:before{position:absolute;right:0;bottom:-4px;left:0;display:block;height:2px;content:' ';background-color:#2e7fff;border-radius:2px;opacity:.5}.picker-option-active .picker-option-text-matched,.picker-option:hover .picker-option-text-matched{color:#fff}.picker-option-active .picker-option-text-matched:before,.picker-option:hover .picker-option-text-matched:before{background-color:#fff}.picker-message{display:none;height:22px;padding:2px 5px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:ellipsis;white-space:nowrap;background-color:#f1f1f1}.picker-has-message .picker-message{display:block}.picker-message[data-type=danger]{color:#fc5959}.picker-actions{padding:5px;border-top:1px solid #eee}.picker-no-actions .picker-actions{display:none}.picker-actions .btn{padding:2px 4px}.picker-actions .btn[disabled]{background-color:transparent;filter:grayscale(1);-webkit-filter:grayscale(1)}.picker-actions .btn+.btn{margin-left:4px}.picker-checkable .picker-option{position:relative;padding-left:32px;color:inherit!important;cursor:pointer!important}.picker-checkable .picker-option>.checkbox-primary{position:absolute;top:4px;left:10px}.picker-checkable .picker-option.picker-option-active{background-color:rgba(0,0,0,.05)!important}.picker-checkable .picker-option:hover{background-color:rgba(0,0,0,.075)!important}.picker-checkable .picker-option.picker-option-selected{background-color:#e6f0ff!important}.picker-checkable .picker-option-active .picker-option-text-matched,.picker-checkable .picker-option:hover .picker-option-text-matched{color:#2e7fff!important}.picker-checkable .picker-option-active .picker-option-text-matched:before,.picker-checkable .picker-option:hover .picker-option-text-matched:before{background:#2e7fff!important}:root{--color-primary:#2e7fff;--color-secondary:#18a6fd;--color-pale:#e6f0ff;--color-fore:#313c52;--color-back:#fff;--color-red:#fc5959;--color-yellow:#ff9f46;--color-green:#22c98d;--color-blue:#37b2fe;--color-purple:#8166ee;--color-brown:#ff6f42;--color-danger:#fc5959;--color-warning:#ff9f46;--color-success:#22c98d;--color-info:#37b2fe;--color-special:#8166ee;--color-important:#ff6f42;--color-green-pale:#ecfff8;--color-yellow-pale:#fff4ea;--color-red-pale:#ffebeb;--color-blue-pale:#e7f6ff;--color-brown-pale:#fff2ed;--color-purple-pale:#efecfa;--link-color:#313c52;--link-hover-color:#2e7fff;--color-gray-darker:#0b0f18;--color-gray-dark:#313c52;--color-gray:#838a9d;--color-gray-light:#c4c4c4;--color-gray-lighter:#eee;--color-gray-pale:#f1f1f1;--border-radius:4px;--border-radius-lg:6px;--border-radius-sm:3px;--bg-gradient:#3785ff}.container,.container-fixed,.container-fluid{position:relative}.container{max-width:1800px!important}body{color:#313c52;background-color:#f4f5f7}body.article-content,body.body-modal{background:0 0}body.body-modal{padding:0}@media screen and (min-width:1920px){body{font-size:14px}}a:active,a:focus,button:active,button:focus{outline:0!important}.strong{font-weight:700}.font-normal{font-weight:400!important}.text-middle{vertical-align:middle!important}.text-bottom{vertical-align:bottom!important}.text-top{vertical-align:top!important}.inline-block{display:inline-block!important}.layer{border-radius:4px;-webkit-box-shadow:0 0 20px 0 #bdc9d8;box-shadow:0 0 20px 0 #bdc9d8}.space{margin-bottom:20px}.space-lg{margin-bottom:30px}.space-sm{margin-bottom:10px}.muted{opacity:.5}.text-muted em{color:#313c52}.no-animate{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.template{display:none!important}.text-left{text-align:left!important}.text-yellow.icon-folder{color:#ff9f46}.table-row{display:table;width:100%;table-layout:fixed}.table-col,.table-row>.col,.table-row>[class*=col-],.table-row>[class*="-col"]{display:table-cell;float:none;vertical-align:top}.side-col{width:200px;padding-right:20px}.side-col.col-4{width:33.3333333%}.col-lg{width:260px}.col-xl{width:320px}.col-sm{width:150px}.col-xs{width:100px}.main-col+.side-col{padding-right:0;padding-left:20px}.row-grid>[class*=col-],.row-grid>[class*="-col"]{padding-top:6px;padding-bottom:6px}hr.space{margin:10px 0;border:none}hr.space-sm{margin:5px 0;border:none}.text-secondary{color:#18a6fd}a.text-primary{color:#2e7fff}.text-primary-400{color:#3785ff}.text-primary-600{color:#1e6aeb}.text-primary-700{color:#2463c7}.text-primary-900{color:#063072}.text-green-400{color:#48d1a0}.text-yellow-400{color:#ffaf65}.text-blue-400{color:#60c2ff}.text-red-400{color:#ff7c7c}.text-important-400{color:#ff9777}.text-purple-400{color:#8a6ff5}.text-green-600{color:#0dbb7d}.text-yellow-600{color:#f38f19}.text-blue-600{color:#00c0e9}.text-red-600{color:#fb2b2b}.text-important-600{color:#ff6f42}.text-purple-600{color:#7055df}.text-green-700{color:#0ca76f}.text-yellow-700{color:#ed8307}.text-blue-700{color:#1099ed}.text-red-700{color:#d91b1b}.text-important-700{color:#ff4912}.text-purple-700{color:#513baa}.text-green-900{color:#186c4e}.text-yellow-900{color:#af5f01}.text-blue-900{color:#046bab}.text-red-900{color:#a20606}.text-important-900{color:#611700}.text-purple-900{color:#30216f}.text-gray-14,.text-title{color:#0b0f18}.icon-important,.text-color,.text-gray-13{color:#313c52}.text-gray-12{color:#5e626d}.icon-common,.text-gray-11{color:#838a9d}.icon-secondary,.text-gray-10{color:#9ea3b0}.text-disabled{color:#c4c4c4}.nav-primary>li>a{min-width:100px;padding:5px 8px;color:#838a9d;border-color:#e7f1fc}.nav-primary>li.active>a{color:#2e7fff;background-color:#e7f1fc;border-color:#e7f1fc}.nav-primary>li.active>a:hover{color:#2e7fff;background-color:#c3dcf7;border-color:#c3dcf7}.end-marker{margin-bottom:20px;color:#c4c4c4;text-align:center}@-webkit-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@-o-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}.highlight{-webkit-animation:highlight .5s linear 0s 2 alternate;-o-animation:highlight .5s linear 0s 2 alternate;animation:highlight .5s linear 0s 2 alternate}.progress.inline-block{width:100px;margin:0}.w-p5{width:5%!important}.w-p10{width:10%!important}.w-p15{width:15%!important}.w-p20{width:20%!important}.w-p25{width:25%!important}.w-p30{width:30%!important}.w-p35{width:35%!important}.w-p40{width:40%!important}.w-p45{width:45%!important}.w-p50{width:50%!important}.w-p55{width:55%!important}.w-p60{width:60%!important}.w-p65{width:65%!important}.w-p70{width:70%!important}.w-p75{width:75%!important}.w-p80{width:80%!important}.w-p85{width:85%!important}.w-p90{width:90%!important}.w-p94{width:94%!important}.w-p95{width:95%!important}.w-p98{width:98%!important}.w-p99{width:99%!important}.w-p100{width:100%!important}.w-auto{width:auto!important}.w-10px{width:10px!important}.w-20px{width:20px!important}.w-30px{width:30px!important}.w-35px{width:35px!important}.w-40px{width:40px!important}.w-45px{width:45px!important}.w-50px{width:50px!important}.w-60px{width:60px!important}.w-70px{width:70px!important}.w-80px{width:80px!important}.w-90px{width:90px!important}.w-100px{width:100px!important}.w-110px{width:110px!important}.w-120px{width:120px!important}.w-130px{width:130px!important}.w-140px{width:140px!important}.w-150px{width:150px!important}.w-160px{width:160px!important}.w-180px{width:180px!important}.w-200px{width:200px!important}.w-230px{width:230px!important}.w-250px{width:250px!important}.w-300px{width:300px!important}.w-400px{width:400px!important}.w-500px{width:500px!important}.w-600px{width:600px!important}.w-700px{width:700px!important}.w-800px{width:800px!important}.w-900px{width:900px!important}.mw-200px{max-width:200px!important}.mw-300px{max-width:300px!important}.mw-400px{max-width:400px!important}.mw-500px{max-width:500px!important}.mw-600px{max-width:600px!important}.mw-700px{max-width:700px!important}.mw-800px{max-width:800px!important}.mw-900px{max-width:900px!important}.mw-1400px{max-width:1400px!important}.w-id{width:70px!important}.w-pri{width:40px!important}.w-severity{width:50px!important}.w-hour{width:57px!important}.w-date{width:90px!important}.w-status{width:60px!important}.w-resolution,.w-type,.w-user{width:80px!important}.w-p15-f{width:15%!important;min-width:120px!important}.w-p25-f{width:25%!important;min-width:200px!important}.w-p35-f{width:35%!important;min-width:300px!important}.w-p45-f{width:45%!important;min-width:400px!important}.h-5px{height:5px!important}.h-10px{height:10px!important}.h-20px{height:20px!important}.h-30px{height:30px!important}.h-35px{height:35px!important}.h-40px{height:40px!important}.h-45px{height:45px!important}.h-50px{height:50px!important}.h-60px{height:60px!important}.h-70px{height:70px!important}.h-80px{height:80px!important}.h-100px{height:100px!important}.h-120px{height:120px!important}.h-130px{height:130px!important}.h-140px{height:140px!important}.h-150px{height:150px!important}.h-200px{height:200px!important}.pd-0{padding:0!important}.mg-0{margin:0!important}.mgb-20{margin-bottom:20px!important}.mgb-10{margin-bottom:10px!important}.pdb-20{padding-bottom:20px!important}.pdt-20{padding-top:20px!important}.br-0{border-radius:0!important}.bd-0,.bd-none,.borderless{border:none!important}.bg-none{background:0 0!important}.red{color:#fc5959!important}.icon-pro-version{font-size:14px!important}.icon-pro-version:before{position:relative;top:-1px;font-size:14px;color:#fc5959;content:"\e92b"}.bg-primary{color:#fff;background:#3785ff;border-top-color:#2e7fff}.bg-primary-pure{color:#fff;background-color:#2e7fff}.bg-primary-pale{color:#2e7fff;background-color:#e6f0ff}.bg-secondary{color:#fff;background:#18a6fd}.line-gray-8{background:#d8dbde}.line-gray-5{background:#e3e4e9}.line-gray-7{background:#eee}.bg-gray-1{background:#e3e4e9}.bg-gray-2{background:#edeef2}.bg-gray-3{background:#f8f8f8}.bg-green-400{background:#48d1a0}.bg-yellow-400{background:#ffaf65}.bg-blue-400{background:#60c2ff}.bg-red-400{background:#ff7c7c}.bg-important-400{background:#ff9777}.bg-purple-400{background:#8a6ff5}.bg-green-600{background:#0dbb7d}.bg-yellow-600{background:#f38f19}.bg-blue-600{background:#00c0e9}.bg-red-600{background:#fb2b2b}.bg-important-600{background:#ff6f42}.bg-purple-600{background:#7055df}.bg-green-700{background:#0ca76f}.bg-yellow-700{background:#ed8307}.bg-blue-700{background:#1099ed}.bg-red-700{background:#d91b1b}.bg-important-700{background:#ff4912}.bg-purple-700{background:#513baa}.bg-green-900{background:#186c4e}.bg-yellow-900{background:#af5f01}.bg-blue-900{background:#046bab}.bg-red-900{background:#a20606}.bg-important-900{background:#611700}.bg-purple-900{background:#30216f}.bg-hover{background:#f6f6f6}.bg-active{background:#e6eaf1}.hl-tutorial{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 0 0 #000!important;box-shadow:0 0 0 0 #000!important;-webkit-transition:-webkit-box-shadow 1s!important;-o-transition:box-shadow 1s!important;transition:-webkit-box-shadow 1s!important;transition:box-shadow 1s!important;transition:box-shadow 1s,-webkit-box-shadow 1s!important}.hl-tutorial.hl-in{-webkit-box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 3000px rgba(0,0,0,.2)!important;box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 3000px rgba(0,0,0,.2)!important}.btn.tooltip-tutorial,.hl-tutorial.hl-in:hover{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 3000px rgba(0,0,0,.3)!important;box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 3000px rgba(0,0,0,.3)!important}.tooltip-max .tooltip-inner{max-width:1000px;padding:8px 10px}.transition-all *{-webkit-transition:all .2s!important;-o-transition:all .2s!important;transition:all .2s!important}.scroll-x{overflow-x:auto!important}.scroll-y{overflow-y:auto!important}.divider+.divider{display:none}.ie *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@font-face{font-family:Oswald;font-weight:400;src:url(../fonts/Oswald-Regular.ttf)}@font-face{font-family:Oswald;font-weight:500;src:url(../fonts/Oswald-Medium.ttf)}@font-face{font-family:Oswald;font-weight:300;src:url(../fonts/Oswald-Light.ttf)}.num{font-family:Oswald;font-weight:400}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(../fonts/ZentaoIcon.eot?v=1.34);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.34) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.34) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.34) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.34) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-zentao:before{content:"\e901"}.icon-zentao-alt:before{content:"\e900"}.icon-help:before{content:"\e968"}.icon-import:before{content:"\e904"}.icon-download:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-lightbulb:before{content:"\e91c"}.icon-close:before{content:"\e936"}.icon-check:before{content:"\e5ca"}.icon-plus:before{content:"\e925"}.icon-minus:before{content:"\e926"}.icon-expand-alt:before{content:"\e6f1"}.icon-collapse-alt:before{content:"\e6f2"}.icon-fullscreen:before{content:"\e96b"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-exclamation-sign:before{content:"\e930"}.icon-info-sign:before{content:"\e9d5"}.icon-flag:before{content:"\e937"}.icon-check-circle:before{content:"\e92f"}.icon-check-sign:before{content:"\e938"}.icon-chart-pie:before{content:"\e95b"}.icon-history:before{content:"\e95f"}.icon-pencil:before{content:"\e254"}.icon-search:before{content:"\e928"}.icon-restart:before{content:"\e95e"}.icon-cog:before{content:"\e93b"}.icon-chart-line:before{content:"\e95c"}.icon-chart-bar:before{content:"\e95d"}.icon-bar-chart:before{content:"\e95d"}.icon-exchange:before{content:"\e927"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-severity-solid:before{content:"\e902"}.icon-chat-line:before{content:"\e998"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-chat:before{content:"\e940"}.icon-message:before{content:"\e940"}.icon-more:before{content:"\e744"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-columns:before{content:"\f0db"}.icon-envelope-o:before{content:"\e92a"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-angle-double-right:before{content:"\f101"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-text:before{content:"\e929"}.icon-share:before{content:"\f064"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-aiux:before{content:"\e99e"}.icon-qc:before{content:"\e986"}.icon-qc-q:before{content:"\e985"}.icon-qc-c:before{content:"\e987"}.icon-sonarqube:before{content:"\e9ba"}.icon-college:before{content:"\e9c8"}.icon-ztool:before{content:"\e9c1"}.icon-contacts:before{content:"\e9c3"}.icon-chats:before{content:"\e9c4"}.icon-menu-my:before{content:"\e97a"}.icon-home:before{content:"\e97a"}.icon-program:before{content:"\e9aa"}.icon-lightbulb-alt:before{content:"\e98f"}.icon-product:before{content:"\e98f"}.icon-rocket:before{content:"\e99c"}.icon-project:before{content:"\e99c"}.icon-run:before{content:"\e9a9"}.icon-test:before{content:"\e956"}.icon-infinite:before{content:"\e9a3"}.icon-devops:before{content:"\e9a3"}.icon-ops:before{content:"\e903"}.icon-doc:before{content:"\e99b"}.icon-menu-doc:before{content:"\e99b"}.icon-statistic:before{content:"\e999"}.icon-menu-backend:before{content:"\e993"}.icon-assets:before{content:"\e9ae"}.icon-diamond:before{content:"\e9ae"}.icon-feedback:before{content:"\e991"}.icon-flow:before{content:"\e994"}.icon-oa:before{content:"\e9a1"}.icon-more-circle:before{content:"\e988"}.icon-controls:before{content:"\e995"}.icon-account:before{content:"\e992"}.icon-about:before{content:"\e996"}.icon-info:before{content:"\e996"}.icon-cog-outline:before{content:"\e997"}.icon-backend:before{content:"\e997"}.icon-exit:before{content:"\e99a"}.icon-theme:before{content:"\e9a0"}.icon-globe:before{content:"\f0ac"}.icon-lang:before{content:"\f0ac"}.icon-table-sort:before{content:"\e9e1"}.icon-blame:before{content:"\e9e0"}.icon-draft-edit:before{content:"\e9dd"}.icon-sub-review:before{content:"\e9df"}.icon-sub-review-user:before{content:"\e9db"}.icon-ztf:before{content:"\e9dc"}.icon-save:before{content:"\e9d8"}.icon-list-box:before{content:"\e9b4"}.icon-usecase:before{content:"\e99d"}.icon-code:before{content:"\e990"}.icon-summary:before{content:"\e9ad"}.icon-more-alt:before{content:"\e9a7"}.icon-customer:before{content:"\e9d9"}.icon-ticket:before{content:"\e9e1"}.icon-appose:before{content:"\e9e2"}.icon-inline:before{content:"\e9e3"}.icon-tree:before{content:"\e9c9"}.icon-list:before{content:"\e9cb"}.icon-gantt:before{content:"\e9cc"}.icon-group-view:before{content:"\e9cd"}.icon-inherit-space:before{content:"\e9c2"}.icon-card-archive:before{content:"\e9b8"}.icon-col-archive:before{content:"\e9b9"}.icon-col-add-right:before{content:"\e9bb"}.icon-col-add-left:before{content:"\e9bc"}.icon-col-split:before{content:"\e9bd"}.icon-waterfall:before{content:"\e9a4"}.icon-manual:before{content:"\e98d"}.icon-kanban:before{content:"\e983"}.icon-lane:before{content:"\e9b1"}.icon-back:before{content:"\e9d3"}.icon-back-circle:before{content:"\e9da"}.icon-shield:before{content:"\e9ca"}.icon-meh:before{content:"\e9ce"}.icon-frown:before{content:"\e9cf"}.icon-smile:before{content:"\e9d0"}.icon-unlock-solid:before{content:"\e9d1"}.icon-lock-solid:before{content:"\e9d2"}.icon-ver:before{content:"\e9c6"}.icon-publish:before{content:"\e9c7"}.icon-send:before{content:"\e9c7"}.icon-tag:before{content:"\e9be"}.icon-tag-lock:before{content:"\e9bf"}.icon-code-fork:before{content:"\f126"}.icon-branch-lock:before{content:"\e9c0"}.icon-groups:before{content:"\e9af"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-thumbs-up-solid:before{content:"\e9d6"}.icon-thumbs-down-solid:before{content:"\e9d7"}.icon-hash:before{content:"\e9ab"}.icon-version:before{content:"\e9ab"}.icon-p-square:before{content:"\e97b"}.icon-video-play:before{content:"\e97f"}.icon-plus-solid-circle:before{content:"\e974"}.icon-minuse-solid-circle:before{content:"\e9b6"}.icon-s:before{content:"\e975"}.icon-c:before{content:"\e976"}.icon-t:before{content:"\e977"}.icon-guide:before{content:"\e978"}.icon-todo:before{content:"\e979"}.icon-side-left:before{content:"\e9b3"}.icon-side-right:before{content:"\e9b2"}.icon-fullscreen-exit:before{content:"\e972"}.icon-alert:before{content:"\e99f"}.icon-undo:before{content:"\e93f"}.icon-redo:before{content:"\e9d4"}.icon-swap:before{content:"\e9b0"}.icon-chat-solid:before{content:"\e9b5"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-pencil-alt:before{content:"\e984"}.icon-size-height:before{content:"\e9c5"}.icon-file-log:before{content:"\e9de"}.icon-rich-text:before{content:"\e913"}.icon-markdown:before{content:"\e916"}.icon-excel:before{content:"\e933"}.icon-text-link:before{content:"\e94d"}.icon-ppt:before{content:"\e957"}.icon-word:before{content:"\e958"}.icon-doc-lib:before{content:"\e96f"}.icon-file:before{content:"\f016"}.icon-file-empty:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-group:before{content:"\e97e"}.icon-menu-users:before{content:"\e97e"}.icon-persons:before{content:"\e97e"}.icon-team:before{content:"\e97e"}.icon-estimate:before{content:"\e9ac"}.icon-sprint:before{content:"\e9a2"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-printer:before{content:"\e906"}.icon-bullhorn:before{content:"\e910"}.icon-person:before{content:"\e941"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-cancel:before{content:"\e951"}.icon-ban-circle:before{content:"\e951"}.icon-eye:before{content:"\e94e"}.icon-eye-off:before{content:"\e96e"}.icon-unlock:before{content:"\e94f"}.icon-lock:before{content:"\e950"}.icon-private:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-hand-right:before{content:"\e907"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-start:before{content:"\e90a"}.icon-play:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-change:before{content:"\e970"}.icon-alter:before{content:"\e970"}.icon-glasses:before{content:"\e914"}.icon-review:before{content:"\e914"}.icon-sitemap:before{content:"\e915"}.icon-testcase:before{content:"\e915"}.icon-pluses:before{content:"\e917"}.icon-report-list:before{content:"\e918"}.icon-magic:before{content:"\e919"}.icon-active:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-split:before{content:"\e98e"}.icon-delay:before{content:"\e91d"}.icon-calendar:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-diff:before{content:"\e9b7"}.icon-sm:before{font-size:14px;vertical-align:10%}.icon-qc{position:relative}.icon-qc:before{width:1em;color:#7cb938;content:"\e985"}.icon-qc:after{position:absolute;top:0;left:0;width:1em;height:1em;font-family:ZentaoIcon;font-size:14px;font-size:inherit;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#36a742;text-transform:none;content:"\e987";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-message.has-dot{position:relative}.icon-message.has-dot::after{position:absolute;top:-3px;right:-5px;display:block;width:6px;height:6px;content:' ';background-color:#fc5959;border-radius:50%}.icon-project{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.icon-product{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15)}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:18px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,border,outline,opacity,-webkit-box-shadow;-o-transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,outline,opacity,-webkit-box-shadow;transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,box-shadow,outline,opacity,-webkit-box-shadow}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#313c52;text-decoration:none}.btn:active{text-decoration:none;background-image:none;outline:0;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:grayscale(1);-webkit-box-shadow:none;box-shadow:none;opacity:.5;-webkit-filter:grayscale(1)}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde}.btn.active,.btn.hover,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:rgba(255,255,255,.8);border-color:#bcc2c7}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#f2f2f2;background-image:none;border-color:#bcc2c7}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{color:rgba(49,60,82,.3);background-color:#fff;border-color:#d8dbde}.btn-gray{color:#82899f;background-color:#f1f1f1;border-color:#f1f1f1}.btn-gray.active,.btn-gray.hover,.btn-gray:active,.btn-gray:focus,.btn-gray:hover,.open .dropdown-toggle.btn-gray{color:#82899f;background-color:rgba(241,241,241,.8);border-color:#d8d8d8}.btn-gray.active,.btn-gray:active,.open .dropdown-toggle.btn-gray{background-color:#e4e4e4;background-image:none;border-color:#d8d8d8}.btn-gray.disabled,.btn-gray.disabled.active,.btn-gray.disabled:active,.btn-gray.disabled:focus,.btn-gray.disabled:hover,.btn-gray[disabled],.btn-gray[disabled].active,.btn-gray[disabled]:active,.btn-gray[disabled]:focus,.btn-gray[disabled]:hover,fieldset[disabled] .btn-gray,fieldset[disabled] .btn-gray.active,fieldset[disabled] .btn-gray:active,fieldset[disabled] .btn-gray:focus,fieldset[disabled] .btn-gray:hover{color:rgba(130,137,159,.3);background-color:#f1f1f1;border-color:#f1f1f1}.btn-primary{color:#fff;background-color:#2e7fff;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(46,127,255,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#156fff;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#2e7fff;border-color:transparent}.btn-secondary{color:#fff;background-color:#18a6fd;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(24,166,253,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#029bf9;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#18a6fd;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning.hover,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:rgba(255,159,70,.8);border-color:rgba(0,0,0,0)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#ff922c;background-image:none;border-color:rgba(0,0,0,0)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{color:rgba(255,255,255,.3);background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger.hover,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:rgba(252,89,89,.8);border-color:rgba(0,0,0,0)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fc4040;background-image:none;border-color:rgba(0,0,0,0)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{color:rgba(255,255,255,.3);background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success.hover,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:rgba(34,201,141,.8);border-color:rgba(0,0,0,0)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#1eb37e;background-image:none;border-color:rgba(0,0,0,0)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{color:rgba(255,255,255,.3);background-color:#22c98d;border-color:transparent}.btn-info{color:#2e7fff;background-color:#e6f0ff;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#2e7fff;background-color:rgba(230,240,255,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#cce1ff;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(46,127,255,.3);background-color:#e6f0ff;border-color:transparent}.btn-link{padding-right:6px;padding-left:6px;font-weight:400;color:#313c52;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0b0f18;background:#f1f1f1;background:rgba(0,0,0,.075)}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4;text-decoration:none}.btn-lg{padding:11px 16px;font-size:14px;line-height:18px;border-radius:4px}.btn-mini,.btn-sm{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.btn-mini,.btn-xs{padding:0 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-wide{min-width:120px}.btn-limit{max-width:180px;padding-right:20px;overflow:hidden;text-overflow:unset;white-space:nowrap}.btn-limit>.caret{position:absolute;top:14px;right:8px}.btn-circle{border-radius:17px}.btn>.label-icon{top:3px;padding:3px;margin:-2px;background-color:rgba(0,0,0,.2);border-radius:12px}.btn>.label-icon>.icon{font-size:16px;line-height:18px}.btn>.icon+.text{margin-left:5px}.btn.btn-sm.btn-circle{border-radius:12px}.btn.btn-sm>.label-icon{top:2px;width:20px;height:20px;padding:1px;line-height:20px}.btn.btn-sm>.label-icon>.icon{position:relative;top:-1px;display:inline-block;font-size:14px;line-height:18px}.btn-icon-left{position:relative;padding-left:35px;overflow:hidden;text-align:right}.btn-icon-left>.label-icon{position:absolute;left:5px;margin:0}.btn-icon-left>.icon{position:absolute;top:0;bottom:0;left:0;display:block;width:30px;line-height:30px;color:#18a6fd;text-align:center;background:#e6f0ff}.btn-icon-left.btn-sm{padding-left:28px}.btn-icon-left.btn-sm>.label-icon{left:2px}.btn-icon-left.btn-sm>.icon{width:24px;line-height:24px}.btn-icon-right{position:relative;padding-right:35px;text-align:left}.btn-icon-right>.label-icon{position:absolute;right:5px;margin:0}.btn-icon-right.btn-sm{padding-right:28px}.btn-icon-right.btn-sm>.label-icon{right:2px}.btn-icon{min-width:32px;padding-right:0;padding-left:0}.btn-icon.btn-sm{width:24px;min-width:24px;height:24px}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group>.btn-group{float:left}.btn-group>.btn{border-radius:0}.btn-group>.btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.btn-group>.btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.dropdown{float:left;margin-right:10px}.btn-toolbar>.btn-group:last-child,.btn-toolbar>.btn:last-child,.btn-toolbar>.dropdown:last-child{margin-right:0}.btn-toolbar>.divider{float:left;height:20px;margin:7px 5px 4px 10px;border-left:1px solid rgba(0,0,0,.1)}.btn-toolbar .space{float:left;min-height:1px;margin:0 10px 0 10px}.btn-toolbar .input-control{float:left;width:120px}.btn-toolbar .page-title{float:left;line-height:34px}.btn-toolbar .page-title .text{font-size:14px;font-weight:700}.btn-toolbar .page-title .label{top:-2px;margin-right:10px}.btn-toolbar .divider+.page-title{margin-left:15px}.btn-active-line{position:relative;font-weight:700;color:#2e7fff}.btn-active-line:after{position:absolute;right:5px;bottom:1px;left:5px;display:block;content:' ';border-bottom:2px solid #2e7fff}.btn-active-line:hover{color:#2e7fff}.btn-active-text .text{position:relative;top:-1px;display:inline-block;font-weight:700;color:#1e6aeb}.btn-active-text .text:after{position:absolute;bottom:-5px;display:block;width:100%;content:' ';border-bottom:2px solid #2e7fff}.angle-btn{position:relative;padding:1px;background:#fff;border:1px solid #c4c4c4;border-right:none}.angle-btn:first-child{border-radius:2px 0 0 2px}.btn-toolbar>.angle-btn{margin-right:8px}.angle-btn:after,.angle-btn:before{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #c4c4c4;border-style:solid;border-width:17px 0 17px 8px}.angle-btn:after{right:-7px;border-color:transparent transparent transparent #fff;border-radius:2px}.angle-btn .btn{padding:6px;font-weight:700;background:#fff;border:none;border-radius:4px!important}.angle-btn .btn.btn-limit{padding-right:16px}.angle-btn .btn.btn-limit>.caret{right:4px}.angle-btn+.angle-btn{border-left:none}.angle-btn+.angle-btn>.btn-group:first-child{padding-left:8px}.angle-btn+.angle-btn>.btn-group:first-child:after,.angle-btn+.angle-btn>.btn-group:first-child:before{position:absolute;top:-2px;left:0;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #c4c4c4;border-style:solid;border-width:17px 0 17px 8px}.angle-btn+.angle-btn>.btn-group:first-child:after{left:-1px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#2e7fff}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#2e7fff}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #2e7fff}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #2e7fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}.nav>li>.btn.btn-primary{color:#fff}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(46,127,255,.8)}.btn.btn-action,.c-actions .btn{display:inline-block;width:26px;padding:2px;overflow:hidden;line-height:20px;color:#18a6fd;background:0 0;border-color:transparent}.btn.btn-action>i,.c-actions .btn>i{position:relative;top:1px;font-size:18px}.btn.btn-action:hover,.c-actions .btn:hover{color:#2e7fff;background-color:#cce1ff}.c-actions .btn+.btn{margin-left:-4px}.label{position:relative;display:inline-block;padding:3px 5px;font-size:12px;font-weight:400;vertical-align:middle;border-radius:2px}.label+.label{margin-left:4px}.label-pale{background:#b3d1ff!important}.label-badge{border-radius:9px}.label-light{color:#3c4353;background-color:#ddd}.label-primary{background:#2e7fff!important}.label-gray{color:#878da0;background:#e8ebef}.label-outline.label-danger{color:#fc5959;background:#ffebeb;border-color:rgba(252,89,89,.25)}.label-outline.label-light{color:#838a9d;background:#f2f5fb;border-color:#e1e5ee}.label-primary.label-outline{background:#e6f0ff!important;border-color:rgba(46,127,255,.25)}.label-outline.label-success{background:#ecfff8;border-color:rgba(34,201,141,.25)}.label-outline.label-info{background:#e7f6ff;border-color:rgba(55,178,254,.25)}.label-outline.label-warning{background:#fff4ea;border-color:rgba(255,159,70,.25)}.label-dot{position:relative;top:-1px;padding:0;border-radius:50%}.label-dot+.status-text{display:inline-block;margin-left:5px}.label-icon{min-width:18px;padding:0;line-height:18px;border-radius:10px}.label-id{display:inline-block;min-width:30px;padding:0 5px;font-size:12px;line-height:16px;color:#838a9d;text-align:center;vertical-align:middle;background-color:transparent;border:1px solid #838a9d;border-radius:2px}.pri-1,.todo-pri-1{color:#fc5959}[class*=" status-"],[class^=status-]{color:#313c52}.status-changed,.status-delayed,.status-doing,.status-fail,.status-investigate{color:#fc5959}.status-changed>.label-dot,.status-delayed>.label-dot,.status-doing>.label-dot,.status-fail>.label-dot,.status-investigate>.label-dot{background-color:#fc5959}.status-wait{color:#838a9d}.status-wait>.label-dot{background-color:#7ec5ff}.status-unclosed{color:#838a9d}.status-unclosed>.label-dot{background-color:#2e7fff}.status-done,.status-normal,.status-pass,.status-resolved{color:#43a047}.status-done>.label-dot,.status-normal>.label-dot,.status-pass>.label-dot,.status-resolved>.label-dot{background-color:#22c98d}.status-postpone{color:#838a9d}.status-postpone>.label-dot{background-color:#fc5959}.status-blocked{position:relative;left:-5px;display:inline-block;padding:0 5px;line-height:20px;color:#313c52;background:0 0;border-radius:10px}.status-blocked>.label-dot{background-color:#ff9f46}.status-pause,.status-suspended{color:#ff9f46}.status-pause>.label-dot,.status-suspended>.label-dot{background-color:#ff9f46}.status-active.status-bug,.status-draft{color:#8166ee}.status-active.status-bug>.label-dot,.status-draft>.label-dot{background-color:#8166ee}.status-closed,.status-terminate{color:#838a9d}.status-closed>.label-dot,.status-terminate>.label-dot{background-color:#838a9d}.status-cancel{color:#838a9d}.status-cancel>.label-dot{background-color:#c4c4c4}.label-pri{display:inline-block;min-width:18px;max-width:100%;height:18px;padding:0 4px;overflow:hidden;font-size:12px;line-height:16px;color:#838a9d;text-align:center;text-overflow:clip;white-space:normal;vertical-align:middle;border:1px solid #838a9d;border-radius:10px}.label-pri-1,.label-selector>.label-pri[data-value="1"]{overflow:visible;color:#ff6f42;border-color:#ff6f42}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#f38f19;border-color:#f38f19}.label-pri-3,.label-selector>.label-pri[data-value="3"]{color:#37b2fe;border-color:#37b2fe}.label-pri-4,.label-selector>.label-pri[data-value="4"]{color:#22c98d;border-color:#22c98d}.label-pri-5,.label-selector>.label-pri[data-value="5"]{color:#838a9d;border-color:#838a9d}.label-pri-0,.label-selector>.label-pri.active[data-value="0"]{color:#d5d9df;border-color:#d5d9df}.label-severity{position:relative;display:inline-block;width:24px;height:20px;font-weight:bolder;text-align:center;vertical-align:middle}.label-severity:before{position:absolute;top:-3px;left:0;z-index:0;display:block;font-family:ZentaoIcon;font-size:14px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:inherit;text-transform:none;content:"\e973";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.label-severity:after{position:absolute;top:7px;left:0;z-index:1;display:block;width:24px;font-size:12px;line-height:12px;text-align:center;content:attr(data-severity)}.label-severity[data-severity],.label-severity[data-value]{color:#ccc}.label-severity[data-severity="0"],.label-severity[data-value="0"]{color:#ccc}.label-severity[data-severity="1"],.label-severity[data-value="1"]{color:#fb2b2b}.label-severity[data-severity="2"],.label-severity[data-value="2"]{color:#c92d79}.label-severity[data-severity="3"],.label-severity[data-value="3"]{color:#f48116}.label-severity[data-severity="4"],.label-severity[data-value="4"]{color:#ffba34}.label-severity[data-severity="5"],.label-severity[data-value="5"]{color:#9ea3b0}.label-severity-custom[data-severity]{color:#d5d9df}.label-severity-custom[data-severity="1"]{color:#c62828}.label-severity-custom[data-severity="2"]{color:#ff8f00}.label-severity-custom[data-severity="3"]{color:#fdd835}.label-severity-custom[data-severity="4"]{color:#cddc39}.label-severity-custom[data-severity="5"]{color:#8bc34a}.label-selector{padding:0 10px}.label-selector>.label{display:inline-block;min-width:24px;height:24px;padding:0 5px;font-size:14px;line-height:20px;text-align:center;cursor:pointer;background:0 0;border:2px solid #d5d9df;border-radius:15px}.label-selector>.label+.label{margin-left:10px}.label-selector>.label.empty{border-color:transparent}.label-selector>.label.label-severity{font-size:12px;line-height:28px;border-color:transparent}.label-selector>.label.label-severity:before{top:-2px;left:-2px}.label-selector>.label.label-severity:after{display:none}.label-selector>.label.label-severity.active{background:0 0;filter:none;-webkit-filter:none}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-top:2px}.ie .checkbox input[type=checkbox],.ie .checkbox-inline input[type=checkbox],.ie .radio input[type=radio],.ie .radio-inline input[type=radio]{margin-top:4px}.is-firefox .checkbox input[type=checkbox],.is-firefox .checkbox-inline input[type=checkbox],.is-firefox .radio input[type=radio],.is-firefox .radio-inline input[type=radio]{margin-top:3px}.checkbox-primary,.radio-primary{position:relative;display:block;vertical-align:middle}.checkbox-primary.inline-block,.radio-primary.inline-block{display:inline-block}.checkbox-primary.inline-block+.inline-block,.radio-primary.inline-block+.inline-block{margin-left:15px}.checkbox-primary>input,.radio-primary>input{position:absolute;top:0;left:0;z-index:3;width:100%;height:100%;margin:0;opacity:0}.checkbox-primary>label,.radio-primary>label{display:block;height:20px;padding-left:20px;margin:0;font-weight:400;line-height:20px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{position:absolute;top:3px;right:0;left:0;display:block;width:14px;height:14px;line-height:14px;text-align:center;content:' ';border-radius:3px}.checkbox-primary>label:after,.radio-primary>label:after{z-index:1;border:1px solid #d9dbe1;border-color:rgba(0,0,0,.15);-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before,.radio-primary>label:before{top:3px;z-index:2;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-weight:900;font-variant:normal;line-height:1;text-transform:none;content:"\e5ca";opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#22c98d;border-color:#22c98d;border-width:4px}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary input:indeterminate+label:before,.checkbox-primary.indeterminate>label:before,.radio-primary input:indeterminate+label:before,.radio-primary.indeterminate>label:before{top:9px;left:3px;width:8px;height:2px;content:' ';background-color:#a3a2bc;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#22c98d;-webkit-box-shadow:0 0 0 3px rgba(34,201,141,.2);box-shadow:0 0 0 3px rgba(34,201,141,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#22c98d}.checkbox-primary.checkbox-right>label,.radio-primary.checkbox-right>label{padding:0 30px 0 0}.checkbox-primary.checkbox-right>label:after,.checkbox-primary.checkbox-right>label:before,.radio-primary.checkbox-right>label:after,.radio-primary.checkbox-right>label:before{right:0;left:auto}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5!important;border-color:#bbb!important}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb!important}.radio-primary>label:after{border-radius:50%}.radio-primary>label:before{top:7px;left:6px;width:6px;height:6px;content:' ';border:none;border-radius:50%}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:transparent;border-color:#22c98d;border-width:2px}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#22c98d}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:transparent;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li>a{position:relative;border:none!important;border-radius:2px!important}.nav-tabs>li.active>a{font-weight:700;color:#313c52!important}.nav-tabs>li.active>a:before{position:absolute;right:0;bottom:-1px;left:0;display:block;height:2px;content:' ';background:#2e7fff}.nav-tabs-primary>li.active>a{color:#1e6aeb!important}.panel{position:relative;margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.panel-body{padding:20px}.panel-body.has-table{padding:10px}.panel-body.has-table .table{margin-bottom:0;table-layout:fixed}.panel-heading{padding:12px 48px 12px 20px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading+.panel-body{padding-top:0}.panel-title{font-size:14px;font-weight:700;line-height:20px}.panel-title .label{top:-1px}.panel-actions{position:absolute;top:0;right:0;padding:7px 8px}.panel:hover .panel-actions{z-index:10}.panel-actions>li>a{display:inline-block;min-width:30px;padding:0 5px;line-height:30px;color:#a6aab8;text-align:center;border-radius:4px}.panel-actions>li>a:hover{color:#313c52;text-decoration:initial;background-color:#f1f1f1}.panel-actions .btn-icon{color:#a6aab8}.panel-actions .btn.text-primary{color:#2e7fff}.panel .empty-tip{padding:30px 10px 50px;font-size:14px;color:#838a9d;text-align:center}.progress-text-left{position:relative;margin:7px 0;margin-left:35px;overflow:visible}.progress-text-left .progress-text{position:absolute;top:-7px;left:-35px;display:block;width:35px;height:20px;padding-right:5px;line-height:20px;color:#838a9d;text-align:right}.chart-color{width:20px}.chart-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.chart-row{margin-top:10px}.chart-row+.chart-row{padding-top:10px;border-top:1px solid #eee}.chart-wrapper{padding:10px 5px;background:#eee}.chart-wrapper>h4{margin:5px 0 10px}.table-wrapper{max-height:250px;overflow:auto}.table-wrapper .table{margin:0}.progress-pie{position:relative}.progress-pie canvas{display:block}.progress-pie .progress-info{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:25px;text-align:center}.progress-pie .progress-info>small{display:block;line-height:14px;color:#a6aab8}.progress-pie .progress-info>strong{display:block;font-size:36px;line-height:40px}.progress-pie .progress-info>strong>small{font-size:20px}.progress-pie-120 .progress-info{padding-top:30px}.progress-pie-120 .progress-info>small{line-height:18px}.progress-pie-50 .progress-info{padding-top:4px}.progress-pie-50 .progress-info>strong{font-size:20px;font-weight:400}.progress-pie-50 .progress-info>strong>small{font-size:14px}.progress-pie[data-value="100"] .progress-info>strong{-webkit-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);transform:scale(.7)}.progress-pie-24 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:24px;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.progress-pie-24[data-value="100"] .progress-info{-webkit-transform:scale(.8,1);-ms-transform:scale(.8,1);-o-transform:scale(.8,1);transform:scale(.8,1)}.progress-pie-26 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:26px;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.progress-pie-26[data-value="100"] .progress-info{-webkit-transform:scale(.8,1);-ms-transform:scale(.8,1);-o-transform:scale(.8,1);transform:scale(.8,1)}.status-bars{display:table;width:100%;height:140px;padding:5px;padding-top:50px;margin:0;overflow:hidden}.status-bars>li{position:relative;display:table-cell;text-align:center;vertical-align:bottom}.status-bars .bar{position:absolute;bottom:20px;left:50%;display:block;width:10px;margin-left:-5px;background:#2e7fff;border-radius:5px 5px 0 0}.status-bars .bar:after{position:absolute;right:-50px;bottom:0;left:-50px;display:block;height:1px;content:' ';background:#eee}.status-bars .title{font-size:12px;font-weight:400;color:#a6a8b6}.status-bars .value{position:relative;top:-20px;left:-20px;display:inline-block;width:50px;font-size:16px;font-weight:700;text-align:center}.status-bars-h{display:block;padding-right:50px;padding-left:60px;list-style:none}.status-bars-h>li{position:relative;height:40px;border-left:1px solid #eee}.status-bars-h .bar{position:relative;top:15px;display:block;height:10px;line-height:20px;background:#2e7fff;border-radius:0 5px 5px 0}.status-bars-h .title{position:absolute;top:-5px;left:-60px;width:60px;padding-right:10px;font-size:12px;color:#a6a8b6;text-align:right}.status-bars-h .value{position:absolute;top:-5px;right:-50px;display:block;width:40px;font-size:14px;font-weight:700;text-align:left;white-space:nowrap}.ring,[class*=" ring-"],[class^=ring-]{width:24px;height:24px;font-size:12px;line-height:24px;text-align:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACZAAAAAwCAMAAACyyT3hAAAAP1BMVEUAAAAAAAA5rm06sG87snE4q200o2o7sG86r244q2w6r244rWw7snA7sG86rG05rm07snA5qWw7sW86sG48s3ECZypFAAAAFHRSTlMACl2b8TkPtnsqj0fVv4Zt4RrIqxUkbyYAAA1gSURBVHja7NrbbtswEIRhmyJ1IiVS0v/+z9rCbeGkdZodNEnVdHmTxP4wmF1exLB9eXCu12tqLX39cTGcm78use2z5Msx19wLfunGpOZvSv4xh/798tt+dKPSZ+jGMNn9/pWnXp1X7f9e+ynf53Xv3r37j/bLyfq4/1u+n8T8VI8jLWY/hbEbSjT76+2ssH77zeyBJHooom9dkHzssuQ5wvau+YuWz141/87zMoTewP9kP+7d2/31ZPln82e7L/fuP9LnJPk+DDDb/TQvEaDc/1//vk9Yvrl7vmHa+ztk347BXwcA1UMRPXCIfq+b5Jm3d82PneY5guSHG1fmVfu/837m5N69e/fu3T89fRZ9bRTBpyMCLFa/zfG7CU98l1/M/+EBS/59PT//bfD9lCS/pbAeR7bnb1OqC7AI+QWAkiz5Kdd1B6BVLb8Fk891Poox/7bPUNcIwGHrM3YDAHu1zyv0yWHcjfNen++nWvsvANC5d6/468nyz+bPdl/u3es+NFbFjw1A8BGAPUv5xGFMz/382HcAsNy+W9Sb9/PwwbP4ra5J8WluQDb7qQ4Ayybl05nnrQVgSFafB4AyWfvPEaBT57X2Seu3ecX9HBfN75t79+7du/+sPnVBy++A1e6nHaAEsz9ufk7W/gUgrvmBP/pf/bYDtDlp+/x8j4du1XwBFsHvQMlW348NIJjz0yH5bbz1n7R5m71/bUAL2n5iMueHAYjZvXv37t1/Tp8bJMFPDYhCfgTa2Ft9aEDJ5vzUbvnbC3562GcI5j6vf3T43/h+hlnJnwFGs99WgGDPv/lq9yPQsjCv1mcT/aUDGEVf3bt37979v+DH1kk+RIiCrwCz0AeI82bvc8vvzT5HYP1NfnjQv3uL/d+f/X/8ljUfGiD4ChDsPkcgCX0iUMX8UfDDw/6Xl+fV+q8Awb373/rLyfLP5s92X+4/rQ8QFV+BmO0+AyTND0nqT1H6xFf715/zWe35l5fXf3/e/YtnGugUnxsQhD47sNl9Klp+ipq/DmL/ovXPAJN79+7du/9on5dV80An+BEoye4nYLhofu/tPgAtafO26RWfn/chv9F93YX7N/PTDoOSHzW/LVA2Ib9Am+y+34Es5DdYlHmB2Lt37969+4/1fYQs+KlB6e0+Acsm9CnQXTQfJ61PTMI+dyiv99me7pO3u6+7cf9mvj/Ikgc6xRfNXyIcgt8KLIoX+0/A4d69e/fu/8znoPkOBsH3O8Qk5C8wiH12xR9AFvwAUfEzREOf/Wmf6Q3v967cv52fNJ+BIPgg+gmogk/xmb9a+lex/+ze/WN/PVn+2fzZ7sv93/MVVsUHIAn+AKrgV4hK/gxsYv+q7Ycg+AxMFt/d+9vy/QXZP+RHCIrvoGyCr9B6wa/QNq3/ftHyye7df2HP3pbQBKIgihqGmzKA4P7/b02lTOX2EncSEky1z8uungPosYyPj/8Nv8Mk/HaHm/Adzk/AIvy1hUb4vkKR5y0yf33Nd+K89vo+Xfy/81Oj/FahmPwBRuH7CjeTX6GRfUp8fHx8/Fc/UpRvoBpf4L4ZL/MfsLvzUoxfgM6e1/V5vNjn9jl/eLV/FrL/2DcwS1+lZxN+9X3a+Pj4+Pgvvm9B5Q8wyvxV+K11+VdgMv2r810LRZ63MX1m6IwX+ep+eMr49/HL3ChfoTF+eD65r/q+wiTy+zus8fHf+8vJ8s/mz3a94n/im075FarxE7Sby2975+8mf5T9G9gvLp/O9Jf5nfHNcz6vzzMLWfyX1wiz8Ss8ZP5g/A32+Pj4+P/XP0D5GRbjC9xkfjF+l/lV9h9gtP2PnOfN9JntfMQPsCeN/3/9dmc2/gqtym+d74BrfHx8/P/q+xaM34CryZf+CnTCT9Ca/A7YnG+N71V/P89La/r7eZ5pIYj/x35aNuUH6IzfpZ+hiY+Pj38X35dF+Ql241eoxncwGD/K/EbmL8r7/En2X+X8J99/dveb+4L/EB//zX+Wo/EFVunH+Pj4+HfxI0zG3+BmfIHF+AaKzB/VeU+Wv8BwZJ/14P56IbvEx39+bdDIBa4YP8bHx8e/kS/QGb/DZPwDVuMXGGV+Y3yR+QM+X/py5HlvB/e3C1l8/Fe/TYZfJtjNGxoY4uN/8JeT5Z/Nn+16vbVf7kX5Ga7GV+iM32Ey/gHNkfnDyfJnWA+d58H9L+aB/4Tj43/Vb4DxHdT4+Pj4f+WhVb7CZnwrfYWr8Tt0xt9lfj1ZfoVJedvn4P5ZyOL/nn+wGN9DGx8fH/+vPKB8630f/0f9drI+ymchiz+vB5Q/4Qd6fHz8efxCycIU/5G9e9lRHAaAKEr7kZi8nIT7/986UlatWaWGCbjpYn1UKizAQU7sZr0vyOzb9QkUv8Ek+qT4u77ksYv5q5g/tZQv91F9g0ta9j/Loy8RZnv7795LlvYf4b/U/JgWccLur/xBH2EXfbw4v28pP8B8cZ9HgzfR27/Tj9utpZvK7e2f8W09tWdv/8S+aBmi4OWnPis8FF+gKD7o+VHM78X8QfGD3uch+qG1bQ7s3+sDbIqPUEVf7O2/+5a2vWhqHyx7+++vUbwAGsQJfhEnjAhB8UXPLy3l97BcOgF7Y2H7v3yBeuVGqcXe/oW+qaN77O2f8jF2it9hVPwE9eKjpYqYH0S/XJk/ieM5i+P5gLG1o3Ls/7PfllE9Gkj0u3r0jb39q3xbE6q9/Qs9pE7wd+BKn4FNyU8wCn4DsuKT5vPF49Phw+k/389Mm+IT3DWf5MOh7e1f5G/n1ywPaW//MR4eil9EP0AU83sxf1d8Ub3YJ4q+iONZYRDHZ7b/aX6GovgIVfG9kr8ffYbz+fb2z/nbTZnw7O2f8V9N9clV8hMEwW8JRsF3q5i/QlX676rX+mSgqPmKnyGr42n/dh/mRfEjTIoP0Kv53Vlfj/z1tA/29s/5039hDmdv/2s9pE7wBXolv+r5aRP8CIh+UvpHSFnwQXy/GeabmG//fj9DUPyk+Q0IYp+q+ATB3v4lvqkJz96+ZR+pip8gCH5bIUr5ot/hofgIRfAZWK58vzMUxfcw2F/hQ1D8ANMm+Aq9mt8JPsB0Mj8e+UIfe/vn/Olv5KHs7e3P+QC74gdY75onC34BRsFXSEqfCFOn+XUT/KDnk+0v8AGK4LcJouC7FQYlf4VF6b9DEb4vmfP97X+HX859fvT843Vq880D2dv/o7811udyv0AV/IjmK/AQfE6wKB4YxD5B8AGoYp9R8AsQ7f+0a287bsJQFIapTxxssA3/+z9rJVS1VVOmezeDOp1s7mI+LS1bxJZChH7WeAdkpXcKX4Gs8yHqPFXyfC4/jspNlG/+VbyTPD/6/G+X9EAyb9681Dun8SMcCh8D7Enu0wirpk/T+QyMGh90fgiwKPvs5oU+45PCH4DGeyjK/KDpv0Lpyv7z237mp+/jDmRBvvnX8YLn5y/yxd/gU5g3b/4enyF0uU8FWpT7vgIKf56JSe5jgNY1XtlnV+5XQOjmhf6AfVb4AkGR3wuMXe7nBrsiPwN7evf+3xN7AAR9zJt/yst3uPO+efPmb/LbmhXeAwofCzAp8kcgyn0qyj4NcHLflfkzr+494yz3DmhZ7mdgH3T5JSp91/lxeL/+GWC++HyZb/6lfL72+Yl80d8OztvmzYv8I/9gff5/H6DKfQ6ofARwCj+i61MAp+sfstw7gPrZfO4KDzQn9w5A4TMQZrmvQFDkT0DIuv5j1Hku87eH1aiC9TH/Yn678tsT+Vdn5uM98+bNfxDvwyT3KUBwcr/o9oe+BJVPZ76T529AyBf+8jz9bH6BJYn9BLDI8x3A1nX5VZ6fGzAp+yxJ6ZX9t+ufn6m/W5+3+pt/Oe+vnx99/tWxYOM2buOfanyGluU+AHuX+jQ1IERxfi5Ac1Lfz/wmzk9uBML8P/jNO7lfgSL3sQC73DuANiWpzwA+i/Pns//UxflNN1/XgFaTuE8D1sv8/OADMLrLfPPmn/JXO/qX3w+aN2/+P/X1iHK/AZM43xWAsQt9XE5/zEKftwBQoji/nfnpH/m41S72GQg+Cn1aAcZpluYvqPLjCFCqdL59B1jFfvAAYZH2j8r5dq+b77Bd+70/8nQAtOX3+ebNP+Wvd9zz+vWjefNaP3ywPuZFfqNluQcIm9DnndNPIh+nMQDQJL5HN/kVAJY/+TinJPX5OCYXhX4F1hrnPgh8LAAUaX5tnH6rWdTfNXX+yZeaRd4DELaaZetZdwBGf/N8Jyfz+Wp9/Buv8mF97G/e/JP+egt6vAbz5s2/is9J4QthEvsVIBxR5F2A0y9d4Avwzfv8Jw8g9gXk/gDkvtdd5xfuzfdB5d2Iyg9uvHe+PrzD+izxyueLfPPmn/OaLXoYzJv/az98sD7m39XHrPAe1pqEfgUI6zJL/AYAsNc/94mA3O+g8M43lc8+aPxcR+7M73VH5aei7cOd8011fW59Vve2f1wf8+bv84+vmsybN2/+Xfzc5b4fR43i/DWU0U9uFvlpb0HsU578WOR+iJNfFb4r85Nbjjvz58kfe1N4p+wf3Xbsyvmq+9+4Ps68+dv8V5yOdlOUBd3vAAAAAElFTkSuQmCC);background-position:0 0;-webkit-background-size:1224px 24px;background-size:1224px 24px}.ring>span,[class*=" ring-"]>span,[class^=ring-]>span{display:inline-block;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.messager{border-radius:4px;-webkit-box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1)}.messager-icon{vertical-align:middle}.messager-icon>.icon{font-size:24px}.messager-content{padding:18px 20px;font-size:18px;line-height:30px}.messager-content>.icon{font-size:28px;line-height:30px}.messager-actions{vertical-align:middle}.messagger-zt{color:#313c52;background-color:#fff!important}.messagger-zt .messager-icon>.icon{color:#2e7fff}.messagger-zt .messager-actions>.action{color:#838a9d}.messagger-zt.messager-success .messager-icon>.icon{color:#22c98d}.messagger-zt.messager-danger .messager-icon>.icon{color:#fc5959}.messagger-zt.messager-warning .messager-icon>.icon{color:#ff9f46}.messagger-zt.messager-info .messager-icon>.icon{color:#37b2fe}.tree{padding-left:0;overflow:hidden}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 15px;list-style:none}.tree li.heading{padding-left:5px;color:#313c52}.tree li>a{display:block;max-width:90%;padding:2px 6px;color:#313c52;word-break:break-all}.tree li>a:hover{color:#313c52}.tree li>a.tree-toggle:hover{background:0 0}.tree li.active>a{position:relative;font-weight:700;color:#2e7fff}.tree li>.list-toggle{position:absolute;top:1px;left:1px;z-index:10;width:20px;font-size:14px;line-height:22px;color:#cbd0db;text-align:center;cursor:pointer;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tree li>.list-toggle:before{content:"\f0da"}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#2e7fff}.tree li.has-active-item>.list-toggle{color:#313c52}.tree li.has-list.open>ul{display:block}.tree li.has-list.open>.list-toggle{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree li.has-list.open:before{position:absolute;top:16px;bottom:-5px;left:10px;display:block;content:' ';border-left:1px solid #d8d8d8}.tree-actions{display:inline-block;margin-left:5px;vertical-align:middle}.tree-actions a{display:inline-block;margin-left:5px;font-size:13px;opacity:.6}.tree-actions a:hover{opacity:1}.tree li>.module-name{color:#313c52;vertical-align:middle}.tree li>.module-name:hover{background-color:#f0f2f5}.tree li>.module-name:hover>a{color:#313c52}.treemap-node-fold-icon:before{position:relative;left:-4px;min-width:18px}.dropdown-menu{padding:5px 0;border-color:rgba(0,0,0,.1)}.dropdown-menu>li{padding:0 10px}.dropdown-menu>li>a{padding:2px 10px;margin:5px 0;border-radius:3px}.dropdown-menu>li>a>.icon{position:relative;left:-5px;opacity:.5}.dropdown-menu>li>a:hover>.icon{opacity:.8}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{position:relative;color:#fff;background-color:#18a6fd}.dropdown-menu>li.selected>a:after{position:absolute;top:2px;right:4px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:20px;text-transform:none;content:"\e5ca";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dropdown-menu>li.divider{margin:10px}.dropdown-submenu>a:after{margin-right:-5px}.dropdown-submenu>.dropdown-menu.pull-left{margin-left:-1px}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#e6f0ff}.dropdown-submenu:hover>a:after{border-left-color:#2e7fff}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager .btn{padding:3px 10px}.pager .btn .caret{opacity:.7}.pager>li>.pager-label{padding:2px;line-height:20px}.pager>li>.pager-item{min-width:20px;padding:1px;margin:2px 0;font-size:16px;line-height:20px;text-align:center;background:0 0;border-color:transparent}.pager>li>.pager-item:hover{background-color:rgba(0,0,0,.1)}.pager>li>.pager-item>.icon{position:relative;top:-1px}.pager>li>.btn:hover,.pager>li>a:hover{background:rgba(0,0,0,.1)}.pager>li.disabled>a.pager-item{background:0 0;border-color:transparent;opacity:.5}.pager>li.active>a{background-color:#18a6fd}.pager>li .btn-group .btn{padding:1px;margin:1px 0;border-radius:4px}.pager .dropdown-menu{width:200px}.pager .dropdown-menu>li{float:left;width:33.333333%}.modal-dialog{width:900px;max-width:1360px;border:none;border-radius:0;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.25);box-shadow:0 0 20px 0 rgba(0,0,0,.25)}.modal-dialog.modal-md{width:700px}.modal-dialog.modal-xs{width:400px}.modal-dialog.modal-sm{width:500px}.modal-dialog.modal-lg{width:1200px}.modal-dialog.modal-fullscreen{position:fixed;max-width:initial}.modal-header{padding:20px 0;margin:0 20px}.modal-header>.close{color:#838a9d;text-shadow:0 1px 0 rgba(255,255,255,.85);opacity:1}.modal-header>.close:hover{color:#0b0f18}.modal-footer{padding:20px 0;margin:0 20px}.modal-title{font-size:14px;font-weight:400;line-height:20px}.modal-actions{position:absolute;top:16px;right:16px}.modal-actions .divider{position:relative;top:5px;display:inline-block;width:0;height:20px;margin:0 10px;border-left:#eee 1px solid}.modal-actions>.dropdown{display:inline-block}.modal-body{padding:20px}.modal-iframe .modal-body>iframe{border-radius:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-3%);-ms-transform:translate(0,-3%);-o-transform:translate(0,-3%);transform:translate(0,-3%)}.modal.fade.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-simple .modal-footer{padding-top:0;border-top:none}.modal-iframe .modal-header{position:relative;z-index:10;min-height:0;padding:0;border:none}.modal-iframe .modal-title{display:none}.modal-iframe .modal-header .close{position:absolute;top:12px;right:10px;font-size:32px;font-weight:200}.modal-iframe .modal-dialog{overflow:hidden}.modal-inverse .modal-header>.close{color:rgba(255,255,255,.7);text-shadow:none}.modal-inverse .modal-header>.close:hover{color:#fff}.modal-scroll-inside>.modal-dialog{max-height:100%}.hide-modal-close .modal-iframe .modal-header .close{display:none}.tile{text-align:center}.tile-title{line-height:20px;color:#313c52}.tile-amount{font-size:32px;font-weight:700;line-height:56px}.timeline>li{position:relative;list-style:none}.timeline>li:before,.timeline>li>a:after,.timeline>li>div:after{position:absolute;left:-20px;display:block;width:15px;height:15px;content:' ';border-radius:50%}.timeline>li:before{top:12px;left:-16px;z-index:3;width:7px;height:7px;background-color:#c4c4c4;border:none;border:1px solid #c4c4c4}.timeline>li>a:after,.timeline>li>div:after{top:11px;left:-17px;z-index:3;width:9px;height:9px;background-color:#2e7fff;border-radius:50%;opacity:0}.timeline>li+li:after{position:absolute;top:-12px;bottom:20px;left:-13px;z-index:1;display:block;content:' ';border-left:1px solid #eee}.timeline>li.active>a:after,.timeline>li.active>div:after{opacity:1}.timeline>li.active:before{top:8px;left:-20px;width:15px;height:15px;background-color:rgba(46,127,255,.2);border:none}.timeline>li>a,.timeline>li>div{display:block;padding:5px;line-height:20px}.timeline>li.active>a{color:#313c52}.timeline-tag{position:absolute;top:5px;left:-115px;font-size:12px}.timeline-tag-left{padding-left:115px}.timeline-sm{font-size:12px}.timeline-sm>li:before,.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:10px;left:-20px;width:11px;height:11px}.timeline-sm>li.active:before,.timeline-sm>li:before{top:10px;left:-18px;width:11px;height:11px;background:0 0;border:1px solid #eee}.timeline-sm>li>a,.timeline-sm>li>div{line-height:20px}.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:13px;left:-15px;width:5px;height:5px}.form-control{-webkit-box-shadow:none;box-shadow:none}.form-horizontal .form-group>label{padding-right:0}.form-actions{margin-top:20px;margin-bottom:0}.form-actions .btn{margin-right:10px}form label{font-weight:400;color:#313c52}.form-group .btn+.btn{margin-left:5px}.table-form{margin-bottom:0;table-layout:fixed}.table-form>thead>tr>th.required:after{position:relative;top:3px;right:auto;left:4px;display:inline-block;vertical-align:middle}.table-form>tbody>tr>td,.table-form>tbody>tr>th,.table-form>tfoot>tr>td,.table-form>thead>tr>th{padding:7px;vertical-align:middle;border-bottom:none}.table-form>tfoot>tr>td{padding:20px 7px 10px}.table-form>tbody>tr>th{width:100px;font-weight:700;text-align:right}.table-form .input-group{width:100%}.chosen-container-single .chosen-single{position:relative}.chosen-container-single .chosen-single>span{height:20px;line-height:20px;word-break:break-all;white-space:normal}.chosen-container-single .chosen-single div b{position:relative;top:1px;color:#cbd0db;opacity:1}.chosen-container-single .chosen-search:before{top:8px;right:15px}.chosen-container-multi .chosen-choices li.search-choice{font-size:13px;background:#eee;border-color:#cbd0db;-webkit-box-shadow:none;box-shadow:none}.chosen-container-single .chosen-search input[type=text]{height:30px;padding:3px 25px 3px 5px}.chosen-container-single .chosen-search{padding:3px 10px 0}.chosen-container-single .chosen-single{overflow:visible}.chosen-container .chosen-results{max-height:245px;padding:10px}.chosen-container .chosen-results>li{border-radius:4px}.chosen-container .chosen-results li.highlighted em{color:#fff}.table-responsive .chosen-container .chosen-results{max-height:200px}.picker>.picker-selections>.picker-selection{text-overflow:unset;white-space:unset!important}.picker>.picker-selections>.picker-selection>.picker-selection-text{word-break:break-word}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li,.picker-drop-menu>.picker-option-list>.picker-option{text-overflow:unset;white-space:unset!important}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{top:-2px;right:-1px;bottom:-1px;left:-1px;display:none;height:auto;padding:0;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:31px;padding:5px 26px 5px 8px;font-size:inherit;line-height:20px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{right:8px}.datetimepicker{padding:10px}.datetimepicker td.day.today{background-color:#fc7272}.datetimepicker td.day.active{background-color:#18a6fd}.datetimepicker tfoot th,.datetimepicker thead th{color:#838a9d}.input-control .colorpicker{top:0;z-index:auto;opacity:1}.input-control .colorpicker .btn{padding:5px}.input-control .input-control-icon-right.btn{top:0}.colorpicker .dropdown-menu{min-width:232px;padding:5px 10px 10px 10px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:5px}.colorpicker .dropdown-menu>li.heading{width:100%;margin-bottom:5px;font-size:16px;font-weight:700;text-align:left}.colorpicker .dropdown-menu>li.heading>.icon-close{position:relative;top:4px;float:right;cursor:pointer;opacity:.6}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;margin:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:50%;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:0;display:block;width:100%;height:20px;line-height:18px}.colorpicker .dropdown-menu>li>a:hover{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{font-size:14px;content:"\e5ca"}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#fff}.colorpicker .dropdown-menu>li>a.empty:before{content:"\e90d"}.colorpicker .btn{position:relative}.colorpicker .btn .color-bar{position:absolute;right:5px;bottom:3px;left:5px;height:3px}.colorpicker .btn .color-bar[style*='background: ']+.ic{position:relative;top:-2px}.colorpicker .btn .ic{color:#cbd0db}.colorpicker .btn:hover .ic{color:#838a9d}.input-group .colorpicker{z-index:3}.input-group .chosen-container{display:table-cell}.input-group-addon{border-right-width:0;border-left-width:0}.input-group-addon:first-child{border-left-width:1px}.input-group-addon:last-child{border-right-width:1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin:0}.input-group-cell{display:table-cell;width:1%;padding:0 12px;white-space:nowrap;vertical-align:middle}.ke-container{border-color:#dcdcdc!important;border-radius:2px!important}.ke-container.focus{border-color:#2e7fff!important}.ke-toolbar{border-color:#dcdcdc!important}.required:after{top:6px;right:-10px;font-size:20px}td.required:after{top:12px;right:-5px}.input-group>.chosen-container.required:after,.input-group>.input-control.required:after{top:1px;right:1px;z-index:2}.input-group.required .required:after{display:none}.file-input{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-input .input-group{width:auto}.file-input .input-group>.input-group-cell:first-child{padding-right:0;padding-left:7px}.file-input input[type=file]{position:absolute;width:0;height:0;opacity:0}.file-input .file-title{display:inline-block;max-width:400px;overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}.file-input .file-editbox{min-width:200px;max-width:100%}.file-input .file-size{display:inline-block;vertical-align:middle}.edit .file-input-empty,.file-input-edit,.file-input-normal,.normal .file-input-empty{display:none}.edit .file-input-edit,.normal .file-input-normal{display:block}.edit .file-input-edit.input-group,.normal .file-input-normal.input-group{display:table}.edit .file-input-normal{display:none!important}.file-input-normal>.input-group-btn{width:auto}.input-group .chosen-container-active .chosen-choices{border-color:#2e7fff!important}.input-group .chosen-container{min-width:100px}.input-group .input-group-btn .btn>.icon{line-height:17px}.os-mac select.form-control{-webkit-appearance:none;background-image:url(data:image/gif;base64,R0lGODlhCQAFAIAAAMvQ2////yH5BAEAAAEALAAAAAAJAAUAAAIKhH+BGYoNGWxgFgA7);background-image:url(data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==);background-repeat:no-repeat;background-position:right 5px top 12px;-moz-appearance:none}input::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none!important;pointer-events:none;visibility:hidden}.chosen-choices.has-error,.chosen-single.has-error,.form-control.has-error{border-color:#fc5959!important;-webkit-box-shadow:0 0 6px #febdbd!important;box-shadow:0 0 6px #febdbd!important}.popover-success.popover-form-result{font-weight:700;color:#fff;background:#22c98d}.popover-success.popover-form-result.popover.right .arrow:after{border-right-color:#22c98d}textarea.kindeditor{padding:0!important}.form-unsaved{outline:2px solid #ff9f46;-webkit-box-shadow:0 1px 12px #ff9f46;box-shadow:0 1px 12px #ff9f46;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}select[multiple].picker-select,select[multiple][data-toggle=picker]{max-height:32px;visibility:hidden}.picker-selection-remove:before{font-size:18px}.picker-user-option{position:relative;padding-left:40px}.picker-user-option>.avatar{position:absolute;top:5px;left:10px}.picker-user-option>.picker-option-text{display:inline-block;min-width:40px;font-weight:700}.picker-user-option>.dept-name,.picker-user-option>.role-name{display:inline-block;margin-left:10px;font-size:12px;opacity:.6}.picker-user-option>.dept-name{min-width:50px}#mainHeader{height:50px;color:#fff;background:#3785ff;border-top-color:#2e7fff;border-bottom-color:#e6f0ff}#mainHeader>.container{min-width:1200px;padding:0}#heading{position:absolute;top:10px;left:20px}@media (min-width:1400px){#heading{left:40px}}#heading h1{float:left;max-width:250px;margin:0;overflow:hidden;font-size:20px;font-weight:400;line-height:30px;text-overflow:unset;white-space:nowrap}#heading h1 a{color:inherit;text-decoration:inherit}#heading h1.long-name{position:relative;top:-5px;display:table-cell;font-size:16px;line-height:20px;word-break:break-all;white-space:normal}#heading>.btn{display:block;float:left;height:20px;padding:1px 5px;margin:0;margin:5px 0 0 10px;font-size:12px;font-weight:lighter;line-height:18px;background-color:rgba(255,255,255,.2);border:none}#heading>.btn:hover{background-color:rgba(0,0,0,.1)}#navbar{margin:0 auto;text-align:center}#navbar .nav{display:inline-block}#navbar .nav>li>a{padding:10px;line-height:30px;color:#fff;border-radius:0;opacity:.9}@media (max-width:1400px){#navbar .nav>li>a{padding:10px 8px}}#navbar .nav>li>a:focus,#navbar .nav>li>a:hover{background:rgba(0,0,0,.15);opacity:1}#navbar .nav>li.active>a{font-weight:700;background:rgba(0,0,0,.1);opacity:1}#navbar .nav>li.divider{display:block;width:2px;height:20px;margin:15px 8px;background:rgba(255,255,255,.4)}@media (max-width:1400px){#navbar .nav>li.divider{margin:15px 5px}}@media (max-width:1300px){#navbar .nav>li.divider{margin:15px 3px}}#navbar .nav>li.divider:last-child{display:none}#navbar .nav .dropdown-menu li>a{text-align:left}#toolbar{position:absolute;top:12px;right:20px;font-size:12px;color:#fff}@media (min-width:1400px){#toolbar{right:40px}}#extraNav{text-align:right}#extraNav>li{display:inline-block;float:none;text-align:left}#extraNav>li>a{display:block;padding:0;color:#fff;opacity:.75}#extraNav>li>a:hover{text-decoration:unset;background-color:rgba(0,0,0,.1);opacity:1}#extraNav>li.open>a{background-color:rgba(0,0,0,.1)}#extraNav>li+li{margin-left:10px}#showSearchGo{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.5)}#searchbox{position:relative;float:left;width:150px}#searchbox .input-group-btn .btn{position:relative;padding:1px 4px;font-size:12px;line-height:20px;color:#fff;background-color:rgba(255,255,255,.15);border-right:none;border-radius:2px}#searchbox .input-group-btn .btn:after{position:absolute;top:3px;right:0;bottom:3px;display:block;width:1px;content:' ';background-color:rgba(255,255,255,.15)}#searchbox .input-group-btn .btn:hover{background-color:rgba(255,255,255,.25)}#searchGo{position:absolute;top:0;right:-1px;z-index:9;min-width:24px;height:24px;padding:2px 3px;font-size:12px;line-height:20px;color:#fff;background-color:#18a6fd;border-radius:2px}#searchGo:hover{color:#fff!important;background-color:#2e7fff}#searchInput{height:24px;padding:2px 30px 2px 5px;color:#fff;text-align:left;background:rgba(255,255,255,.15);border-color:transparent;border-radius:0 12px 12px 0;-webkit-transition:background .2s,border .2s;-o-transition:background .2s,border .2s;transition:background .2s,border .2s}#searchInput:hover{background:rgba(255,255,255,.25)}#searchInput:focus{color:#333;background:#fff}#searchInput::-webkit-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::-moz-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:-ms-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:focus::-webkit-input-placeholder{color:#838a9d}#searchInput:focus::-moz-placeholder{color:#838a9d}#searchInput:focus:-ms-input-placeholder{color:#838a9d}#searchInput:focus::placeholder{color:#838a9d}#searchTypeMenu{min-width:220px}#searchTypeMenu>li{float:left;width:50%}#searchTypeMenu>li>a{margin:4px 0}#userNav .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;line-height:20px;color:#fff;opacity:.9}#userNav>li>a .user-name{max-width:100px;overflow:hidden;font-size:15px;text-overflow:unset;white-space:nowrap}#userNav>li>a:hover{background-color:rgba(0,0,0,.1);opacity:1}#userNav>li>a:hover>i{opacity:1}#userNav>li>a span{vertical-align:middle}#userNav>li.open>a{background-color:rgba(0,0,0,.1)}#userNav>li.has-new-items>a{position:relative}#userNav>li.has-new-items>a:before{position:absolute;top:3px;right:-1px;display:block;width:4px;height:4px;content:' ';background-color:#fc5959;border-radius:50%}#userNav .dropdown-menu{min-width:150px}#userNav .dropdown-menu>li>a>.icon{position:absolute;top:10px;right:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center}#userNav .user-profile-item>a{position:relative;padding-left:45px}#userNav .user-profile-item .avatar{position:absolute;top:6px;left:5px}#userNav .user-profile-name{font-size:16px}#userNav .user-profile-role{font-size:12px;color:#a9abb8}#userNav .no-role .user-profile-role{display:none}#userNav .no-role .user-profile-name{line-height:40px}#subHeader{min-height:50px;background:#fff}#subHeader>.container{padding:0 20px}@media (min-width:1400px){#subHeader>.container{padding:0 40px}}#pageNav{position:absolute;top:8px;left:0;left:20px}@media (min-width:1400px){#pageNav{left:40px}}#subNavbar{margin-top:5px;font-size:13px;text-align:center}#subNavbar .nav{display:inline-block}#subNavbar .nav>li>a{padding:8px 12px;line-height:24px;color:#313c52}#subNavbar .nav>li>a:hover{color:#313c52;background-color:rgba(0,0,0,.075)}#subNavbar .nav>li.active>a{font-weight:700;color:#2e7fff}#subNavbar .nav>li.divider{display:block;width:2px;height:20px;margin:9px 5px;background-color:rgba(0,0,0,.05)}#subNavbar .dropdown-menu{text-align:left}[lang=en] #subNavbar>.nav>li>a{padding-right:8px;padding-left:8px}#pageActions{position:absolute;top:9px;right:20px}@media (min-width:1400px){#pageActions{right:40px}}.cell{padding:10px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.cell+.cell{margin-top:10px}.cell>.panel{margin:0;-webkit-box-shadow:none;box-shadow:none}.cell>.panel>.panel-heading{padding:5px 5px 10px}.cell>.panel>.panel-heading .panel-actions{padding:0}.cell>.panel>.panel-body{padding:5px}.cell>.table{margin:0}#main{min-width:1200px;padding:20px 0}#main>.container{padding:0 20px}@media (min-width:1400px){#main>.container{padding:0 40px}}#header,#header+#main{min-width:1200px}#mainMenu{margin:-10px 0 8px}.main-content{padding:20px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}@media (min-width:1400px){.main-content>.center-block{max-width:1350px;padding:20px;border:1px solid #eee}.main-content>.center-block .main-header{background-color:#f1f1f1}}.main-content>h2{margin:0 0 20px}.main-content .cell{-webkit-box-shadow:none;box-shadow:none}.main-header{padding:5px 20px;border-bottom:1px solid #eee}.main-header:after,.main-header:before{display:table;content:" "}.main-header:after{clear:both}.main-header>h2{display:block;float:left;margin:0 10px 0 0;font-size:14px;line-height:34px}.main-header>h2 .label-id{margin-right:5px}.main-header>h2 small{font-size:14px;font-weight:400}.main-content .main-header{margin:-20px -20px 10px}.main-header .label{top:-1px}.main-row{display:table;width:100%;table-layout:fixed}.main-row>[class*=" col-"],.main-row>[class*="-col"],.main-row>[class^=col-]{display:table-cell;vertical-align:top}@media (max-width:720px){.main-row{display:block}.main-row>*{display:block;width:100%}.main-row .side-col{width:100%;padding:0}.main-row .main-col+.side-col,.main-row .side-col+.main-col{margin-top:10px}}.main-row.hide-side .side-col{display:none}.main-form{margin:0}@media (min-width:720px){.main-content>.center-block .main-form{padding-right:20px}}#main .side-col .tabs{padding:5px}#main .side-col .nav-tabs{margin:0 5px 5px 5px}#main .side-col .nav-tabs>li{margin:0}#main .side-col .nav-tabs>li+li{margin-left:10px}#main .side-col .nav-tabs>li>a{padding:8px 5px}#main .side-col .tab-content .tab-pane table{border:none}.main-actions .btn-toolbar{display:inline-block;padding:4px 15px;color:#fff;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);border-radius:4px}.main-actions .btn-toolbar .divider{margin-right:15px;margin-left:15px;border-color:rgba(255,255,255,.1)}.main-actions .btn-toolbar .btn{height:30px;padding-right:10px;padding-left:10px;margin-right:0;color:#fff;background-color:transparent;border:none}.main-actions .btn-toolbar .btn+.btn{margin-left:10px}.main-actions .btn-toolbar .btn:focus,.main-actions .btn-toolbar .btn:hover{background-color:rgba(255,255,255,.2)}.main-actions .btn-toolbar .btn.btn-icon{min-width:32px;padding-right:0;padding-left:0}.main-actions .btn-toolbar .btn+.btn-group{margin-right:0;margin-left:10px}#mainContent .main-col>.main-actions{padding:30px 0 0 0;text-align:center}#mainContent .main-col>.main-actions>.btn-toolbar{visibility:visible;opacity:1;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}#mainActions{position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;pointer-events:none}#mainActions .btn-toolbar{position:relative;top:-90px}#mainActions .dropdown-menu{text-align:left}#mainActions>.container{height:100%}.main-actions-holder{display:none}.main-actions-fixed .main-actions-holder{display:block}.main-actions-fixed #mainContent .main-col>.main-actions{position:fixed;bottom:10px}.main-actions-fixed.body-modal #mainContent .main-col>.main-actions{bottom:20px}#nextPage,#prevPage{position:absolute;top:50%;left:-10px;width:40px;height:60px;padding:10px 0;margin-top:-30px;line-height:40px;color:#fff;text-align:center;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.05);box-shadow:0 2px 15px 2px rgba(0,0,0,.05)}#nextPage:hover,#prevPage:hover{-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.15);box-shadow:0 2px 15px 2px rgba(0,0,0,.15)}#nextPage>i,#prevPage>i{display:block;font-size:18px;line-height:36px}#nextPage{right:-10px;left:auto}@media (max-width:1800px){#prevPage{left:-3px}#nextPage{right:-3px}}#sidebarHeader{position:relative;float:left;width:180px;height:34px;padding-right:20px;margin-right:20px;background:#fff;border-left:4px solid #2e7fff;border-radius:4px 2px 2px 4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#sidebarHeader:after{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #fff;border-style:solid;border-width:18px 0 18px 8px}#sidebarHeader .title{padding:0 5px;overflow:hidden;font-size:14px;font-weight:700;line-height:32px;color:#2e7fff;text-align:center;text-overflow:unset;white-space:nowrap}#sidebarHeader .title>a{position:absolute;top:0;right:0;width:20px;opacity:.5}#sidebarHeader .title>a:hover{opacity:1}#sidebar{position:relative;-webkit-transition:width .2s,padding .2s;-o-transition:width .2s,padding .2s;transition:width .2s,padding .2s}#sidebar>.sidebar-toggle{position:absolute;top:0;right:5px;bottom:0;width:10px;cursor:pointer;background:0 0;border-radius:5px;-webkit-transition:background-color .2s,opacity .5s;-o-transition:background-color .2s,opacity .5s;transition:background-color .2s,opacity .5s}#sidebar>.sidebar-toggle>.icon{position:absolute;top:50%;left:-1px;width:12px;height:30px;margin-top:-10px;line-height:30px;color:#fff;text-align:center;background:#7dcdfe;border-radius:6px}#sidebar>.sidebar-toggle>.icon:before{position:relative;left:-1px}#sidebar>.sidebar-toggle:before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;display:block;content:' '}#sidebar>.sidebar-toggle:hover{background:rgba(0,0,0,.075)}#sidebar>.cell{position:relative;left:0;width:180px;-webkit-transition:left .2s,opacity .2s;-o-transition:left .2s,opacity .2s;transition:left .2s,opacity .2s}#sidebar.no-animate>.cell{display:none;-webkit-transition:none;-o-transition:none;transition:none}.hide-sidebar #sidebar>.cell{position:absolute;left:-200px;visibility:hidden;opacity:0}.hide-sidebar #sidebar{position:relative;width:0;padding:0}.hide-sidebar #sidebar>.sidebar-toggle>.icon:before{content:"\e315"}@media (max-width:720px){#sidebar>.cell{width:100%}}#queryBox{max-height:0;padding:0;overflow:hidden;-webkit-transition:cubic-bezier(.175,.885,.32,1) .2s;-o-transition:cubic-bezier(.175,.885,.32,1) .2s;transition:cubic-bezier(.175,.885,.32,1) .2s;-webkit-transition-property:padding,max-height,margin;-o-transition-property:padding,max-height,margin;transition-property:padding,max-height,margin}#queryBox>form{visibility:hidden;-webkit-transition:visibility .2s .2s;-o-transition:visibility .2s .2s;transition:visibility .2s .2s}#queryBox.loading{height:50px}#queryBox.show{min-height:110px;max-height:300px;margin-bottom:10px;overflow:visible}#queryBox.show>form{visibility:visible}#queryBox.divider{border-bottom:1px solid #eee}#main .querybox-toggle.querybox-opened{position:relative;color:#2e7fff;background:0 0;border:none}#main .querybox-toggle.querybox-opened:before{position:absolute;bottom:-14px;left:50%;width:0;height:0;content:' ';border-color:transparent transparent #fff transparent;border-style:solid;border-width:0 10px 10px 10px}#contentNav{padding:5px;background:#fff;border-bottom:1px solid #eee}#contentNav .nav>li>a{position:relative;padding:6px 10px;color:#838a9d}#contentNav .nav>li.active>a{font-weight:700;color:#2e7fff}#contentNav .nav>li.active>a:before{position:absolute;right:10px;bottom:3px;left:10px;display:block;height:2px;content:' ';background:#2e7fff}.body-modal{padding-bottom:0}.body-modal #main,.body-modal .container{min-width:0!important}.body-modal #main{padding:0}.body-modal .main-header{position:fixed;top:0;right:20px;left:20px;z-index:100;padding:13px 48px 13px 0;margin:0;background:#fff}.body-modal #mainContent{padding-top:70px}.body-modal .main-header>h2{max-width:100%;overflow:hidden;font-size:14px;text-overflow:unset;white-space:nowrap}.body-modal .cell,.body-modal .main-content{-webkit-box-shadow:none;box-shadow:none}.body-modal #mainMenu{position:fixed;top:0;right:0;left:0;z-index:100;padding:12px 60px 12px 10px;margin:0;background:#fff}.body-modal #mainMenu>.btn-toolbar.pull-left.divider{display:none}.body-modal #mainMenu>.btn-toolbar{width:100%;margin-left:20px}.body-modal #mainMenu>.btn-toolbar>.divider:first-child{display:none}.body-modal #mainMenu>.btn-toolbar .page-title{width:100%;margin-left:0}.body-modal #mainMenu>.btn-toolbar .page-title>.text{position:relative;top:-2px;display:inline-block;max-width:85%;max-width:-webkit-calc(100% - 100px);max-width:calc(100% - 100px);overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}.body-modal #mainMenu+#mainContent.main-row{padding:60px 10px 0}.body-modal #mainMenu+#mainContent.main-row .cell{border:1px solid #efefef;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.body-modal #mainActions{top:auto}.body-modal #mainActions .btn-toolbar{top:auto;bottom:10px}.body-modal.m-bug-view,.body-modal.m-story-view,.body-modal.m-task-view,.body-modal.m-testcase-view,.body-modal.m-testtask-view,.body-modal.m-todo-view{padding-bottom:20px;border-radius:3px}#tabsNav{position:relative}#tabsNav .tab-pane>.actions{position:absolute;top:-8px;right:0}#tabsNav .tab-pane>.cell,#tabsNav .tab-pane>.main-table{padding:0;border:1px solid #c4c4c4;border-top:none;border-radius:0 0 4px 4px}#tabsNav .tab-pane>.cell .detail-title{padding-left:5px}#helpContent{position:fixed;top:50px;right:0;bottom:40px;left:0;display:none;background-color:#fff}#helpContent .load-error{display:none;padding:20px}#helpContent .show-error .load-error{display:block}#mainMenu>.btn-toobar .btn-link .label-light,#mainMenu>.btn-toolBar .btn-link .label-light,#mainMenu>.btn-toolbar .btn-link .label-light{color:#313c52;background:#fff}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#1e6aeb;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}#menu{background:#415a72}#userNav>li>a>.icon{color:#fff;filter:none;opacity:.25;-webkit-filter:none}.picker-option.picker-option-active,.picker-single .picker-option.picker-option-selected.picker-option-active{background:#2e7fff}select.form-control option.selected,select.form-control option:hover{background:#2e7fff}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#2e7fff}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#3785ff}#assigntomeBlock .nav>li.active>a{color:#1e6aeb}.consumedTotally{color:#2e7fff;background:#e6f0ff}#toggleFoldIcon .icon-border{border:1px solid #d5e5ff}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#2e7fff}.text-middle td,.text-middle th{vertical-align:middle}.text-center td,.text-center th{text-align:center}.c-sm{width:40px}.c-id{width:90px}.c-id-sm{width:70px}.c-id-xs{width:55px}.c-date{width:100px}.c-num,.c-pri,.c-type{width:80px;overflow:hidden}.c-begin,.c-end,.c-time{width:65px}.c-hours{width:60px}.c-actions-1{width:50px}.c-actions-2{width:75px}.c-actions-3{width:102px}.c-actions,.c-actions-4{width:128px}.c-actions-5{width:155px}.c-actions-6{width:180px}.c-product,.c-project{width:180px}.c-plan{width:130px}.c-datetime{width:120px}.c-stage,.c-status,.c-user{width:80px}.c-side{width:200px;border-right:10px solid #efefef}.c-assign,.c-assignedTo,.c-openedBy{width:130px}.c-progress{width:155px}.c-assign,.c-assignedTo,.c-openedBy,.c-product,.c-project,.c-status,.c-url,.c-user{overflow:hidden;text-overflow:unset;white-space:nowrap}.assigned-none{color:#1e6aeb!important;background:inherit}.assigned-current{color:#f38f19!important;background:inherit}.assigned-other{color:#313c52!important;background:inherit}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#1e6aeb!important;background:#fff;border-color:#fff!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#1e6aeb!important}td.c-name,td.c-title{overflow:hidden;text-align:left!important;text-overflow:unset;white-space:nowrap}td.c-actions{position:relative;padding-top:0;padding-bottom:0;overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#2e7fff;background:#e6f0ff}td.c-actions .btn.disabled,td.c-actions .btn[disabled]{pointer-events:auto}td.c-actions .more{position:absolute;top:50%;right:100%;display:none;padding-right:4px;padding-left:20px;margin-top:-15px;margin-right:-6px;white-space:nowrap;background-color:#fafafa;-webkit-transition:opacity .3s,margin .3s;-o-transition:opacity .3s,margin .3s;transition:opacity .3s,margin .3s}tr:hover td.c-actions .more{display:block}td:hover+td.c-actions>.more{margin-right:-15px;pointer-events:none;opacity:.15}tr[data-url]{cursor:pointer}.table tbody>tr>td,.table thead>tr>th{vertical-align:middle}.table tbody>tr>td.has-btn,.table thead>tr>th.has-btn{padding-top:1px;padding-bottom:1px;overflow:visible}.table tbody>tr>td .progress,.table thead>tr>th .progress{height:6px}.table .em,.table em{color:#313c52}.table .divider{border-bottom:10px solid #efefef}.table .divider-top{border-top:10px solid #efefef}.table .btn-icon-left{max-width:100%;padding-left:20px;overflow:hidden;line-height:18px;text-align:left;text-overflow:unset;background:0 0;border-color:#eaf3fc}.table .btn-icon-left>.icon{width:20px;font-size:14px;background:0 0!important;opacity:0}.table .btn-icon-left.btn-sm{height:26px;font-size:13px}.table .btn-icon-left:active,.table .btn-icon-left:focus,.table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.table .btn-icon-left:active>.icon,.table .btn-icon-left:focus>.icon,.table .btn-icon-left:hover>.icon{opacity:1}.table .btn-icon-left>.text{padding-left:25px}.table thead>tr>th.c-assign,.table thead>tr>th.c-assignedTo{padding-left:29px}.table a{vertical-align:middle}.table caption{margin-bottom:5px;background:#f1f1f1;border:none}.is-firefox .table .btn-icon-left>.icon{line-height:22px}.table tbody>tr>td.c-name a{color:#2463c7}.table tbody>tr>td.c-name a:hover{color:#1e6aeb}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}.main-table{border-radius:4px}.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.main-table .table{font-size:13px;table-layout:fixed;background-color:#fff;border-radius:4px 4px 0 0}.main-table .table.table-lg{font-size:14px}.main-table .table .btn-icon-left{border-color:transparent}.main-table .table .btn-icon-left>.icon{background:0 0;border-radius:4px}.main-table .table .btn-icon-left.btn-sm{height:26px}.main-table .table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.main-table .table .btn-icon-left:hover>.icon{background:#e6f0ff;border-radius:4px 0 0 4px}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:2px 8px;line-height:30px}.main-table tbody>tr>td:first-child,.main-table thead>tr>th:first-child{padding-right:4px;padding-left:15px}.main-table thead>tr>th{overflow:hidden;text-overflow:unset;white-space:nowrap}.main-table td,.main-table th{border-bottom:none!important}.main-table thead>tr{background:#fcfdfe;border-bottom:1px solid #f4f5f7}.main-table tbody>tr:last-child>td{border-bottom:1px solid #ddd}.main-table tbody>tr>td{position:relative}.main-table tbody>tr>td .label{max-width:200px;overflow:hidden;text-overflow:unset;white-space:nowrap}.main-table tbody>tr>td>a{line-height:28px;color:#2463c7}.main-table tbody>tr>td>a:not(.btn):visited{color:#003994;opacity:.9}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover{color:#2e7fff}.main-table tbody>tr>td.c-actions{padding-right:10px}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{position:absolute;top:0;bottom:0;left:0;display:block;width:0;content:'';background:#2e7fff;opacity:0;-webkit-transition:.2s linear;-o-transition:.2s linear;transition:.2s linear;-webkit-transition-property:width,opacity,border-radius;-o-transition-property:width,opacity,border-radius;transition-property:width,opacity,border-radius}@-moz-document url-prefix(){.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{bottom:-1px}}.main-table tbody>tr>td.c-side:before{display:none}.main-table tbody>tr>td.c-name a{color:#2463c7}.main-table tbody>tr>td.c-name a:hover{color:#1e6aeb}.main-table tbody>tr{border-bottom:1px solid #f4f5f7;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background-color,-webkit-box-shadow;-o-transition-property:box-shadow,background-color;transition-property:background-color,-webkit-box-shadow;transition-property:box-shadow,background-color;transition-property:box-shadow,background-color,-webkit-box-shadow}.main-table tbody>tr:hover{background:rgba(230,240,255,.8)}.main-table .table-grouped tbody>tr:hover{background:#f0f6ff;-webkit-box-shadow:none;box-shadow:none}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f0f6ff}.main-table tbody>tr.checked{background:#fff4ea}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr.checked>td.c-side+td:before,.main-table tbody>tr.checked>td:first-child:before{width:4px;opacity:1}.main-table tbody>tr.checked.row-check-begin{border-top-left-radius:4px;border-top-right-radius:2px}.main-table tbody>tr.checked.row-check-begin>td:first-child:before{border-top-left-radius:4px}.main-table tbody>tr.checked.row-check-end{border-bottom-right-radius:2px;border-bottom-left-radius:4px}.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-bottom-left-radius:4px}.main-table .checkbox-primary{display:inline-block;line-height:20px}.main-table .checkbox-primary label{margin:0}.main-table .table{margin:0}.table-header{padding:4px 0 12px}.table-header .table-statistic{color:#838a9d}.table-header .table-statistic strong{font-size:15px;color:#313c52}.table-header .btn-toolbar{margin-top:-28px}.table-header.fixed-right{position:relative;z-index:5;padding:0}.table-header.fixed-right>.btn-toolbar{position:absolute;top:0;right:1px;z-index:1;padding:1px;margin:0;background:#fff;border-radius:4px}.table-header.fixed-right>.btn-toolbar .btn{opacity:.65}.table-header.fixed-right>.btn-toolbar .btn:hover{opacity:1}.table-header-fixed .table-header{position:fixed;top:0}.table-header-fixed .table-header>.btn-toolbar{background-color:transparent}.table-header-fixed .table-header>.btn-toolbar .btn{color:#fff}.table-footer{position:relative;min-height:40px;padding:6px 15px;background:#fff;border-radius:0 0 4px 4px}.body-modal .table-footer{margin-bottom:20px}.talbe-lg+.table-footer{padding:11px 15px}.table-footer .btn-toolbar,.table-footer .checkbox-primary{float:left}.table-footer .btn-toolbar+.btn-toolbar{margin-left:8px}.table-footer .checkbox-primary{margin:5px 20px 0 0}.table-footer .checkbox-primary.checked label:after{border-color:#22c98d!important}.table-footer .btn{padding:3px 10px;line-height:20px}.table-footer .pager{position:absolute;top:0;right:0;z-index:5;height:40px;padding:6px 5px 6px 10px;margin:0;background:#fff;opacity:1;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.table-footer .pager:before{position:absolute;top:0;bottom:0;left:-50px;display:block;width:50px;content:' ';background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%)}.table-footer .pager .btn,.table-footer .pager>li>.pager-item,.table-footer .pager>li>.pager-label{color:#838a9d;background:0 0;border-color:transparent}.table-footer .pager .btn,.table-footer .pager>li>a{border-radius:3px}.table-footer .pager .btn:hover,.table-footer .pager>li>a:hover{background:rgba(0,0,0,.1)}.table-footer .pager>li.disabled>a.pager-item{opacity:1}.table-footer .form-control{height:28px;padding:3px 8px}.table-footer .table-statistic{position:relative;z-index:2;float:left;padding-right:30px;line-height:28px;color:#838a9d;background:#fff}.table-footer .table-statistic:hover{z-index:4}.table-footer .table-statistic:hover+.pager{z-index:2;opacity:.3}.table-footer .btn-toolbar+.table-statistic,.table-footer .btn-toolbar+.text{margin-left:10px}.table-footer .text{float:left;line-height:28px}.table-footer.fixed-footer{position:fixed;z-index:10;margin:0;background:rgba(75,75,75,.85);border-top-color:transparent}.table-footer.fixed-footer .checkbox-primary label{color:#fff}.table-footer.fixed-footer .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.table-footer.fixed-footer .table-statistic{color:#fff;background:0 0}.table-footer.fixed-footer .pager{background:#666}.table-footer.fixed-footer .pager:before{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0)),to(#666));background:-webkit-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:-o-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:linear-gradient(to right,rgba(0,0,0,0) 0,#666 100%)}.table-footer.fixed-footer .pager .btn,.table-footer.fixed-footer .pager>li>.pager-item,.table-footer.fixed-footer .pager>li>.pager-label{color:#fff}.table-footer.fixed-footer .pager .btn:hover,.table-footer.fixed-footer .pager>li>a:hover{background:rgba(255,255,255,.3)}.table-footer.fixed-footer .pager>li.disabled>a.pager-item{opacity:.5}.table-actions{display:none;height:28px}.table-actions.show-always{display:block;pointer-events:none;cursor:not-allowed}.has-row-checked .table-actions{display:block;pointer-events:auto!important;cursor:default}.table-lg tbody>tr>td{padding:9px 10px}.table-lg tbody>tr>td .btn+.btn{margin-left:5px}.table.has-sort-head thead>tr>th{padding-right:0}.table.has-sort-head thead>tr>th>a{position:relative;display:inline-block;padding-right:16px;color:#313c52}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;color:#313c52;text-transform:none;content:"\f0de";opacity:.5;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.table.has-sort-head thead>tr>th>a:after{content:"\f0dd"}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up{color:#000;text-decoration:none}.table.has-sort-head thead>tr>th>a:hover,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#2e7fff;opacity:1}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before{color:#000;opacity:1}.head-fixed .datatable-head-span .table,.table.fixed-header-copy{z-index:10;color:#fff;background:rgba(75,75,75,.85)}.head-fixed .datatable-head-span .table thead>tr,.table.fixed-header-copy thead>tr{background:0 0}.head-fixed .datatable-head-span .table thead>tr>th,.table.fixed-header-copy thead>tr>th{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a,.table.fixed-header-copy thead>tr>th>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>a:after,.head-fixed .datatable-head-span .table thead>tr>th>a:before,.table.fixed-header-copy thead>tr>th>a:after,.table.fixed-header-copy thead>tr>th>a:before{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down:after,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up:before,.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:after,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:before,.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>.dropdown>a,.table.fixed-header-copy thead>tr>th>.dropdown>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>.dropdown>a:hover,.table.fixed-header-copy thead>tr>th>.dropdown>a:hover{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary,.table.fixed-header-copy .checkbox-primary{z-index:1}.head-fixed .datatable-head-span .table .checkbox-primary label,.table.fixed-header-copy .checkbox-primary label{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary label:after,.table.fixed-header-copy .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#22c98d!important}.table-data{margin:0;table-layout:fixed}.table-data tbody>tr>td,.table-data tbody>tr>th{padding:6px 8px;word-break:break-all;border:none}.table-data tbody>tr>th{width:70px;padding-left:0;font-weight:400;color:#838a9d;text-align:right;vertical-align:middle}.table-data tbody>tr>td{padding-right:0}.table-data tbody>tr>td>a{color:#2463c7}.table-data tbody>tr>td>a:not(.btn):visited{color:#003994}.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#2e7fff}.table-data ol,.table-data ul{margin:0}.fixed-head-table{background:rgba(0,0,0,.7);border-bottom:1px solid #ddd}.fixed-head-table thead>tr>th{color:#fff}.table-empty-tip{padding:80px 10px;text-align:center;background:#fff}.not-firefox .table-grouped>tbody>tr>td.c-side{background:#fff!important}.table-grouped .group-toggle{cursor:pointer}.table-grouped .group-toggle.group-summary{border-top:10px solid #efefef}.table-grouped tbody>tr>td:first-child,.table-grouped thead>tr>th:first-child{padding-left:8px}.group-expand-all,.table-group-collapsed .group-collapse-all{display:none}.table-group-collapsed .group-expand-all{display:inline-block}.table-auto{table-layout:auto}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}body.has-fixed-footer{padding-bottom:60px}.table.with-footer-fixed{margin-bottom:20px}.table-nest-hide{display:none!important}th.table-nest-title{position:relative;padding-left:30px!important}.table-nest-icon{position:relative;display:inline-block;width:22px;height:22px;font-size:16px;color:#a6aab8;text-align:center;border-radius:4px}.table-nest-toggle:before{position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:12px;color:#888fa1;content:"\e926";-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.table-nest-toggle:after{position:absolute;top:4px;right:4px;bottom:4px;left:4px;display:inline-block;content:"";border:1px solid;border-radius:50%}.table-nest-toggle:hover{color:#2e7fff;background-color:rgba(0,0,0,.1)}.table-nest-child-hide .table-nest-toggle:before{font-size:12px;content:"\e925"}th.table-nest-title .table-nest-toggle{position:absolute!important;top:7px;left:8px}.table-nest-toggle.table-nest-toggle-global{width:22px;height:22px;padding:0!important;line-height:22px;text-align:center;border-radius:4px}.table-nest-toggle.table-nest-toggle-global:before{position:absolute!important;font-size:12px!important;line-height:22px!important;content:"\e959"!important;opacity:1!important}.table-nest-toggle.table-nest-toggle-global:after{display:none!important}.table-nest-collapsed .table-nest-toggle.table-nest-toggle-global:before{font-size:12px!important;content:"\e95a"!important}.disable-empty-nest-row .is-nest-child .table-nest-icon:before,.disable-empty-nest-row .no-nest .table-nest-icon:before{position:relative;top:-1px;width:6px;min-width:6px;height:6px;content:' ';background-color:#c4c4c4;border-radius:1px}.table-nest-child-hover>td:first-child,.table-nest-hover>td:first-child{-webkit-box-shadow:inset 3px 0 0 #c4c4c4;box-shadow:inset 3px 0 0 #c4c4c4}.c-manager .avatar{position:relative;z-index:2;line-height:17px;border:1.5px solid transparent}.c-manager .avatar.avatar-top{border-color:#ffaf65}.c-manager a{position:absolute;top:8px;left:16px;height:20px;padding:0 8px 0 13px;line-height:20px!important;color:#313c52!important;background:#f4f5f7;border-radius:10px}.article-content{overflow:auto}.article-content img{margin-top:0}.article-content table{margin:10px 0}.article-content table td,.article-content table th{border:1px solid #cbd0db!important}.article-content table th{background:#eee}.article-content a{color:#2e7fff}.article-content a:focus,.article-content a:hover{color:#18a6fd}.article-content,.article>.content{word-wrap:break-word}.detail{padding:10px 0;margin:0 10px}.detail+.detail{padding-top:25px;border-top:1px solid #eee}.detail-title{font-size:14px;font-weight:700;line-height:20px}.detail-title>.pull-right{position:relative;top:-8px}h2.detail-title{margin:0;font-size:15px;font-weight:700}h2.detail-title .label,h2.detail-title .label-id{position:relative;top:-1px}.detail-content{padding:0;margin-top:10px}.detail-content em{color:#313c52}.detail-content .list-unstyled>li+li{margin-top:5px}.side-col .detail-content{padding-left:0}details.detail{padding:10px 0}details.detail summary{position:relative;cursor:pointer;outline:0}details.detail summary::-webkit-details-marker{display:none}details.detail summary:after{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e316";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}details.detail[open] summary:after{content:"\e313"}.files-list{padding-left:0;list-style:none}.files-list>li>a{display:block;line-height:24px}.files-list>li>a>.icon{display:inline-block;margin-right:5px;opacity:.7}.files-list>li>a:hover{color:#2e7fff}.files-list>li>.right-icon{opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.files-list>li:hover>.right-icon{opacity:1}.histories-list{padding-left:15px;margin-bottom:0}.histories-list>li{position:relative}.histories-list>li+li{margin-top:5px}.histories-list>li strong{color:#313c52}.histories-list .comment,.histories-list .show-form .comment-edit-form{padding:5px 5px 5px 10px;margin:5px 0 0;background-color:rgba(0,0,0,.025);border:1px solid #eee}.histories-list .btn-edit-comment{position:absolute;top:28px;right:2px}.histories-list .comment-edit-form,.histories-list .show-form .btn-edit-comment,.histories-list .show-form .comment{display:none}.histories-list .show-form .comment-edit-form{display:block;padding:10px;border:1px solid #eee}.histories .btn-mini{width:16px;min-width:16px;height:16px;overflow:hidden;line-height:16px;color:#cbd0db;vertical-align:-8%;border-radius:1px}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#2e7fff;border-color:#2e7fff}.histories .show-changes .btn-expand>.icon:before{content:"\e926"}.histories .btn-strip{display:none}.histories .show-changes .btn-strip{display:inline-block}.history-changes{display:none;padding:5px;margin-bottom:-5px;margin-left:5px;font-size:12px;line-height:20px}.history-changes blockquote{padding:5px 5px 5px 10px;margin:5px 0 0;font-size:12px;background-color:rgba(0,0,0,.05);border-left:3px solid #eee}.history-changes blockquote.original{display:none}.show-changes .history-changes,.show-original .history-changes blockquote.original{display:block}.show-original .history-changes blockquote.textdiff{display:none}.syntaxhighlighter{overflow:auto}.list-group{overflow-y:auto}.list-group>a{display:block;padding:2px 10px 2px 5px;overflow:hidden;line-height:20px;text-overflow:unset;white-space:nowrap;border-radius:4px}.list-group>a+a{margin-top:5px}.list-group>a>.icon{display:inline-block;margin-right:3px;opacity:.5}.list-group>a.selected{color:#e6f0ff;background-color:#2e7fff}.list-group>a.active{color:#2e7fff;background-color:#e6f0ff}.list-group>a.active:hover,.list-group>a:hover{color:#fff;background-color:#2e7fff}.list-group>.heading{padding:2px 5px;line-height:20px;color:#838a9d}.list-group>a+.heading{margin-top:4px}.dropup .search-box-sink{padding-top:5px;padding-bottom:45px}.dropup .search-box-sink .search-box{position:absolute;right:10px;bottom:10px;left:10px;margin:0}.dropup .search-box-sink .search-box+.list-group{height:auto;max-height:171px}.search-list{min-width:200px;max-width:300px;padding:0}.search-list .search-box{float:none;width:auto;margin:10px}.search-list .search-box .icon-search{opacity:.5}.search-list .list-group{max-height:248px;padding:5px 10px;margin:5px 0}.dropup .search-list .search-box+.list-group{height:171px;padding-top:0}.search-list .search-input{height:30px}.search-list .input-control-icon-right{height:28px;line-height:28px}.search-list .list-group>a.active{color:inherit;background-color:inherit}.search-list.searchbox-focus .list-group>a.active{color:#2e7fff;background-color:#e6f0ff}.search-list .list-group>a.active:hover,.search-list.searchbox-focus .list-group>a.active:hover{color:#fff;background-color:#2e7fff}#dropMenu{width:initial;max-width:initial}#dropMenu>.search-box{width:100%;padding:10px 10px 0;margin:0}#dropMenu>.search-box .icon-search{color:#333}#dropMenu>.search-box.has-icon-right>.form-control{padding-left:26px}#dropMenu .input-control-icon-left{top:10px;left:10px}#dropMenu .input-control-icon-right{top:11px;right:11px}#dropMenu .input-control-icon-right .icon{position:relative;top:2px}#dropMenu .list-group{max-height:initial;margin:0}#dropMenu .table-row{margin:0 -10px;table-layout:auto}#dropMenu .table-col{position:relative;width:100%;min-width:250px;max-width:450px}#dropMenu .table-col .list-group{max-height:300px;padding:0 10px 5px}#dropMenu .col-left{padding-bottom:30px}#dropMenu .col-right{display:none}#dropMenu .col-footer{position:absolute;right:0;bottom:-5px;left:0;padding:8px 10px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col .table-col{width:50%}#dropMenu.show-right-col .col-right{display:table-cell;border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{max-height:335px;margin:0}#dropMenu.show-right-col .col-right>.list-group>a{opacity:.7}#dropMenu.show-right-col .col-right>.list-group>a:hover{opacity:1}#dropMenu.show-right-col .toggle-right-col>.icon-angle-right:before{content:"\e314"}#dropMenu.has-search-text .list-group{overflow-x:hidden}#dropMenu.has-search-text>.search-box{width:100%!important}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block;width:100%}#dropMenu.has-search-text .col-left{padding-bottom:0}#dropMenu.has-search-text .pull-right.toggle-right-col{display:none}#dropMenu.has-search-text .col-left .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer,#dropMenu.has-search-text .hide-in-search{display:none}#swapper{position:relative}#swapper #dropMenu .tree li>.selected{color:#2e7fff!important;background:#e6f0ff!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#2e7fff!important}#swapper #dropMenu .tree{margin:0}.release-path{overflow:hidden}.release-line{display:table;width:100%;padding:0;table-layout:fixed}.release-line>li{display:table-cell;list-style:none}.release-line>li>a{position:relative;display:block}.release-line>li>a:before{position:absolute;left:0;display:block;width:13px;height:13px;content:' ';background:#fff;border:2px solid #838a9d;border-radius:50%}.release-line>li>a:after{position:absolute;left:5px;display:block;width:2px;height:30px;content:' ';background:#c2dbff}.release-line>li>a>.icon{position:absolute;left:4px;font-size:24px}.release-line>li>a .title{display:block;font-size:14px;white-space:nowrap}.release-line>li>a .date,.release-line>li>a .info{display:block;max-height:18px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:unset;white-space:nowrap}.release-line>li>a:hover:before{background-color:#e6f0ff}.release-line>li>a:hover:after{background-color:#838a9d}.release-line>li>a:hover .title{color:#2e7fff}.release-line>li>a:hover .date,.release-line>li>a:hover .info{color:#838a9d}.release-line>li:nth-child(odd){padding-top:80px;vertical-align:top}.release-line>li:nth-child(odd)>a{height:85px;padding-top:36px;border-top:5px solid #c2dbff}.release-line>li:nth-child(odd)>a:before{top:-9px}.release-line>li:nth-child(odd)>a:after{top:6px}.release-line>li:nth-child(odd)>a>.icon{top:-26px}.release-line>li:nth-child(even){padding-bottom:80px;vertical-align:bottom}.release-line>li:nth-child(even)>a{height:85px;padding-bottom:36px;border-bottom:5px solid #c2dbff}.release-line>li:nth-child(even)>a:before{bottom:-9px}.release-line>li:nth-child(even)>a:after{bottom:6px}.release-line>li:nth-child(even)>a>.icon{bottom:-2px}.release-line>li:last-child>a{border-color:transparent}.release-line>li.active>a:before{border-color:#2e7fff}.release-line>li+li>a>.date,.release-line>li+li>a>.info,.release-line>li+li>a>.title{position:relative;left:-36%}#footer{position:fixed;right:0;bottom:0;left:0;z-index:1010;height:40px;background:#fff;border-top:1px solid #eff1f7}#footer .breadcrumb{padding:10px 0;margin:0}#footer .breadcrumb>li{max-width:200px;overflow:hidden;text-overflow:unset;white-space:nowrap}#footer .breadcrumb>.active,#footer .breadcrumb>li>a{color:#838a9e}#footer .breadcrumb>.active>.icon,#footer .breadcrumb>li>a>.icon{display:none}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#18a6fd}#footer .breadcrumb>li+li:before{content:'>'}#footer>.container{padding:0 20px}@media (min-width:1400px){#footer>.container{padding:0 40px}}#poweredBy{position:absolute;top:4px;right:0;padding:5px 10px}#poweredBy .icon-zentao{color:#0097fd}#poweredBy a{color:#313c52}#poweredBy a:hover{color:#2e7fff}#poweredBy a:hover .icon-zentao{color:#2e7fff}#poweredBy a.text-important{color:#ff6f42}#poweredBy a.text-important:hover{color:#fc5959}#poweredBy a.text-primary{color:#2e7fff}#poweredBy a.text-primary:hover{color:#18a6fd}#poweredBy #aiux{color:#cbd0dc}#noticeBox .alert{-webkit-box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px}#heading{top:0}.header-btn{position:relative;padding:8px 0}.header-btn .btn{position:relative;height:34px;padding:1px 6px;margin:0;overflow:visible;font-size:13px;font-weight:400;line-height:28px;color:#fff;background-color:transparent;border-color:transparent!important;border-right:none;-webkit-transition:none;-o-transition:none;transition:none}.header-btn .btn>.caret{margin-left:0;border-width:4px}.header-btn .btn>.text{display:inline-block;max-width:150px;overflow:hidden;text-overflow:unset;vertical-align:middle}.header-btn .btn:hover{-webkit-box-shadow:none;box-shadow:none}.header-btn .btn:hover,.header-btn.active .btn{color:#fff;background:rgba(0,0,0,.15)}.header-btn .btn:hover>.caret,.header-btn.active .btn>.caret{opacity:1}.header-btn+.header-btn{margin-left:10px}.header-btn+.header-btn:before{position:absolute;top:16px;left:-13px;display:block;font-family:ZentaoIcon;font-size:14px;font-size:16px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e315";opacity:.6;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header-btn .dropdown-menu{margin-top:-10px}#toolbar{top:0;height:50px}#userNav>li{margin-right:0}#userNav>li>a{padding:10px 5px}#userNav>li>a>.icon{font-size:30px;filter:brightness(1.2) hue-rotate(30deg);opacity:.9;-webkit-filter:brightness(1.2) hue-rotate(30deg)}#userNav>li:hover>a{background-color:rgba(0,0,0,.1)}#userNav .dropdown-menu>li>a{position:relative;padding-left:24px}#userNav .dropdown-menu>li>a>.icon{top:1px;left:0}#userNav .dropdown-menu>li.user-profile-item>a{padding-left:45px} +*/.chosen-container{position:relative;display:block;font-size:13px;vertical-align:middle;zoom:1;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;z-index:1010;display:none;width:100%;background:#fff;border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-top:0;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container .chosen-drop.chosen-drop-size-limited{border-top:1px solid rgba(0,0,0,.15)}.chosen-container .chosen-drop.chosen-auto-max-width{min-width:100%;border-top:1px solid rgba(0,0,0,.15);opacity:0}.chosen-container .chosen-drop.chosen-auto-max-width>.chosen-results>li{display:inline-block;white-space:nowrap}.chosen-container .chosen-drop.chosen-auto-max-width.in{opacity:1}.chosen-container .chosen-drop.chosen-auto-max-width.in>.chosen-results>li{display:block;white-space:normal}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap!important}.chosen-container.chosen-with-drop .chosen-drop{display:block}.chosen-container a{cursor:pointer}.chosen-container.chosen-up .chosen-drop{top:inherit;bottom:100%;margin-top:auto;margin-bottom:-1px;border-radius:2px 2px 0 0;-webkit-box-shadow:0 -3px 5px rgba(0,0,0,.175);box-shadow:0 -3px 5px rgba(0,0,0,.175)}.chosen-container.chosen-highlight-selected .result-selected{color:#2e7fff;background:#e6f0ff}.chosen-container-single .chosen-single{display:block;width:100%;height:32px;padding:5px 8px;overflow:hidden;line-height:1.42857143;color:#0b0f18;text-decoration:none;white-space:nowrap;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-single .chosen-default{color:#838a9d}.chosen-container-single .chosen-single>span{display:block;margin-right:26px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:5px;right:24px;display:block;width:20px;height:20px;font-family:sans-serif;font-size:18px;font-weight:700;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-single .chosen-single abbr:before{display:block;content:'×'}.chosen-container-single .chosen-single abbr:focus,.chosen-container-single .chosen-single abbr:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;height:100%;padding:5px 8px}.chosen-container-single .chosen-single div b{display:inline-block;width:0;height:0;margin-bottom:2px;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent;opacity:.5}.chosen-container-single .chosen-search{position:relative;z-index:1010;padding:3px 4px;margin:0;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{width:100%;height:27px;padding:2px 26px 2px 8px;margin:1px 0;font-size:12px;line-height:1.5;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;outline:0}.chosen-container-single .chosen-search input[type=text]:focus{border-color:#2e7fff}.chosen-container-single .chosen-search:before{position:absolute;top:10px;right:10px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-single .chosen-drop{margin-top:-1px;-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:0 0 4px 4px}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;max-height:240px;padding:0;margin:0;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;padding:5px 10px;margin:0;line-height:15px;list-style:none;-webkit-transition:background-color .2s cubic-bezier(.175,.885,.32,1);-o-transition:background-color .2s cubic-bezier(.175,.885,.32,1);transition:background-color .2s cubic-bezier(.175,.885,.32,1);-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{color:#fff;background-color:#2e7fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;width:100%;min-height:32px;min-height:30px\9;padding:0;margin:0;overflow:hidden;cursor:text;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s,-webkit-box-shadow ease-in-out .15s}.chosen-container-multi .chosen-choices:after,.chosen-container-multi .chosen-choices:before{display:table;content:" "}.chosen-container-multi .chosen-choices:after{clear:both}.chosen-container-multi .chosen-choices li{display:block;float:left;padding:0 6px;margin:5px 4px;list-style:none}.chosen-container-multi .chosen-choices li.search-field{padding:0;line-height:12px;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{height:20px;font-size:100%;color:#838a9d;background:0 0!important;border:0!important;border-radius:0;outline:0;-webkit-box-shadow:none;box-shadow:none}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-field:before{position:absolute;right:8px;bottom:8px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#838a9d;text-transform:none;content:"\e928";opacity:0;-webkit-transition:opacity .2s cubic-bezier(.175,.885,.32,1);-o-transition:opacity .2s cubic-bezier(.175,.885,.32,1);transition:opacity .2s cubic-bezier(.175,.885,.32,1);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice{position:relative;padding:3px 20px 3px 5px;line-height:12px;cursor:default;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #c4c4c4;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);-webkit-transition:all .4s cubic-bezier(.175,.885,.32,1);-o-transition:all .4s cubic-bezier(.175,.885,.32,1);transition:all .4s cubic-bezier(.175,.885,.32,1)}.chosen-container-multi .chosen-choices li.search-choice:hover{background-color:#fff;border-color:#ababab;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1)}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:1px;right:0;display:block;width:20px;height:18px;line-height:18px;color:#000;text-align:center;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:before{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:focus,.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;color:#666;background-color:#e4e4e4;border:1px solid #ccc}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{padding:5px 0;margin:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border-color:#2e7fff;-webkit-box-shadow:none,0 0 8px rgba(46,127,255,.6);box-shadow:none,0 0 8px rgba(46,127,255,.6)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.15);border-bottom-right-radius:0!important;border-bottom-left-radius:0!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active.chosen-with-drop .chosen-single div{background:0 0;border-left:none}.chosen-container-active.chosen-with-drop .chosen-single div b{content:"";border-top:0 dotted;border-bottom:4px solid}.chosen-container-active.chosen-with-drop.chosen-up .chosen-single{border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:2px;border-bottom-left-radius:2px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.chosen-container-active .chosen-choices{border-color:#2e7fff;-webkit-box-shadow:none,0 0 8px rgba(46,127,255,.6);box-shadow:none,0 0 8px rgba(46,127,255,.6)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-container-active .chosen-choices li.search-field:before{opacity:1}.chosen-disabled{cursor:default;opacity:.5!important}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{left:0;display:none;padding:3px 4px;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:25px;padding:2px 26px 2px 4px;font-size:inherit}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{top:9px}.chosen-compact.chosen-with-search.chosen-with-drop .chosen-single>.chosen-search{display:block;opacity:1}select.chosen[multiple]{height:32px;overflow:hidden}select.chosen[multiple] option{visibility:hidden}.picker{min-height:32px;background-color:#eee}.picker:not(.picker-ready)>*{display:none}.picker-selections{position:relative;min-height:32px;color:#0b0f18;background-color:#fff;border:1px solid #dcdcdc;border-radius:2px;-webkit-box-shadow:none;box-shadow:none}.picker-focus .picker-selections{border-color:#2e7fff;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(46,127,255,.6)}.disabled .picker-selections{cursor:not-allowed;background-color:#f5f5f5}.picker-multi .picker-selections{padding:3px}.picker-multi.picker-focus .picker-selections:before{position:absolute;right:0;bottom:8px;display:block;width:24px;height:14px;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;content:"\e928";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-multi.picker-focus.picker-loading .picker-selections::before{display:inline-block;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.picker-multi .picker-selection{position:relative;display:inline-block;padding:0 20px 0 5px;margin:2px;line-height:18px;background-color:#f1f1f1;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #c4c4c4;border-radius:3px;-webkit-box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05)}.picker-selection-single{max-width:100%;padding:5px 20px 5px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-focus .picker-selection-single .picker-selection-text{display:none}.picker-selection-single:after{position:absolute;top:7px;right:0;display:block;width:24px;height:14px;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;content:"\f0d7";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-focus .picker-selection-single::after{content:"\e928"}.picker-focus.picker-loading .picker-selection-single::after{display:inline-block;content:"\e982";-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}.picker-selection-remove{position:absolute;top:0;right:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:18px;height:18px;text-align:center;cursor:pointer;opacity:.2;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.picker-selection-remove:before{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-shadow:0 1px 0 #fff;text-transform:none;content:'\d7';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.picker-selection-remove:hover{opacity:.5}.picker-single .picker-selection-remove{top:5px;right:20px;z-index:1}.picker-no-value .picker-selection-remove,.picker-single.picker-focus .picker-selection-remove{display:none}.picker-multi.picker-sortable .picker-selection-text{cursor:move}.picker-search{color:transparent;background:0 0;border:none}.picker-search:focus{color:inherit;outline:0}.disabled .picker-search{cursor:not-allowed}.picker-single .picker-search{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;width:100%;padding:5px 8px}.picker-multi .picker-search{display:inline-block;width:10px;min-width:10px;max-width:100%;padding:0 2px;margin:2px 0}.picker-placeholder{position:absolute;top:5px;right:20px;left:8px;z-index:0;display:none;overflow:hidden;color:#838a9d;text-overflow:ellipsis;white-space:nowrap}.picker-no-value.picker-focus .picker-placeholder{display:none}.picker-input-empty.picker-focus.picker-no-value .picker-placeholder,.picker-no-value .picker-placeholder{display:block}.picker-drop-menu{position:fixed;z-index:1200;display:none;min-width:100px;background-color:#fff;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);box-shadow:0 6px 12px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.1);opacity:0}.picker-drop-menu.picker-drop-show{display:block}.picker-option-list{padding:5px 0;margin:0;overflow-y:auto}.picker-no-options .picker-option-list{display:none}.picker-option{display:block;min-height:30px;padding:5px 10px;overflow:hidden;clear:both;font-weight:400;line-height:1.42857143;color:#313c52;text-overflow:ellipsis;white-space:nowrap;-webkit-transition:none;-o-transition:none;transition:none}.picker-single .picker-option.picker-option-selected{color:#2e7fff;background:#e6f0ff}.picker-option:focus,.picker-option:hover{text-decoration:none}.picker-option.picker-option-active,.picker-single .picker-option.picker-option-selected.picker-option-active{color:#fff;background-color:#2e7fff}.picker-multi .picker-option.picker-option-selected,.picker-multi .picker-option.picker-option-selected.picker-option-active{color:#ccc;cursor:not-allowed;background-color:#fff}.picker-option.disabled{cursor:not-allowed!important}.picker-option-text-matched{position:relative;color:#2e7fff}.picker-option-text-matched:before{position:absolute;right:0;bottom:-4px;left:0;display:block;height:2px;content:' ';background-color:#2e7fff;border-radius:2px;opacity:.5}.picker-option-active .picker-option-text-matched,.picker-option:hover .picker-option-text-matched{color:#fff}.picker-option-active .picker-option-text-matched:before,.picker-option:hover .picker-option-text-matched:before{background-color:#fff}.picker-message{display:none;height:22px;padding:2px 5px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:ellipsis;white-space:nowrap;background-color:#f1f1f1}.picker-has-message .picker-message{display:block}.picker-message[data-type=danger]{color:#fc5959}.picker-actions{padding:5px;border-top:1px solid #eee}.picker-no-actions .picker-actions{display:none}.picker-actions .btn{padding:2px 4px}.picker-actions .btn[disabled]{background-color:transparent;filter:grayscale(1);-webkit-filter:grayscale(1)}.picker-actions .btn+.btn{margin-left:4px}.picker-checkable .picker-option{position:relative;padding-left:32px;color:inherit!important;cursor:pointer!important}.picker-checkable .picker-option>.checkbox-primary{position:absolute;top:4px;left:10px}.picker-checkable .picker-option.picker-option-active{background-color:rgba(0,0,0,.05)!important}.picker-checkable .picker-option:hover{background-color:rgba(0,0,0,.075)!important}.picker-checkable .picker-option.picker-option-selected{background-color:#e6f0ff!important}.picker-checkable .picker-option-active .picker-option-text-matched,.picker-checkable .picker-option:hover .picker-option-text-matched{color:#2e7fff!important}.picker-checkable .picker-option-active .picker-option-text-matched:before,.picker-checkable .picker-option:hover .picker-option-text-matched:before{background:#2e7fff!important}:root{--color-primary:#2e7fff;--color-secondary:#18a6fd;--color-pale:#e6f0ff;--color-fore:#313c52;--color-back:#fff;--color-red:#fc5959;--color-yellow:#ff9f46;--color-green:#22c98d;--color-blue:#37b2fe;--color-purple:#8166ee;--color-brown:#ff6f42;--color-danger:#fc5959;--color-warning:#ff9f46;--color-success:#22c98d;--color-info:#37b2fe;--color-special:#8166ee;--color-important:#ff6f42;--color-green-pale:#ecfff8;--color-yellow-pale:#fff4ea;--color-red-pale:#ffebeb;--color-blue-pale:#e7f6ff;--color-brown-pale:#fff2ed;--color-purple-pale:#efecfa;--link-color:#313c52;--link-hover-color:#2e7fff;--color-gray-darker:#0b0f18;--color-gray-dark:#313c52;--color-gray:#838a9d;--color-gray-light:#c4c4c4;--color-gray-lighter:#eee;--color-gray-pale:#f1f1f1;--border-radius:4px;--border-radius-lg:6px;--border-radius-sm:3px;--bg-gradient:#3785ff}.container,.container-fixed,.container-fluid{position:relative}.container{max-width:1800px!important}body{color:#313c52;background-color:#f4f5f7}body.article-content,body.body-modal{background:0 0}body.body-modal{padding:0}@media screen and (min-width:1920px){body{font-size:14px}}a:active,a:focus,button:active,button:focus{outline:0!important}.strong{font-weight:700}.font-normal{font-weight:400!important}.text-middle{vertical-align:middle!important}.text-bottom{vertical-align:bottom!important}.text-top{vertical-align:top!important}.inline-block{display:inline-block!important}.layer{border-radius:4px;-webkit-box-shadow:0 0 20px 0 #bdc9d8;box-shadow:0 0 20px 0 #bdc9d8}.space{margin-bottom:20px}.space-lg{margin-bottom:30px}.space-sm{margin-bottom:10px}.muted{opacity:.5}.text-muted em{color:#313c52}.no-animate{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.template{display:none!important}.text-left{text-align:left!important}.text-yellow.icon-folder{color:#ff9f46}.table-row{display:table;width:100%;table-layout:fixed}.table-col,.table-row>.col,.table-row>[class*=col-],.table-row>[class*="-col"]{display:table-cell;float:none;vertical-align:top}.side-col{width:200px;padding-right:20px}.side-col.col-4{width:33.3333333%}.col-lg{width:260px}.col-xl{width:320px}.col-sm{width:150px}.col-xs{width:100px}.main-col+.side-col{padding-right:0;padding-left:20px}.row-grid>[class*=col-],.row-grid>[class*="-col"]{padding-top:6px;padding-bottom:6px}hr.space{margin:10px 0;border:none}hr.space-sm{margin:5px 0;border:none}.text-secondary{color:#18a6fd}a.text-primary{color:#2e7fff}.text-primary-400{color:#3785ff}.text-primary-600{color:#1e6aeb}.text-primary-700{color:#2463c7}.text-primary-900{color:#063072}.text-green-400{color:#48d1a0}.text-yellow-400{color:#ffaf65}.text-blue-400{color:#60c2ff}.text-red-400{color:#ff7c7c}.text-important-400{color:#ff9777}.text-purple-400{color:#8a6ff5}.text-green-600{color:#0dbb7d}.text-yellow-600{color:#f38f19}.text-blue-600{color:#00c0e9}.text-red-600{color:#fb2b2b}.text-important-600{color:#ff6f42}.text-purple-600{color:#7055df}.text-green-700{color:#0ca76f}.text-yellow-700{color:#ed8307}.text-blue-700{color:#1099ed}.text-red-700{color:#d91b1b}.text-important-700{color:#ff4912}.text-purple-700{color:#513baa}.text-green-900{color:#186c4e}.text-yellow-900{color:#af5f01}.text-blue-900{color:#046bab}.text-red-900{color:#a20606}.text-important-900{color:#611700}.text-purple-900{color:#30216f}.text-gray-14,.text-title{color:#0b0f18}.icon-important,.text-color,.text-gray-13{color:#313c52}.text-gray-12{color:#5e626d}.icon-common,.text-gray-11{color:#838a9d}.icon-secondary,.text-gray-10{color:#9ea3b0}.text-disabled{color:#c4c4c4}.nav-primary>li>a{min-width:100px;padding:5px 8px;color:#838a9d;border-color:#e7f1fc}.nav-primary>li.active>a{color:#2e7fff;background-color:#e7f1fc;border-color:#e7f1fc}.nav-primary>li.active>a:hover{color:#2e7fff;background-color:#c3dcf7;border-color:#c3dcf7}.end-marker{margin-bottom:20px;color:#c4c4c4;text-align:center}@-webkit-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@-o-keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}@keyframes highlight{0%{background:#fff;outline:1px solid transparent}100%{background:#fff0d5;outline:2px solid #ffdcbc}}.highlight{-webkit-animation:highlight .5s linear 0s 2 alternate;-o-animation:highlight .5s linear 0s 2 alternate;animation:highlight .5s linear 0s 2 alternate}.progress.inline-block{width:100px;margin:0}.w-p5{width:5%!important}.w-p10{width:10%!important}.w-p15{width:15%!important}.w-p20{width:20%!important}.w-p25{width:25%!important}.w-p30{width:30%!important}.w-p35{width:35%!important}.w-p40{width:40%!important}.w-p45{width:45%!important}.w-p50{width:50%!important}.w-p55{width:55%!important}.w-p60{width:60%!important}.w-p65{width:65%!important}.w-p70{width:70%!important}.w-p75{width:75%!important}.w-p80{width:80%!important}.w-p85{width:85%!important}.w-p90{width:90%!important}.w-p94{width:94%!important}.w-p95{width:95%!important}.w-p98{width:98%!important}.w-p99{width:99%!important}.w-p100{width:100%!important}.w-auto{width:auto!important}.w-10px{width:10px!important}.w-20px{width:20px!important}.w-30px{width:30px!important}.w-35px{width:35px!important}.w-40px{width:40px!important}.w-45px{width:45px!important}.w-50px{width:50px!important}.w-60px{width:60px!important}.w-70px{width:70px!important}.w-80px{width:80px!important}.w-90px{width:90px!important}.w-100px{width:100px!important}.w-110px{width:110px!important}.w-120px{width:120px!important}.w-130px{width:130px!important}.w-140px{width:140px!important}.w-150px{width:150px!important}.w-160px{width:160px!important}.w-180px{width:180px!important}.w-200px{width:200px!important}.w-230px{width:230px!important}.w-250px{width:250px!important}.w-300px{width:300px!important}.w-400px{width:400px!important}.w-500px{width:500px!important}.w-600px{width:600px!important}.w-700px{width:700px!important}.w-800px{width:800px!important}.w-900px{width:900px!important}.mw-200px{max-width:200px!important}.mw-300px{max-width:300px!important}.mw-400px{max-width:400px!important}.mw-500px{max-width:500px!important}.mw-600px{max-width:600px!important}.mw-700px{max-width:700px!important}.mw-800px{max-width:800px!important}.mw-900px{max-width:900px!important}.mw-1400px{max-width:1400px!important}.w-id{width:70px!important}.w-pri{width:40px!important}.w-severity{width:50px!important}.w-hour{width:57px!important}.w-date{width:90px!important}.w-status{width:60px!important}.w-resolution,.w-type,.w-user{width:80px!important}.w-p15-f{width:15%!important;min-width:120px!important}.w-p25-f{width:25%!important;min-width:200px!important}.w-p35-f{width:35%!important;min-width:300px!important}.w-p45-f{width:45%!important;min-width:400px!important}.h-5px{height:5px!important}.h-10px{height:10px!important}.h-20px{height:20px!important}.h-30px{height:30px!important}.h-35px{height:35px!important}.h-40px{height:40px!important}.h-45px{height:45px!important}.h-50px{height:50px!important}.h-60px{height:60px!important}.h-70px{height:70px!important}.h-80px{height:80px!important}.h-100px{height:100px!important}.h-120px{height:120px!important}.h-130px{height:130px!important}.h-140px{height:140px!important}.h-150px{height:150px!important}.h-200px{height:200px!important}.pd-0{padding:0!important}.mg-0{margin:0!important}.mgb-20{margin-bottom:20px!important}.mgb-10{margin-bottom:10px!important}.pdb-20{padding-bottom:20px!important}.pdt-20{padding-top:20px!important}.br-0{border-radius:0!important}.bd-0,.bd-none,.borderless{border:none!important}.bg-none{background:0 0!important}.red{color:#fc5959!important}.icon-pro-version{font-size:14px!important}.icon-pro-version:before{position:relative;top:-1px;font-size:14px;color:#fc5959;content:"\e92b"}.bg-primary{color:#fff;background:#3785ff;border-top-color:#2e7fff}.bg-primary-pure{color:#fff;background-color:#2e7fff}.bg-primary-pale{color:#2e7fff;background-color:#e6f0ff}.bg-secondary{color:#fff;background:#18a6fd}.line-gray-8{background:#d8dbde}.line-gray-5{background:#e3e4e9}.line-gray-7{background:#eee}.bg-gray-1{background:#e3e4e9}.bg-gray-2{background:#edeef2}.bg-gray-3{background:#f8f8f8}.bg-green-400{background:#48d1a0}.bg-yellow-400{background:#ffaf65}.bg-blue-400{background:#60c2ff}.bg-red-400{background:#ff7c7c}.bg-important-400{background:#ff9777}.bg-purple-400{background:#8a6ff5}.bg-green-600{background:#0dbb7d}.bg-yellow-600{background:#f38f19}.bg-blue-600{background:#00c0e9}.bg-red-600{background:#fb2b2b}.bg-important-600{background:#ff6f42}.bg-purple-600{background:#7055df}.bg-green-700{background:#0ca76f}.bg-yellow-700{background:#ed8307}.bg-blue-700{background:#1099ed}.bg-red-700{background:#d91b1b}.bg-important-700{background:#ff4912}.bg-purple-700{background:#513baa}.bg-green-900{background:#186c4e}.bg-yellow-900{background:#af5f01}.bg-blue-900{background:#046bab}.bg-red-900{background:#a20606}.bg-important-900{background:#611700}.bg-purple-900{background:#30216f}.bg-hover{background:#f6f6f6}.bg-active{background:#e6eaf1}.hl-tutorial{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 0 0 #000!important;box-shadow:0 0 0 0 #000!important;-webkit-transition:-webkit-box-shadow 1s!important;-o-transition:box-shadow 1s!important;transition:-webkit-box-shadow 1s!important;transition:box-shadow 1s!important;transition:box-shadow 1s,-webkit-box-shadow 1s!important}.hl-tutorial.hl-in{-webkit-box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 3000px rgba(0,0,0,.2)!important;box-shadow:0 0 20px 0 #ffff8d,0 0 0 2px #ffd180,0 0 0 3000px rgba(0,0,0,.2)!important}.btn.tooltip-tutorial,.hl-tutorial.hl-in:hover{position:relative!important;z-index:1010!important;-webkit-box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 3000px rgba(0,0,0,.3)!important;box-shadow:0 0 30px 0 #ffff8d,0 0 0 5px #ffd180,0 0 0 3000px rgba(0,0,0,.3)!important}.tooltip-max .tooltip-inner{max-width:1000px;padding:8px 10px}.transition-all *{-webkit-transition:all .2s!important;-o-transition:all .2s!important;transition:all .2s!important}.scroll-x{overflow-x:auto!important}.scroll-y{overflow-y:auto!important}.divider+.divider{display:none}.ie *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}@font-face{font-family:Oswald;font-weight:400;src:url(../fonts/Oswald-Regular.ttf)}@font-face{font-family:Oswald;font-weight:500;src:url(../fonts/Oswald-Medium.ttf)}@font-face{font-family:Oswald;font-weight:300;src:url(../fonts/Oswald-Light.ttf)}.num{font-family:Oswald;font-weight:400}@font-face{font-family:ZentaoIcon;font-style:normal;font-weight:400;src:url(../fonts/ZentaoIcon.eot?v=1.34);src:url(../fonts/ZentaoIcon.eot?#iefix&v=1.34) format('embedded-opentype'),url(../fonts/ZentaoIcon.woff?v=1.34) format('woff'),url(../fonts/ZentaoIcon.ttf?v=1.34) format('truetype'),url(../fonts/ZentaoIcon.svg#regular?v=1.34) format('svg')}.icon,[class*=" icon-"],[class^=icon-]{font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon:before{display:inline-block;min-width:14px;text-align:center}a .icon,a [class*=" icon-"],a [class^=icon-]{display:inline}.icon-lg:before{font-size:1.33333333em;vertical-align:-10%}.icon-2x{font-size:28px}.icon-3x{font-size:42px}.icon-4x{font-size:56px}.icon-5x{font-size:70px}.icon-spin{display:inline-block;-webkit-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-spin{display:inline-block;text-decoration:none}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0);transform:rotate(0)}100%{-o-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);-o-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);-o-transform:rotate(359deg);transform:rotate(359deg)}}.icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg)}.icon-flip-horizontal{-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);-o-transform:scale(-1,1);transform:scale(-1,1)}.icon-flip-vertical{-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);-o-transform:scale(1,-1);transform:scale(1,-1)}.icon.icon-flip-horizontal,.icon.icon-flip-vertical,.icon.icon-rotate-180,.icon.icon-rotate-270,.icon.icon-rotate-90{display:inline-block}.icon-zentao:before{content:"\e901"}.icon-zentao-alt:before{content:"\e900"}.icon-help:before{content:"\e968"}.icon-import:before{content:"\e904"}.icon-download:before{content:"\e904"}.icon-export:before{content:"\e905"}.icon-lightbulb:before{content:"\e91c"}.icon-close:before{content:"\e936"}.icon-check:before{content:"\e5ca"}.icon-plus:before{content:"\e925"}.icon-minus:before{content:"\e926"}.icon-expand-alt:before{content:"\e6f1"}.icon-collapse-alt:before{content:"\e6f2"}.icon-fullscreen:before{content:"\e96b"}.icon-star-empty:before{content:"\e94a"}.icon-star:before{content:"\e94b"}.icon-exclamation-sign:before{content:"\e930"}.icon-info-sign:before{content:"\e9d5"}.icon-flag:before{content:"\e937"}.icon-check-circle:before{content:"\e92f"}.icon-check-sign:before{content:"\e938"}.icon-chart-pie:before{content:"\e95b"}.icon-history:before{content:"\e95f"}.icon-pencil:before{content:"\e254"}.icon-search:before{content:"\e928"}.icon-restart:before{content:"\e95e"}.icon-cog:before{content:"\e93b"}.icon-chart-line:before{content:"\e95c"}.icon-chart-bar:before{content:"\e95d"}.icon-bar-chart:before{content:"\e95d"}.icon-exchange:before{content:"\e927"}.icon-severity:before{content:"\e973"}.icon-book:before{content:"\f02d"}.icon-treemap-alt:before{content:"\e971"}.icon-severity-solid:before{content:"\e902"}.icon-chat-line:before{content:"\e998"}.icon-stack:before{content:"\e943"}.icon-cube:before{content:"\e967"}.icon-minus-sign:before{content:"\e939"}.icon-bars-sign:before{content:"\e93a"}.icon-chat:before{content:"\e940"}.icon-message:before{content:"\e940"}.icon-more:before{content:"\e744"}.icon-certificate:before{content:"\f0a3"}.icon-bell:before{content:"\e7f5"}.icon-columns:before{content:"\f0db"}.icon-envelope-o:before{content:"\e92a"}.icon-unfold-all:before{content:"\e931"}.icon-fold-all:before{content:"\e932"}.icon-bars:before{content:"\e948"}.icon-cards-view:before{content:"\e949"}.icon-ellipsis-v:before{content:"\e5d4"}.icon-spinner-indicator:before{content:"\e982"}.icon-up-circle:before{content:"\e92b"}.icon-right-circle:before{content:"\e92c"}.icon-down-circle:before{content:"\e92d"}.icon-left-circle:before{content:"\e92e"}.icon-angle-double-right:before{content:"\f101"}.icon-angle-down:before{content:"\e313"}.icon-angle-left:before{content:"\e314"}.icon-angle-right:before{content:"\e315"}.icon-angle-top:before{content:"\e316"}.icon-first-page:before{content:"\e5dc"}.icon-last-page:before{content:"\e5dd"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-arrow-up:before{content:"\e923"}.icon-arrow-down:before{content:"\e924"}.icon-arrow-left:before{content:"\e952"}.icon-arrow-right:before{content:"\e93e"}.icon-chevron-left:before{content:"\e934"}.icon-chevron-right:before{content:"\e935"}.icon-chevron-double-up:before{content:"\e959"}.icon-chevron-double-down:before{content:"\e95a"}.icon-folder-account:before{content:"\e942"}.icon-folder-move:before{content:"\e960"}.icon-folder-plus:before{content:"\e961"}.icon-folder-upload:before{content:"\e962"}.icon-folder-star:before{content:"\e963"}.icon-folder-edit:before{content:"\e964"}.icon-folder-download:before{content:"\e965"}.icon-folder-outline:before{content:"\e966"}.icon-folder:before{content:"\e944"}.icon-folder-o:before{content:"\e945"}.icon-folder-open-o:before{content:"\e946"}.icon-folder-open:before{content:"\e947"}.icon-color:before{content:"\e93c"}.icon-paper-clip:before{content:"\e93d"}.icon-text:before{content:"\e929"}.icon-share:before{content:"\f064"}.icon-format-list-bulleted:before{content:"\e9a8"}.icon-format-bold:before{content:"\e953"}.icon-format-header-pound:before{content:"\e954"}.icon-format-italic:before{content:"\e955"}.icon-format-list-numbers:before{content:"\e969"}.icon-format-quote-close:before{content:"\e96a"}.icon-image:before{content:"\e96c"}.icon-table-large:before{content:"\e96d"}.icon-aiux:before{content:"\e99e"}.icon-qc:before{content:"\e986"}.icon-qc-q:before{content:"\e985"}.icon-qc-c:before{content:"\e987"}.icon-sonarqube:before{content:"\e9ba"}.icon-college:before{content:"\e9c8"}.icon-ztool:before{content:"\e9c1"}.icon-contacts:before{content:"\e9c3"}.icon-chats:before{content:"\e9c4"}.icon-menu-my:before{content:"\e97a"}.icon-home:before{content:"\e97a"}.icon-program:before{content:"\e9aa"}.icon-lightbulb-alt:before{content:"\e98f"}.icon-product:before{content:"\e98f"}.icon-rocket:before{content:"\e99c"}.icon-project:before{content:"\e99c"}.icon-run:before{content:"\e9a9"}.icon-test:before{content:"\e956"}.icon-infinite:before{content:"\e9a3"}.icon-devops:before{content:"\e9a3"}.icon-ops:before{content:"\e903"}.icon-doc:before{content:"\e99b"}.icon-menu-doc:before{content:"\e99b"}.icon-statistic:before{content:"\e999"}.icon-menu-backend:before{content:"\e993"}.icon-assets:before{content:"\e9ae"}.icon-diamond:before{content:"\e9ae"}.icon-feedback:before{content:"\e991"}.icon-flow:before{content:"\e994"}.icon-oa:before{content:"\e9a1"}.icon-more-circle:before{content:"\e988"}.icon-controls:before{content:"\e995"}.icon-account:before{content:"\e992"}.icon-about:before{content:"\e996"}.icon-info:before{content:"\e996"}.icon-cog-outline:before{content:"\e997"}.icon-backend:before{content:"\e997"}.icon-exit:before{content:"\e99a"}.icon-theme:before{content:"\e9a0"}.icon-globe:before{content:"\f0ac"}.icon-lang:before{content:"\f0ac"}.icon-table-sort:before{content:"\e9e1"}.icon-blame:before{content:"\e9e0"}.icon-draft-edit:before{content:"\e9dd"}.icon-sub-review:before{content:"\e9df"}.icon-sub-review-user:before{content:"\e9db"}.icon-ztf:before{content:"\e9dc"}.icon-save:before{content:"\e9d8"}.icon-list-box:before{content:"\e9b4"}.icon-usecase:before{content:"\e99d"}.icon-code:before{content:"\e990"}.icon-summary:before{content:"\e9ad"}.icon-more-alt:before{content:"\e9a7"}.icon-customer:before{content:"\e9d9"}.icon-ticket:before{content:"\e9e1"}.icon-gantt-alt:before{content:"\e9e2"}.icon-appose:before{content:"\e9e2"}.icon-inline:before{content:"\e9e3"}.icon-tree:before{content:"\e9c9"}.icon-list:before{content:"\e9cb"}.icon-gantt:before{content:"\e9cc"}.icon-group-view:before{content:"\e9cd"}.icon-inherit-space:before{content:"\e9c2"}.icon-card-archive:before{content:"\e9b8"}.icon-col-archive:before{content:"\e9b9"}.icon-col-add-right:before{content:"\e9bb"}.icon-col-add-left:before{content:"\e9bc"}.icon-col-split:before{content:"\e9bd"}.icon-waterfall:before{content:"\e9a4"}.icon-manual:before{content:"\e98d"}.icon-kanban:before{content:"\e983"}.icon-lane:before{content:"\e9b1"}.icon-back:before{content:"\e9d3"}.icon-back-circle:before{content:"\e9da"}.icon-shield:before{content:"\e9ca"}.icon-meh:before{content:"\e9ce"}.icon-frown:before{content:"\e9cf"}.icon-smile:before{content:"\e9d0"}.icon-unlock-solid:before{content:"\e9d1"}.icon-lock-solid:before{content:"\e9d2"}.icon-ver:before{content:"\e9c6"}.icon-publish:before{content:"\e9c7"}.icon-send:before{content:"\e9c7"}.icon-tag:before{content:"\e9be"}.icon-tag-lock:before{content:"\e9bf"}.icon-code-fork:before{content:"\f126"}.icon-branch-lock:before{content:"\e9c0"}.icon-groups:before{content:"\e9af"}.icon-thumbs-up:before{content:"\f087"}.icon-thumbs-down:before{content:"\f088"}.icon-thumbs-up-solid:before{content:"\e9d6"}.icon-thumbs-down-solid:before{content:"\e9d7"}.icon-hash:before{content:"\e9ab"}.icon-version:before{content:"\e9ab"}.icon-p-square:before{content:"\e97b"}.icon-video-play:before{content:"\e97f"}.icon-plus-solid-circle:before{content:"\e974"}.icon-minuse-solid-circle:before{content:"\e9b6"}.icon-s:before{content:"\e975"}.icon-c:before{content:"\e976"}.icon-t:before{content:"\e977"}.icon-guide:before{content:"\e978"}.icon-todo:before{content:"\e979"}.icon-side-left:before{content:"\e9b3"}.icon-side-right:before{content:"\e9b2"}.icon-fullscreen-exit:before{content:"\e972"}.icon-alert:before{content:"\e99f"}.icon-undo:before{content:"\e93f"}.icon-redo:before{content:"\e9d4"}.icon-swap:before{content:"\e9b0"}.icon-chat-solid:before{content:"\e9b5"}.icon-clock:before{content:"\e97c"}.icon-cost:before{content:"\e97d"}.icon-pencil-alt:before{content:"\e984"}.icon-size-height:before{content:"\e9c5"}.icon-file-log:before{content:"\e9de"}.icon-rich-text:before{content:"\e913"}.icon-markdown:before{content:"\e916"}.icon-excel:before{content:"\e933"}.icon-text-link:before{content:"\e94d"}.icon-ppt:before{content:"\e957"}.icon-word:before{content:"\e958"}.icon-doc-lib:before{content:"\e96f"}.icon-file:before{content:"\f016"}.icon-file-empty:before{content:"\f016"}.icon-file-text:before{content:"\f0f6"}.icon-file-alt:before{content:"\f15b"}.icon-file-text-alt:before{content:"\f15c"}.icon-file-pdf:before{content:"\f1c1"}.icon-file-word:before{content:"\f1c2"}.icon-file-excel:before{content:"\f1c3"}.icon-file-powerpoint:before{content:"\f1c4"}.icon-file-image:before{content:"\f1c5"}.icon-file-archive:before{content:"\f1c6"}.icon-file-audio:before{content:"\f1c7"}.icon-file-video:before{content:"\f1c8"}.icon-file-code:before{content:"\f1c9"}.icon-menu-collapse:before{content:"\e980"}.icon-menu-expand:before{content:"\e981"}.icon-group:before{content:"\e97e"}.icon-menu-users:before{content:"\e97e"}.icon-persons:before{content:"\e97e"}.icon-team:before{content:"\e97e"}.icon-estimate:before{content:"\e9ac"}.icon-sprint:before{content:"\e9a2"}.icon-shield-check:before{content:"\e9a5"}.icon-ok:before{content:"\e9a6"}.icon-printer:before{content:"\e906"}.icon-bullhorn:before{content:"\e910"}.icon-person:before{content:"\e941"}.icon-fields:before{content:"\e989"}.icon-trigger:before{content:"\e98a"}.icon-layout:before{content:"\e98b"}.icon-audit:before{content:"\e98c"}.icon-cancel:before{content:"\e951"}.icon-ban-circle:before{content:"\e951"}.icon-eye:before{content:"\e94e"}.icon-eye-off:before{content:"\e96e"}.icon-unlock:before{content:"\e94f"}.icon-lock:before{content:"\e950"}.icon-private:before{content:"\e950"}.icon-move:before{content:"\e94c"}.icon-hand-right:before{content:"\e907"}.icon-checked:before{content:"\e908"}.icon-off:before{content:"\e909"}.icon-start:before{content:"\e90a"}.icon-play:before{content:"\e90a"}.icon-time:before{content:"\e90b"}.icon-edit:before{content:"\e90c"}.icon-trash:before{content:"\e90d"}.icon-link:before{content:"\e90e"}.icon-unlink:before{content:"\e90f"}.icon-bug:before{content:"\e911"}.icon-list-alt:before{content:"\e912"}.icon-change:before{content:"\e970"}.icon-alter:before{content:"\e970"}.icon-glasses:before{content:"\e914"}.icon-review:before{content:"\e914"}.icon-sitemap:before{content:"\e915"}.icon-testcase:before{content:"\e915"}.icon-pluses:before{content:"\e917"}.icon-report-list:before{content:"\e918"}.icon-magic:before{content:"\e919"}.icon-active:before{content:"\e919"}.icon-treemap:before{content:"\e91a"}.icon-confirm:before{content:"\e91b"}.icon-split:before{content:"\e98e"}.icon-delay:before{content:"\e91d"}.icon-calendar:before{content:"\e91d"}.icon-pause:before{content:"\e91e"}.icon-ban:before{content:"\e91f"}.icon-plus-bold:before{content:"\e920"}.icon-copy:before{content:"\e921"}.icon-refresh:before{content:"\e922"}.icon-diff:before{content:"\e9b7"}.icon-sm:before{font-size:14px;vertical-align:10%}.icon-qc{position:relative}.icon-qc:before{width:1em;color:#7cb938;content:"\e985"}.icon-qc:after{position:absolute;top:0;left:0;width:1em;height:1em;font-family:ZentaoIcon;font-size:14px;font-size:inherit;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:#36a742;text-transform:none;content:"\e987";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-message.has-dot{position:relative}.icon-message.has-dot::after{position:absolute;top:-3px;right:-5px;display:block;width:6px;height:6px;content:' ';background-color:#fc5959;border-radius:50%}.icon-project{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.icon-product{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);-o-transform:scale(1.15);transform:scale(1.15)}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:18px;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:4px;-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background,border,outline,opacity,-webkit-box-shadow;-o-transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,outline,opacity,-webkit-box-shadow;transition-property:background,border,box-shadow,outline,opacity;transition-property:background,border,box-shadow,outline,opacity,-webkit-box-shadow}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#313c52;text-decoration:none}.btn:active{text-decoration:none;background-image:none;outline:0;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;filter:grayscale(1);-webkit-box-shadow:none;box-shadow:none;opacity:.5;-webkit-filter:grayscale(1)}.btn{color:#313c52;background-color:#fff;border-color:#d8dbde}.btn.active,.btn.hover,.btn:active,.btn:focus,.btn:hover,.open .dropdown-toggle.btn{color:#313c52;background-color:rgba(255,255,255,.8);border-color:#bcc2c7}.btn.active,.btn:active,.open .dropdown-toggle.btn{background-color:#f2f2f2;background-image:none;border-color:#bcc2c7}.btn.disabled,.btn.disabled.active,.btn.disabled:active,.btn.disabled:focus,.btn.disabled:hover,.btn[disabled],.btn[disabled].active,.btn[disabled]:active,.btn[disabled]:focus,.btn[disabled]:hover,fieldset[disabled] .btn,fieldset[disabled] .btn.active,fieldset[disabled] .btn:active,fieldset[disabled] .btn:focus,fieldset[disabled] .btn:hover{color:rgba(49,60,82,.3);background-color:#fff;border-color:#d8dbde}.btn-gray{color:#82899f;background-color:#f1f1f1;border-color:#f1f1f1}.btn-gray.active,.btn-gray.hover,.btn-gray:active,.btn-gray:focus,.btn-gray:hover,.open .dropdown-toggle.btn-gray{color:#82899f;background-color:rgba(241,241,241,.8);border-color:#d8d8d8}.btn-gray.active,.btn-gray:active,.open .dropdown-toggle.btn-gray{background-color:#e4e4e4;background-image:none;border-color:#d8d8d8}.btn-gray.disabled,.btn-gray.disabled.active,.btn-gray.disabled:active,.btn-gray.disabled:focus,.btn-gray.disabled:hover,.btn-gray[disabled],.btn-gray[disabled].active,.btn-gray[disabled]:active,.btn-gray[disabled]:focus,.btn-gray[disabled]:hover,fieldset[disabled] .btn-gray,fieldset[disabled] .btn-gray.active,fieldset[disabled] .btn-gray:active,fieldset[disabled] .btn-gray:focus,fieldset[disabled] .btn-gray:hover{color:rgba(130,137,159,.3);background-color:#f1f1f1;border-color:#f1f1f1}.btn-primary{color:#fff;background-color:#2e7fff;border-color:transparent}.btn-primary.active,.btn-primary.hover,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:rgba(46,127,255,.8);border-color:rgba(0,0,0,0)}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-color:#156fff;background-image:none;border-color:rgba(0,0,0,0)}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{color:rgba(255,255,255,.3);background-color:#2e7fff;border-color:transparent}.btn-secondary{color:#fff;background-color:#18a6fd;border-color:transparent}.btn-secondary.active,.btn-secondary.hover,.btn-secondary:active,.btn-secondary:focus,.btn-secondary:hover,.open .dropdown-toggle.btn-secondary{color:#fff;background-color:rgba(24,166,253,.8);border-color:rgba(0,0,0,0)}.btn-secondary.active,.btn-secondary:active,.open .dropdown-toggle.btn-secondary{background-color:#029bf9;background-image:none;border-color:rgba(0,0,0,0)}.btn-secondary.disabled,.btn-secondary.disabled.active,.btn-secondary.disabled:active,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary[disabled],.btn-secondary[disabled].active,.btn-secondary[disabled]:active,.btn-secondary[disabled]:focus,.btn-secondary[disabled]:hover,fieldset[disabled] .btn-secondary,fieldset[disabled] .btn-secondary.active,fieldset[disabled] .btn-secondary:active,fieldset[disabled] .btn-secondary:focus,fieldset[disabled] .btn-secondary:hover{color:rgba(255,255,255,.3);background-color:#18a6fd;border-color:transparent}.btn-warning{color:#fff;background-color:#ff9f46;border-color:transparent}.btn-warning.active,.btn-warning.hover,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:rgba(255,159,70,.8);border-color:rgba(0,0,0,0)}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-color:#ff922c;background-image:none;border-color:rgba(0,0,0,0)}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{color:rgba(255,255,255,.3);background-color:#ff9f46;border-color:transparent}.btn-danger{color:#fff;background-color:#fc5959;border-color:transparent}.btn-danger.active,.btn-danger.hover,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:rgba(252,89,89,.8);border-color:rgba(0,0,0,0)}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-color:#fc4040;background-image:none;border-color:rgba(0,0,0,0)}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{color:rgba(255,255,255,.3);background-color:#fc5959;border-color:transparent}.btn-success{color:#fff;background-color:#22c98d;border-color:transparent}.btn-success.active,.btn-success.hover,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:rgba(34,201,141,.8);border-color:rgba(0,0,0,0)}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-color:#1eb37e;background-image:none;border-color:rgba(0,0,0,0)}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{color:rgba(255,255,255,.3);background-color:#22c98d;border-color:transparent}.btn-info{color:#2e7fff;background-color:#e6f0ff;border-color:transparent}.btn-info.active,.btn-info.hover,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#2e7fff;background-color:rgba(230,240,255,.8);border-color:rgba(0,0,0,0)}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-color:#cce1ff;background-image:none;border-color:rgba(0,0,0,0)}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{color:rgba(46,127,255,.3);background-color:#e6f0ff;border-color:transparent}.btn-link{padding-right:6px;padding-left:6px;font-weight:400;color:#313c52;text-shadow:none;cursor:pointer;background:0 0;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover,.btn-link[disabled],fieldset[disabled] .btn-link{border-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link:focus,.btn-link:hover{color:#0b0f18;background:#f1f1f1;background:rgba(0,0,0,.075)}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#c4c4c4;text-decoration:none}.btn-lg{padding:11px 16px;font-size:14px;line-height:18px;border-radius:4px}.btn-mini,.btn-sm{padding:3px 8px;font-size:12px;line-height:18px;border-radius:4px}.btn-mini,.btn-xs{padding:0 5px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-wide{min-width:120px}.btn-limit{max-width:180px;padding-right:20px;overflow:hidden;text-overflow:unset;white-space:nowrap}.btn-limit>.caret{position:absolute;top:14px;right:8px}.btn-circle{border-radius:17px}.btn>.label-icon{top:3px;padding:3px;margin:-2px;background-color:rgba(0,0,0,.2);border-radius:12px}.btn>.label-icon>.icon{font-size:16px;line-height:18px}.btn>.icon+.text{margin-left:5px}.btn.btn-sm.btn-circle{border-radius:12px}.btn.btn-sm>.label-icon{top:2px;width:20px;height:20px;padding:1px;line-height:20px}.btn.btn-sm>.label-icon>.icon{position:relative;top:-1px;display:inline-block;font-size:14px;line-height:18px}.btn-icon-left{position:relative;padding-left:35px;overflow:hidden;text-align:right}.btn-icon-left>.label-icon{position:absolute;left:5px;margin:0}.btn-icon-left>.icon{position:absolute;top:0;bottom:0;left:0;display:block;width:30px;line-height:30px;color:#18a6fd;text-align:center;background:#e6f0ff}.btn-icon-left.btn-sm{padding-left:28px}.btn-icon-left.btn-sm>.label-icon{left:2px}.btn-icon-left.btn-sm>.icon{width:24px;line-height:24px}.btn-icon-right{position:relative;padding-right:35px;text-align:left}.btn-icon-right>.label-icon{position:absolute;right:5px;margin:0}.btn-icon-right.btn-sm{padding-right:28px}.btn-icon-right.btn-sm>.label-icon{right:2px}.btn-icon{min-width:32px;padding-right:0;padding-left:0}.btn-icon.btn-sm{width:24px;min-width:24px;height:24px}.btn-group{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group>.btn-group{float:left}.btn-group>.btn{border-radius:0}.btn-group>.btn:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.btn-group>.btn:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.dropdown{float:left;margin-right:10px}.btn-toolbar>.btn-group:last-child,.btn-toolbar>.btn:last-child,.btn-toolbar>.dropdown:last-child{margin-right:0}.btn-toolbar>.divider{float:left;height:20px;margin:7px 5px 4px 10px;border-left:1px solid rgba(0,0,0,.1)}.btn-toolbar .space{float:left;min-height:1px;margin:0 10px 0 10px}.btn-toolbar .input-control{float:left;width:120px}.btn-toolbar .page-title{float:left;line-height:34px}.btn-toolbar .page-title .text{font-size:14px;font-weight:700}.btn-toolbar .page-title .label{top:-2px;margin-right:10px}.btn-toolbar .divider+.page-title{margin-left:15px}.btn-active-line{position:relative;font-weight:700;color:#2e7fff}.btn-active-line:after{position:absolute;right:5px;bottom:1px;left:5px;display:block;content:' ';border-bottom:2px solid #2e7fff}.btn-active-line:hover{color:#2e7fff}.btn-active-text .text{position:relative;top:-1px;display:inline-block;font-weight:700;color:#1e6aeb}.btn-active-text .text:after{position:absolute;bottom:-5px;display:block;width:100%;content:' ';border-bottom:2px solid #2e7fff}.angle-btn{position:relative;padding:1px;background:#fff;border:1px solid #c4c4c4;border-right:none}.angle-btn:first-child{border-radius:2px 0 0 2px}.btn-toolbar>.angle-btn{margin-right:8px}.angle-btn:after,.angle-btn:before{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #c4c4c4;border-style:solid;border-width:17px 0 17px 8px}.angle-btn:after{right:-7px;border-color:transparent transparent transparent #fff;border-radius:2px}.angle-btn .btn{padding:6px;font-weight:700;background:#fff;border:none;border-radius:4px!important}.angle-btn .btn.btn-limit{padding-right:16px}.angle-btn .btn.btn-limit>.caret{right:4px}.angle-btn+.angle-btn{border-left:none}.angle-btn+.angle-btn>.btn-group:first-child{padding-left:8px}.angle-btn+.angle-btn>.btn-group:first-child:after,.angle-btn+.angle-btn>.btn-group:first-child:before{position:absolute;top:-2px;left:0;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #c4c4c4;border-style:solid;border-width:17px 0 17px 8px}.angle-btn+.angle-btn>.btn-group:first-child:after{left:-1px;border-color:transparent transparent transparent #fff;border-width:17px 0 17px 8px}.btn-toolbar>.angle-btn.active,.btn-toolbar>.angle-btn:last-child{border-color:#2e7fff}.btn-toolbar>.angle-btn.active .btn,.btn-toolbar>.angle-btn:last-child .btn{color:#2e7fff}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn.active:before,.btn-toolbar>.angle-btn:last-child:after,.btn-toolbar>.angle-btn:last-child:before{border-color:transparent transparent transparent #2e7fff}.btn-toolbar>.angle-btn.active:after,.btn-toolbar>.angle-btn:last-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:before,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before{border-color:transparent transparent transparent #2e7fff}.btn-toolbar>.angle-btn+.angle-btn:last-child>.btn-group:first-child:after,.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn,.btn-toolbar>.angle-btn.normal{border-color:#c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn .btn,.btn-toolbar>.angle-btn.normal .btn{color:#313c52}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.active+.angle-btn:before,.btn-toolbar>.angle-btn.normal:after,.btn-toolbar>.angle-btn.normal:before{border-color:transparent transparent transparent #c4c4c4}.btn-toolbar>.angle-btn.active+.angle-btn:after,.btn-toolbar>.angle-btn.normal:after{border-color:transparent transparent transparent #fff}.btn-toolbar>.angle-btn.active+.angle-btn>.btn-group:first-child:before,.btn-toolbar>.angle-btn.normal>.btn-group:first-child:before{border-color:transparent transparent transparent #c4c4c4!important}.nav>li>.btn.btn-primary{color:#fff}.nav>li>.btn.btn-primary:focus,.nav>li>.btn.btn-primary:hover{background:rgba(46,127,255,.8)}.btn.btn-action,.c-actions .btn{display:inline-block;width:26px;padding:2px;overflow:hidden;line-height:20px;color:#18a6fd;background:0 0;border-color:transparent}.btn.btn-action>i,.c-actions .btn>i{position:relative;top:1px;font-size:18px}.btn.btn-action:hover,.c-actions .btn:hover{color:#2e7fff;background-color:#cce1ff}.c-actions .btn+.btn{margin-left:-4px}.label{position:relative;display:inline-block;padding:3px 5px;font-size:12px;font-weight:400;vertical-align:middle;border-radius:2px}.label+.label{margin-left:4px}.label-pale{background:#b3d1ff!important}.label-badge{border-radius:9px}.label-light{color:#3c4353;background-color:#ddd}.label-primary{background:#2e7fff!important}.label-gray{color:#878da0;background:#e8ebef}.label-outline.label-danger{color:#fc5959;background:#ffebeb;border-color:rgba(252,89,89,.25)}.label-outline.label-light{color:#838a9d;background:#f2f5fb;border-color:#e1e5ee}.label-primary.label-outline{background:#e6f0ff!important;border-color:rgba(46,127,255,.25)}.label-outline.label-success{background:#ecfff8;border-color:rgba(34,201,141,.25)}.label-outline.label-info{background:#e7f6ff;border-color:rgba(55,178,254,.25)}.label-outline.label-warning{background:#fff4ea;border-color:rgba(255,159,70,.25)}.label-dot{position:relative;top:-1px;padding:0;border-radius:50%}.label-dot+.status-text{display:inline-block;margin-left:5px}.label-icon{min-width:18px;padding:0;line-height:18px;border-radius:10px}.label-id{display:inline-block;min-width:30px;padding:0 5px;font-size:12px;line-height:16px;color:#838a9d;text-align:center;vertical-align:middle;background-color:transparent;border:1px solid #838a9d;border-radius:2px}.pri-1,.todo-pri-1{color:#fc5959}[class*=" status-"],[class^=status-]{color:#313c52}.status-changed,.status-delayed,.status-doing,.status-fail,.status-investigate{color:#fc5959}.status-changed>.label-dot,.status-delayed>.label-dot,.status-doing>.label-dot,.status-fail>.label-dot,.status-investigate>.label-dot{background-color:#fc5959}.status-wait{color:#838a9d}.status-wait>.label-dot{background-color:#7ec5ff}.status-unclosed{color:#838a9d}.status-unclosed>.label-dot{background-color:#2e7fff}.status-done,.status-normal,.status-pass,.status-resolved{color:#43a047}.status-done>.label-dot,.status-normal>.label-dot,.status-pass>.label-dot,.status-resolved>.label-dot{background-color:#22c98d}.status-postpone{color:#838a9d}.status-postpone>.label-dot{background-color:#fc5959}.status-blocked{position:relative;left:-5px;display:inline-block;padding:0 5px;line-height:20px;color:#313c52;background:0 0;border-radius:10px}.status-blocked>.label-dot{background-color:#ff9f46}.status-pause,.status-suspended{color:#ff9f46}.status-pause>.label-dot,.status-suspended>.label-dot{background-color:#ff9f46}.status-active.status-bug,.status-draft{color:#8166ee}.status-active.status-bug>.label-dot,.status-draft>.label-dot{background-color:#8166ee}.status-closed,.status-terminate{color:#838a9d}.status-closed>.label-dot,.status-terminate>.label-dot{background-color:#838a9d}.status-cancel{color:#838a9d}.status-cancel>.label-dot{background-color:#c4c4c4}.label-pri{display:inline-block;min-width:18px;max-width:100%;height:18px;padding:0 4px;overflow:hidden;font-size:12px;line-height:16px;color:#838a9d;text-align:center;text-overflow:clip;white-space:normal;vertical-align:middle;border:1px solid #838a9d;border-radius:10px}.label-pri-1,.label-selector>.label-pri[data-value="1"]{overflow:visible;color:#ff6f42;border-color:#ff6f42}.label-pri-2,.label-selector>.label-pri[data-value="2"]{color:#f38f19;border-color:#f38f19}.label-pri-3,.label-selector>.label-pri[data-value="3"]{color:#37b2fe;border-color:#37b2fe}.label-pri-4,.label-selector>.label-pri[data-value="4"]{color:#22c98d;border-color:#22c98d}.label-pri-5,.label-selector>.label-pri[data-value="5"]{color:#838a9d;border-color:#838a9d}.label-pri-0,.label-selector>.label-pri.active[data-value="0"]{color:#d5d9df;border-color:#d5d9df}.label-severity{position:relative;display:inline-block;width:24px;height:20px;font-weight:bolder;text-align:center;vertical-align:middle}.label-severity:before{position:absolute;top:-3px;left:0;z-index:0;display:block;font-family:ZentaoIcon;font-size:14px;font-size:24px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;color:inherit;text-transform:none;content:"\e973";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.label-severity:after{position:absolute;top:7px;left:0;z-index:1;display:block;width:24px;font-size:12px;line-height:12px;text-align:center;content:attr(data-severity)}.label-severity[data-severity],.label-severity[data-value]{color:#ccc}.label-severity[data-severity="0"],.label-severity[data-value="0"]{color:#ccc}.label-severity[data-severity="1"],.label-severity[data-value="1"]{color:#fb2b2b}.label-severity[data-severity="2"],.label-severity[data-value="2"]{color:#c92d79}.label-severity[data-severity="3"],.label-severity[data-value="3"]{color:#f48116}.label-severity[data-severity="4"],.label-severity[data-value="4"]{color:#ffba34}.label-severity[data-severity="5"],.label-severity[data-value="5"]{color:#9ea3b0}.label-severity-custom[data-severity]{color:#d5d9df}.label-severity-custom[data-severity="1"]{color:#c62828}.label-severity-custom[data-severity="2"]{color:#ff8f00}.label-severity-custom[data-severity="3"]{color:#fdd835}.label-severity-custom[data-severity="4"]{color:#cddc39}.label-severity-custom[data-severity="5"]{color:#8bc34a}.label-selector{padding:0 10px}.label-selector>.label{display:inline-block;min-width:24px;height:24px;padding:0 5px;font-size:14px;line-height:20px;text-align:center;cursor:pointer;background:0 0;border:2px solid #d5d9df;border-radius:15px}.label-selector>.label+.label{margin-left:10px}.label-selector>.label.empty{border-color:transparent}.label-selector>.label.label-severity{font-size:12px;line-height:28px;border-color:transparent}.label-selector>.label.label-severity:before{top:-2px;left:-2px}.label-selector>.label.label-severity:after{display:none}.label-selector>.label.label-severity.active{background:0 0;filter:none;-webkit-filter:none}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{margin-top:2px}.ie .checkbox input[type=checkbox],.ie .checkbox-inline input[type=checkbox],.ie .radio input[type=radio],.ie .radio-inline input[type=radio]{margin-top:4px}.is-firefox .checkbox input[type=checkbox],.is-firefox .checkbox-inline input[type=checkbox],.is-firefox .radio input[type=radio],.is-firefox .radio-inline input[type=radio]{margin-top:3px}.checkbox-primary,.radio-primary{position:relative;display:block;vertical-align:middle}.checkbox-primary.inline-block,.radio-primary.inline-block{display:inline-block}.checkbox-primary.inline-block+.inline-block,.radio-primary.inline-block+.inline-block{margin-left:15px}.checkbox-primary>input,.radio-primary>input{position:absolute;top:0;left:0;z-index:3;width:100%;height:100%;margin:0;opacity:0}.checkbox-primary>label,.radio-primary>label{display:block;height:20px;padding-left:20px;margin:0;font-weight:400;line-height:20px;cursor:pointer}.checkbox-primary>label:after,.checkbox-primary>label:before,.radio-primary>label:after,.radio-primary>label:before{position:absolute;top:3px;right:0;left:0;display:block;width:14px;height:14px;line-height:14px;text-align:center;content:' ';border-radius:3px}.checkbox-primary>label:after,.radio-primary>label:after{z-index:1;border:1px solid #d9dbe1;border-color:rgba(0,0,0,.15);-webkit-transition:.4s cubic-bezier(.175,.885,.32,1);-o-transition:.4s cubic-bezier(.175,.885,.32,1);transition:.4s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:border,background-color;-o-transition-property:border,background-color;transition-property:border,background-color}.checkbox-primary>label:before,.radio-primary>label:before{top:3px;z-index:2;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-weight:900;font-variant:normal;line-height:1;text-transform:none;content:"\e5ca";opacity:0;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:opacity,-webkit-transform;-o-transition-property:opacity,-o-transform;transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform,-o-transform;-webkit-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.checkbox-primary.checked>label:after,.checkbox-primary>input:checked+label:after,.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:#22c98d;border-color:#22c98d;border-width:4px}.checkbox-primary.checked>label:before,.checkbox-primary>input:checked+label:before,.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{color:#fff;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary input:indeterminate+label:before,.checkbox-primary.indeterminate>label:before,.radio-primary input:indeterminate+label:before,.radio-primary.indeterminate>label:before{top:9px;left:3px;width:8px;height:2px;content:' ';background-color:#a3a2bc;opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);-o-transform:scale(1);transform:scale(1)}.checkbox-primary.focus>label:after,.checkbox-primary>input:focus+label:after,.radio-primary.focus>label:after,.radio-primary>input:focus+label:after{border-color:#22c98d;-webkit-box-shadow:0 0 0 3px rgba(34,201,141,.2);box-shadow:0 0 0 3px rgba(34,201,141,.2)}.checkbox-primary:hover>label:after,.radio-primary:hover>label:after{border-color:#22c98d}.checkbox-primary.checkbox-right>label,.radio-primary.checkbox-right>label{padding:0 30px 0 0}.checkbox-primary.checkbox-right>label:after,.checkbox-primary.checkbox-right>label:before,.radio-primary.checkbox-right>label:after,.radio-primary.checkbox-right>label:before{right:0;left:auto}.checkbox-primary input:disabled+label:after,.checkbox-primary.disabled>label:after,.radio-primary input:disabled+label:after,.radio-primary.disabled>label:after{background-color:#e5e5e5!important;border-color:#bbb!important}.checkbox-primary input:disabled:checked+label:after,.checkbox-primary.checked.disabled>label:after,.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:#bbb!important}.radio-primary>label:after{border-radius:50%}.radio-primary>label:before{top:7px;left:6px;width:6px;height:6px;content:' ';border:none;border-radius:50%}.radio-primary.checked>label:after,.radio-primary>input:checked+label:after{background-color:transparent;border-color:#22c98d;border-width:2px}.radio-primary.checked>label:before,.radio-primary>input:checked+label:before{background-color:#22c98d}.radio-primary input:disabled:checked+label:after,.radio-primary.checked.disabled>label:after{background-color:transparent;border-color:#bbb}.radio-primary input:disabled:checked+label:before,.radio-primary.checked.disabled>label:before{background-color:#bbb}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li>a{position:relative;border:none!important;border-radius:2px!important}.nav-tabs>li.active>a{font-weight:700;color:#313c52!important}.nav-tabs>li.active>a:before{position:absolute;right:0;bottom:-1px;left:0;display:block;height:2px;content:' ';background:#2e7fff}.nav-tabs-primary>li.active>a{color:#1e6aeb!important}.panel{position:relative;margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.panel-body{padding:20px}.panel-body.has-table{padding:10px}.panel-body.has-table .table{margin-bottom:0;table-layout:fixed}.panel-heading{padding:12px 48px 12px 20px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading+.panel-body{padding-top:0}.panel-title{font-size:14px;font-weight:700;line-height:20px}.panel-title .label{top:-1px}.panel-actions{position:absolute;top:0;right:0;padding:7px 8px}.panel:hover .panel-actions{z-index:10}.panel-actions>li>a{display:inline-block;min-width:30px;padding:0 5px;line-height:30px;color:#a6aab8;text-align:center;border-radius:4px}.panel-actions>li>a:hover{color:#313c52;text-decoration:initial;background-color:#f1f1f1}.panel-actions .btn-icon{color:#a6aab8}.panel-actions .btn.text-primary{color:#2e7fff}.panel .empty-tip{padding:30px 10px 50px;font-size:14px;color:#838a9d;text-align:center}.progress-text-left{position:relative;margin:7px 0;margin-left:35px;overflow:visible}.progress-text-left .progress-text{position:absolute;top:-7px;left:-35px;display:block;width:35px;height:20px;padding-right:5px;line-height:20px;color:#838a9d;text-align:right}.chart-color{width:20px}.chart-color-dot{display:inline-block;width:10px;height:10px;border-radius:50%}.chart-row{margin-top:10px}.chart-row+.chart-row{padding-top:10px;border-top:1px solid #eee}.chart-wrapper{padding:10px 5px;background:#eee}.chart-wrapper>h4{margin:5px 0 10px}.table-wrapper{max-height:250px;overflow:auto}.table-wrapper .table{margin:0}.progress-pie{position:relative}.progress-pie canvas{display:block}.progress-pie .progress-info{position:absolute;top:0;left:0;width:100%;height:100%;padding-top:25px;text-align:center}.progress-pie .progress-info>small{display:block;line-height:14px;color:#a6aab8}.progress-pie .progress-info>strong{display:block;font-size:36px;line-height:40px}.progress-pie .progress-info>strong>small{font-size:20px}.progress-pie-120 .progress-info{padding-top:30px}.progress-pie-120 .progress-info>small{line-height:18px}.progress-pie-50 .progress-info{padding-top:4px}.progress-pie-50 .progress-info>strong{font-size:20px;font-weight:400}.progress-pie-50 .progress-info>strong>small{font-size:14px}.progress-pie[data-value="100"] .progress-info>strong{-webkit-transform:scale(.7);-ms-transform:scale(.7);-o-transform:scale(.7);transform:scale(.7)}.progress-pie-24 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:24px;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.progress-pie-24[data-value="100"] .progress-info{-webkit-transform:scale(.8,1);-ms-transform:scale(.8,1);-o-transform:scale(.8,1);transform:scale(.8,1)}.progress-pie-26 .progress-info{right:-10px;left:-10px;width:auto;padding-top:0;font-size:12px;line-height:26px;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.progress-pie-26[data-value="100"] .progress-info{-webkit-transform:scale(.8,1);-ms-transform:scale(.8,1);-o-transform:scale(.8,1);transform:scale(.8,1)}.status-bars{display:table;width:100%;height:140px;padding:5px;padding-top:50px;margin:0;overflow:hidden}.status-bars>li{position:relative;display:table-cell;text-align:center;vertical-align:bottom}.status-bars .bar{position:absolute;bottom:20px;left:50%;display:block;width:10px;margin-left:-5px;background:#2e7fff;border-radius:5px 5px 0 0}.status-bars .bar:after{position:absolute;right:-50px;bottom:0;left:-50px;display:block;height:1px;content:' ';background:#eee}.status-bars .title{font-size:12px;font-weight:400;color:#a6a8b6}.status-bars .value{position:relative;top:-20px;left:-20px;display:inline-block;width:50px;font-size:16px;font-weight:700;text-align:center}.status-bars-h{display:block;padding-right:50px;padding-left:60px;list-style:none}.status-bars-h>li{position:relative;height:40px;border-left:1px solid #eee}.status-bars-h .bar{position:relative;top:15px;display:block;height:10px;line-height:20px;background:#2e7fff;border-radius:0 5px 5px 0}.status-bars-h .title{position:absolute;top:-5px;left:-60px;width:60px;padding-right:10px;font-size:12px;color:#a6a8b6;text-align:right}.status-bars-h .value{position:absolute;top:-5px;right:-50px;display:block;width:40px;font-size:14px;font-weight:700;text-align:left;white-space:nowrap}.ring,[class*=" ring-"],[class^=ring-]{width:24px;height:24px;font-size:12px;line-height:24px;text-align:center;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAACZAAAAAwCAMAAACyyT3hAAAAP1BMVEUAAAAAAAA5rm06sG87snE4q200o2o7sG86r244q2w6r244rWw7snA7sG86rG05rm07snA5qWw7sW86sG48s3ECZypFAAAAFHRSTlMACl2b8TkPtnsqj0fVv4Zt4RrIqxUkbyYAAA1gSURBVHja7NrbbtswEIRhmyJ1IiVS0v/+z9rCbeGkdZodNEnVdHmTxP4wmF1exLB9eXCu12tqLX39cTGcm78use2z5Msx19wLfunGpOZvSv4xh/798tt+dKPSZ+jGMNn9/pWnXp1X7f9e+ynf53Xv3r37j/bLyfq4/1u+n8T8VI8jLWY/hbEbSjT76+2ssH77zeyBJHooom9dkHzssuQ5wvau+YuWz141/87zMoTewP9kP+7d2/31ZPln82e7L/fuP9LnJPk+DDDb/TQvEaDc/1//vk9Yvrl7vmHa+ztk347BXwcA1UMRPXCIfq+b5Jm3d82PneY5guSHG1fmVfu/837m5N69e/fu3T89fRZ9bRTBpyMCLFa/zfG7CU98l1/M/+EBS/59PT//bfD9lCS/pbAeR7bnb1OqC7AI+QWAkiz5Kdd1B6BVLb8Fk891Poox/7bPUNcIwGHrM3YDAHu1zyv0yWHcjfNen++nWvsvANC5d6/468nyz+bPdl/u3es+NFbFjw1A8BGAPUv5xGFMz/382HcAsNy+W9Sb9/PwwbP4ra5J8WluQDb7qQ4Ayybl05nnrQVgSFafB4AyWfvPEaBT57X2Seu3ecX9HBfN75t79+7du/+sPnVBy++A1e6nHaAEsz9ufk7W/gUgrvmBP/pf/bYDtDlp+/x8j4du1XwBFsHvQMlW348NIJjz0yH5bbz1n7R5m71/bUAL2n5iMueHAYjZvXv37t1/Tp8bJMFPDYhCfgTa2Ft9aEDJ5vzUbvnbC3562GcI5j6vf3T43/h+hlnJnwFGs99WgGDPv/lq9yPQsjCv1mcT/aUDGEVf3bt37979v+DH1kk+RIiCrwCz0AeI82bvc8vvzT5HYP1NfnjQv3uL/d+f/X/8ljUfGiD4ChDsPkcgCX0iUMX8UfDDw/6Xl+fV+q8Awb373/rLyfLP5s92X+4/rQ8QFV+BmO0+AyTND0nqT1H6xFf715/zWe35l5fXf3/e/YtnGugUnxsQhD47sNl9Klp+ipq/DmL/ovXPAJN79+7du/9on5dV80An+BEoye4nYLhofu/tPgAtafO26RWfn/chv9F93YX7N/PTDoOSHzW/LVA2Ib9Am+y+34Es5DdYlHmB2Lt37969+4/1fYQs+KlB6e0+Acsm9CnQXTQfJ61PTMI+dyiv99me7pO3u6+7cf9mvj/Ikgc6xRfNXyIcgt8KLIoX+0/A4d69e/fu/8znoPkOBsH3O8Qk5C8wiH12xR9AFvwAUfEzREOf/Wmf6Q3v967cv52fNJ+BIPgg+gmogk/xmb9a+lex/+ze/WN/PVn+2fzZ7sv93/MVVsUHIAn+AKrgV4hK/gxsYv+q7Ycg+AxMFt/d+9vy/QXZP+RHCIrvoGyCr9B6wa/QNq3/ftHyye7df2HP3pbQBKIgihqGmzKA4P7/b02lTOX2EncSEky1z8uungPosYyPj/8Nv8Mk/HaHm/Adzk/AIvy1hUb4vkKR5y0yf33Nd+K89vo+Xfy/81Oj/FahmPwBRuH7CjeTX6GRfUp8fHx8/Fc/UpRvoBpf4L4ZL/MfsLvzUoxfgM6e1/V5vNjn9jl/eLV/FrL/2DcwS1+lZxN+9X3a+Pj4+Pgvvm9B5Q8wyvxV+K11+VdgMv2r810LRZ63MX1m6IwX+ep+eMr49/HL3ChfoTF+eD65r/q+wiTy+zus8fHf+8vJ8s/mz3a94n/im075FarxE7Sby2975+8mf5T9G9gvLp/O9Jf5nfHNcz6vzzMLWfyX1wiz8Ss8ZP5g/A32+Pj4+P/XP0D5GRbjC9xkfjF+l/lV9h9gtP2PnOfN9JntfMQPsCeN/3/9dmc2/gqtym+d74BrfHx8/P/q+xaM34CryZf+CnTCT9Ca/A7YnG+N71V/P89La/r7eZ5pIYj/x35aNuUH6IzfpZ+hiY+Pj38X35dF+Ql241eoxncwGD/K/EbmL8r7/En2X+X8J99/dveb+4L/EB//zX+Wo/EFVunH+Pj4+HfxI0zG3+BmfIHF+AaKzB/VeU+Wv8BwZJ/14P56IbvEx39+bdDIBa4YP8bHx8e/kS/QGb/DZPwDVuMXGGV+Y3yR+QM+X/py5HlvB/e3C1l8/Fe/TYZfJtjNGxoY4uN/8JeT5Z/Nn+16vbVf7kX5Ga7GV+iM32Ey/gHNkfnDyfJnWA+d58H9L+aB/4Tj43/Vb4DxHdT4+Pj4f+WhVb7CZnwrfYWr8Tt0xt9lfj1ZfoVJedvn4P5ZyOL/nn+wGN9DGx8fH/+vPKB8630f/0f9drI+ymchiz+vB5Q/4Qd6fHz8efxCycIU/5G9e9lRHAaAKEr7kZi8nIT7/986UlatWaWGCbjpYn1UKizAQU7sZr0vyOzb9QkUv8Ek+qT4u77ksYv5q5g/tZQv91F9g0ta9j/Loy8RZnv7795LlvYf4b/U/JgWccLur/xBH2EXfbw4v28pP8B8cZ9HgzfR27/Tj9utpZvK7e2f8W09tWdv/8S+aBmi4OWnPis8FF+gKD7o+VHM78X8QfGD3uch+qG1bQ7s3+sDbIqPUEVf7O2/+5a2vWhqHyx7+++vUbwAGsQJfhEnjAhB8UXPLy3l97BcOgF7Y2H7v3yBeuVGqcXe/oW+qaN77O2f8jF2it9hVPwE9eKjpYqYH0S/XJk/ieM5i+P5gLG1o3Ls/7PfllE9Gkj0u3r0jb39q3xbE6q9/Qs9pE7wd+BKn4FNyU8wCn4DsuKT5vPF49Phw+k/389Mm+IT3DWf5MOh7e1f5G/n1ywPaW//MR4eil9EP0AU83sxf1d8Ub3YJ4q+iONZYRDHZ7b/aX6GovgIVfG9kr8ffYbz+fb2z/nbTZnw7O2f8V9N9clV8hMEwW8JRsF3q5i/QlX676rX+mSgqPmKnyGr42n/dh/mRfEjTIoP0Kv53Vlfj/z1tA/29s/5039hDmdv/2s9pE7wBXolv+r5aRP8CIh+UvpHSFnwQXy/GeabmG//fj9DUPyk+Q0IYp+q+ATB3v4lvqkJz96+ZR+pip8gCH5bIUr5ot/hofgIRfAZWK58vzMUxfcw2F/hQ1D8ANMm+Aq9mt8JPsB0Mj8e+UIfe/vn/Olv5KHs7e3P+QC74gdY75onC34BRsFXSEqfCFOn+XUT/KDnk+0v8AGK4LcJouC7FQYlf4VF6b9DEb4vmfP97X+HX859fvT843Vq880D2dv/o7811udyv0AV/IjmK/AQfE6wKB4YxD5B8AGoYp9R8AsQ7f+0a287bsJQFIapTxxssA3/+z9rJVS1VVOmezeDOp1s7mI+LS1bxJZChH7WeAdkpXcKX4Gs8yHqPFXyfC4/jspNlG/+VbyTPD/6/G+X9EAyb9681Dun8SMcCh8D7Enu0wirpk/T+QyMGh90fgiwKPvs5oU+45PCH4DGeyjK/KDpv0Lpyv7z237mp+/jDmRBvvnX8YLn5y/yxd/gU5g3b/4enyF0uU8FWpT7vgIKf56JSe5jgNY1XtlnV+5XQOjmhf6AfVb4AkGR3wuMXe7nBrsiPwN7evf+3xN7AAR9zJt/yst3uPO+efPmb/LbmhXeAwofCzAp8kcgyn0qyj4NcHLflfkzr+494yz3DmhZ7mdgH3T5JSp91/lxeL/+GWC++HyZb/6lfL72+Yl80d8OztvmzYv8I/9gff5/H6DKfQ6ofARwCj+i61MAp+sfstw7gPrZfO4KDzQn9w5A4TMQZrmvQFDkT0DIuv5j1Hku87eH1aiC9TH/Yn678tsT+Vdn5uM98+bNfxDvwyT3KUBwcr/o9oe+BJVPZ76T529AyBf+8jz9bH6BJYn9BLDI8x3A1nX5VZ6fGzAp+yxJ6ZX9t+ufn6m/W5+3+pt/Oe+vnx99/tWxYOM2buOfanyGluU+AHuX+jQ1IERxfi5Ac1Lfz/wmzk9uBML8P/jNO7lfgSL3sQC73DuANiWpzwA+i/Pns//UxflNN1/XgFaTuE8D1sv8/OADMLrLfPPmn/JXO/qX3w+aN2/+P/X1iHK/AZM43xWAsQt9XE5/zEKftwBQoji/nfnpH/m41S72GQg+Cn1aAcZpluYvqPLjCFCqdL59B1jFfvAAYZH2j8r5dq+b77Bd+70/8nQAtOX3+ebNP+Wvd9zz+vWjefNaP3ywPuZFfqNluQcIm9DnndNPIh+nMQDQJL5HN/kVAJY/+TinJPX5OCYXhX4F1hrnPgh8LAAUaX5tnH6rWdTfNXX+yZeaRd4DELaaZetZdwBGf/N8Jyfz+Wp9/Buv8mF97G/e/JP+egt6vAbz5s2/is9J4QthEvsVIBxR5F2A0y9d4Avwzfv8Jw8g9gXk/gDkvtdd5xfuzfdB5d2Iyg9uvHe+PrzD+izxyueLfPPmn/OaLXoYzJv/az98sD7m39XHrPAe1pqEfgUI6zJL/AYAsNc/94mA3O+g8M43lc8+aPxcR+7M73VH5aei7cOd8011fW59Vve2f1wf8+bv84+vmsybN2/+Xfzc5b4fR43i/DWU0U9uFvlpb0HsU578WOR+iJNfFb4r85Nbjjvz58kfe1N4p+wf3Xbsyvmq+9+4Ps68+dv8V5yOdlOUBd3vAAAAAElFTkSuQmCC);background-position:0 0;-webkit-background-size:1224px 24px;background-size:1224px 24px}.ring>span,[class*=" ring-"]>span,[class^=ring-]>span{display:inline-block;-webkit-transform:scale(.9,1);-ms-transform:scale(.9,1);-o-transform:scale(.9,1);transform:scale(.9,1)}.messager{border-radius:4px;-webkit-box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1);box-shadow:0 4px 16px rgba(0,0,0,.2),0 2px 8px rgba(0,0,0,.1)}.messager-icon{vertical-align:middle}.messager-icon>.icon{font-size:24px}.messager-content{padding:18px 20px;font-size:18px;line-height:30px}.messager-content>.icon{font-size:28px;line-height:30px}.messager-actions{vertical-align:middle}.messagger-zt{color:#313c52;background-color:#fff!important}.messagger-zt .messager-icon>.icon{color:#2e7fff}.messagger-zt .messager-actions>.action{color:#838a9d}.messagger-zt.messager-success .messager-icon>.icon{color:#22c98d}.messagger-zt.messager-danger .messager-icon>.icon{color:#fc5959}.messagger-zt.messager-warning .messager-icon>.icon{color:#ff9f46}.messagger-zt.messager-info .messager-icon>.icon{color:#37b2fe}.tree{padding-left:0;overflow:hidden}.tree ul{position:relative;display:none;padding-left:0}.tree li{position:relative;padding:2px 0 2px 15px;list-style:none}.tree li.heading{padding-left:5px;color:#313c52}.tree li>a{display:block;max-width:90%;padding:2px 6px;color:#313c52;word-break:break-all}.tree li>a:hover{color:#313c52}.tree li>a.tree-toggle:hover{background:0 0}.tree li.active>a{position:relative;font-weight:700;color:#2e7fff}.tree li>.list-toggle{position:absolute;top:1px;left:1px;z-index:10;width:20px;font-size:14px;line-height:22px;color:#cbd0db;text-align:center;cursor:pointer;-webkit-transition:all .2s;-o-transition:all .2s;transition:all .2s}.tree li>.list-toggle:before{content:"\f0da"}.tree li>.list-toggle:active,.tree li>.list-toggle:hover{color:#2e7fff}.tree li.has-active-item>.list-toggle{color:#313c52}.tree li.has-list.open>ul{display:block}.tree li.has-list.open>.list-toggle{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.tree li.has-list.open:before{position:absolute;top:16px;bottom:-5px;left:10px;display:block;content:' ';border-left:1px solid #d8d8d8}.tree-actions{display:inline-block;margin-left:5px;vertical-align:middle}.tree-actions a{display:inline-block;margin-left:5px;font-size:13px;opacity:.6}.tree-actions a:hover{opacity:1}.tree li>.module-name{color:#313c52;vertical-align:middle}.tree li>.module-name:hover{background-color:#f0f2f5}.tree li>.module-name:hover>a{color:#313c52}.treemap-node-fold-icon:before{position:relative;left:-4px;min-width:18px}.dropdown-menu{padding:5px 0;border-color:rgba(0,0,0,.1)}.dropdown-menu>li{padding:0 10px}.dropdown-menu>li>a{padding:2px 10px;margin:5px 0;border-radius:3px}.dropdown-menu>li>a>.icon{position:relative;left:-5px;opacity:.5}.dropdown-menu>li>a:hover>.icon{opacity:.8}.dropdown-menu>li.active>a,.dropdown-menu>li.selected>a{position:relative;color:#fff;background-color:#18a6fd}.dropdown-menu>li.selected>a:after{position:absolute;top:2px;right:4px;display:block;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:20px;text-transform:none;content:"\e5ca";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dropdown-menu>li.divider{margin:10px}.dropdown-submenu>a:after{margin-right:-5px}.dropdown-submenu>.dropdown-menu.pull-left{margin-left:-1px}.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{color:#313c52;background-color:#e6f0ff}.dropdown-submenu:hover>a:after{border-left-color:#2e7fff}.dropdown-submenu>a:hover:after{border-left-color:#fff}.pager .btn{padding:3px 10px}.pager .btn .caret{opacity:.7}.pager>li>.pager-label{padding:2px;line-height:20px}.pager>li>.pager-item{min-width:20px;padding:1px;margin:2px 0;font-size:16px;line-height:20px;text-align:center;background:0 0;border-color:transparent}.pager>li>.pager-item:hover{background-color:rgba(0,0,0,.1)}.pager>li>.pager-item>.icon{position:relative;top:-1px}.pager>li>.btn:hover,.pager>li>a:hover{background:rgba(0,0,0,.1)}.pager>li.disabled>a.pager-item{background:0 0;border-color:transparent;opacity:.5}.pager>li.active>a{background-color:#18a6fd}.pager>li .btn-group .btn{padding:1px;margin:1px 0;border-radius:4px}.pager .dropdown-menu{width:200px}.pager .dropdown-menu>li{float:left;width:33.333333%}.modal-dialog{width:900px;max-width:1360px;border:none;border-radius:0;-webkit-box-shadow:0 0 20px 0 rgba(0,0,0,.25);box-shadow:0 0 20px 0 rgba(0,0,0,.25)}.modal-dialog.modal-md{width:700px}.modal-dialog.modal-xs{width:400px}.modal-dialog.modal-sm{width:500px}.modal-dialog.modal-lg{width:1200px}.modal-dialog.modal-fullscreen{position:fixed;max-width:initial}.modal-header{padding:20px 0;margin:0 20px}.modal-header>.close{color:#838a9d;text-shadow:0 1px 0 rgba(255,255,255,.85);opacity:1}.modal-header>.close:hover{color:#0b0f18}.modal-footer{padding:20px 0;margin:0 20px}.modal-title{font-size:14px;font-weight:400;line-height:20px}.modal-actions{position:absolute;top:16px;right:16px}.modal-actions .divider{position:relative;top:5px;display:inline-block;width:0;height:20px;margin:0 10px;border-left:#eee 1px solid}.modal-actions>.dropdown{display:inline-block}.modal-body{padding:20px}.modal-iframe .modal-body>iframe{border-radius:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-3%);-ms-transform:translate(0,-3%);-o-transform:translate(0,-3%);transform:translate(0,-3%)}.modal.fade.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-simple .modal-footer{padding-top:0;border-top:none}.modal-iframe .modal-header{position:relative;z-index:10;min-height:0;padding:0;border:none}.modal-iframe .modal-title{display:none}.modal-iframe .modal-header .close{position:absolute;top:12px;right:10px;font-size:32px;font-weight:200}.modal-iframe .modal-dialog{overflow:hidden}.modal-inverse .modal-header>.close{color:rgba(255,255,255,.7);text-shadow:none}.modal-inverse .modal-header>.close:hover{color:#fff}.modal-scroll-inside>.modal-dialog{max-height:100%}.hide-modal-close .modal-iframe .modal-header .close{display:none}.tile{text-align:center}.tile-title{line-height:20px;color:#313c52}.tile-amount{font-size:32px;font-weight:700;line-height:56px}.timeline>li{position:relative;list-style:none}.timeline>li:before,.timeline>li>a:after,.timeline>li>div:after{position:absolute;left:-20px;display:block;width:15px;height:15px;content:' ';border-radius:50%}.timeline>li:before{top:12px;left:-16px;z-index:3;width:7px;height:7px;background-color:#c4c4c4;border:none;border:1px solid #c4c4c4}.timeline>li>a:after,.timeline>li>div:after{top:11px;left:-17px;z-index:3;width:9px;height:9px;background-color:#2e7fff;border-radius:50%;opacity:0}.timeline>li+li:after{position:absolute;top:-12px;bottom:20px;left:-13px;z-index:1;display:block;content:' ';border-left:1px solid #eee}.timeline>li.active>a:after,.timeline>li.active>div:after{opacity:1}.timeline>li.active:before{top:8px;left:-20px;width:15px;height:15px;background-color:rgba(46,127,255,.2);border:none}.timeline>li>a,.timeline>li>div{display:block;padding:5px;line-height:20px}.timeline>li.active>a{color:#313c52}.timeline-tag{position:absolute;top:5px;left:-115px;font-size:12px}.timeline-tag-left{padding-left:115px}.timeline-sm{font-size:12px}.timeline-sm>li:before,.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:10px;left:-20px;width:11px;height:11px}.timeline-sm>li.active:before,.timeline-sm>li:before{top:10px;left:-18px;width:11px;height:11px;background:0 0;border:1px solid #eee}.timeline-sm>li>a,.timeline-sm>li>div{line-height:20px}.timeline-sm>li>a:after,.timeline-sm>li>div:after{top:13px;left:-15px;width:5px;height:5px}.form-control{-webkit-box-shadow:none;box-shadow:none}.form-horizontal .form-group>label{padding-right:0}.form-actions{margin-top:20px;margin-bottom:0}.form-actions .btn{margin-right:10px}form label{font-weight:400;color:#313c52}.form-group .btn+.btn{margin-left:5px}.table-form{margin-bottom:0;table-layout:fixed}.table-form>thead>tr>th.required:after{position:relative;top:3px;right:auto;left:4px;display:inline-block;vertical-align:middle}.table-form>tbody>tr>td,.table-form>tbody>tr>th,.table-form>tfoot>tr>td,.table-form>thead>tr>th{padding:7px;vertical-align:middle;border-bottom:none}.table-form>tfoot>tr>td{padding:20px 7px 10px}.table-form>tbody>tr>th{width:100px;font-weight:700;text-align:right}.table-form .input-group{width:100%}.chosen-container-single .chosen-single{position:relative}.chosen-container-single .chosen-single>span{height:20px;line-height:20px;word-break:break-all;white-space:normal}.chosen-container-single .chosen-single div b{position:relative;top:1px;color:#cbd0db;opacity:1}.chosen-container-single .chosen-search:before{top:8px;right:15px}.chosen-container-multi .chosen-choices li.search-choice{font-size:13px;background:#eee;border-color:#cbd0db;-webkit-box-shadow:none;box-shadow:none}.chosen-container-single .chosen-search input[type=text]{height:30px;padding:3px 25px 3px 5px}.chosen-container-single .chosen-search{padding:3px 10px 0}.chosen-container-single .chosen-single{overflow:visible}.chosen-container .chosen-results{max-height:245px;padding:10px}.chosen-container .chosen-results>li{border-radius:4px}.chosen-container .chosen-results li.highlighted em{color:#fff}.table-responsive .chosen-container .chosen-results{max-height:200px}.picker>.picker-selections>.picker-selection{text-overflow:unset;white-space:unset!important}.picker>.picker-selections>.picker-selection>.picker-selection-text{word-break:break-word}.chosen-container .chosen-drop.chosen-no-wrap>.chosen-results>li,.picker-drop-menu>.picker-option-list>.picker-option{text-overflow:unset;white-space:unset!important}.chosen-compact.chosen-container-single .chosen-single>.chosen-search{top:-2px;right:-1px;bottom:-1px;left:-1px;display:none;height:auto;padding:0;opacity:0}.chosen-compact.chosen-container-single .chosen-single>.chosen-search>input{height:31px;padding:5px 26px 5px 8px;font-size:inherit;line-height:20px}.chosen-compact.chosen-container-single .chosen-single>.chosen-search:before{right:8px}.datetimepicker{padding:10px}.datetimepicker td.day.today{background-color:#fc7272}.datetimepicker td.day.active{background-color:#18a6fd}.datetimepicker tfoot th,.datetimepicker thead th{color:#838a9d}.input-control .colorpicker{top:0;z-index:auto;opacity:1}.input-control .colorpicker .btn{padding:5px}.input-control .input-control-icon-right.btn{top:0}.colorpicker .dropdown-menu{min-width:232px;padding:5px 10px 10px 10px}.colorpicker .dropdown-menu>li{display:block;float:left;padding:5px}.colorpicker .dropdown-menu>li.heading{width:100%;margin-bottom:5px;font-size:16px;font-weight:700;text-align:left}.colorpicker .dropdown-menu>li.heading>.icon-close{position:relative;top:4px;float:right;cursor:pointer;opacity:.6}.colorpicker .dropdown-menu>li>a{position:relative;display:block;width:100%;height:100%;padding:0;margin:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-align:center;text-transform:none;border:1px solid transparent;border-radius:50%;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.colorpicker .dropdown-menu>li>a:before{position:absolute;top:0;display:block;width:100%;height:20px;line-height:18px}.colorpicker .dropdown-menu>li>a:hover{-webkit-box-shadow:0 1px 4px rgba(0,0,0,.25);box-shadow:0 1px 4px rgba(0,0,0,.25)}.colorpicker .dropdown-menu>li>a.active:before{font-size:14px;content:"\e5ca"}.colorpicker .dropdown-menu>li>a.empty{color:#666;background:#fff}.colorpicker .dropdown-menu>li>a.empty:before{content:"\e90d"}.colorpicker .btn{position:relative}.colorpicker .btn .color-bar{position:absolute;right:5px;bottom:3px;left:5px;height:3px}.colorpicker .btn .color-bar[style*='background: ']+.ic{position:relative;top:-2px}.colorpicker .btn .ic{color:#cbd0db}.colorpicker .btn:hover .ic{color:#838a9d}.input-group .colorpicker{z-index:3}.input-group .chosen-container{display:table-cell}.input-group-addon{border-right-width:0;border-left-width:0}.input-group-addon:first-child{border-left-width:1px}.input-group-addon:last-child{border-right-width:1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin:0}.input-group-cell{display:table-cell;width:1%;padding:0 12px;white-space:nowrap;vertical-align:middle}.ke-container{border-color:#dcdcdc!important;border-radius:2px!important}.ke-container.focus{border-color:#2e7fff!important}.ke-toolbar{border-color:#dcdcdc!important}.required:after{top:6px;right:-10px;font-size:20px}td.required:after{top:12px;right:-5px}.input-group>.chosen-container.required:after,.input-group>.input-control.required:after{top:1px;right:1px;z-index:2}.input-group.required .required:after{display:none}.file-input{position:relative;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}.file-input .input-group{width:auto}.file-input .input-group>.input-group-cell:first-child{padding-right:0;padding-left:7px}.file-input input[type=file]{position:absolute;width:0;height:0;opacity:0}.file-input .file-title{display:inline-block;max-width:400px;overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}.file-input .file-editbox{min-width:200px;max-width:100%}.file-input .file-size{display:inline-block;vertical-align:middle}.edit .file-input-empty,.file-input-edit,.file-input-normal,.normal .file-input-empty{display:none}.edit .file-input-edit,.normal .file-input-normal{display:block}.edit .file-input-edit.input-group,.normal .file-input-normal.input-group{display:table}.edit .file-input-normal{display:none!important}.file-input-normal>.input-group-btn{width:auto}.input-group .chosen-container-active .chosen-choices{border-color:#2e7fff!important}.input-group .chosen-container{min-width:100px}.input-group .input-group-btn .btn>.icon{line-height:17px}.os-mac select.form-control{-webkit-appearance:none;background-image:url(data:image/gif;base64,R0lGODlhCQAFAIAAAMvQ2////yH5BAEAAAEALAAAAAAJAAUAAAIKhH+BGYoNGWxgFgA7);background-image:url(data:image/gif;base64,R0lGODlhBwAEAIAAAMvQ2////yH5BAEAAAEALAAAAAAHAAQAAAIIhA+BGWoNWSgAOw==);background-repeat:no-repeat;background-position:right 5px top 12px;-moz-appearance:none}input::-webkit-contacts-auto-fill-button{position:absolute;right:0;display:none!important;pointer-events:none;visibility:hidden}.chosen-choices.has-error,.chosen-single.has-error,.form-control.has-error{border-color:#fc5959!important;-webkit-box-shadow:0 0 6px #febdbd!important;box-shadow:0 0 6px #febdbd!important}.popover-success.popover-form-result{font-weight:700;color:#fff;background:#22c98d}.popover-success.popover-form-result.popover.right .arrow:after{border-right-color:#22c98d}textarea.kindeditor{padding:0!important}.form-unsaved{outline:2px solid #ff9f46;-webkit-box-shadow:0 1px 12px #ff9f46;box-shadow:0 1px 12px #ff9f46;-webkit-transition:all .5s;-o-transition:all .5s;transition:all .5s}select[multiple].picker-select,select[multiple][data-toggle=picker]{max-height:32px;visibility:hidden}.picker-selection-remove:before{font-size:18px}.picker-user-option{position:relative;padding-left:40px}.picker-user-option>.avatar{position:absolute;top:5px;left:10px}.picker-user-option>.picker-option-text{display:inline-block;min-width:40px;font-weight:700}.picker-user-option>.dept-name,.picker-user-option>.role-name{display:inline-block;margin-left:10px;font-size:12px;opacity:.6}.picker-user-option>.dept-name{min-width:50px}#mainHeader{height:50px;color:#fff;background:#3785ff;border-top-color:#2e7fff;border-bottom-color:#e6f0ff}#mainHeader>.container{min-width:1200px;padding:0}#heading{position:absolute;top:10px;left:20px}@media (min-width:1400px){#heading{left:40px}}#heading h1{float:left;max-width:250px;margin:0;overflow:hidden;font-size:20px;font-weight:400;line-height:30px;text-overflow:unset;white-space:nowrap}#heading h1 a{color:inherit;text-decoration:inherit}#heading h1.long-name{position:relative;top:-5px;display:table-cell;font-size:16px;line-height:20px;word-break:break-all;white-space:normal}#heading>.btn{display:block;float:left;height:20px;padding:1px 5px;margin:0;margin:5px 0 0 10px;font-size:12px;font-weight:lighter;line-height:18px;background-color:rgba(255,255,255,.2);border:none}#heading>.btn:hover{background-color:rgba(0,0,0,.1)}#navbar{margin:0 auto;text-align:center}#navbar .nav{display:inline-block}#navbar .nav>li>a{padding:10px;line-height:30px;color:#fff;border-radius:0;opacity:.9}@media (max-width:1400px){#navbar .nav>li>a{padding:10px 8px}}#navbar .nav>li>a:focus,#navbar .nav>li>a:hover{background:rgba(0,0,0,.15);opacity:1}#navbar .nav>li.active>a{font-weight:700;background:rgba(0,0,0,.1);opacity:1}#navbar .nav>li.divider{display:block;width:2px;height:20px;margin:15px 8px;background:rgba(255,255,255,.4)}@media (max-width:1400px){#navbar .nav>li.divider{margin:15px 5px}}@media (max-width:1300px){#navbar .nav>li.divider{margin:15px 3px}}#navbar .nav>li.divider:last-child{display:none}#navbar .nav .dropdown-menu li>a{text-align:left}#toolbar{position:absolute;top:12px;right:20px;font-size:12px;color:#fff}@media (min-width:1400px){#toolbar{right:40px}}#extraNav{text-align:right}#extraNav>li{display:inline-block;float:none;text-align:left}#extraNav>li>a{display:block;padding:0;color:#fff;opacity:.75}#extraNav>li>a:hover{text-decoration:unset;background-color:rgba(0,0,0,.1);opacity:1}#extraNav>li.open>a{background-color:rgba(0,0,0,.1)}#extraNav>li+li{margin-left:10px}#showSearchGo{color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.5)}#searchbox{position:relative;float:left;width:150px}#searchbox .input-group-btn .btn{position:relative;padding:1px 4px;font-size:12px;line-height:20px;color:#fff;background-color:rgba(255,255,255,.15);border-right:none;border-radius:2px}#searchbox .input-group-btn .btn:after{position:absolute;top:3px;right:0;bottom:3px;display:block;width:1px;content:' ';background-color:rgba(255,255,255,.15)}#searchbox .input-group-btn .btn:hover{background-color:rgba(255,255,255,.25)}#searchGo{position:absolute;top:0;right:-1px;z-index:9;min-width:24px;height:24px;padding:2px 3px;font-size:12px;line-height:20px;color:#fff;background-color:#18a6fd;border-radius:2px}#searchGo:hover{color:#fff!important;background-color:#2e7fff}#searchInput{height:24px;padding:2px 30px 2px 5px;color:#fff;text-align:left;background:rgba(255,255,255,.15);border-color:transparent;border-radius:0 12px 12px 0;-webkit-transition:background .2s,border .2s;-o-transition:background .2s,border .2s;transition:background .2s,border .2s}#searchInput:hover{background:rgba(255,255,255,.25)}#searchInput:focus{color:#333;background:#fff}#searchInput::-webkit-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::-moz-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:-ms-input-placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput::placeholder{font-size:12px;color:#fff;color:rgba(255,255,255,.5)}#searchInput:focus::-webkit-input-placeholder{color:#838a9d}#searchInput:focus::-moz-placeholder{color:#838a9d}#searchInput:focus:-ms-input-placeholder{color:#838a9d}#searchInput:focus::placeholder{color:#838a9d}#searchTypeMenu{min-width:220px}#searchTypeMenu>li{float:left;width:50%}#searchTypeMenu>li>a{margin:4px 0}#userNav .avatar{display:inline-block;vertical-align:middle}#userNav>li>a{padding:2px 6px;line-height:20px;color:#fff;opacity:.9}#userNav>li>a .user-name{max-width:100px;overflow:hidden;font-size:15px;text-overflow:unset;white-space:nowrap}#userNav>li>a:hover{background-color:rgba(0,0,0,.1);opacity:1}#userNav>li>a:hover>i{opacity:1}#userNav>li>a span{vertical-align:middle}#userNav>li.open>a{background-color:rgba(0,0,0,.1)}#userNav>li.has-new-items>a{position:relative}#userNav>li.has-new-items>a:before{position:absolute;top:3px;right:-1px;display:block;width:4px;height:4px;content:' ';background-color:#fc5959;border-radius:50%}#userNav .dropdown-menu{min-width:150px}#userNav .dropdown-menu>li>a>.icon{position:absolute;top:10px;right:5px;display:block;width:20px;height:20px;line-height:20px;text-align:center}#userNav .user-profile-item>a{position:relative;padding-left:45px}#userNav .user-profile-item .avatar{position:absolute;top:6px;left:5px}#userNav .user-profile-name{font-size:16px}#userNav .user-profile-role{font-size:12px;color:#a9abb8}#userNav .no-role .user-profile-role{display:none}#userNav .no-role .user-profile-name{line-height:40px}#subHeader{min-height:50px;background:#fff}#subHeader>.container{padding:0 20px}@media (min-width:1400px){#subHeader>.container{padding:0 40px}}#pageNav{position:absolute;top:8px;left:0;left:20px}@media (min-width:1400px){#pageNav{left:40px}}#subNavbar{margin-top:5px;font-size:13px;text-align:center}#subNavbar .nav{display:inline-block}#subNavbar .nav>li>a{padding:8px 12px;line-height:24px;color:#313c52}#subNavbar .nav>li>a:hover{color:#313c52;background-color:rgba(0,0,0,.075)}#subNavbar .nav>li.active>a{font-weight:700;color:#2e7fff}#subNavbar .nav>li.divider{display:block;width:2px;height:20px;margin:9px 5px;background-color:rgba(0,0,0,.05)}#subNavbar .dropdown-menu{text-align:left}[lang=en] #subNavbar>.nav>li>a{padding-right:8px;padding-left:8px}#pageActions{position:absolute;top:9px;right:20px}@media (min-width:1400px){#pageActions{right:40px}}.cell{padding:10px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.cell+.cell{margin-top:10px}.cell>.panel{margin:0;-webkit-box-shadow:none;box-shadow:none}.cell>.panel>.panel-heading{padding:5px 5px 10px}.cell>.panel>.panel-heading .panel-actions{padding:0}.cell>.panel>.panel-body{padding:5px}.cell>.table{margin:0}#main{min-width:1200px;padding:20px 0}#main>.container{padding:0 20px}@media (min-width:1400px){#main>.container{padding:0 40px}}#header,#header+#main{min-width:1200px}#mainMenu{margin:-10px 0 8px}.main-content{padding:20px;background-color:#fff;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}@media (min-width:1400px){.main-content>.center-block{max-width:1350px;padding:20px;border:1px solid #eee}.main-content>.center-block .main-header{background-color:#f1f1f1}}.main-content>h2{margin:0 0 20px}.main-content .cell{-webkit-box-shadow:none;box-shadow:none}.main-header{padding:5px 20px;border-bottom:1px solid #eee}.main-header:after,.main-header:before{display:table;content:" "}.main-header:after{clear:both}.main-header>h2{display:block;float:left;margin:0 10px 0 0;font-size:14px;line-height:34px}.main-header>h2 .label-id{margin-right:5px}.main-header>h2 small{font-size:14px;font-weight:400}.main-content .main-header{margin:-20px -20px 10px}.main-header .label{top:-1px}.main-row{display:table;width:100%;table-layout:fixed}.main-row>[class*=" col-"],.main-row>[class*="-col"],.main-row>[class^=col-]{display:table-cell;vertical-align:top}@media (max-width:720px){.main-row{display:block}.main-row>*{display:block;width:100%}.main-row .side-col{width:100%;padding:0}.main-row .main-col+.side-col,.main-row .side-col+.main-col{margin-top:10px}}.main-row.hide-side .side-col{display:none}.main-form{margin:0}@media (min-width:720px){.main-content>.center-block .main-form{padding-right:20px}}#main .side-col .tabs{padding:5px}#main .side-col .nav-tabs{margin:0 5px 5px 5px}#main .side-col .nav-tabs>li{margin:0}#main .side-col .nav-tabs>li+li{margin-left:10px}#main .side-col .nav-tabs>li>a{padding:8px 5px}#main .side-col .tab-content .tab-pane table{border:none}.main-actions .btn-toolbar{display:inline-block;padding:4px 15px;color:#fff;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);border-radius:4px}.main-actions .btn-toolbar .divider{margin-right:15px;margin-left:15px;border-color:rgba(255,255,255,.1)}.main-actions .btn-toolbar .btn{height:30px;padding-right:10px;padding-left:10px;margin-right:0;color:#fff;background-color:transparent;border:none}.main-actions .btn-toolbar .btn+.btn{margin-left:10px}.main-actions .btn-toolbar .btn:focus,.main-actions .btn-toolbar .btn:hover{background-color:rgba(255,255,255,.2)}.main-actions .btn-toolbar .btn.btn-icon{min-width:32px;padding-right:0;padding-left:0}.main-actions .btn-toolbar .btn+.btn-group{margin-right:0;margin-left:10px}#mainContent .main-col>.main-actions{padding:30px 0 0 0;text-align:center}#mainContent .main-col>.main-actions>.btn-toolbar{visibility:visible;opacity:1;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}#mainActions{position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;pointer-events:none}#mainActions .btn-toolbar{position:relative;top:-90px}#mainActions .dropdown-menu{text-align:left}#mainActions>.container{height:100%}.main-actions-holder{display:none}.main-actions-fixed .main-actions-holder{display:block}.main-actions-fixed #mainContent .main-col>.main-actions{position:fixed;bottom:10px}.main-actions-fixed.body-modal #mainContent .main-col>.main-actions{bottom:20px}#nextPage,#prevPage{position:absolute;top:50%;left:-10px;width:40px;height:60px;padding:10px 0;margin-top:-30px;line-height:40px;color:#fff;text-align:center;pointer-events:auto;background:#717171;background-color:rgba(90,90,90,.85);-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.05);box-shadow:0 2px 15px 2px rgba(0,0,0,.05)}#nextPage:hover,#prevPage:hover{-webkit-box-shadow:0 2px 15px 2px rgba(0,0,0,.15);box-shadow:0 2px 15px 2px rgba(0,0,0,.15)}#nextPage>i,#prevPage>i{display:block;font-size:18px;line-height:36px}#nextPage{right:-10px;left:auto}@media (max-width:1800px){#prevPage{left:-3px}#nextPage{right:-3px}}#sidebarHeader{position:relative;float:left;width:180px;height:34px;padding-right:20px;margin-right:20px;background:#fff;border-left:4px solid #2e7fff;border-radius:4px 2px 2px 4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}#sidebarHeader:after{position:absolute;top:-1px;right:-8px;display:block;width:0;height:0;content:' ';border-color:transparent transparent transparent #fff;border-style:solid;border-width:18px 0 18px 8px}#sidebarHeader .title{padding:0 5px;overflow:hidden;font-size:14px;font-weight:700;line-height:32px;color:#2e7fff;text-align:center;text-overflow:unset;white-space:nowrap}#sidebarHeader .title>a{position:absolute;top:0;right:0;width:20px;opacity:.5}#sidebarHeader .title>a:hover{opacity:1}#sidebar{position:relative;-webkit-transition:width .2s,padding .2s;-o-transition:width .2s,padding .2s;transition:width .2s,padding .2s}#sidebar>.sidebar-toggle{position:absolute;top:0;right:5px;bottom:0;width:10px;cursor:pointer;background:0 0;border-radius:5px;-webkit-transition:background-color .2s,opacity .5s;-o-transition:background-color .2s,opacity .5s;transition:background-color .2s,opacity .5s}#sidebar>.sidebar-toggle>.icon{position:absolute;top:50%;left:-1px;width:12px;height:30px;margin-top:-10px;line-height:30px;color:#fff;text-align:center;background:#7dcdfe;border-radius:6px}#sidebar>.sidebar-toggle>.icon:before{position:relative;left:-1px}#sidebar>.sidebar-toggle:before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;display:block;content:' '}#sidebar>.sidebar-toggle:hover{background:rgba(0,0,0,.075)}#sidebar>.cell{position:relative;left:0;width:180px;-webkit-transition:left .2s,opacity .2s;-o-transition:left .2s,opacity .2s;transition:left .2s,opacity .2s}#sidebar.no-animate>.cell{display:none;-webkit-transition:none;-o-transition:none;transition:none}.hide-sidebar #sidebar>.cell{position:absolute;left:-200px;visibility:hidden;opacity:0}.hide-sidebar #sidebar{position:relative;width:0;padding:0}.hide-sidebar #sidebar>.sidebar-toggle>.icon:before{content:"\e315"}@media (max-width:720px){#sidebar>.cell{width:100%}}#queryBox{max-height:0;padding:0;overflow:hidden;-webkit-transition:cubic-bezier(.175,.885,.32,1) .2s;-o-transition:cubic-bezier(.175,.885,.32,1) .2s;transition:cubic-bezier(.175,.885,.32,1) .2s;-webkit-transition-property:padding,max-height,margin;-o-transition-property:padding,max-height,margin;transition-property:padding,max-height,margin}#queryBox>form{visibility:hidden;-webkit-transition:visibility .2s .2s;-o-transition:visibility .2s .2s;transition:visibility .2s .2s}#queryBox.loading{height:50px}#queryBox.show{min-height:110px;max-height:300px;margin-bottom:10px;overflow:visible}#queryBox.show>form{visibility:visible}#queryBox.divider{border-bottom:1px solid #eee}#main .querybox-toggle.querybox-opened{position:relative;color:#2e7fff;background:0 0;border:none}#main .querybox-toggle.querybox-opened:before{position:absolute;bottom:-14px;left:50%;width:0;height:0;content:' ';border-color:transparent transparent #fff transparent;border-style:solid;border-width:0 10px 10px 10px}#contentNav{padding:5px;background:#fff;border-bottom:1px solid #eee}#contentNav .nav>li>a{position:relative;padding:6px 10px;color:#838a9d}#contentNav .nav>li.active>a{font-weight:700;color:#2e7fff}#contentNav .nav>li.active>a:before{position:absolute;right:10px;bottom:3px;left:10px;display:block;height:2px;content:' ';background:#2e7fff}.body-modal{padding-bottom:0}.body-modal #main,.body-modal .container{min-width:0!important}.body-modal #main{padding:0}.body-modal .main-header{position:fixed;top:0;right:20px;left:20px;z-index:100;padding:13px 48px 13px 0;margin:0;background:#fff}.body-modal #mainContent{padding-top:70px}.body-modal .main-header>h2{max-width:100%;overflow:hidden;font-size:14px;text-overflow:unset;white-space:nowrap}.body-modal .cell,.body-modal .main-content{-webkit-box-shadow:none;box-shadow:none}.body-modal #mainMenu{position:fixed;top:0;right:0;left:0;z-index:100;padding:12px 60px 12px 10px;margin:0;background:#fff}.body-modal #mainMenu>.btn-toolbar.pull-left.divider{display:none}.body-modal #mainMenu>.btn-toolbar{width:100%;margin-left:20px}.body-modal #mainMenu>.btn-toolbar>.divider:first-child{display:none}.body-modal #mainMenu>.btn-toolbar .page-title{width:100%;margin-left:0}.body-modal #mainMenu>.btn-toolbar .page-title>.text{position:relative;top:-2px;display:inline-block;max-width:85%;max-width:-webkit-calc(100% - 100px);max-width:calc(100% - 100px);overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}.body-modal #mainMenu+#mainContent.main-row{padding:60px 10px 0}.body-modal #mainMenu+#mainContent.main-row .cell{border:1px solid #efefef;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.body-modal #mainActions{top:auto}.body-modal #mainActions .btn-toolbar{top:auto;bottom:10px}.body-modal.m-bug-view,.body-modal.m-story-view,.body-modal.m-task-view,.body-modal.m-testcase-view,.body-modal.m-testtask-view,.body-modal.m-todo-view{padding-bottom:20px;border-radius:3px}#tabsNav{position:relative}#tabsNav .tab-pane>.actions{position:absolute;top:-8px;right:0}#tabsNav .tab-pane>.cell,#tabsNav .tab-pane>.main-table{padding:0;border:1px solid #c4c4c4;border-top:none;border-radius:0 0 4px 4px}#tabsNav .tab-pane>.cell .detail-title{padding-left:5px}#helpContent{position:fixed;top:50px;right:0;bottom:40px;left:0;display:none;background-color:#fff}#helpContent .load-error{display:none;padding:20px}#helpContent .show-error .load-error{display:block}#mainMenu>.btn-toobar .btn-link .label-light,#mainMenu>.btn-toolBar .btn-link .label-light,#mainMenu>.btn-toolbar .btn-link .label-light{color:#313c52;background:#fff}#mainMenu>.btn-toobar .btn-active-text,#mainMenu>.btn-toolBar .btn-active-text,#mainMenu>.btn-toolbar .btn-active-text{color:#1e6aeb;background:#e6eaf1}#mainMenu>.btn-toobar .btn-active-text .text,#mainMenu>.btn-toolBar .btn-active-text .text,#mainMenu>.btn-toolbar .btn-active-text .text{top:0}#mainMenu>.btn-toobar .btn-active-text .text:after,#mainMenu>.btn-toolBar .btn-active-text .text:after,#mainMenu>.btn-toolbar .btn-active-text .text:after{border:none}#menu{background:#415a72}#userNav>li>a>.icon{color:#fff;filter:none;opacity:.25;-webkit-filter:none}.picker-option.picker-option-active,.picker-single .picker-option.picker-option-selected.picker-option-active{background:#2e7fff}select.form-control option.selected,select.form-control option:hover{background:#2e7fff}#guideDialog .project-type-img:hover,#guideDialog .project-type.active img,.kanbans .panel:hover{border-color:#2e7fff}#dashboard .block-welcome .progress{background:#edeef2}#dashboard .block-welcome .progress>.progress-bar{background:#3785ff}#assigntomeBlock .nav>li.active>a{color:#1e6aeb}.consumedTotally{color:#2e7fff;background:#e6f0ff}#toggleFoldIcon .icon-border{border:1px solid #d5e5ff}#createEffort .table tbody .date-group .input-group-addon .icon,#recordForm .table tbody .date-group .input-group-addon .icon,#toggleFoldIcon{color:#2e7fff}.text-middle td,.text-middle th{vertical-align:middle}.text-center td,.text-center th{text-align:center}.c-sm{width:40px}.c-id{width:90px}.c-id-sm{width:70px}.c-id-xs{width:55px}.c-date{width:100px}.c-num,.c-pri,.c-type{width:80px;overflow:hidden}.c-begin,.c-end,.c-time{width:65px}.c-hours{width:60px}.c-actions-1{width:50px}.c-actions-2{width:75px}.c-actions-3{width:102px}.c-actions,.c-actions-4{width:128px}.c-actions-5{width:155px}.c-actions-6{width:180px}.c-product,.c-project{width:180px}.c-plan{width:130px}.c-datetime{width:120px}.c-stage,.c-status,.c-user{width:80px}.c-side{width:200px;border-right:10px solid #efefef}.c-assign,.c-assignedTo,.c-openedBy{width:130px}.c-progress{width:155px}.c-assign,.c-assignedTo,.c-openedBy,.c-product,.c-project,.c-status,.c-url,.c-user{overflow:hidden;text-overflow:unset;white-space:nowrap}.assigned-none{color:#1e6aeb!important;background:inherit}.assigned-current{color:#f38f19!important;background:inherit}.assigned-other{color:#313c52!important;background:inherit}a.assigned-current:hover,a.assigned-none:hover,a.assigned-other:hover{color:#1e6aeb!important;background:#fff;border-color:#fff!important}a.assigned-current:hover .icon,a.assigned-none:hover .icon,a.assigned-other:hover .icon{color:#1e6aeb!important}td.c-name,td.c-title{overflow:hidden;text-align:left!important;text-overflow:unset;white-space:nowrap}td.c-actions{position:relative;padding-top:0;padding-bottom:0;overflow:hidden;text-overflow:unset;white-space:nowrap;vertical-align:middle}td.c-actions .btn-link{color:#313c52;background:0 0}td.c-actions .btn-link:hover{color:#2e7fff;background:#e6f0ff}td.c-actions .btn.disabled,td.c-actions .btn[disabled]{pointer-events:auto}td.c-actions .more{position:absolute;top:50%;right:100%;display:none;padding-right:4px;padding-left:20px;margin-top:-15px;margin-right:-6px;white-space:nowrap;background-color:#fafafa;-webkit-transition:opacity .3s,margin .3s;-o-transition:opacity .3s,margin .3s;transition:opacity .3s,margin .3s}tr:hover td.c-actions .more{display:block}td:hover+td.c-actions>.more{margin-right:-15px;pointer-events:none;opacity:.15}tr[data-url]{cursor:pointer}.table tbody>tr>td,.table thead>tr>th{vertical-align:middle}.table tbody>tr>td.has-btn,.table thead>tr>th.has-btn{padding-top:1px;padding-bottom:1px;overflow:visible}.table tbody>tr>td .progress,.table thead>tr>th .progress{height:6px}.table .em,.table em{color:#313c52}.table .divider{border-bottom:10px solid #efefef}.table .divider-top{border-top:10px solid #efefef}.table .btn-icon-left{max-width:100%;padding-left:20px;overflow:hidden;line-height:18px;text-align:left;text-overflow:unset;background:0 0;border-color:#eaf3fc}.table .btn-icon-left>.icon{width:20px;font-size:14px;background:0 0!important;opacity:0}.table .btn-icon-left.btn-sm{height:26px;font-size:13px}.table .btn-icon-left:active,.table .btn-icon-left:focus,.table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.table .btn-icon-left:active>.icon,.table .btn-icon-left:focus>.icon,.table .btn-icon-left:hover>.icon{opacity:1}.table .btn-icon-left>.text{padding-left:25px}.table thead>tr>th.c-assign,.table thead>tr>th.c-assignedTo{padding-left:29px}.table a{vertical-align:middle}.table caption{margin-bottom:5px;background:#f1f1f1;border:none}.is-firefox .table .btn-icon-left>.icon{line-height:22px}.table tbody>tr>td.c-name a{color:#2463c7}.table tbody>tr>td.c-name a:hover{color:#1e6aeb}.table.table-data tbody>tr:hover,.table.table-form tbody>tr:hover{background:0 0}.main-table{border-radius:4px}.main-table>.table,.main-table>.table-footer,.main-table>.table-header,.main-table>.table-responsive{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045);box-shadow:0 1px 1px rgba(0,0,0,.05),0 2px 6px 0 rgba(0,0,0,.045)}.main-table .table{font-size:13px;table-layout:fixed;background-color:#fff;border-radius:4px 4px 0 0}.main-table .table.table-lg{font-size:14px}.main-table .table .btn-icon-left{border-color:transparent}.main-table .table .btn-icon-left>.icon{background:0 0;border-radius:4px}.main-table .table .btn-icon-left.btn-sm{height:26px}.main-table .table .btn-icon-left:hover{border-color:rgba(0,0,0,.2)}.main-table .table .btn-icon-left:hover>.icon{background:#e6f0ff;border-radius:4px 0 0 4px}.main-table tbody>tr>td,.main-table thead>tr>th{min-height:36px;padding:2px 8px;line-height:30px}.main-table tbody>tr>td:first-child,.main-table thead>tr>th:first-child{padding-right:4px;padding-left:15px}.main-table thead>tr>th{overflow:hidden;text-overflow:unset;white-space:nowrap}.main-table td,.main-table th{border-bottom:none!important}.main-table thead>tr{background:#fcfdfe;border-bottom:1px solid #f4f5f7}.main-table tbody>tr:last-child>td{border-bottom:1px solid #ddd}.main-table tbody>tr>td{position:relative}.main-table tbody>tr>td .label{max-width:200px;overflow:hidden;text-overflow:unset;white-space:nowrap}.main-table tbody>tr>td>a{line-height:28px;color:#2463c7}.main-table tbody>tr>td>a:not(.btn):visited{color:#003994;opacity:.9}.main-table tbody>tr>td>a:hover,.main-table tbody>tr>td>a:visited:hover{color:#2e7fff}.main-table tbody>tr>td.c-actions{padding-right:10px}.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{position:absolute;top:0;bottom:0;left:0;display:block;width:0;content:'';background:#2e7fff;opacity:0;-webkit-transition:.2s linear;-o-transition:.2s linear;transition:.2s linear;-webkit-transition-property:width,opacity,border-radius;-o-transition-property:width,opacity,border-radius;transition-property:width,opacity,border-radius}@-moz-document url-prefix(){.main-table tbody>tr>td.c-side+td:before,.main-table tbody>tr>td:first-child:before{bottom:-1px}}.main-table tbody>tr>td.c-side:before{display:none}.main-table tbody>tr>td.c-name a{color:#2463c7}.main-table tbody>tr>td.c-name a:hover{color:#1e6aeb}.main-table tbody>tr{border-bottom:1px solid #f4f5f7;-webkit-transition:.2s cubic-bezier(.175,.885,.32,1);-o-transition:.2s cubic-bezier(.175,.885,.32,1);transition:.2s cubic-bezier(.175,.885,.32,1);-webkit-transition-property:background-color,-webkit-box-shadow;-o-transition-property:box-shadow,background-color;transition-property:background-color,-webkit-box-shadow;transition-property:box-shadow,background-color;transition-property:box-shadow,background-color,-webkit-box-shadow}.main-table tbody>tr:hover{background:rgba(230,240,255,.8)}.main-table .table-grouped tbody>tr:hover{background:#f0f6ff;-webkit-box-shadow:none;box-shadow:none}.main-table .table-grouped tbody>tr:hover td.c-actions .more{background:#f0f6ff}.main-table tbody>tr.checked{background:#fff4ea}.main-table tbody>tr.checked:hover{background:#ffe6c6}.main-table tbody>tr.checked>td.c-side+td:before,.main-table tbody>tr.checked>td:first-child:before{width:4px;opacity:1}.main-table tbody>tr.checked.row-check-begin{border-top-left-radius:4px;border-top-right-radius:2px}.main-table tbody>tr.checked.row-check-begin>td:first-child:before{border-top-left-radius:4px}.main-table tbody>tr.checked.row-check-end{border-bottom-right-radius:2px;border-bottom-left-radius:4px}.main-table tbody>tr.checked.row-check-end>td:first-child:before{border-bottom-left-radius:4px}.main-table .checkbox-primary{display:inline-block;line-height:20px}.main-table .checkbox-primary label{margin:0}.main-table .table{margin:0}.table-header{padding:4px 0 12px}.table-header .table-statistic{color:#838a9d}.table-header .table-statistic strong{font-size:15px;color:#313c52}.table-header .btn-toolbar{margin-top:-28px}.table-header.fixed-right{position:relative;z-index:5;padding:0}.table-header.fixed-right>.btn-toolbar{position:absolute;top:0;right:1px;z-index:1;padding:1px;margin:0;background:#fff;border-radius:4px}.table-header.fixed-right>.btn-toolbar .btn{opacity:.65}.table-header.fixed-right>.btn-toolbar .btn:hover{opacity:1}.table-header-fixed .table-header{position:fixed;top:0}.table-header-fixed .table-header>.btn-toolbar{background-color:transparent}.table-header-fixed .table-header>.btn-toolbar .btn{color:#fff}.table-footer{position:relative;min-height:40px;padding:6px 15px;background:#fff;border-radius:0 0 4px 4px}.body-modal .table-footer{margin-bottom:20px}.talbe-lg+.table-footer{padding:11px 15px}.table-footer .btn-toolbar,.table-footer .checkbox-primary{float:left}.table-footer .btn-toolbar+.btn-toolbar{margin-left:8px}.table-footer .checkbox-primary{margin:5px 20px 0 0}.table-footer .checkbox-primary.checked label:after{border-color:#22c98d!important}.table-footer .btn{padding:3px 10px;line-height:20px}.table-footer .pager{position:absolute;top:0;right:0;z-index:5;height:40px;padding:6px 5px 6px 10px;margin:0;background:#fff;opacity:1;-webkit-transition:opacity .4s;-o-transition:opacity .4s;transition:opacity .4s}.table-footer .pager:before{position:absolute;top:0;bottom:0;left:-50px;display:block;width:50px;content:' ';background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(#fff));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%)}.table-footer .pager .btn,.table-footer .pager>li>.pager-item,.table-footer .pager>li>.pager-label{color:#838a9d;background:0 0;border-color:transparent}.table-footer .pager .btn,.table-footer .pager>li>a{border-radius:3px}.table-footer .pager .btn:hover,.table-footer .pager>li>a:hover{background:rgba(0,0,0,.1)}.table-footer .pager>li.disabled>a.pager-item{opacity:1}.table-footer .form-control{height:28px;padding:3px 8px}.table-footer .table-statistic{position:relative;z-index:2;float:left;padding-right:30px;line-height:28px;color:#838a9d;background:#fff}.table-footer .table-statistic:hover{z-index:4}.table-footer .table-statistic:hover+.pager{z-index:2;opacity:.3}.table-footer .btn-toolbar+.table-statistic,.table-footer .btn-toolbar+.text{margin-left:10px}.table-footer .text{float:left;line-height:28px}.table-footer.fixed-footer{position:fixed;z-index:10;margin:0;background:rgba(75,75,75,.85);border-top-color:transparent}.table-footer.fixed-footer .checkbox-primary label{color:#fff}.table-footer.fixed-footer .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.table-footer.fixed-footer .table-statistic{color:#fff;background:0 0}.table-footer.fixed-footer .pager{background:#666}.table-footer.fixed-footer .pager:before{background:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0)),to(#666));background:-webkit-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:-o-linear-gradient(left,rgba(0,0,0,0) 0,#666 100%);background:linear-gradient(to right,rgba(0,0,0,0) 0,#666 100%)}.table-footer.fixed-footer .pager .btn,.table-footer.fixed-footer .pager>li>.pager-item,.table-footer.fixed-footer .pager>li>.pager-label{color:#fff}.table-footer.fixed-footer .pager .btn:hover,.table-footer.fixed-footer .pager>li>a:hover{background:rgba(255,255,255,.3)}.table-footer.fixed-footer .pager>li.disabled>a.pager-item{opacity:.5}.table-actions{display:none;height:28px}.table-actions.show-always{display:block;pointer-events:none;cursor:not-allowed}.has-row-checked .table-actions{display:block;pointer-events:auto!important;cursor:default}.table-lg tbody>tr>td{padding:9px 10px}.table-lg tbody>tr>td .btn+.btn{margin-left:5px}.table.has-sort-head thead>tr>th{padding-right:0}.table.has-sort-head thead>tr>th>a{position:relative;display:inline-block;padding-right:16px;color:#313c52}.table.has-sort-head thead>tr>th>a:after,.table.has-sort-head thead>tr>th>a:before{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;line-height:30px;color:#313c52;text-transform:none;content:"\f0de";opacity:.5;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.table.has-sort-head thead>tr>th>a:after{content:"\f0dd"}.table.has-sort-head thead>tr>th>a.sort-down,.table.has-sort-head thead>tr>th>a.sort-up{color:#000;text-decoration:none}.table.has-sort-head thead>tr>th>a:hover,.table.has-sort-head thead>tr>th>a:hover:after,.table.has-sort-head thead>tr>th>a:hover:before{color:#2e7fff;opacity:1}.table.has-sort-head thead>tr>th>a.sort-down:after,.table.has-sort-head thead>tr>th>a.sort-up:before{color:#000;opacity:1}.head-fixed .datatable-head-span .table,.table.fixed-header-copy{z-index:10;color:#fff;background:rgba(75,75,75,.85)}.head-fixed .datatable-head-span .table thead>tr,.table.fixed-header-copy thead>tr{background:0 0}.head-fixed .datatable-head-span .table thead>tr>th,.table.fixed-header-copy thead>tr>th{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a,.table.fixed-header-copy thead>tr>th>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>a:after,.head-fixed .datatable-head-span .table thead>tr>th>a:before,.table.fixed-header-copy thead>tr>th>a:after,.table.fixed-header-copy thead>tr>th>a:before{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-down:after,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up,.head-fixed .datatable-head-span .table thead>tr>th>a.sort-up:before,.head-fixed .datatable-head-span .table thead>tr>th>a:hover,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:after,.head-fixed .datatable-head-span .table thead>tr>th>a:hover:before,.table.fixed-header-copy thead>tr>th>a.sort-down,.table.fixed-header-copy thead>tr>th>a.sort-down:after,.table.fixed-header-copy thead>tr>th>a.sort-up,.table.fixed-header-copy thead>tr>th>a.sort-up:before,.table.fixed-header-copy thead>tr>th>a:hover,.table.fixed-header-copy thead>tr>th>a:hover:after,.table.fixed-header-copy thead>tr>th>a:hover:before{color:#fff}.head-fixed .datatable-head-span .table thead>tr>th>.dropdown>a,.table.fixed-header-copy thead>tr>th>.dropdown>a{color:#eee}.head-fixed .datatable-head-span .table thead>tr>th>.dropdown>a:hover,.table.fixed-header-copy thead>tr>th>.dropdown>a:hover{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary,.table.fixed-header-copy .checkbox-primary{z-index:1}.head-fixed .datatable-head-span .table .checkbox-primary label,.table.fixed-header-copy .checkbox-primary label{color:#fff}.head-fixed .datatable-head-span .table .checkbox-primary label:after,.table.fixed-header-copy .checkbox-primary label:after{border-color:rgba(255,255,255,.8)}.head-fixed .datatable-head-span .table .checkbox-primary.checked label:after,.table.fixed-header-copy .checkbox-primary.checked label:after{border-color:#22c98d!important}.table-data{margin:0;table-layout:fixed}.table-data tbody>tr>td,.table-data tbody>tr>th{padding:6px 8px;word-break:break-all;border:none}.table-data tbody>tr>th{width:70px;padding-left:0;font-weight:400;color:#838a9d;text-align:right;vertical-align:middle}.table-data tbody>tr>td{padding-right:0}.table-data tbody>tr>td>a{color:#2463c7}.table-data tbody>tr>td>a:not(.btn):visited{color:#003994}.table-data tbody>tr>td>a:hover,.table-data tbody>tr>td>a:visited:hover{color:#2e7fff}.table-data ol,.table-data ul{margin:0}.fixed-head-table{background:rgba(0,0,0,.7);border-bottom:1px solid #ddd}.fixed-head-table thead>tr>th{color:#fff}.table-empty-tip{padding:80px 10px;text-align:center;background:#fff}.not-firefox .table-grouped>tbody>tr>td.c-side{background:#fff!important}.table-grouped .group-toggle{cursor:pointer}.table-grouped .group-toggle.group-summary{border-top:10px solid #efefef}.table-grouped tbody>tr>td:first-child,.table-grouped thead>tr>th:first-child{padding-left:8px}.group-expand-all,.table-group-collapsed .group-collapse-all{display:none}.table-group-collapsed .group-expand-all{display:inline-block}.table-auto{table-layout:auto}.datatable .table>tbody>tr.checked.hover>td,.datatable .table>tbody>tr.checked>td.col-hover{background:#ffe6c6}body.has-fixed-footer{padding-bottom:60px}.table.with-footer-fixed{margin-bottom:20px}.table-nest-hide{display:none!important}th.table-nest-title{position:relative;padding-left:30px!important}.table-nest-icon{position:relative;display:inline-block;width:22px;height:22px;font-size:16px;color:#a6aab8;text-align:center;border-radius:4px}.table-nest-toggle:before{position:absolute;top:0;right:0;bottom:0;left:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-size:12px;color:#888fa1;content:"\e926";-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.table-nest-toggle:after{position:absolute;top:4px;right:4px;bottom:4px;left:4px;display:inline-block;content:"";border:1px solid;border-radius:50%}.table-nest-toggle:hover{color:#2e7fff;background-color:rgba(0,0,0,.1)}.table-nest-child-hide .table-nest-toggle:before{font-size:12px;content:"\e925"}th.table-nest-title .table-nest-toggle{position:absolute!important;top:7px;left:8px}.table-nest-toggle.table-nest-toggle-global{width:22px;height:22px;padding:0!important;line-height:22px;text-align:center;border-radius:4px}.table-nest-toggle.table-nest-toggle-global:before{position:absolute!important;font-size:12px!important;line-height:22px!important;content:"\e959"!important;opacity:1!important}.table-nest-toggle.table-nest-toggle-global:after{display:none!important}.table-nest-collapsed .table-nest-toggle.table-nest-toggle-global:before{font-size:12px!important;content:"\e95a"!important}.disable-empty-nest-row .is-nest-child .table-nest-icon:before,.disable-empty-nest-row .no-nest .table-nest-icon:before{position:relative;top:-1px;width:6px;min-width:6px;height:6px;content:' ';background-color:#c4c4c4;border-radius:1px}.table-nest-child-hover>td:first-child,.table-nest-hover>td:first-child{-webkit-box-shadow:inset 3px 0 0 #c4c4c4;box-shadow:inset 3px 0 0 #c4c4c4}.c-manager .avatar{position:relative;z-index:2;line-height:17px;border:1.5px solid transparent}.c-manager .avatar.avatar-top{border-color:#ffaf65}.c-manager a{position:absolute;top:8px;left:16px;height:20px;padding:0 8px 0 13px;line-height:20px!important;color:#313c52!important;background:#f4f5f7;border-radius:10px}.article-content{overflow:auto}.article-content img{margin-top:0}.article-content table{margin:10px 0}.article-content table td,.article-content table th{border:1px solid #cbd0db!important}.article-content table th{background:#eee}.article-content a{color:#2e7fff}.article-content a:focus,.article-content a:hover{color:#18a6fd}.article-content,.article>.content{word-wrap:break-word}.detail{padding:10px 0;margin:0 10px}.detail+.detail{padding-top:25px;border-top:1px solid #eee}.detail-title{font-size:14px;font-weight:700;line-height:20px}.detail-title>.pull-right{position:relative;top:-8px}h2.detail-title{margin:0;font-size:15px;font-weight:700}h2.detail-title .label,h2.detail-title .label-id{position:relative;top:-1px}.detail-content{padding:0;margin-top:10px}.detail-content em{color:#313c52}.detail-content .list-unstyled>li+li{margin-top:5px}.side-col .detail-content{padding-left:0}details.detail{padding:10px 0}details.detail summary{position:relative;cursor:pointer;outline:0}details.detail summary::-webkit-details-marker{display:none}details.detail summary:after{position:absolute;top:0;right:0;font-family:ZentaoIcon;font-size:14px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e316";opacity:.4;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}details.detail[open] summary:after{content:"\e313"}.files-list{padding-left:0;list-style:none}.files-list>li>a{display:block;line-height:24px}.files-list>li>a>.icon{display:inline-block;margin-right:5px;opacity:.7}.files-list>li>a:hover{color:#2e7fff}.files-list>li>.right-icon{opacity:0;-webkit-transition:opacity .2s;-o-transition:opacity .2s;transition:opacity .2s}.files-list>li:hover>.right-icon{opacity:1}.histories-list{padding-left:15px;margin-bottom:0}.histories-list>li{position:relative}.histories-list>li+li{margin-top:5px}.histories-list>li strong{color:#313c52}.histories-list .comment,.histories-list .show-form .comment-edit-form{padding:5px 5px 5px 10px;margin:5px 0 0;background-color:rgba(0,0,0,.025);border:1px solid #eee}.histories-list .btn-edit-comment{position:absolute;top:28px;right:2px}.histories-list .comment-edit-form,.histories-list .show-form .btn-edit-comment,.histories-list .show-form .comment{display:none}.histories-list .show-form .comment-edit-form{display:block;padding:10px;border:1px solid #eee}.histories .btn-mini{width:16px;min-width:16px;height:16px;overflow:hidden;line-height:16px;color:#cbd0db;vertical-align:-8%;border-radius:1px}.histories .btn-mini:focus,.histories .btn-mini:hover{color:#2e7fff;border-color:#2e7fff}.histories .show-changes .btn-expand>.icon:before{content:"\e926"}.histories .btn-strip{display:none}.histories .show-changes .btn-strip{display:inline-block}.history-changes{display:none;padding:5px;margin-bottom:-5px;margin-left:5px;font-size:12px;line-height:20px}.history-changes blockquote{padding:5px 5px 5px 10px;margin:5px 0 0;font-size:12px;background-color:rgba(0,0,0,.05);border-left:3px solid #eee}.history-changes blockquote.original{display:none}.show-changes .history-changes,.show-original .history-changes blockquote.original{display:block}.show-original .history-changes blockquote.textdiff{display:none}.syntaxhighlighter{overflow:auto}.list-group{overflow-y:auto}.list-group>a{display:block;padding:2px 10px 2px 5px;overflow:hidden;line-height:20px;text-overflow:unset;white-space:nowrap;border-radius:4px}.list-group>a+a{margin-top:5px}.list-group>a>.icon{display:inline-block;margin-right:3px;opacity:.5}.list-group>a.selected{color:#e6f0ff;background-color:#2e7fff}.list-group>a.active{color:#2e7fff;background-color:#e6f0ff}.list-group>a.active:hover,.list-group>a:hover{color:#fff;background-color:#2e7fff}.list-group>.heading{padding:2px 5px;line-height:20px;color:#838a9d}.list-group>a+.heading{margin-top:4px}.dropup .search-box-sink{padding-top:5px;padding-bottom:45px}.dropup .search-box-sink .search-box{position:absolute;right:10px;bottom:10px;left:10px;margin:0}.dropup .search-box-sink .search-box+.list-group{height:auto;max-height:171px}.search-list{min-width:200px;max-width:300px;padding:0}.search-list .search-box{float:none;width:auto;margin:10px}.search-list .search-box .icon-search{opacity:.5}.search-list .list-group{max-height:248px;padding:5px 10px;margin:5px 0}.dropup .search-list .search-box+.list-group{height:171px;padding-top:0}.search-list .search-input{height:30px}.search-list .input-control-icon-right{height:28px;line-height:28px}.search-list .list-group>a.active{color:inherit;background-color:inherit}.search-list.searchbox-focus .list-group>a.active{color:#2e7fff;background-color:#e6f0ff}.search-list .list-group>a.active:hover,.search-list.searchbox-focus .list-group>a.active:hover{color:#fff;background-color:#2e7fff}#dropMenu{width:initial;max-width:initial}#dropMenu>.search-box{width:100%;padding:10px 10px 0;margin:0}#dropMenu>.search-box .icon-search{color:#333}#dropMenu>.search-box.has-icon-right>.form-control{padding-left:26px}#dropMenu .input-control-icon-left{top:10px;left:10px}#dropMenu .input-control-icon-right{top:11px;right:11px}#dropMenu .input-control-icon-right .icon{position:relative;top:2px}#dropMenu .list-group{max-height:initial;margin:0}#dropMenu .table-row{margin:0 -10px;table-layout:auto}#dropMenu .table-col{position:relative;width:100%;min-width:250px;max-width:450px}#dropMenu .table-col .list-group{max-height:300px;padding:0 10px 5px}#dropMenu .col-left{padding-bottom:30px}#dropMenu .col-right{display:none}#dropMenu .col-footer{position:absolute;right:0;bottom:-5px;left:0;padding:8px 10px;border-top:1px solid #eee}#dropMenu .col-footer>a{opacity:.8}#dropMenu .col-footer>a:hover{opacity:1}#dropMenu.show-right-col .table-col{width:50%}#dropMenu.show-right-col .col-right{display:table-cell;border-left:1px solid #eee}#dropMenu.show-right-col .col-right>.list-group{max-height:335px;margin:0}#dropMenu.show-right-col .col-right>.list-group>a{opacity:.7}#dropMenu.show-right-col .col-right>.list-group>a:hover{opacity:1}#dropMenu.show-right-col .toggle-right-col>.icon-angle-right:before{content:"\e314"}#dropMenu.has-search-text .list-group{overflow-x:hidden}#dropMenu.has-search-text>.search-box{width:100%!important}#dropMenu.has-search-text>.list-group>.table-row{display:block}#dropMenu.has-search-text>.list-group>.table-row>.table-col{display:block;width:100%}#dropMenu.has-search-text .col-left{padding-bottom:0}#dropMenu.has-search-text .pull-right.toggle-right-col{display:none}#dropMenu.has-search-text .col-left .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group{margin-bottom:0}#dropMenu.has-search-text .col-right .list-group>a{opacity:.7}#dropMenu.has-search-text .col-footer,#dropMenu.has-search-text .hide-in-search{display:none}#swapper{position:relative}#swapper #dropMenu .tree li>.selected{color:#2e7fff!important;background:#e6f0ff!important}#swapper #dropMenu .list-group>a.active:hover,#swapper #dropMenu .search-box .list-group>a.active,#swapper #dropMenu .tree li>.clickable:hover,#swapper #dropMenu.searchbox-focus .list-group>a.active:hover{color:#fff!important;background:#2e7fff!important}#swapper #dropMenu .tree{margin:0}#pageNav #dropMenu .list-group>a.active{color:inherit;background-color:inherit}#pageNav #dropMenu .list-group>a.active:hover,#pageNav #dropMenu.searchbox-focus .list-group>a.active:hover{color:#2e7fff!important;background:#e6f0ff!important}#pageNav #dropMenu .list-group>a.active.selected,#pageNav #dropMenu .list-group>a.active.selected:hover{color:#fff!important;background:#2e7fff!important}.release-path{overflow:hidden}.release-line{display:table;width:100%;padding:0;table-layout:fixed}.release-line>li{display:table-cell;list-style:none}.release-line>li>a{position:relative;display:block}.release-line>li>a:before{position:absolute;left:0;display:block;width:13px;height:13px;content:' ';background:#fff;border:2px solid #838a9d;border-radius:50%}.release-line>li>a:after{position:absolute;left:5px;display:block;width:2px;height:30px;content:' ';background:#c2dbff}.release-line>li>a>.icon{position:absolute;left:4px;font-size:24px}.release-line>li>a .title{display:block;font-size:14px;white-space:nowrap}.release-line>li>a .date,.release-line>li>a .info{display:block;max-height:18px;overflow:hidden;font-size:12px;color:#838a9d;text-overflow:unset;white-space:nowrap}.release-line>li>a:hover:before{background-color:#e6f0ff}.release-line>li>a:hover:after{background-color:#838a9d}.release-line>li>a:hover .title{color:#2e7fff}.release-line>li>a:hover .date,.release-line>li>a:hover .info{color:#838a9d}.release-line>li:nth-child(odd){padding-top:80px;vertical-align:top}.release-line>li:nth-child(odd)>a{height:85px;padding-top:36px;border-top:5px solid #c2dbff}.release-line>li:nth-child(odd)>a:before{top:-9px}.release-line>li:nth-child(odd)>a:after{top:6px}.release-line>li:nth-child(odd)>a>.icon{top:-26px}.release-line>li:nth-child(even){padding-bottom:80px;vertical-align:bottom}.release-line>li:nth-child(even)>a{height:85px;padding-bottom:36px;border-bottom:5px solid #c2dbff}.release-line>li:nth-child(even)>a:before{bottom:-9px}.release-line>li:nth-child(even)>a:after{bottom:6px}.release-line>li:nth-child(even)>a>.icon{bottom:-2px}.release-line>li:last-child>a{border-color:transparent}.release-line>li.active>a:before{border-color:#2e7fff}.release-line>li+li>a>.date,.release-line>li+li>a>.info,.release-line>li+li>a>.title{position:relative;left:-36%}#footer{position:fixed;right:0;bottom:0;left:0;z-index:1010;height:40px;background:#fff;border-top:1px solid #eff1f7}#footer .breadcrumb{padding:10px 0;margin:0}#footer .breadcrumb>li{max-width:200px;overflow:hidden;text-overflow:unset;white-space:nowrap}#footer .breadcrumb>.active,#footer .breadcrumb>li>a{color:#838a9e}#footer .breadcrumb>.active>.icon,#footer .breadcrumb>li>a>.icon{display:none}#footer .breadcrumb>.active:hover,#footer .breadcrumb>li>a:hover{color:#18a6fd}#footer .breadcrumb>li+li:before{content:'>'}#footer>.container{padding:0 20px}@media (min-width:1400px){#footer>.container{padding:0 40px}}#poweredBy{position:absolute;top:4px;right:0;padding:5px 10px}#poweredBy .icon-zentao{color:#0097fd}#poweredBy a{color:#313c52}#poweredBy a:hover{color:#2e7fff}#poweredBy a:hover .icon-zentao{color:#2e7fff}#poweredBy a.text-important{color:#ff6f42}#poweredBy a.text-important:hover{color:#fc5959}#poweredBy a.text-primary{color:#2e7fff}#poweredBy a.text-primary:hover{color:#18a6fd}#poweredBy #aiux{color:#cbd0dc}#noticeBox .alert{-webkit-box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px;box-shadow:rgba(0,0,0,.15) 0 3px 10px,rgba(0,0,0,.25) 0 3px 10px}#heading{top:0}.header-btn{position:relative;padding:8px 0}.header-btn .btn{position:relative;height:34px;padding:1px 6px;margin:0;overflow:visible;font-size:13px;font-weight:400;line-height:28px;color:#fff;background-color:transparent;border-color:transparent!important;border-right:none;-webkit-transition:none;-o-transition:none;transition:none}.header-btn .btn>.caret{margin-left:0;border-width:4px}.header-btn .btn>.text{display:inline-block;max-width:150px;overflow:hidden;text-overflow:unset;vertical-align:middle}.header-btn .btn:hover{-webkit-box-shadow:none;box-shadow:none}.header-btn .btn:hover,.header-btn.active .btn{color:#fff;background:rgba(0,0,0,.15)}.header-btn .btn:hover>.caret,.header-btn.active .btn>.caret{opacity:1}.header-btn+.header-btn{margin-left:10px}.header-btn+.header-btn:before{position:absolute;top:16px;left:-13px;display:block;font-family:ZentaoIcon;font-size:14px;font-size:16px;font-style:normal;font-weight:400;font-variant:normal;line-height:1;text-transform:none;content:"\e315";opacity:.6;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header-btn .dropdown-menu{margin-top:-10px}#toolbar{top:0;height:50px}#userNav>li{margin-right:0}#userNav>li>a{padding:10px 5px}#userNav>li>a>.icon{font-size:30px;filter:brightness(1.2) hue-rotate(30deg);opacity:.9;-webkit-filter:brightness(1.2) hue-rotate(30deg)}#userNav>li:hover>a{background-color:rgba(0,0,0,.1)}#userNav .dropdown-menu>li>a{position:relative;padding-left:24px}#userNav .dropdown-menu>li>a>.icon{top:1px;left:0}#userNav .dropdown-menu>li.user-profile-item>a{padding-left:45px} \ No newline at end of file diff --git a/www/theme/zui/fonts/ZentaoIcon.svg b/www/theme/zui/fonts/ZentaoIcon.svg index 36d0c6eba2..c331ff99a6 100644 --- a/www/theme/zui/fonts/ZentaoIcon.svg +++ b/www/theme/zui/fonts/ZentaoIcon.svg @@ -1,279 +1,279 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xuanxuan/XUANVERSION b/xuanxuan/XUANVERSION index 5438f70624..15c65ccf5b 100644 --- a/xuanxuan/XUANVERSION +++ b/xuanxuan/XUANVERSION @@ -1 +1 @@ -v6.5.0 +a975bd7e7e1fd29bc95ee7b9c5bafdc94a4e9eb0 diff --git a/xuanxuan/XVERSION b/xuanxuan/XVERSION index 7822c1abc0..4074fe2027 100644 --- a/xuanxuan/XVERSION +++ b/xuanxuan/XVERSION @@ -1 +1 @@ -6.5 +6.6 diff --git a/xuanxuan/extension/xuan/common/ext/view/header.xuanxuan.html.hook.php b/xuanxuan/extension/xuan/common/ext/view/header.xuanxuan.html.hook.php index aa222bcd5e..4412780e6f 100644 --- a/xuanxuan/extension/xuan/common/ext/view/header.xuanxuan.html.hook.php +++ b/xuanxuan/extension/xuan/common/ext/view/header.xuanxuan.html.hook.php @@ -22,6 +22,10 @@ body {scrollbar-gutter: stable both-edges;} +app->moduleName =='user' && $this->app->methodName == 'deny'): ?> + + diff --git a/xuanxuan/extension/xuan/message/ext/lang/de/xuanxuan.php b/xuanxuan/extension/xuan/message/ext/lang/de/xuanxuan.php index 8fbd39f334..f81d6076f2 100644 --- a/xuanxuan/extension/xuan/message/ext/lang/de/xuanxuan.php +++ b/xuanxuan/extension/xuan/message/ext/lang/de/xuanxuan.php @@ -8,6 +8,11 @@ $lang->message->notifyPassTitle = '%s passed %d stories'; $lang->message->notifyClarifyTitle = '%s clarify %d stories'; $lang->message->notifyRejectTitle = '%s reject %d stories'; +$lang->message->feedbackToBugTitle = '%s have forwarded %d feedback to bug'; +$lang->message->feedbackToTaskTitle = '%s have forwarded %d feedback to task'; +$lang->message->feedbackToDoTitle = '%s have forwarded %d feedback to todo'; +$lang->message->feedbackToStoryTitle = '%s have forwarded %d feedback to story'; + $lang->message->mr = new stdClass(); $lang->message->mr->logTitle = 'Build log'; $lang->message->mr->compilefail = 'Your submitted merge request: %s, build failed'; diff --git a/xuanxuan/extension/xuan/message/ext/lang/en/xuanxuan.php b/xuanxuan/extension/xuan/message/ext/lang/en/xuanxuan.php index 8fbd39f334..f81d6076f2 100644 --- a/xuanxuan/extension/xuan/message/ext/lang/en/xuanxuan.php +++ b/xuanxuan/extension/xuan/message/ext/lang/en/xuanxuan.php @@ -8,6 +8,11 @@ $lang->message->notifyPassTitle = '%s passed %d stories'; $lang->message->notifyClarifyTitle = '%s clarify %d stories'; $lang->message->notifyRejectTitle = '%s reject %d stories'; +$lang->message->feedbackToBugTitle = '%s have forwarded %d feedback to bug'; +$lang->message->feedbackToTaskTitle = '%s have forwarded %d feedback to task'; +$lang->message->feedbackToDoTitle = '%s have forwarded %d feedback to todo'; +$lang->message->feedbackToStoryTitle = '%s have forwarded %d feedback to story'; + $lang->message->mr = new stdClass(); $lang->message->mr->logTitle = 'Build log'; $lang->message->mr->compilefail = 'Your submitted merge request: %s, build failed'; diff --git a/xuanxuan/extension/xuan/message/ext/lang/fr/xuanxuan.php b/xuanxuan/extension/xuan/message/ext/lang/fr/xuanxuan.php index 8fbd39f334..f81d6076f2 100644 --- a/xuanxuan/extension/xuan/message/ext/lang/fr/xuanxuan.php +++ b/xuanxuan/extension/xuan/message/ext/lang/fr/xuanxuan.php @@ -8,6 +8,11 @@ $lang->message->notifyPassTitle = '%s passed %d stories'; $lang->message->notifyClarifyTitle = '%s clarify %d stories'; $lang->message->notifyRejectTitle = '%s reject %d stories'; +$lang->message->feedbackToBugTitle = '%s have forwarded %d feedback to bug'; +$lang->message->feedbackToTaskTitle = '%s have forwarded %d feedback to task'; +$lang->message->feedbackToDoTitle = '%s have forwarded %d feedback to todo'; +$lang->message->feedbackToStoryTitle = '%s have forwarded %d feedback to story'; + $lang->message->mr = new stdClass(); $lang->message->mr->logTitle = 'Build log'; $lang->message->mr->compilefail = 'Your submitted merge request: %s, build failed'; diff --git a/xuanxuan/extension/xuan/message/ext/lang/zh-cn/xuanxuan.php b/xuanxuan/extension/xuan/message/ext/lang/zh-cn/xuanxuan.php index 7503db0276..ab4bfdae20 100644 --- a/xuanxuan/extension/xuan/message/ext/lang/zh-cn/xuanxuan.php +++ b/xuanxuan/extension/xuan/message/ext/lang/zh-cn/xuanxuan.php @@ -8,6 +8,11 @@ $lang->message->notifyPassTitle = '%s 通过了%d个研发需求'; $lang->message->notifyClarifyTitle = '%s 驳回了%d个研发需求'; $lang->message->notifyRejectTitle = '%s 拒绝了%d个研发需求'; +$lang->message->feedbackToBugTitle = '%s 已将%d个反馈转至bug'; +$lang->message->feedbackToTaskTitle = '%s 已将%d个反馈转至任务'; +$lang->message->feedbackToDoTitle = '%s 已将%d个反馈转至待办'; +$lang->message->feedbackToStoryTitle = '%s 已将%d个反馈转至研发需求'; + $lang->message->mr = new stdClass(); $lang->message->mr->logTitle = '构建日志'; $lang->message->mr->compilefail = '您提交的合并请求:%s,构建任务执行失败'; diff --git a/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php b/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php index 8a33333ac8..7debadf704 100644 --- a/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php +++ b/xuanxuan/extension/xuan/message/ext/model/class/xuanxuan.class.php @@ -23,6 +23,10 @@ class xuanxuanMessage extends messageModel { $field = 'obj.*,project.name as projectName,product.name as productName,execu.name as execuName'; } + else if($objectType == 'feedback') + { + $field = 'obj.*,product.name as productName'; + } else { $field = 'obj.*'; @@ -40,24 +44,47 @@ class xuanxuanMessage extends messageModel ->leftJoin($this->config->objectTables['execution'])->alias('execu')->on('execu.id = obj.execution') ->leftJoin($this->config->objectTables['product'])->alias('product')->on('product.id = obj.product') ->fi() + ->beginIF($objectType == 'feedback') + ->leftJoin($this->config->objectTables['product'])->alias('product')->on('product.id = obj.product') + ->fi() ->where('obj.id')->eq($objectID) ->fetch(); $field = $this->config->action->objectNameFields[$objectType]; $title = $objectType == 'mr' ? '' : sprintf($this->lang->message->notifyTitle, $this->app->user->realname, $this->lang->action->label->$actionType, 1, $this->lang->action->objectTypes[$objectType]); - if ($objectType == 'story' && $actionType == 'reviewed' && !empty($extra)) + if($objectType == 'story' && $actionType == 'reviewed' && !empty($extra)) { $notifyType = strtolower(explode(',', $extra)[0]); - if ($notifyType == 'pass') + if($notifyType == 'pass') { - $title = $objectType == 'mr' ? '' : sprintf($this->lang->message->notifyPassTitle, $this->app->user->realname, 1); + $title = sprintf($this->lang->message->notifyPassTitle, $this->app->user->realname, 1); } else if($notifyType == 'clarify') { - $title = $objectType == 'mr' ? '' : sprintf($this->lang->message->notifyClarifyTitle, $this->app->user->realname, 1); + $title = sprintf($this->lang->message->notifyClarifyTitle, $this->app->user->realname, 1); } else if($notifyType == 'reject') { - $title = $objectType == 'mr' ? '' : sprintf($this->lang->message->notifyRejectTitle, $this->app->user->realname, 1); + $title = sprintf($this->lang->message->notifyRejectTitle, $this->app->user->realname, 1); + } + } + + if($objectType == 'feedback' && ($actionType == 'tobug' || $actionType == 'tostory' || $actionType == 'totask' || $actionType == 'todo')) + { + if($actionType == 'tobug') + { + $title = sprintf($this->lang->message->feedbackToBugTitle, $this->app->user->realname, 1); + } + else if($actionType == 'tostory') + { + $title = sprintf($this->lang->message->feedbackToStoryTitle, $this->app->user->realname, 1); + } + else if($actionType == 'totask') + { + $title = sprintf($this->lang->message->feedbackToTaskTitle, $this->app->user->realname, 1); + } + else if($actionType == 'todo') + { + $title = sprintf($this->lang->message->feedbackToDoTitle, $this->app->user->realname, 1); } } @@ -68,10 +95,23 @@ class xuanxuanMessage extends messageModel $url = $server . helper::createLink($objectType == 'kanbancard' ? 'kanban' : $objectType, 'view', "id=$dataID", 'html'); $target = ''; - if(!empty($object->assignedTo)) $target .= $object->assignedTo == 'closed' ? $object->openedBy : $object->assignedTo; - if(!empty($object->mailto)) $target .= ",{$object->mailto}"; + if($objectType == 'feedback') + { + $feedback = $this->loadModel('feedback')->getByID($objectID); + $senderUser = $this->feedback->getToAndCcList($feedback); + foreach($senderUser as $user) + { + $target .= ',' . $user; + } + } + else + { + if(!empty($object->assignedTo)) $target .= $object->assignedTo == 'closed' ? $object->openedBy : $object->assignedTo; + if(!empty($object->mailto)) $target .= ",{$object->mailto}"; + } if(($objectType == 'mr' or $objectType == 'kanbancard') and !empty($object->createdBy)) $target .= ",{$object->createdBy}"; $target = trim($target, ','); + $target = explode(',', $target); $target = $this->dao->select('id')->from(TABLE_USER) ->where('account')->in($target) ->beginIF($objectType != 'mr')->andWhere('account')->ne($this->app->user->account)->fi() @@ -110,6 +150,15 @@ class xuanxuanMessage extends messageModel $subcontent->parentURL = "xxc:openInApp/zentao-integrated/" . urlencode($server . helper::createLink($parentType, 'browse', "id=$subcontent->parent", 'html')); $subcontent->cardURL = $url; } + elseif($objectType == 'feedback') + { + $subcontent->headTitle = $object->productName; + $subcontent->headSubTitle = $object->execuName; + $subcontent->parentType = 'product'; + $subcontent->parent = $object->product; + $subcontent->parentURL = "xxc:openInApp/zentao-integrated/" . urlencode($server . helper::createLink('feedback', 'browse', "id=$object->product", 'html')); + $subcontent->cardURL = $url; + } else { $subcontent->parentType = $objectType; @@ -146,11 +195,11 @@ class xuanxuanMessage extends messageModel $contentData->actions = array(); $contentData->url = "xxc:openInApp/zentao-integrated/" . urlencode($url); } - $contentData->extra = $extra; + $contentData->extra = is_array($extra) ? $extra : ''; $content = json_encode($contentData); $avatarUrl = $server . $this->app->getWebRoot() . 'favicon.ico'; - if($target && ($objectType == 'bug' || $objectType == 'task' || $objectType == 'story')) $this->loadModel('im')->messageCreateNotify($target, $title, $subtitle = '', $content, $contentType = 'object', $url, $actions = array(), $sender = array('id' => 'zentao', 'realname' => $this->lang->message->sender, 'name' => $this->lang->message->sender, 'avatar' => $avatarUrl)); + if($target && ($objectType == 'bug' || $objectType == 'task' || $objectType == 'story' || $objectType == 'feedback')) $this->loadModel('im')->messageCreateNotify($target, $title, $subtitle = '', $content, $contentType = 'object', $url, $actions = array(), $sender = array('id' => 'zentao', 'realname' => $this->lang->message->sender, 'name' => $this->lang->message->sender, 'avatar' => $avatarUrl)); if($objectType == 'mr' and is_array($this->lang->message->mr->$actionType) and !empty($object->assignee)) { diff --git a/xuanxuan/extension/xuan/user/ext/lang/de/xuanxuan.php b/xuanxuan/extension/xuan/user/ext/lang/de/xuanxuan.php index fe03c8f2f7..d2a3bc7ac6 100644 --- a/xuanxuan/extension/xuan/user/ext/lang/de/xuanxuan.php +++ b/xuanxuan/extension/xuan/user/ext/lang/de/xuanxuan.php @@ -1,2 +1,7 @@ user->tokenInvalid = "Token denied, please login with password."; + +if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false) +{ + $lang->user->errorDeny = "Sorry, your access to %2\$s of %1\$s is denied. Please contact your Admin to get privileges."; +} diff --git a/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php b/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php index fe03c8f2f7..d2a3bc7ac6 100644 --- a/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php +++ b/xuanxuan/extension/xuan/user/ext/lang/en/xuanxuan.php @@ -1,2 +1,7 @@ user->tokenInvalid = "Token denied, please login with password."; + +if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false) +{ + $lang->user->errorDeny = "Sorry, your access to %2\$s of %1\$s is denied. Please contact your Admin to get privileges."; +} diff --git a/xuanxuan/extension/xuan/user/ext/lang/fr/xuanxuan.php b/xuanxuan/extension/xuan/user/ext/lang/fr/xuanxuan.php index fe03c8f2f7..d2a3bc7ac6 100644 --- a/xuanxuan/extension/xuan/user/ext/lang/fr/xuanxuan.php +++ b/xuanxuan/extension/xuan/user/ext/lang/fr/xuanxuan.php @@ -1,2 +1,7 @@ user->tokenInvalid = "Token denied, please login with password."; + +if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false) +{ + $lang->user->errorDeny = "Sorry, your access to %2\$s of %1\$s is denied. Please contact your Admin to get privileges."; +} diff --git a/xuanxuan/extension/xuan/user/ext/lang/zh-cn/xuanxuan.php b/xuanxuan/extension/xuan/user/ext/lang/zh-cn/xuanxuan.php index c4e2aa9b49..caa8438ff6 100644 --- a/xuanxuan/extension/xuan/user/ext/lang/zh-cn/xuanxuan.php +++ b/xuanxuan/extension/xuan/user/ext/lang/zh-cn/xuanxuan.php @@ -1,2 +1,7 @@ user->tokenInvalid = "Token 认证失败,请尝试使用密码登录。"; + +if(strpos($_SERVER['HTTP_USER_AGENT'], 'xuanxuan') != false) +{ + $lang->user->errorDeny = "抱歉,您无权访问『%s』模块的『%s』功能。请联系管理员获取权限。"; +}