import { Request , Response } from 'express' ; import { parse } from 'url' ; import { TableListItem , TableListParams } from '@/types/user.d' ; let tableListDataSource = [ ] ; for ( let i = 0 ; i < 200 ; i += 1 ) { tableListDataSource . push ( { key : i , disabled : i % 6 === 0 , href : 'https://ant.design' , avatar : [ 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png' , 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png' , ] [ i % 2 ] , name : `TradeCode ${ i }` , title : `一个任务名称 ${ i }` , owner : '之晨' , desc : '这是一段描述' , callNo : Math . floor ( Math . random ( ) * 1000 ) , status : Math . floor ( Math . random ( ) * 10 ) % 4 , updatedAt : new Date ( `2017-07-${ Math . floor ( i / 2 ) + 1 }` ) , createdAt : new Date ( `2017-07-${ Math . floor ( i / 2 ) + 1 }` ) , progress : Math . ceil ( Math . random ( ) * 100 ) , } ) ; } function getUser ( req , res , u ) { let url = u ; if ( ! url || Object . prototype . toString . call ( url ) !== '[object String]' ) { url = req . url ; } const params = ( parse ( url , true ) . query as unknown ) as TableListParams ; let dataSource = tableListDataSource ; if ( params . sorter ) { const s = params . sorter . split ( '_' ) ; dataSource = dataSource . sort ( ( prev , next ) => { if ( s [ 1 ] === 'descend' ) { return next [ s [ 0 ] ] - prev [ s [ 0 ] ] ; } return prev [ s [ 0 ] ] - next [ s [ 0 ] ] ; } ) ; } if ( params . status ) { const status = params . status . split ( ',' ) ; let filterDataSource = [ ] ; status . forEach ( ( s ) => { filterDataSource = filterDataSource . concat ( dataSource . filter ( item => { if ( parseInt ( `${ item . status }` , 10 ) === parseInt ( s . split ( '' ) [ 0 ] , 10 ) ) { return true ; } return false ; } ) ) ; } ) ; dataSource = filterDataSource ; } if ( params . name ) { dataSource = dataSource . filter ( data => data . name . indexOf ( params . name ) > - 1 ) ; } let pageSize = 10 ; if ( params . pageSize ) { pageSize = parseInt ( `${ params . pageSize }` , 0 ) ; } const result = { list : dataSource , pagination : { total : dataSource . length , pageSize , current : parseInt ( `${ params . currentPage }` , 10 ) || 1 , } , } ; return res . json ( result ) ; } function postUser ( req , res , u , b ) { let url = u ; if ( ! url || Object . prototype . toString . call ( url ) !== '[object String]' ) { url = req . url ; } const body = ( b && b . body ) || req . body ; const { method , name , desc , key } = body ; switch ( method ) { case 'delete' : tableListDataSource = tableListDataSource . filter ( item => key . indexOf ( item . key ) === - 1 ) ; break ; case 'post' : const i = Math . ceil ( Math . random ( ) * 10000 ) ; tableListDataSource . unshift ( { key : i , href : 'https://ant.design' , avatar : [ 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png' , 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png' , ] [ i % 2 ] , name : `TradeCode ${ i }` , title : `一个任务名称 ${ i }` , owner : '之晨' , desc , callNo : Math . floor ( Math . random ( ) * 1000 ) , status : Math . floor ( Math . random ( ) * 10 ) % 2 , updatedAt : new Date ( ) , createdAt : new Date ( ) , progress : Math . ceil ( Math . random ( ) * 100 ) , } ) ; break ; case 'update' : tableListDataSource = tableListDataSource . map ( item => { if ( item . key === key ) { return { ... item , desc , name } ; } return item ; } ) ; break ; default : break ; } const result = { list : tableListDataSource , pagination : { total : tableListDataSource . length , } , } ; return res . json ( result ) ; } export default { 'GET /api/user' : getUser , 'POST /api/user' : postUser , } ;