From 0858e5f74772baef25e9000d9c9897af9e38b0a7 Mon Sep 17 00:00:00 2001 From: caicai8 <1149225589@qq.com> Date: Thu, 23 Jan 2020 14:53:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=8D=95=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/forge/Main/Detail.js | 21 ++++ public/react/src/forge/Order/Detail.js | 56 +++++++++ public/react/src/forge/Order/Nav.js | 3 +- public/react/src/forge/Order/New.js | 2 +- public/react/src/forge/Order/OrderItem.js | 5 +- public/react/src/forge/Order/Tags.js | 134 ++++++++++++++++++++++ public/react/src/forge/Order/order.css | 29 +++++ public/react/src/forge/Order/order.js | 13 ++- 8 files changed, 253 insertions(+), 10 deletions(-) create mode 100644 public/react/src/forge/Order/Detail.js create mode 100644 public/react/src/forge/Order/Tags.js diff --git a/public/react/src/forge/Main/Detail.js b/public/react/src/forge/Main/Detail.js index b019a8e56..7ce0adaa8 100644 --- a/public/react/src/forge/Main/Detail.js +++ b/public/react/src/forge/Main/Detail.js @@ -12,10 +12,18 @@ const FileNew = Loadable({ loader: () => import('../Newfile/Index'), loading: Loading, }) +const TagList = Loadable({ + loader: () => import('../Order/Tags'), + loading: Loading, +}) const OrderNew = Loadable({ loader: () => import('../Order/New'), loading: Loading, }) +const OrderDetail = Loadable({ + loader: () => import('../Order/Detail'), + loading: Loading, +}) const OrderIndex = Loadable({ loader: () => import('../Order/order'), loading: Loading, @@ -196,6 +204,19 @@ class Detail extends Component{ } > + {/* 标签列表 */} + () + } + > + {/* 工单详情 */} + () + } + > + {/* 新建工单 */} { + this.getDetail(); + } + + getDetail=()=>{ + const { projectsId , orderId} = this.props.match.params; + const url = `/projects/${projectsId}/issues/${orderId}.json`; + axios.get(url).then((result)=>{ + if(result){ + + } + }).catch((error)=>{ + console.log(error); + }) + } + + render(){ + const { projectsId } = this.props.match.params; + + return( +
+
+
+
+
+

+ 科技生活 + 编辑 +

+

+ +

+
+
+
+ ) + } +} +export default Detail; \ No newline at end of file diff --git a/public/react/src/forge/Order/Nav.js b/public/react/src/forge/Order/Nav.js index af7072eef..a0cea55bb 100644 --- a/public/react/src/forge/Order/Nav.js +++ b/public/react/src/forge/Order/Nav.js @@ -3,9 +3,10 @@ import { Link } from 'react-router-dom'; import './order.css' class Nav extends Component{ render(){ + const { projectsId } = this.props.match.params; return(

- 标签 + 标签 里程碑

) diff --git a/public/react/src/forge/Order/New.js b/public/react/src/forge/Order/New.js index 8f73e107d..199a1d253 100644 --- a/public/react/src/forge/Order/New.js +++ b/public/react/src/forge/Order/New.js @@ -107,7 +107,7 @@ class New extends Component{ return(
-
diff --git a/public/react/src/forge/Order/OrderItem.js b/public/react/src/forge/Order/OrderItem.js index 6538d633e..f08c50991 100644 --- a/public/react/src/forge/Order/OrderItem.js +++ b/public/react/src/forge/Order/OrderItem.js @@ -1,9 +1,10 @@ import React , { Component } from 'react'; - +import { Link } from 'react-router-dom'; class OrderItem extends Component{ render(){ const { issues , search_count , page , limit } = this.props; + const { projectsId } = this.props.match.params; const renderList =()=>{ if(issues && issues.length > 0){ return( @@ -13,7 +14,7 @@ class OrderItem extends Component{

# {search_count - (key + (page-1) * limit)} - {item.name} + {item.name}

{item.created_at} diff --git a/public/react/src/forge/Order/Tags.js b/public/react/src/forge/Order/Tags.js new file mode 100644 index 000000000..a89694dcf --- /dev/null +++ b/public/react/src/forge/Order/Tags.js @@ -0,0 +1,134 @@ +import React , {Component} from 'react'; +import { Dropdown , Icon , Menu , Pagination } from 'antd'; +import { Link } from 'react-router-dom'; +import Nav from './Nav'; +import NoneData from '../../modules/courses/coursesPublic/NoneData'; + +import axios from 'axios'; +class Tags extends Component{ + constructor(props){ + super(props); + this.state={ + data:undefined, + limit:15, + page:1, + order_name:undefined, + order_type:undefined + } + } + + componentDidMount=()=>{ + this.getList(); + } + + getList=(page,order_name,order_type)=>{ + const { projectsId } = this.props.match.params; + const { limit } = this.state; + const url = `/projects/${projectsId}/issue_tags.json`; + axios.get(url,{ + params:{ + page,limit,order_name,order_type + } + }).then((result)=>{ + if(result){ + this.setState({ + data:result.data + }) + } + }).catch((error)=>{ + console.log(error); + }) + } + + ChangePage=(page)=>{ + this.setState({ + page + }) + + this.getList(page); + } + + // 排序 + arrayList=(e)=>{ + this.setState({ + order_name:e.key, + order_type:e.item.props.value + }) + + this.getList(1,e.key,e.item.props.value); + } + + render(){ + const { data , limit , page } = this.state; + const { projectsId } = this.props.match.params; + const menu = ( +

+ 按创建时间降序排序 + 按创建时间升序排序 + 按issue个数降序排序 + 按issue个数升序排序 + + ) + const Paginations = ( + + { + data && data.issue_tags_count > limit ? +
+ +
:"" + } +
+ ) + + const renderList =()=>{ + if(data && data.issue_tags && data.issue_tags.length>0 ){ + return( +
+ { + data.issue_tags.map((item,key)=>{ + return( +
+ + + {item.name} + + {item.description} + {item.issues_count}个开启的工单 +
+ ) + }) + } +
+ ) + }else{ + return( + + ) + } + } + return( +
+
+
+
+
+ 共{ data && data.issue_tags_count }个标签 +
    +
  • + + 标签 + +
  • +
+
+ + { renderList() } + { Paginations } +
+
+ ) + } +} +export default Tags; \ No newline at end of file diff --git a/public/react/src/forge/Order/order.css b/public/react/src/forge/Order/order.css index 6ab502e17..9326f5a7c 100644 --- a/public/react/src/forge/Order/order.css +++ b/public/react/src/forge/Order/order.css @@ -150,6 +150,35 @@ margin-bottom: 0px; } +/* 工单标签列表 */ +.tagList > div{ + border-bottom: 1px dashed #f4f4f4; + display: flex; + justify-content: space-around; + padding:15px 0px; +} +.tagList > div:last-child{ + border-bottom: none; +} +.tagList > div > span{ + display: block +} +.tagList > div > span:nth-child(2){ + width: 450px; +} +.tagColor{ + display: inline-block; + width:20px; + height: 15px; + border-radius: 4px; + margin-right: 5px; +} +/* 工单详情 */ +.detailContent{ + padding:15px 0px; + border-bottom: 1px solid #f4f4f4; +} + @media screen and (max-width: 700px){ .topWrapper_select li{ width:auto; diff --git a/public/react/src/forge/Order/order.js b/public/react/src/forge/Order/order.js index d2e002916..59dc1b170 100644 --- a/public/react/src/forge/Order/order.js +++ b/public/react/src/forge/Order/order.js @@ -63,13 +63,14 @@ class order extends Component{ } // 获取列表数据 - getIssueList=(page,limit,search,author_id,assigned_to_id,issue_type)=>{ + getIssueList=(page,limit,search,author_id,assigned_to_id,id,value)=>{ const { projectsId } = this.props.match.params; const url = `/projects/${projectsId}/issues.json`; axios.get(url,{ params:{ - page,limit,search,author_id,assigned_to_id,issue_type + page,limit,search,author_id,assigned_to_id, + [id]:value } }).then((result)=>{ if(result){ @@ -90,13 +91,13 @@ class order extends Component{ [id]:e.key }) const { page,limit,search,author_id,assigned_to_id } = this.state; - this.getIssueList(page,limit,search,author_id,assigned_to_id,e.key); + this.getIssueList(page,limit,search,author_id,assigned_to_id,id,e.key); } renderMenu =(array,name,id)=>{ return( - this.getOption(e,id)}>{name} + this.getOption(e,id)}>{name} { array && array.length > 0 && array.map((item,key)=>{ return( @@ -179,7 +180,7 @@ class order extends Component{ return(
-
@@ -246,7 +247,7 @@ class order extends Component{ search_count === 0 ? : - + } { Paginations }