├── screenshots ├── map.png ├── city.png └── line.png ├── src ├── components │ ├── Login │ │ ├── index.scss │ │ ├── index.js │ │ └── index.jsx │ ├── City │ │ ├── index.js │ │ ├── index.scss │ │ └── index.jsx │ ├── Line │ │ ├── index.js │ │ ├── index.scss │ │ └── index.jsx │ ├── Map │ │ ├── index.js │ │ ├── index.scss │ │ └── index.jsx │ └── Index │ │ ├── index.scss │ │ └── index.jsx ├── index.html ├── router │ └── index.jsx ├── common │ ├── convert.js │ └── cookie.js └── config │ ├── map.js │ └── city.js ├── .gitignore ├── webpack.dll.config.js ├── README.md ├── server.js ├── package.json ├── webpack.dev.config.js ├── spider └── index.js └── manifest.json /screenshots/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanm1ng/react-visualized-platform/HEAD/screenshots/map.png -------------------------------------------------------------------------------- /screenshots/city.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanm1ng/react-visualized-platform/HEAD/screenshots/city.png -------------------------------------------------------------------------------- /screenshots/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanm1ng/react-visualized-platform/HEAD/screenshots/line.png -------------------------------------------------------------------------------- /src/components/Login/index.scss: -------------------------------------------------------------------------------- 1 | .login-form { 2 | margin: 220px auto; 3 | max-width: 300px; 4 | } 5 | .login-form-button { 6 | width: 100%; 7 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #IDE 2 | .idea/ 3 | 4 | #npm 5 | node_modules/ 6 | 7 | #build 8 | 9 | build/ 10 | 11 | #log 12 | 13 | *.log 14 | 15 | #spider 16 | 17 | list.action!* -------------------------------------------------------------------------------- /src/components/City/index.js: -------------------------------------------------------------------------------- 1 | export default function(location, cb) { 2 | require.ensure([], require => { 3 | cb(null, require('./index.jsx').default) 4 | }, 'city') 5 | } -------------------------------------------------------------------------------- /src/components/Line/index.js: -------------------------------------------------------------------------------- 1 | export default function(location, cb) { 2 | require.ensure([], require => { 3 | cb(null, require('./index.jsx').default) 4 | }, 'line') 5 | } -------------------------------------------------------------------------------- /src/components/Map/index.js: -------------------------------------------------------------------------------- 1 | export default function(location, cb) { 2 | require.ensure([], require => { 3 | cb(null, require('./index.jsx').default) 4 | }, 'map') 5 | } -------------------------------------------------------------------------------- /src/components/Login/index.js: -------------------------------------------------------------------------------- 1 | export default function(location, cb) { 2 | require.ensure([], require => { 3 | cb(null, require('./index.jsx').default) 4 | }, 'login') 5 | } -------------------------------------------------------------------------------- /src/components/Index/index.scss: -------------------------------------------------------------------------------- 1 | .header { 2 | position: relative; 3 | } 4 | .logout { 5 | position: absolute; 6 | right: 30px; 7 | top: 15px; 8 | color: #108ee9; 9 | cursor: pointer; 10 | } -------------------------------------------------------------------------------- /src/components/Map/index.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 90%; 3 | background-color: #fff; 4 | padding: 20px; 5 | margin: 0 auto; 6 | margin-top: 20px; 7 | border-radius: 5px; 8 | height: 100%; 9 | } 10 | #main { 11 | width: 100%; 12 | height: 600px; 13 | margin: 20px auto 0 auto; 14 | } -------------------------------------------------------------------------------- /src/components/City/index.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 90%; 3 | background-color: #fff; 4 | padding: 20px; 5 | margin: 0 auto; 6 | margin-top: 20px; 7 | border-radius: 5px; 8 | height: 100%; 9 | } 10 | .my-table { 11 | width: 100%; 12 | min-height: 600px; 13 | margin: 20px auto 0 auto; 14 | } -------------------------------------------------------------------------------- /src/components/Line/index.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | width: 90%; 3 | background-color: #fff; 4 | padding: 20px; 5 | margin: 0 auto; 6 | margin-top: 20px; 7 | border-radius: 5px; 8 | height: 100%; 9 | } 10 | .myselecter { 11 | min-width: 200px; 12 | width: 30%; 13 | margin-left: 40px; 14 | } 15 | #main { 16 | width: 100%; 17 | height: 600px; 18 | margin: 20px auto 0 auto; 19 | } -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | React 7 | 8 | 9 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /webpack.dll.config.js: -------------------------------------------------------------------------------- 1 | const webpack = require('webpack'); 2 | 3 | const vendors = [ 4 | 'react', 5 | 'react-dom', 6 | 'react-router', 7 | 'leancloud-storage', 8 | 'antd' 9 | ]; 10 | 11 | module.exports = { 12 | output: { 13 | path: 'build', 14 | filename: '[name].js', 15 | library: '[name]', 16 | }, 17 | entry: { 18 | "lib": vendors, 19 | }, 20 | plugins: [ 21 | new webpack.DllPlugin({ 22 | path: 'manifest.json', 23 | name: '[name]', 24 | context: __dirname, 25 | }), 26 | new webpack.optimize.UglifyJsPlugin({ 27 | compressor: { 28 | warnings: false 29 | } 30 | }) 31 | ], 32 | }; -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### 雾霾数据分析平台 2 | 3 | #### step1 4 | 5 | ```bash 6 | npm i 7 | npm run dev 8 | ``` 9 | 10 | #### step2 11 | 12 | open bowser at [http://localhost:8980/](http://localhost:8980/) 13 | 14 | #### 数据来源 15 | http://datacenter.mep.gov.cn 16 | 17 | #### 分析工具 18 | * ECharts 19 | * Ant-Design 20 | 21 | #### 部署 22 | 可以将 `spider` 文件夹放到远程服务器然后建立一个 `crontab` 定时任务 23 | 24 | ```bash 25 | > crontab -e 26 | > 00 12 * * * /usr/local/bin/node /dev/spider/index.js 2>&1 # 每天12:00执行 27 | ``` 28 | 29 | #### 效果 30 | 31 | 1. 全国地图 32 | ![Map](https://ww2.sinaimg.cn/large/006tKfTcgy1feeeypdt6sj312z0letc0.jpg) 33 | 2. 所有城市 34 | ![City](https://ww2.sinaimg.cn/large/006tKfTcgy1feeexyv2dij312z0lewf3.jpg) 35 | 3. 城市折线 36 | ![Line](https://ww1.sinaimg.cn/large/006tKfTcgy1feeezi6k15j312z0leq4l.jpg) -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | var webpack = require('webpack') 3 | var WebpackDevMiddleware = require('webpack-dev-middleware') 4 | var WebpackHotMiddleware = require('webpack-hot-middleware') 5 | var config = require('./webpack.dev.config') 6 | var compiler = webpack(config) 7 | var port = 8980; 8 | 9 | app = express(); 10 | 11 | app.use(WebpackDevMiddleware(compiler, { 12 | publicPath: config.output.publicPath, 13 | noInfo: true, 14 | hot: true, 15 | historyApiFallback: true, 16 | inline: true 17 | })) 18 | 19 | app.use(WebpackHotMiddleware(compiler)) 20 | 21 | app.use(express.static('build')); 22 | 23 | app.listen(port, function(error) { 24 | if (error) { 25 | console.error(error); 26 | } else { 27 | console.info("==> 🌎 Listening on port %s. Open up http://localhost:%s/ in your browser.", port, port); 28 | } 29 | }); -------------------------------------------------------------------------------- /src/router/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import { Router, Route, IndexRoute, hashHistory } from 'react-router'; 5 | import Login from '../components/Login/index.js'; 6 | import Map from '../components/Map/index.js'; 7 | import City from '../components/City/index.js'; 8 | import Line from '../components/Line/index.js'; 9 | 10 | import Cookie from '../common/cookie.js'; 11 | 12 | function requireEnter(nextState, replace) { 13 | if (Cookie.get('login') == 'false') { 14 | window.location.hash = '#/' 15 | } 16 | } 17 | 18 | class App extends React.Component { 19 | render() { 20 | return ( 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | ) 30 | } 31 | } 32 | 33 | ReactDOM.render(, document.getElementById('react-content')); -------------------------------------------------------------------------------- /src/components/Index/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Menu, Icon } from 'antd'; 4 | import Cookie from '../../common/cookie.js'; 5 | 6 | const SubMenu = Menu.SubMenu; 7 | const MenuItemGroup = Menu.ItemGroup; 8 | import './index.scss'; 9 | 10 | export default class Index extends React.Component { 11 | constructor(props) { 12 | super(props); 13 | var current = window.location.hash.split('/')[1].split('?')[0]; 14 | 15 | this.state = { 16 | current 17 | } 18 | } 19 | handleClick = (e) => { 20 | this.setState({ 21 | current: e.key 22 | }); 23 | window.location.hash = '#' + e.key; 24 | } 25 | logout = () => { 26 | Cookie.set('login', false); 27 | window.location.hash = '#/' 28 | } 29 | render() { 30 | return ( 31 |
32 | this.handleClick(e)} selectedKeys={[this.state.current]} mode="horizontal"> 33 | 34 | 全国城市 35 | 36 | 37 | 所有城市 38 | 39 | 40 | 城市折线 41 | 42 | 43 |
this.logout()}> 退出登录
44 |
45 | ); 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-visualized-platform", 3 | "version": "1.0.1", 4 | "description": "react visualized", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "webpack-dev-server", 8 | "build": "webpack --progress --colors", 9 | "dev": "node server.js", 10 | "dll": "webpack --config webpack.dll.config.js --progress" 11 | }, 12 | "author": "yanming", 13 | "dependencies": { 14 | "antd": "^2.8.0", 15 | "babel-plugin-import": "^1.1.1", 16 | "classnames": "^2.2.5", 17 | "express": "^4.15.2", 18 | "extract-text-webpack-plugin": "^1.0.1", 19 | "leancloud-storage": "^2.1.3", 20 | "react-router": "^2.8.1", 21 | "webpack-dev-middleware": "^1.10.2", 22 | "webpack-hot-middleware": "^2.18.0" 23 | }, 24 | "devDependencies": { 25 | "autoprefixer-loader": "^3.2.0", 26 | "babel-core": "^6.13.2", 27 | "babel-loader": "^6.2.5", 28 | "babel-plugin-transform-class-properties": "^6.23.0", 29 | "babel-preset-es2015": "^6.13.2", 30 | "babel-preset-react": "^6.11.1", 31 | "babel-preset-stage-3": "^6.22.0", 32 | "css-loader": "^0.23.1", 33 | "file-loader": "^0.9.0", 34 | "happypack": "^3.0.3", 35 | "html-webpack-plugin": "^2.24.1", 36 | "jsx-loader": "^0.13.2", 37 | "node-sass": "^3.8.0", 38 | "react": "^15.3.1", 39 | "react-dom": "^15.3.1", 40 | "react-router": "^2.8.1", 41 | "react-tap-event-plugin": "^2.0.1", 42 | "sass-loader": "^4.0.0", 43 | "style-loader": "^0.13.1", 44 | "webpack": "^1.13.2", 45 | "webpack-dev-server": "^1.15.0" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/common/convert.js: -------------------------------------------------------------------------------- 1 | export function convertData(map, data) { 2 | var res = [] 3 | for (var i = 0; i < data.length; i++) { 4 | var geoCoord = map[data[i].name] 5 | if (geoCoord !== undefined) { 6 | res.push({ 7 | name: data[i].name, 8 | value: geoCoord.concat(data[i].value) 9 | }) 10 | } 11 | } 12 | return res; 13 | } 14 | 15 | export function timeFormat(fmt) { 16 | var time = new Date(); 17 | var o = { 18 | "M+": time.getMonth() + 1, 19 | "d+": time.getDate(), 20 | "h+": time.getHours(), 21 | "m+": time.getMinutes(), 22 | "s+": time.getSeconds(), 23 | "q+": Math.floor((time.getMonth() + 3) / 3), 24 | "S": time.getMilliseconds() 25 | }; 26 | if (/(y+)/.test(fmt)) 27 | fmt = fmt.replace(RegExp.$1, (time.getFullYear() + "").substr(4 - RegExp.$1.length)); 28 | for (var k in o) 29 | if (new RegExp("(" + k + ")").test(fmt)) 30 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 31 | return fmt; 32 | } 33 | 34 | export function getBetweenTime(start, end) { 35 | var arr = []; 36 | start = new Date(start); 37 | end = new Date(end); 38 | 39 | while ((end - start) >= 0) { 40 | var year = start.getFullYear(); 41 | var month = start.getMonth().toString().length == 1 ? "0" + (start.getMonth() + 1) : (end.getMonth() + 1); 42 | var day = start.getDate().toString().length == 1 ? "0" + start.getDate() : end.getDate(); 43 | arr.push(year + "-" + month + "-" + day); 44 | 45 | start.setDate(start.getDate() + 1); 46 | } 47 | return arr; 48 | } -------------------------------------------------------------------------------- /src/components/Login/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import { Form, Icon, Input, Button, Checkbox, message } from 'antd'; 4 | import cookie from '../../common/cookie.js'; 5 | const FormItem = Form.Item; 6 | import './index.scss'; 7 | 8 | class Login extends React.Component { 9 | constructor (props) { 10 | super(props) 11 | this.state = { 12 | 13 | }; 14 | } 15 | handleSubmit = (e) => { 16 | e.preventDefault(); 17 | this.props.form.validateFields((err, values) => { 18 | if (!err) { 19 | if (values.username == 'root' && values.password == 'root') { 20 | cookie.set('login', true) 21 | window.location.hash = '#/map' 22 | } else { 23 | message.error('登录失败') 24 | } 25 | } 26 | }); 27 | } 28 | render() { 29 | const { getFieldDecorator } = this.props.form; 30 | return ( 31 |
32 | 33 | {getFieldDecorator('username', { 34 | rules: [{ required: true, message: 'Please input your username!' }], 35 | })( 36 | } placeholder="Username" /> 37 | )} 38 | 39 | 40 | {getFieldDecorator('password', { 41 | rules: [{ required: true, message: 'Please input your Password!' }], 42 | })( 43 | } type="password" placeholder="Password" /> 44 | )} 45 | 46 | 47 | 50 | 测试账号:root 密码:root 51 | 52 |
53 | ); 54 | } 55 | } 56 | 57 | export default Login = Form.create()(Login); 58 | -------------------------------------------------------------------------------- /webpack.dev.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var webpack = require('webpack'); 3 | var ExtractTextPlugin = require("extract-text-webpack-plugin"); 4 | var HtmlWebpackPlugin = require('html-webpack-plugin'); 5 | 6 | module.exports = { 7 | entry: [ 8 | 'webpack-hot-middleware/client', 9 | path.resolve(__dirname, './src/router/index') 10 | ], 11 | output: { 12 | path: path.resolve(__dirname, './build'), 13 | filename: 'bundle.js', 14 | chunkFilename: '[name].[chunkhash:10].js', 15 | }, 16 | module: { 17 | loaders: [ 18 | { 19 | test: /\.(js|jsx)$/, 20 | loader: 'babel-loader', 21 | query: { 22 | babelrc: false, 23 | presets: ['react', 'es2015', 'stage-3'], 24 | plugins: [ 25 | "transform-class-properties", 26 | ["import", { libraryName: "antd", style: "css" }] 27 | ] 28 | }, 29 | exclude: /^node_modules$/ 30 | }, { 31 | test: /\.(css|scss)$/, 32 | loader: ExtractTextPlugin.extract("style", "css!sass!autoprefixer") 33 | }, { 34 | test: /\.(png|jpg|jpeg|gif|eot|woff|svg|ttf|woff2)(\?|$)/, 35 | exclude: /^node_modules$/, 36 | loader: 'file-loader?name=[name].[ext]' 37 | } 38 | ] 39 | }, 40 | resolve: { 41 | root: path.resolve(__dirname, './node_modules'), 42 | extensions: ['', '.js', '.jsx'], //后缀名自动补全 43 | }, 44 | plugins: [ 45 | new webpack.optimize.UglifyJsPlugin({ 46 | output: { 47 | comments: false, 48 | }, 49 | compressor: { 50 | warnings: false 51 | } 52 | }), 53 | new webpack.HotModuleReplacementPlugin(), 54 | 55 | new webpack.optimize.CommonsChunkPlugin('common.js'), 56 | 57 | new ExtractTextPlugin("[name].css"), 58 | 59 | new webpack.DllReferencePlugin({ 60 | context: __dirname, 61 | manifest: require('./manifest.json'), 62 | }), 63 | new HtmlWebpackPlugin({ 64 | filename: '../index.html', 65 | template: './src/index.html', 66 | inject: 'body', 67 | hash: true 68 | }) 69 | ] 70 | }; 71 | -------------------------------------------------------------------------------- /src/components/City/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import Index from '../Index/index.jsx'; 4 | import { 5 | DatePicker, 6 | message, 7 | Table, 8 | Icon, 9 | Input 10 | } from 'antd'; 11 | const Search = Input.Search; 12 | 13 | import AV from 'leancloud-storage'; 14 | import { timeFormat } from '../../common/convert.js'; 15 | 16 | AV.init({ 17 | appId: 'SiuLQajWrKuR3zDPRzfAOV1L-gzGzoHsz', 18 | appKey: '8pYRy3bB7zDxolBkT5WyGOQJ' 19 | }); 20 | 21 | import './index.scss'; 22 | 23 | const columns = [{ 24 | title: '城市', 25 | dataIndex: 'city', 26 | key: 'city', 27 | width: 200, 28 | render: (record) => {record} 29 | }, { 30 | title: 'PM 2.5', 31 | dataIndex: 'fog', 32 | key: 'fog', 33 | sorter: (a, b) => a.fog > b.fog 34 | }]; 35 | 36 | export default class City extends React.Component { 37 | constructor(props) { 38 | super(props); 39 | 40 | this.state = { 41 | loading: true, 42 | dataSource: [], 43 | searched: false, 44 | searchSource: [] 45 | }; 46 | } 47 | componentDidMount = () => { 48 | var today = timeFormat('yyyy-MM-dd'); 49 | this.getDataSource(today); 50 | } 51 | getDataSource = (date) => { 52 | let that = this; 53 | var { 54 | dataSource, 55 | loading 56 | } = that.state; 57 | that.setState({ 58 | loading: true 59 | }); 60 | 61 | var query = new AV.Query('FogData'); 62 | 63 | query.equalTo('time', date); 64 | query.find().then(function (results) { 65 | if (results.length > 0) { 66 | var data = results[0].attributes.data; 67 | dataSource = []; 68 | for (let i = 0; i < data.length; i++) { 69 | dataSource.push({ 70 | key: i, 71 | city: data[i].name, 72 | fog: data[i].value 73 | }); 74 | } 75 | that.setState({ 76 | loading: false, 77 | searched: false, 78 | dataSource 79 | }) 80 | } else { 81 | message.error('网络出错'); 82 | that.setState({ 83 | loading: false 84 | }) 85 | } 86 | }); 87 | } 88 | searchData = (value) => { 89 | var { 90 | dataSource, 91 | loading 92 | } = this.state; 93 | if (value == '') { 94 | this.setState({ 95 | searched: false, 96 | }) 97 | } else { 98 | this.setState({ 99 | loading: true 100 | }) 101 | var searchSource = dataSource.filter(item => { 102 | return item.city.indexOf(value) > -1 103 | }) 104 | this.setState({ 105 | loading: false, 106 | searched: true, 107 | searchSource 108 | }) 109 | } 110 | } 111 | render() { 112 | const { 113 | loading, 114 | dataSource, 115 | searched, 116 | searchSource 117 | } = this.state; 118 | 119 | return ( 120 |
121 | 122 |
123 |
124 | 请选择雾霾数据日期: 125 | this.getDataSource(dateString)} style={{ marginRight: 20 }}/> 126 | 搜索城市: 127 | this.searchData(e.target.value)} onSearch={value => this.searchData(value)}/> 128 | 129 | 130 | 131 | 132 | ); 133 | } 134 | } -------------------------------------------------------------------------------- /spider/index.js: -------------------------------------------------------------------------------- 1 | const request = require('request'); 2 | const cheerio = require('cheerio'); 3 | const AV = require('leancloud-storage'); 4 | 5 | AV.init({ 6 | appId: 'SiuLQajWrKuR3zDPRzfAOV1L-gzGzoHsz', 7 | appKey: '8pYRy3bB7zDxolBkT5WyGOQJ' 8 | }); 9 | 10 | Date.prototype.Format = function (fmt) { 11 | var o = { 12 | "M+": this.getMonth() + 1, 13 | "d+": this.getDate(), 14 | "h+": this.getHours(), 15 | "m+": this.getMinutes(), 16 | "s+": this.getSeconds(), 17 | "q+": Math.floor((this.getMonth() + 3) / 3), 18 | "S": this.getMilliseconds() 19 | }; 20 | if (/(y+)/.test(fmt)) { 21 | fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 22 | } 23 | for (var k in o) { 24 | if (new RegExp("(" + k + ")").test(fmt)) { 25 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 26 | } 27 | } 28 | return fmt; 29 | } 30 | 31 | const Data = function () { 32 | this.name = ''; 33 | this.value = 0; 34 | } 35 | 36 | var ALL = []; 37 | 38 | const dataFromBody = function (data, body) { 39 | const e = cheerio.load(body, { 40 | decodeEntities: false 41 | }); 42 | const json = e('#gisDataJson').attr('value'); 43 | 44 | var airObjects = JSON.parse(json); 45 | for (var i = 0; i < airObjects.length; i++) { 46 | var airObject = airObjects[i]; 47 | var object = new Data(); 48 | 49 | object.name = airObject.CITY.split('市')[0]; 50 | object.value = parseInt(airObject.AQI); 51 | data.push(object); 52 | } 53 | } 54 | 55 | const postRequest = function (pageNum, cb) { 56 | var postData = {}; 57 | 58 | if (pageNum == 1) { 59 | postData = { 60 | url: 'http://datacenter.mep.gov.cn:8099/ths-report/report!list.action', 61 | formData: { 62 | 'xmlname': '1462259560614' 63 | } 64 | }; 65 | } else { 66 | var today = new Date(); 67 | var yesterday = today.setDate(today.getDate() - 1); 68 | const date = new Date(yesterday).Format('yyyy-MM-dd'); 69 | var postData = { 70 | url: 'http://datacenter.mep.gov.cn:8099/ths-report/report!list.action', 71 | formData: { 72 | 'page.pageNo': `${pageNum}`, 73 | 'page.orderBy': '', 74 | 'page.order': '', 75 | 'orderby': '', 76 | 'ordertype': '', 77 | 'xmlname': '1462259560614', 78 | 'queryflag': 'open', 79 | 'gisDataJson': '', 80 | 'V_DATE': date, 81 | 'E_DATE': date, 82 | 'isdesignpatterns': 'false', 83 | 'CITY': '' 84 | } 85 | }; 86 | } 87 | request.post(postData, function (error, response, body) { 88 | if (error === null) { 89 | dataFromBody(ALL, body); 90 | cb && cb(); 91 | } 92 | }); 93 | } 94 | 95 | 96 | const saveData = function (data) { 97 | const date = new Date().Format('yyyy-MM-dd'); 98 | var FogData = AV.Object.extend('FogData'); 99 | 100 | var fogData = new FogData(); 101 | fogData.set('time', date); 102 | fogData.set('data', data); 103 | 104 | fogData.save().then(function (data) { 105 | console.log('success'); 106 | }, function (error) { 107 | console.log('error', error); 108 | }); 109 | } 110 | 111 | postRequest(1, () => { 112 | postRequest(2, () => { 113 | postRequest(3, () => { 114 | postRequest(4, () => { 115 | postRequest(5, () => { 116 | postRequest(6, () => { 117 | postRequest(7, () => { 118 | postRequest(8, () => { 119 | postRequest(9, () => { 120 | postRequest(10, () => { 121 | postRequest(11, () => { 122 | postRequest(12, () => { 123 | postRequest(13, () => { 124 | saveData(ALL); 125 | }) 126 | }) 127 | }) 128 | }) 129 | }) 130 | }) 131 | }) 132 | }) 133 | }) 134 | }) 135 | }) 136 | }) 137 | }) -------------------------------------------------------------------------------- /src/common/cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * JavaScript Cookie v2.1.2 3 | * https://github.com/js-cookie/js-cookie 4 | * 5 | * Copyright 2006, 2015 Klaus Hartl & Fagner Brack 6 | * Released under the MIT license 7 | */ 8 | ; 9 | (function (factory) { 10 | if (typeof define === 'function' && define.amd) { 11 | define(factory); 12 | } else if (typeof exports === 'object') { 13 | module.exports = factory(); 14 | } else { 15 | var OldCookies = window.Cookies; 16 | var api = window.Cookies = factory(); 17 | api.noConflict = function () { 18 | window.Cookies = OldCookies; 19 | return api; 20 | }; 21 | } 22 | }(function () { 23 | function extend() { 24 | var i = 0; 25 | var result = {}; 26 | for (; i < arguments.length; i++) { 27 | var attributes = arguments[i]; 28 | for (var key in attributes) { 29 | result[key] = attributes[key]; 30 | } 31 | } 32 | return result; 33 | } 34 | 35 | function init(converter) { 36 | function api(key, value, attributes) { 37 | var result; 38 | if (typeof document === 'undefined') { 39 | return; 40 | } 41 | 42 | // Write 43 | 44 | if (arguments.length > 1) { 45 | attributes = extend({ 46 | path: '/' 47 | }, api.defaults, attributes); 48 | 49 | if (typeof attributes.expires === 'number') { 50 | var expires = new Date(); 51 | expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); 52 | attributes.expires = expires; 53 | } 54 | 55 | try { 56 | result = JSON.stringify(value); 57 | if (/^[\{\[]/.test(result)) { 58 | value = result; 59 | } 60 | } catch (e) { } 61 | 62 | if (!converter.write) { 63 | value = encodeURIComponent(String(value)) 64 | .replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); 65 | } else { 66 | value = converter.write(value, key); 67 | } 68 | 69 | key = encodeURIComponent(String(key)); 70 | key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); 71 | key = key.replace(/[\(\)]/g, escape); 72 | 73 | return (document.cookie = [ 74 | key, '=', value, 75 | attributes.expires ? '; expires=' + attributes.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE 76 | attributes.path ? '; path=' + attributes.path : '', 77 | attributes.domain ? '; domain=' + attributes.domain : '', 78 | attributes.secure ? '; secure' : '' 79 | ].join('')); 80 | } 81 | 82 | // Read 83 | 84 | if (!key) { 85 | result = {}; 86 | } 87 | 88 | // To prevent the for loop in the first place assign an empty array 89 | // in case there are no cookies at all. Also prevents odd result when 90 | // calling "get()" 91 | var cookies = document.cookie ? document.cookie.split('; ') : []; 92 | var rdecode = /(%[0-9A-Z]{2})+/g; 93 | var i = 0; 94 | 95 | for (; i < cookies.length; i++) { 96 | var parts = cookies[i].split('='); 97 | var cookie = parts.slice(1).join('='); 98 | 99 | if (cookie.charAt(0) === '"') { 100 | cookie = cookie.slice(1, -1); 101 | } 102 | 103 | try { 104 | var name = parts[0].replace(rdecode, decodeURIComponent); 105 | cookie = converter.read ? 106 | converter.read(cookie, name) : converter(cookie, name) || 107 | cookie.replace(rdecode, decodeURIComponent); 108 | 109 | if (this.json) { 110 | try { 111 | cookie = JSON.parse(cookie); 112 | } catch (e) { } 113 | } 114 | 115 | if (key === name) { 116 | result = cookie; 117 | break; 118 | } 119 | 120 | if (!key) { 121 | result[name] = cookie; 122 | } 123 | } catch (e) { } 124 | } 125 | 126 | return result; 127 | } 128 | 129 | api.set = api; 130 | api.get = function (key) { 131 | return api(key); 132 | }; 133 | api.getJSON = function () { 134 | return api.apply({ 135 | json: true 136 | }, [].slice.call(arguments)); 137 | }; 138 | api.defaults = {}; 139 | 140 | api.remove = function (key, attributes) { 141 | api(key, '', extend(attributes, { 142 | expires: -1 143 | })); 144 | }; 145 | 146 | api.withConverter = init; 147 | 148 | return api; 149 | } 150 | 151 | return init(function () { }); 152 | })); 153 | -------------------------------------------------------------------------------- /src/components/Line/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import Index from '../Index/index.jsx'; 4 | 5 | import cities from '../../config/city.js'; 6 | import { 7 | DatePicker, 8 | Select, 9 | message 10 | } from 'antd'; 11 | import AV from 'leancloud-storage'; 12 | import { timeFormat } from '../../common/convert.js'; 13 | const { RangePicker } = DatePicker; 14 | const Option = Select.Option; 15 | 16 | import './index.scss'; 17 | 18 | AV.init({ 19 | appId: 'SiuLQajWrKuR3zDPRzfAOV1L-gzGzoHsz', 20 | appKey: '8pYRy3bB7zDxolBkT5WyGOQJ' 21 | }); 22 | 23 | const options = function () { 24 | let options = []; 25 | for (let i = 0; i < cities.length; i++) { 26 | options.push( 27 | 28 | ); 29 | } 30 | return options; 31 | }(); 32 | 33 | export default class Line extends React.Component { 34 | constructor(props) { 35 | super(props); 36 | this.state = { 37 | range: [], 38 | selected: [] 39 | } 40 | this.chart = {} 41 | } 42 | componentDidMount() { 43 | this.chart = echarts.init(document.getElementById('main'), 'macarons'); 44 | } 45 | componentDidUpdate() { 46 | this.renderCharts(); 47 | } 48 | getDateRange = (range) => { 49 | this.setState({ 50 | range 51 | }) 52 | } 53 | handleSelect = (selected) => { 54 | this.setState({ 55 | selected 56 | }) 57 | } 58 | disabledDate = (e) => { 59 | return e && e.valueOf() > Date.now(); 60 | } 61 | renderCharts = () => { 62 | let that = this; 63 | const { 64 | range, 65 | selected 66 | } = that.state; 67 | 68 | if (range.length > 0 && selected.length > 0) { 69 | this.chart.showLoading(); 70 | var query = new AV.Query('FogData'); 71 | 72 | var startQuery = new AV.Query('FogData'); 73 | startQuery.greaterThanOrEqualTo('createdAt', new Date(range[0] + ' 00:00:00')); 74 | var endQuery = new AV.Query('FogData'); 75 | endQuery.lessThanOrEqualTo('createdAt', new Date(range[1] + ' 00:00:00')); 76 | 77 | var query = AV.Query.and(startQuery, endQuery); 78 | query.find().then(function (results) { 79 | if (results.length > 0) { 80 | var series = []; 81 | var timeline = []; 82 | var values = {}; 83 | 84 | for (let i = 0; i < results.length; i++) { 85 | var { 86 | data, 87 | time 88 | } = results[i].attributes; 89 | 90 | for (let j = 0; j < selected.length; j++) { 91 | var city = selected[j]; 92 | for (let k = 0; k < data.length; k++) { 93 | if (data[k].name === city) { 94 | if (!values[city]) { 95 | values[city] = []; 96 | values[city].push(data[k].value); 97 | } else { 98 | values[city].push(data[k].value); 99 | } 100 | } 101 | } 102 | } 103 | timeline.push(time); 104 | } 105 | for (let i = 0; i < selected.length; i++) { 106 | series.push({ 107 | name: selected[i], 108 | type: 'line', 109 | stack: 'PM2.5', 110 | data: values[selected[i]] 111 | }) 112 | } 113 | var option = { 114 | title: { 115 | text: 'PM 2.5城市对比图' 116 | }, 117 | tooltip: { 118 | trigger: 'axis' 119 | }, 120 | legend: { 121 | data: selected 122 | }, 123 | toolbox: { 124 | feature: { 125 | saveAsImage: {} 126 | } 127 | }, 128 | grid: { 129 | left: '3%', 130 | right: '4%', 131 | bottom: '3%', 132 | containLabel: true 133 | }, 134 | xAxis: [ 135 | { 136 | type: 'category', 137 | boundaryGap: false, 138 | data: timeline 139 | } 140 | ], 141 | yAxis: [ 142 | { 143 | type: 'value' 144 | } 145 | ], 146 | series: series 147 | } 148 | that.chart.setOption(option); 149 | that.chart.hideLoading(); 150 | } 151 | }, function (error) { 152 | }); 153 | } else { 154 | message.info('请选择日期区间和对比城市'); 155 | that.chart.hideLoading(); 156 | } 157 | } 158 | render() { 159 | return ( 160 |
161 | 162 |
163 |
164 | 请选择雾霾数据日期和城市: 165 | this.disabledDate(e)} onChange={(date, dateString) => this.getDateRange(dateString)} /> 166 | 169 |
170 |
171 |
172 |
173 | ); 174 | } 175 | } -------------------------------------------------------------------------------- /src/config/map.js: -------------------------------------------------------------------------------- 1 | const geoCoordMap = { 2 | "海门": [121.15, 31.89], 3 | "鄂尔多斯": [109.781327, 39.608266], 4 | "招远": [120.38, 37.35], 5 | "舟山": [122.207216, 29.985295], 6 | "齐齐哈尔": [123.97, 47.33], 7 | "盐城": [120.13, 33.38], 8 | "赤峰": [118.87, 42.28], 9 | "青岛": [120.33, 36.07], 10 | "乳山": [121.52, 36.89], 11 | "金昌": [102.188043, 38.520089], 12 | "泉州": [118.58, 24.93], 13 | "莱西": [120.53, 36.86], 14 | "日照": [119.46, 35.42], 15 | "胶南": [119.97, 35.88], 16 | "南通": [121.05, 32.08], 17 | "拉萨": [91.11, 29.97], 18 | "云浮": [112.02, 22.93], 19 | "梅州": [116.1, 24.55], 20 | "文登": [122.05, 37.2], 21 | "上海": [121.48, 31.22], 22 | "攀枝花": [101.718637, 26.582347], 23 | "威海": [122.1, 37.5], 24 | "承德": [117.93, 40.97], 25 | "厦门": [118.1, 24.46], 26 | "汕尾": [115.375279, 22.786211], 27 | "潮州": [116.63, 23.68], 28 | "丹东": [124.37, 40.13], 29 | "太仓": [121.1, 31.45], 30 | "曲靖": [103.79, 25.51], 31 | "烟台": [121.39, 37.52], 32 | "福州": [119.3, 26.08], 33 | "瓦房店": [121.979603, 39.627114], 34 | "即墨": [120.45, 36.38], 35 | "抚顺": [123.97, 41.97], 36 | "玉溪": [102.52, 24.35], 37 | "张家口": [114.87, 40.82], 38 | "阳泉": [113.57, 37.85], 39 | "莱州": [119.942327, 37.177017], 40 | "湖州": [120.1, 30.86], 41 | "汕头": [116.69, 23.39], 42 | "昆山": [120.95, 31.39], 43 | "宁波": [121.56, 29.86], 44 | "湛江": [110.359377, 21.270708], 45 | "揭阳": [116.35, 23.55], 46 | "荣成": [122.41, 37.16], 47 | "连云港": [119.16, 34.59], 48 | "葫芦岛": [120.836932, 40.711052], 49 | "常熟": [120.74, 31.64], 50 | "东莞": [113.75, 23.04], 51 | "河源": [114.68, 23.73], 52 | "淮安": [119.15, 33.5], 53 | "泰州": [119.9, 32.49], 54 | "南宁": [108.33, 22.84], 55 | "营口": [122.18, 40.65], 56 | "惠州": [114.4, 23.09], 57 | "江阴": [120.26, 31.91], 58 | "蓬莱": [120.75, 37.8], 59 | "韶关": [113.62, 24.84], 60 | "嘉峪关": [98.289152, 39.77313], 61 | "广州": [113.23, 23.16], 62 | "延安": [109.47, 36.6], 63 | "太原": [112.53, 37.87], 64 | "清远": [113.01, 23.7], 65 | "中山": [113.38, 22.52], 66 | "昆明": [102.73, 25.04], 67 | "寿光": [118.73, 36.86], 68 | "盘锦": [122.070714, 41.119997], 69 | "长治": [113.08, 36.18], 70 | "深圳": [114.07, 22.62], 71 | "珠海": [113.52, 22.3], 72 | "宿迁": [118.3, 33.96], 73 | "咸阳": [108.72, 34.36], 74 | "铜川": [109.11, 35.09], 75 | "平度": [119.97, 36.77], 76 | "佛山": [113.11, 23.05], 77 | "海口": [110.35, 20.02], 78 | "江门": [113.06, 22.61], 79 | "章丘": [117.53, 36.72], 80 | "肇庆": [112.44, 23.05], 81 | "大连": [121.62, 38.92], 82 | "临汾": [111.5, 36.08], 83 | "吴江": [120.63, 31.16], 84 | "石嘴山": [106.39, 39.04], 85 | "沈阳": [123.38, 41.8], 86 | "苏州": [120.62, 31.32], 87 | "茂名": [110.88, 21.68], 88 | "嘉兴": [120.76, 30.77], 89 | "长春": [125.35, 43.88], 90 | "胶州": [120.03336, 36.264622], 91 | "银川": [106.27, 38.47], 92 | "张家港": [120.555821, 31.875428], 93 | "三门峡": [111.19, 34.76], 94 | "锦州": [121.15, 41.13], 95 | "南昌": [115.89, 28.68], 96 | "柳州": [109.4, 24.33], 97 | "三亚": [109.511909, 18.252847], 98 | "自贡": [104.778442, 29.33903], 99 | "吉林": [126.57, 43.87], 100 | "阳江": [111.95, 21.85], 101 | "泸州": [105.39, 28.91], 102 | "西宁": [101.74, 36.56], 103 | "宜宾": [104.56, 29.77], 104 | "呼和浩特": [111.65, 40.82], 105 | "成都": [104.06, 30.67], 106 | "大同": [113.3, 40.12], 107 | "镇江": [119.44, 32.2], 108 | "桂林": [110.28, 25.29], 109 | "张家界": [110.479191, 29.117096], 110 | "宜兴": [119.82, 31.36], 111 | "北海": [109.12, 21.49], 112 | "西安": [108.95, 34.27], 113 | "金坛": [119.56, 31.74], 114 | "东营": [118.49, 37.46], 115 | "牡丹江": [129.58, 44.6], 116 | "遵义": [106.9, 27.7], 117 | "绍兴": [120.58, 30.01], 118 | "扬州": [119.42, 32.39], 119 | "常州": [119.95, 31.79], 120 | "潍坊": [119.1, 36.62], 121 | "重庆": [106.54, 29.59], 122 | "台州": [121.420757, 28.656386], 123 | "南京": [118.78, 32.04], 124 | "滨州": [118.03, 37.36], 125 | "贵阳": [106.71, 26.57], 126 | "无锡": [120.29, 31.59], 127 | "本溪": [123.73, 41.3], 128 | "克拉玛依": [84.77, 45.59], 129 | "渭南": [109.5, 34.52], 130 | "马鞍山": [118.48, 31.56], 131 | "宝鸡": [107.15, 34.38], 132 | "焦作": [113.21, 35.24], 133 | "句容": [119.16, 31.95], 134 | "北京": [116.46, 39.92], 135 | "徐州": [117.2, 34.26], 136 | "衡水": [115.72, 37.72], 137 | "包头": [110, 40.58], 138 | "绵阳": [104.73, 31.48], 139 | "乌鲁木齐": [87.68, 43.77], 140 | "枣庄": [117.57, 34.86], 141 | "杭州": [120.19, 30.26], 142 | "淄博": [118.05, 36.78], 143 | "鞍山": [122.85, 41.12], 144 | "溧阳": [119.48, 31.43], 145 | "库尔勒": [86.06, 41.68], 146 | "安阳": [114.35, 36.1], 147 | "开封": [114.35, 34.79], 148 | "济南": [117, 36.65], 149 | "德阳": [104.37, 31.13], 150 | "温州": [120.65, 28.01], 151 | "九江": [115.97, 29.71], 152 | "邯郸": [114.47, 36.6], 153 | "临安": [119.72, 30.23], 154 | "兰州": [103.73, 36.03], 155 | "沧州": [116.83, 38.33], 156 | "临沂": [118.35, 35.05], 157 | "南充": [106.110698, 30.837793], 158 | "天津": [117.2, 39.13], 159 | "富阳": [119.95, 30.07], 160 | "泰安": [117.13, 36.18], 161 | "诸暨": [120.23, 29.71], 162 | "郑州": [113.65, 34.76], 163 | "哈尔滨": [126.63, 45.75], 164 | "聊城": [115.97, 36.45], 165 | "芜湖": [118.38, 31.33], 166 | "唐山": [118.02, 39.63], 167 | "平顶山": [113.29, 33.75], 168 | "邢台": [114.48, 37.05], 169 | "德州": [116.29, 37.45], 170 | "济宁": [116.59, 35.38], 171 | "荆州": [112.239741, 30.335165], 172 | "宜昌": [111.3, 30.7], 173 | "义乌": [120.06, 29.32], 174 | "丽水": [119.92, 28.45], 175 | "洛阳": [112.44, 34.7], 176 | "秦皇岛": [119.57, 39.95], 177 | "株洲": [113.16, 27.83], 178 | "石家庄": [114.48, 38.03], 179 | "莱芜": [117.67, 36.19], 180 | "常德": [111.69, 29.05], 181 | "保定": [115.48, 38.85], 182 | "湘潭": [112.91, 27.87], 183 | "金华": [119.64, 29.12], 184 | "岳阳": [113.09, 29.37], 185 | "长沙": [113, 28.21], 186 | "衢州": [118.88, 28.97], 187 | "廊坊": [116.7, 39.53], 188 | "菏泽": [115.480656, 35.23375], 189 | "合肥": [117.27, 31.86], 190 | "武汉": [114.31, 30.52], 191 | "大庆": [125.03, 46.58] 192 | }; 193 | export default geoCoordMap; -------------------------------------------------------------------------------- /src/config/city.js: -------------------------------------------------------------------------------- 1 | const cities = [{ "name": "北京", "value": 114 }, { "name": "天津", "value": 104 }, { "name": "石家庄", "value": 182 }, { "name": "唐山", "value": 91 }, { "name": "秦皇岛", "value": 65 }, { "name": "邯郸", "value": 133 }, { "name": "邢台", "value": 175 }, { "name": "保定", "value": 170 }, { "name": "承德", "value": 52 }, { "name": "沧州", "value": 128 }, { "name": "廊坊", "value": 110 }, { "name": "衡水", "value": 160 }, { "name": "张家口", "value": 55 }, { "name": "太原", "value": 81 }, { "name": "大同", "value": 54 }, { "name": "阳泉", "value": 144 }, { "name": "长治", "value": 80 }, { "name": "晋城", "value": 119 }, { "name": "朔州", "value": 60 }, { "name": "晋中", "value": 92 }, { "name": "运城", "value": 119 }, { "name": "忻州", "value": 67 }, { "name": "临汾", "value": 82 }, { "name": "吕梁", "value": 82 }, { "name": "呼和浩特", "value": 53 }, { "name": "包头", "value": 56 }, { "name": "乌海", "value": 49 }, { "name": "赤峰", "value": 45 }, { "name": "通辽", "value": 73 }, { "name": "鄂尔多斯", "value": 71 }, { "name": "呼伦贝尔", "value": 46 }, { "name": "巴彦淖尔", "value": 45 }, { "name": "乌兰察布", "value": 56 }, { "name": "兴安盟", "value": 57 }, { "name": "锡林郭勒盟", "value": 44 }, { "name": "阿拉善盟", "value": 57 }, { "name": "沈阳", "value": 108 }, { "name": "大连", "value": 94 }, { "name": "瓦房店", "value": 88 }, { "name": "鞍山", "value": 134 }, { "name": "抚顺", "value": 113 }, { "name": "本溪", "value": 97 }, { "name": "丹东", "value": 105 }, { "name": "锦州", "value": 75 }, { "name": "营口", "value": 88 }, { "name": "阜新", "value": 74 }, { "name": "辽阳", "value": 122 }, { "name": "盘锦", "value": 73 }, { "name": "铁岭", "value": 129 }, { "name": "朝阳", "value": 66 }, { "name": "葫芦岛", "value": 75 }, { "name": "长春", "value": 120 }, { "name": "吉林", "value": 150 }, { "name": "四平", "value": 128 }, { "name": "辽源", "value": 104 }, { "name": "通化", "value": 73 }, { "name": "白山", "value": 81 }, { "name": "松原", "value": 73 }, { "name": "白城", "value": 58 }, { "name": "延边州", "value": 77 }, { "name": "连云港", "value": 72 }, { "name": "淮安", "value": 64 }, { "name": "盐城", "value": 68 }, { "name": "扬州", "value": 72 }, { "name": "镇江", "value": 83 }, { "name": "句容", "value": 82 }, { "name": "泰州", "value": 65 }, { "name": "宿迁", "value": 77 }, { "name": "杭州", "value": 54 }, { "name": "富阳", "value": 77 }, { "name": "临安", "value": 78 }, { "name": "宁波", "value": 77 }, { "name": "温州", "value": 134 }, { "name": "嘉兴", "value": 62 }, { "name": "湖州", "value": 68 }, { "name": "诸暨", "value": null }, { "name": "金华", "value": 129 }, { "name": "义乌", "value": 107 }, { "name": "衢州", "value": 129 }, { "name": "舟山", "value": 64 }, { "name": "台州", "value": 75 }, { "name": "丽水", "value": 55 }, { "name": "绍兴", "value": 66 }, { "name": "合肥", "value": 128 }, { "name": "芜湖", "value": 107 }, { "name": "蚌埠", "value": 89 }, { "name": "淮南", "value": 113 }, { "name": "马鞍山", "value": 125 }, { "name": "淮北", "value": 89 }, { "name": "铜陵", "value": 124 }, { "name": "哈尔滨", "value": 80 }, { "name": "齐齐哈尔", "value": 43 }, { "name": "鸡西", "value": 89 }, { "name": "鹤岗", "value": 49 }, { "name": "双鸭山", "value": 80 }, { "name": "大庆", "value": 58 }, { "name": "伊春", "value": 44 }, { "name": "佳木斯", "value": 64 }, { "name": "七台河", "value": 110 }, { "name": "牡丹江", "value": 74 }, { "name": "黑河", "value": 62 }, { "name": "绥化", "value": 40 }, { "name": "大兴安岭地区", "value": 43 }, { "name": "上海", "value": 58 }, { "name": "南京", "value": 92 }, { "name": "无锡", "value": 73 }, { "name": "江阴", "value": 84 }, { "name": "宜兴", "value": 82 }, { "name": "徐州", "value": 88 }, { "name": "常州", "value": 72 }, { "name": "溧阳", "value": 89 }, { "name": "金坛", "value": 89 }, { "name": "苏州", "value": 78 }, { "name": "常熟", "value": 67 }, { "name": "张家港", "value": 65 }, { "name": "昆山", "value": 63 }, { "name": "吴江", "value": 70 }, { "name": "太仓", "value": 58 }, { "name": "南通", "value": 65 }, { "name": "海门", "value": 52 }, { "name": "安庆", "value": 122 }, { "name": "黄山", "value": 61 }, { "name": "滁州", "value": 103 }, { "name": "阜阳", "value": 127 }, { "name": "宿州", "value": 115 }, { "name": "六安", "value": 130 }, { "name": "亳州", "value": 87 }, { "name": "池州", "value": 112 }, { "name": "宣城", "value": 127 }, { "name": "福州", "value": 65 }, { "name": "厦门", "value": 87 }, { "name": "莆田", "value": 78 }, { "name": "三明", "value": 57 }, { "name": "泉州", "value": 90 }, { "name": "漳州", "value": 90 }, { "name": "南平", "value": 58 }, { "name": "龙岩", "value": 58 }, { "name": "宁德", "value": 69 }, { "name": "南昌", "value": 63 }, { "name": "景德镇", "value": 44 }, { "name": "萍乡", "value": 69 }, { "name": "九江", "value": 117 }, { "name": "新余", "value": 69 }, { "name": "鹰潭", "value": 83 }, { "name": "赣州", "value": 93 }, { "name": "吉安", "value": 69 }, { "name": "宜春", "value": 77 }, { "name": "抚州", "value": 62 }, { "name": "上饶", "value": 89 }, { "name": "济南", "value": 145 }, { "name": "章丘", "value": 195 }, { "name": "青岛", "value": 55 }, { "name": "胶州", "value": 63 }, { "name": "即墨", "value": 77 }, { "name": "平度", "value": 93 }, { "name": "胶南", "value": 77 }, { "name": "莱西", "value": 104 }, { "name": "淄博", "value": 143 }, { "name": "枣庄", "value": 108 }, { "name": "东营", "value": 134 }, { "name": "烟台", "value": 94 }, { "name": "莱州", "value": 119 }, { "name": "蓬莱", "value": 66 }, { "name": "招远", "value": 122 }, { "name": "潍坊", "value": 133 }, { "name": "寿光", "value": 135 }, { "name": "济宁", "value": 90 }, { "name": "泰安", "value": 132 }, { "name": "威海", "value": 82 }, { "name": "文登", "value": 93 }, { "name": "荣成", "value": 62 }, { "name": "乳山", "value": 65 }, { "name": "日照", "value": 73 }, { "name": "莱芜", "value": 176 }, { "name": "临沂", "value": 98 }, { "name": "德州", "value": 129 }, { "name": "聊城", "value": 132 }, { "name": "滨州", "value": 152 }, { "name": "菏泽", "value": 112 }, { "name": "郑州", "value": 218 }, { "name": "株洲", "value": 57 }, { "name": "湘潭", "value": 50 }, { "name": "衡阳", "value": 38 }, { "name": "邵阳", "value": 39 }, { "name": "岳阳", "value": 64 }, { "name": "常德", "value": 67 }, { "name": "张家界", "value": 59 }, { "name": "益阳", "value": 50 }, { "name": "郴州", "value": 51 }, { "name": "永州", "value": 34 }, { "name": "怀化", "value": 38 }, { "name": "娄底", "value": 40 }, { "name": "湘西州", "value": 38 }, { "name": "广州", "value": 84 }, { "name": "韶关", "value": 65 }, { "name": "深圳", "value": 59 }, { "name": "珠海", "value": 64 }, { "name": "汕头", "value": 73 }, { "name": "佛山", "value": 70 }, { "name": "江门", "value": 61 }, { "name": "湛江", "value": 49 }, { "name": "茂名", "value": 53 }, { "name": "肇庆", "value": 73 }, { "name": "惠州", "value": 62 }, { "name": "梅州", "value": 68 }, { "name": "汕尾", "value": 72 }, { "name": "河源", "value": 57 }, { "name": "阳江", "value": 55 }, { "name": "清远", "value": 95 }, { "name": "东莞", "value": 60 }, { "name": "开封", "value": 110 }, { "name": "洛阳", "value": 175 }, { "name": "平顶山", "value": 173 }, { "name": "安阳", "value": 180 }, { "name": "鹤壁", "value": 127 }, { "name": "新乡", "value": 137 }, { "name": "焦作", "value": 227 }, { "name": "濮阳", "value": 123 }, { "name": "许昌", "value": 158 }, { "name": "漯河", "value": 117 }, { "name": "三门峡", "value": 135 }, { "name": "南阳", "value": 145 }, { "name": "商丘", "value": 93 }, { "name": "信阳", "value": 129 }, { "name": "周口", "value": 107 }, { "name": "驻马店", "value": 114 }, { "name": "武汉", "value": 84 }, { "name": "黄石", "value": 84 }, { "name": "十堰", "value": 78 }, { "name": "宜昌", "value": 108 }, { "name": "襄阳", "value": 138 }, { "name": "鄂州", "value": 110 }, { "name": "荆门", "value": 70 }, { "name": "孝感", "value": 99 }, { "name": "荆州", "value": 104 }, { "name": "黄冈", "value": 99 }, { "name": "咸宁", "value": 54 }, { "name": "随州", "value": 93 }, { "name": "恩施州", "value": 52 }, { "name": "长沙", "value": 49 }, { "name": "乐山", "value": 54 }, { "name": "南充", "value": 52 }, { "name": "眉山", "value": 63 }, { "name": "宜宾", "value": 74 }, { "name": "广安", "value": 48 }, { "name": "达州", "value": 53 }, { "name": "雅安", "value": 62 }, { "name": "巴中", "value": 47 }, { "name": "资阳", "value": 61 }, { "name": "阿坝州", "value": 63 }, { "name": "甘孜州", "value": 45 }, { "name": "凉山州", "value": 48 }, { "name": "贵阳", "value": 48 }, { "name": "六盘水", "value": 65 }, { "name": "遵义", "value": 37 }, { "name": "安顺", "value": 45 }, { "name": "铜仁地区", "value": 38 }, { "name": "黔西南州", "value": 38 }, { "name": "毕节", "value": 40 }, { "name": "黔东南州", "value": 55 }, { "name": "黔南州", "value": 30 }, { "name": "昆明", "value": 72 }, { "name": "曲靖", "value": 68 }, { "name": "玉溪", "value": 80 }, { "name": "保山", "value": 79 }, { "name": "昭通", "value": 48 }, { "name": "丽江", "value": 48 }, { "name": "普洱", "value": 87 }, { "name": "临沧", "value": 88 }, { "name": "楚雄州", "value": 78 }, { "name": "中山", "value": 54 }, { "name": "潮州", "value": 92 }, { "name": "揭阳", "value": 83 }, { "name": "云浮", "value": 62 }, { "name": "南宁", "value": 51 }, { "name": "柳州", "value": 67 }, { "name": "桂林", "value": 74 }, { "name": "梧州", "value": 64 }, { "name": "北海", "value": 51 }, { "name": "防城港", "value": 54 }, { "name": "钦州", "value": 57 }, { "name": "贵港", "value": 75 }, { "name": "玉林", "value": 63 }, { "name": "百色", "value": 62 }, { "name": "贺州", "value": 64 }, { "name": "河池", "value": 65 }, { "name": "来宾", "value": 72 }, { "name": "崇左", "value": 52 }, { "name": "海口", "value": 40 }, { "name": "三亚", "value": 31 }, { "name": "重庆", "value": 64 }, { "name": "成都", "value": 63 }, { "name": "自贡", "value": 60 }, { "name": "攀枝花", "value": 74 }, { "name": "泸州", "value": 69 }, { "name": "德阳", "value": 57 }, { "name": "绵阳", "value": 43 }, { "name": "广元", "value": 50 }, { "name": "遂宁", "value": 49 }, { "name": "内江", "value": 51 }, { "name": "红河州", "value": 66 }, { "name": "文山州", "value": 49 }, { "name": "西双版纳州", "value": 75 }, { "name": "大理州", "value": 79 }, { "name": "德宏州", "value": 109 }, { "name": "怒江州", "value": 30 }, { "name": "迪庆州", "value": 41 }, { "name": "拉萨", "value": 50 }, { "name": "昌都地区", "value": 46 }, { "name": "山南地区", "value": 57 }, { "name": "日喀则地区", "value": 49 }, { "name": "那曲地区", "value": 95 }, { "name": "阿里地区", "value": 49 }, { "name": "林芝地区", "value": 47 }, { "name": "西安", "value": 60 }, { "name": "铜川", "value": 63 }, { "name": "宝鸡", "value": 60 }, { "name": "咸阳", "value": 65 }, { "name": "渭南", "value": 72 }, { "name": "延安", "value": 58 }, { "name": "汉中", "value": 61 }, { "name": "榆林", "value": 50 }, { "name": "安康", "value": 46 }, { "name": "商洛", "value": 48 }, { "name": "兰州", "value": 61 }, { "name": "嘉峪关", "value": 77 }, { "name": "金昌", "value": 51 }, { "name": "白银", "value": 47 }, { "name": "天水", "value": 64 }, { "name": "武威", "value": 47 }, { "name": "张掖", "value": 74 }, { "name": "平凉", "value": 60 }, { "name": "酒泉", "value": 69 }, { "name": "庆阳", "value": 58 }, { "name": "定西", "value": 47 }, { "name": "陇南", "value": 36 }, { "name": "临夏州", "value": 65 }, { "name": "甘南州", "value": 58 }, { "name": "西宁", "value": 57 }, { "name": "海东地区", "value": 68 }, { "name": "海北州", "value": 68 }, { "name": "黄南州", "value": 60 }, { "name": "海南州", "value": 66 }, { "name": "果洛州", "value": 70 }, { "name": "玉树州", "value": 64 }, { "name": "海西州", "value": 64 }, { "name": "银川", "value": 70 }, { "name": "石嘴山", "value": 63 }, { "name": "吴忠", "value": 59 }, { "name": "固原", "value": 57 }, { "name": "中卫", "value": 60 }, { "name": "乌鲁木齐", "value": 74 }, { "name": "克拉玛依", "value": 67 }, { "name": "吐鲁番地区", "value": 88 }, { "name": "哈密地区", "value": 65 }, { "name": "昌吉州", "value": 107 }, { "name": "博州", "value": 89 }, { "name": "库尔勒", "value": 123 }, { "name": "阿克苏地区", "value": 333 }, { "name": "克州", "value": 149 }, { "name": "喀什地区", "value": 348 }, { "name": "和田地区", "value": 333 }, { "name": "伊犁哈萨克州", "value": 76 }, { "name": "塔城地区", "value": 70 }, { "name": "阿勒泰地区", "value": 47 }, { "name": "石河子", "value": 92 }, { "name": "五家渠", "value": 78 }]; 2 | 3 | export default cities; -------------------------------------------------------------------------------- /src/components/Map/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import Index from '../Index/index.jsx'; 4 | 5 | import { 6 | DatePicker, 7 | message 8 | } from 'antd'; 9 | import AV from 'leancloud-storage'; 10 | import { convertData, timeFormat } from '../../common/convert.js'; 11 | import geoCoordMap from '../../config/map.js'; 12 | 13 | AV.init({ 14 | appId: 'SiuLQajWrKuR3zDPRzfAOV1L-gzGzoHsz', 15 | appKey: '8pYRy3bB7zDxolBkT5WyGOQJ' 16 | }); 17 | 18 | import './index.scss'; 19 | 20 | export default class Map extends React.Component { 21 | constructor(props) { 22 | super(props); 23 | this.state = { 24 | option: { 25 | animation: true, 26 | animationDuration: 1000, 27 | animationEasing: 'cubicInOut', 28 | animationDurationUpdate: 1000, 29 | animationEasingUpdate: 'cubicInOut', 30 | title: [ 31 | { 32 | text: '全国主要城市 PM 2.5', 33 | subtext: 'data from datacenter.mep.gov.cn', 34 | sublink: 'http://datacenter.mep.gov.cn:8099/ths-report/report!list.action?xmlname=1462259560614', 35 | left: 'center', 36 | textStyle: { 37 | color: '#404040' 38 | } 39 | }, 40 | { 41 | id: 'statistic', 42 | right: 120, 43 | top: 40, 44 | width: 100, 45 | textStyle: { 46 | color: '#404040', 47 | fontSize: 16 48 | } 49 | } 50 | ], 51 | visualMap: { 52 | min: 0, 53 | max: 200, 54 | splitNumber: 5, 55 | inRange: { 56 | color: ['#50a3ba', '#eac736', '#d94e5d'] 57 | }, 58 | textStyle: { 59 | color: '#404040' 60 | } 61 | }, 62 | toolbox: { 63 | iconStyle: { 64 | normal: { 65 | borderColor: '#404040' 66 | }, 67 | emphasis: { 68 | borderColor: '#b1e4ff' 69 | } 70 | } 71 | }, 72 | brush: { 73 | outOfBrush: { 74 | color: '#abc' 75 | }, 76 | brushStyle: { 77 | borderWidth: 2, 78 | color: 'rgba(0,0,0,0.2)', 79 | borderColor: 'rgba(0,0,0,0.5)', 80 | }, 81 | seriesIndex: [0, 1], 82 | throttleType: 'debounce', 83 | throttleDelay: 300, 84 | geoIndex: 0 85 | }, 86 | geo: { 87 | map: 'china', 88 | left: '10', 89 | right: '35%', 90 | zoom: 0.7, 91 | label: { 92 | emphasis: { 93 | show: false 94 | } 95 | }, 96 | roam: true, 97 | itemStyle: { 98 | normal: { 99 | areaColor: '#323c48', 100 | borderColor: '#111' 101 | }, 102 | emphasis: { 103 | areaColor: '#2a333d' 104 | } 105 | } 106 | }, 107 | tooltip: { 108 | trigger: 'item', 109 | }, 110 | grid: { 111 | right: 40, 112 | top: 100, 113 | bottom: 40, 114 | width: '30%' 115 | }, 116 | xAxis: { 117 | type: 'value', 118 | scale: true, 119 | position: 'top', 120 | boundaryGap: false, 121 | splitLine: { show: false }, 122 | axisLine: { show: false }, 123 | axisTick: { show: false }, 124 | axisLabel: { margin: 2, textStyle: { color: '#aaa' } }, 125 | }, 126 | yAxis: { 127 | type: 'category', 128 | nameGap: 16, 129 | axisLine: { show: false, lineStyle: { color: '#ddd' } }, 130 | axisTick: { show: false, lineStyle: { color: '#ddd' } }, 131 | axisLabel: { interval: 0, textStyle: { color: '#ddd' } }, 132 | data: [] 133 | }, 134 | series: [ 135 | { 136 | name: 'PM2.5', 137 | type: 'scatter', 138 | coordinateSystem: 'geo', 139 | data: [], 140 | symbolSize: function (val) { 141 | return Math.max(val[2] / 9, 8); 142 | }, 143 | label: { 144 | normal: { 145 | formatter: '{b}', 146 | position: 'right', 147 | show: false 148 | }, 149 | emphasis: { 150 | show: true 151 | } 152 | }, 153 | itemStyle: { 154 | normal: { 155 | color: '#ddb926' 156 | } 157 | } 158 | }, 159 | { 160 | name: 'Top 5', 161 | type: 'effectScatter', 162 | coordinateSystem: 'geo', 163 | data: [], 164 | symbolSize: function (val) { 165 | return Math.max(val[2] / 10, 8); 166 | }, 167 | showEffectOn: 'emphasis', 168 | rippleEffect: { 169 | brushType: 'stroke' 170 | }, 171 | hoverAnimation: true, 172 | label: { 173 | normal: { 174 | formatter: '{b}', 175 | position: 'right', 176 | show: true 177 | } 178 | }, 179 | itemStyle: { 180 | normal: { 181 | color: '#f4e925', 182 | shadowBlur: 10, 183 | shadowColor: '#333' 184 | } 185 | }, 186 | zlevel: 1 187 | }, 188 | { 189 | id: 'bar', 190 | zlevel: 2, 191 | type: 'bar', 192 | symbol: 'none', 193 | itemStyle: { 194 | normal: { 195 | }, 196 | emphasis: { 197 | barBorderWidth: 1, 198 | shadowBlur: 10, 199 | shadowOffsetX: 0, 200 | shadowOffsetY: 0, 201 | shadowColor: 'rgba(0,0,0,0.5)' 202 | } 203 | }, 204 | data: [] 205 | } 206 | ] 207 | } 208 | } 209 | this.chart = {}; 210 | } 211 | componentDidMount = () => { 212 | this.chart = echarts.init(document.getElementById('main'), 'macarons'); 213 | var today = timeFormat('yyyy-MM-dd'); 214 | this.getChartsOptions(today); 215 | } 216 | getChartsOptions = (date) => { 217 | let that = this; 218 | that.chart.showLoading(); 219 | var query = new AV.Query('FogData'); 220 | 221 | query.equalTo('time', date); 222 | 223 | query.find().then(function (results) { 224 | if (results.length > 0) { 225 | var data = results[0].attributes.data; 226 | var option = that.state.option; 227 | var mapData = [ 228 | convertData(geoCoordMap, data), 229 | convertData(geoCoordMap, data.sort(function (a, b) { 230 | return b.value - a.value; 231 | }).slice(0, 6)) 232 | ]; 233 | option.series[0].data = mapData[0]; 234 | option.series[1].data = mapData[1]; 235 | that.chart.on('brushselected', (params) => that.renderBrushed(params, mapData)); 236 | that.chart.setOption(option); 237 | setTimeout(function () { 238 | that.chart.dispatchAction({ 239 | type: 'brush', 240 | areas: [ 241 | { 242 | geoIndex: 0, 243 | brushType: 'polygon', 244 | coordRange: [[119.72, 34.85], [119.68, 34.85], [119.5, 34.84], [119.19, 34.77], [118.76, 34.63], [118.6, 34.6], [118.46, 34.6], [118.33, 34.57], [118.05, 34.56], [117.6, 34.56], [117.41, 34.56], [117.25, 34.56], [117.11, 34.56], [117.02, 34.56], [117, 34.56], [116.94, 34.56], [116.94, 34.55], [116.9, 34.5], [116.88, 34.44], [116.88, 34.37], [116.88, 34.33], [116.88, 34.24], [116.92, 34.15], [116.98, 34.09], [117.05, 34.06], [117.19, 33.96], [117.29, 33.9], [117.43, 33.8], [117.49, 33.75], [117.54, 33.68], [117.6, 33.65], [117.62, 33.61], [117.64, 33.59], [117.68, 33.58], [117.7, 33.52], [117.74, 33.5], [117.74, 33.46], [117.8, 33.44], [117.82, 33.41], [117.86, 33.37], [117.9, 33.3], [117.9, 33.28], [117.9, 33.27], [118.09, 32.97], [118.21, 32.7], [118.29, 32.56], [118.31, 32.5], [118.35, 32.46], [118.35, 32.42], [118.35, 32.36], [118.35, 32.34], [118.37, 32.24], [118.37, 32.14], [118.37, 32.09], [118.44, 32.05], [118.46, 32.01], [118.54, 31.98], [118.6, 31.93], [118.68, 31.86], [118.72, 31.8], [118.74, 31.78], [118.76, 31.74], [118.78, 31.7], [118.82, 31.64], [118.82, 31.62], [118.86, 31.58], [118.86, 31.55], [118.88, 31.54], [118.88, 31.52], [118.9, 31.51], [118.91, 31.48], [118.93, 31.43], [118.95, 31.4], [118.97, 31.39], [118.97, 31.37], [118.97, 31.34], [118.97, 31.27], [118.97, 31.21], [118.97, 31.17], [118.97, 31.12], [118.97, 31.02], [118.97, 30.93], [118.97, 30.87], [118.97, 30.85], [118.95, 30.8], [118.95, 30.77], [118.95, 30.76], [118.93, 30.7], [118.91, 30.63], [118.91, 30.61], [118.91, 30.6], [118.9, 30.6], [118.88, 30.54], [118.88, 30.51], [118.86, 30.51], [118.86, 30.46], [118.72, 30.18], [118.68, 30.1], [118.66, 30.07], [118.62, 29.91], [118.56, 29.73], [118.52, 29.63], [118.48, 29.51], [118.44, 29.42], [118.44, 29.32], [118.43, 29.19], [118.43, 29.14], [118.43, 29.08], [118.44, 29.05], [118.46, 29.05], [118.6, 28.95], [118.64, 28.94], [119.07, 28.51], [119.25, 28.41], [119.36, 28.28], [119.46, 28.19], [119.54, 28.13], [119.66, 28.03], [119.78, 28], [119.87, 27.94], [120.03, 27.86], [120.17, 27.79], [120.23, 27.76], [120.3, 27.72], [120.42, 27.66], [120.52, 27.64], [120.58, 27.63], [120.64, 27.63], [120.77, 27.63], [120.89, 27.61], [120.97, 27.6], [121.07, 27.59], [121.15, 27.59], [121.28, 27.59], [121.38, 27.61], [121.56, 27.73], [121.73, 27.89], [122.03, 28.2], [122.3, 28.5], [122.46, 28.72], [122.5, 28.77], [122.54, 28.82], [122.56, 28.82], [122.58, 28.85], [122.6, 28.86], [122.61, 28.91], [122.71, 29.02], [122.73, 29.08], [122.93, 29.44], [122.99, 29.54], [123.03, 29.66], [123.05, 29.73], [123.16, 29.92], [123.24, 30.02], [123.28, 30.13], [123.32, 30.29], [123.36, 30.36], [123.36, 30.55], [123.36, 30.74], [123.36, 31.05], [123.36, 31.14], [123.36, 31.26], [123.38, 31.42], [123.46, 31.74], [123.48, 31.83], [123.48, 31.95], [123.46, 32.09], [123.34, 32.25], [123.22, 32.39], [123.12, 32.46], [123.07, 32.48], [123.05, 32.49], [122.97, 32.53], [122.91, 32.59], [122.83, 32.81], [122.77, 32.87], [122.71, 32.9], [122.56, 32.97], [122.38, 33.05], [122.3, 33.12], [122.26, 33.15], [122.22, 33.21], [122.22, 33.3], [122.22, 33.39], [122.18, 33.44], [122.07, 33.56], [121.99, 33.69], [121.89, 33.78], [121.69, 34.02], [121.66, 34.05], [121.64, 34.08]] 245 | } 246 | ] 247 | }) 248 | }, 0) 249 | that.chart.hideLoading(); 250 | } else { 251 | message.info('没有本日数据'); 252 | that.chart.hideLoading(); 253 | } 254 | }, function (error) { 255 | message.error('网络出错'); 256 | that.chart.hideLoading(); 257 | }); 258 | } 259 | renderBrushed = (params, mapData) => { 260 | var mainSeries = params.batch[0].selected[0] 261 | var selectedItems = []; 262 | 263 | var categoryData = []; 264 | var barData = []; 265 | var maxBar = 30; 266 | var sum = 0; 267 | var count = 0; 268 | 269 | for (var i = 0; i < mainSeries.dataIndex.length; i++) { 270 | var rawIndex = mainSeries.dataIndex[i]; 271 | var dataItem = mapData[0][rawIndex]; 272 | if (dataItem) { 273 | var pmValue = dataItem.value[2]; 274 | 275 | sum += pmValue; 276 | count++; 277 | 278 | selectedItems.push(dataItem); 279 | } 280 | } 281 | selectedItems.sort(function (a, b) { 282 | return a.value[2] - b.value[2]; 283 | }); 284 | for (var i = 0; i < Math.min(selectedItems.length, maxBar); i++) { 285 | categoryData.push(selectedItems[i].name); 286 | barData.push(selectedItems[i].value[2]); 287 | } 288 | this.chart.setOption({ 289 | yAxis: { 290 | data: categoryData 291 | }, 292 | xAxis: { 293 | axisLabel: { show: !!count } 294 | }, 295 | title: { 296 | id: 'statistic', 297 | text: count ? '平均: ' + (sum / count).toFixed(4) : '' 298 | }, 299 | series: { 300 | id: 'bar', 301 | data: barData 302 | } 303 | }); 304 | } 305 | render() { 306 | return ( 307 |
308 | 309 |
310 |
311 | 请选择雾霾数据日期: 312 | this.getChartsOptions(dateString)} /> 313 |
314 |
315 |
316 |
317 | ); 318 | } 319 | } -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "lib", 3 | "content": { 4 | "./node_modules/react/react.js": 1, 5 | "./node_modules/react/lib/React.js": 2, 6 | "./node_modules/process/browser.js": 3, 7 | "./node_modules/object-assign/index.js": 4, 8 | "./node_modules/react/lib/ReactChildren.js": 5, 9 | "./node_modules/react/lib/PooledClass.js": 6, 10 | "./node_modules/react/lib/reactProdInvariant.js": 7, 11 | "./node_modules/fbjs/lib/invariant.js": 8, 12 | "./node_modules/react/lib/ReactElement.js": 9, 13 | "./node_modules/react/lib/ReactCurrentOwner.js": 10, 14 | "./node_modules/fbjs/lib/warning.js": 11, 15 | "./node_modules/fbjs/lib/emptyFunction.js": 12, 16 | "./node_modules/react/lib/canDefineProperty.js": 13, 17 | "./node_modules/react/lib/ReactElementSymbol.js": 14, 18 | "./node_modules/react/lib/traverseAllChildren.js": 15, 19 | "./node_modules/react/lib/getIteratorFn.js": 16, 20 | "./node_modules/react/lib/KeyEscapeUtils.js": 17, 21 | "./node_modules/react/lib/ReactComponent.js": 18, 22 | "./node_modules/react/lib/ReactNoopUpdateQueue.js": 19, 23 | "./node_modules/fbjs/lib/emptyObject.js": 20, 24 | "./node_modules/react/lib/ReactPureComponent.js": 21, 25 | "./node_modules/react/lib/ReactClass.js": 22, 26 | "./node_modules/react/lib/ReactPropTypeLocationNames.js": 23, 27 | "./node_modules/react/lib/ReactDOMFactories.js": 24, 28 | "./node_modules/react/lib/ReactElementValidator.js": 25, 29 | "./node_modules/react/lib/ReactComponentTreeHook.js": 26, 30 | "./node_modules/react/lib/checkReactTypeSpec.js": 27, 31 | "./node_modules/react/lib/ReactPropTypesSecret.js": 28, 32 | "./node_modules/react/lib/ReactPropTypes.js": 29, 33 | "./node_modules/react/lib/ReactVersion.js": 30, 34 | "./node_modules/react/lib/onlyChild.js": 31, 35 | "./node_modules/react-dom/index.js": 32, 36 | "./node_modules/react-dom/lib/ReactDOM.js": 33, 37 | "./node_modules/react-dom/lib/ReactDOMComponentTree.js": 34, 38 | "./node_modules/react-dom/lib/reactProdInvariant.js": 35, 39 | "./node_modules/react-dom/lib/DOMProperty.js": 36, 40 | "./node_modules/react-dom/lib/ReactDOMComponentFlags.js": 37, 41 | "./node_modules/react-dom/lib/ReactDefaultInjection.js": 38, 42 | "./node_modules/react-dom/lib/ARIADOMPropertyConfig.js": 39, 43 | "./node_modules/react-dom/lib/BeforeInputEventPlugin.js": 40, 44 | "./node_modules/react-dom/lib/EventPropagators.js": 41, 45 | "./node_modules/react-dom/lib/EventPluginHub.js": 42, 46 | "./node_modules/react-dom/lib/EventPluginRegistry.js": 43, 47 | "./node_modules/react-dom/lib/EventPluginUtils.js": 44, 48 | "./node_modules/react-dom/lib/ReactErrorUtils.js": 45, 49 | "./node_modules/react-dom/lib/accumulateInto.js": 46, 50 | "./node_modules/react-dom/lib/forEachAccumulated.js": 47, 51 | "./node_modules/fbjs/lib/ExecutionEnvironment.js": 48, 52 | "./node_modules/react-dom/lib/FallbackCompositionState.js": 49, 53 | "./node_modules/react-dom/lib/PooledClass.js": 50, 54 | "./node_modules/react-dom/lib/getTextContentAccessor.js": 51, 55 | "./node_modules/react-dom/lib/SyntheticCompositionEvent.js": 52, 56 | "./node_modules/react-dom/lib/SyntheticEvent.js": 53, 57 | "./node_modules/react-dom/lib/SyntheticInputEvent.js": 54, 58 | "./node_modules/react-dom/lib/ChangeEventPlugin.js": 55, 59 | "./node_modules/react-dom/lib/ReactUpdates.js": 56, 60 | "./node_modules/react-dom/lib/CallbackQueue.js": 57, 61 | "./node_modules/react-dom/lib/ReactFeatureFlags.js": 58, 62 | "./node_modules/react-dom/lib/ReactReconciler.js": 59, 63 | "./node_modules/react-dom/lib/ReactRef.js": 60, 64 | "./node_modules/react-dom/lib/ReactOwner.js": 61, 65 | "./node_modules/react-dom/lib/ReactInstrumentation.js": 62, 66 | "./node_modules/react-dom/lib/ReactDebugTool.js": 63, 67 | "./node_modules/react-dom/lib/ReactInvalidSetStateWarningHook.js": 64, 68 | "./node_modules/react-dom/lib/ReactHostOperationHistoryHook.js": 65, 69 | "./node_modules/fbjs/lib/performanceNow.js": 66, 70 | "./node_modules/fbjs/lib/performance.js": 67, 71 | "./node_modules/react-dom/lib/Transaction.js": 68, 72 | "./node_modules/react-dom/lib/getEventTarget.js": 69, 73 | "./node_modules/react-dom/lib/isEventSupported.js": 70, 74 | "./node_modules/react-dom/lib/isTextInputElement.js": 71, 75 | "./node_modules/react-dom/lib/DefaultEventPluginOrder.js": 72, 76 | "./node_modules/react-dom/lib/EnterLeaveEventPlugin.js": 73, 77 | "./node_modules/react-dom/lib/SyntheticMouseEvent.js": 74, 78 | "./node_modules/react-dom/lib/SyntheticUIEvent.js": 75, 79 | "./node_modules/react-dom/lib/ViewportMetrics.js": 76, 80 | "./node_modules/react-dom/lib/getEventModifierState.js": 77, 81 | "./node_modules/react-dom/lib/HTMLDOMPropertyConfig.js": 78, 82 | "./node_modules/react-dom/lib/ReactComponentBrowserEnvironment.js": 79, 83 | "./node_modules/react-dom/lib/DOMChildrenOperations.js": 80, 84 | "./node_modules/react-dom/lib/DOMLazyTree.js": 81, 85 | "./node_modules/react-dom/lib/DOMNamespaces.js": 82, 86 | "./node_modules/react-dom/lib/setInnerHTML.js": 83, 87 | "./node_modules/react-dom/lib/createMicrosoftUnsafeLocalFunction.js": 84, 88 | "./node_modules/react-dom/lib/setTextContent.js": 85, 89 | "./node_modules/react-dom/lib/escapeTextContentForBrowser.js": 86, 90 | "./node_modules/react-dom/lib/Danger.js": 87, 91 | "./node_modules/fbjs/lib/createNodesFromMarkup.js": 88, 92 | "./node_modules/fbjs/lib/createArrayFromMixed.js": 89, 93 | "./node_modules/fbjs/lib/getMarkupWrap.js": 90, 94 | "./node_modules/react-dom/lib/ReactDOMIDOperations.js": 91, 95 | "./node_modules/react-dom/lib/ReactDOMComponent.js": 92, 96 | "./node_modules/react-dom/lib/AutoFocusUtils.js": 93, 97 | "./node_modules/fbjs/lib/focusNode.js": 94, 98 | "./node_modules/react-dom/lib/CSSPropertyOperations.js": 95, 99 | "./node_modules/react-dom/lib/CSSProperty.js": 96, 100 | "./node_modules/fbjs/lib/camelizeStyleName.js": 97, 101 | "./node_modules/fbjs/lib/camelize.js": 98, 102 | "./node_modules/react-dom/lib/dangerousStyleValue.js": 99, 103 | "./node_modules/fbjs/lib/hyphenateStyleName.js": 100, 104 | "./node_modules/fbjs/lib/hyphenate.js": 101, 105 | "./node_modules/fbjs/lib/memoizeStringOnly.js": 102, 106 | "./node_modules/react-dom/lib/DOMPropertyOperations.js": 103, 107 | "./node_modules/react-dom/lib/quoteAttributeValueForBrowser.js": 104, 108 | "./node_modules/react-dom/lib/ReactBrowserEventEmitter.js": 105, 109 | "./node_modules/react-dom/lib/ReactEventEmitterMixin.js": 106, 110 | "./node_modules/react-dom/lib/getVendorPrefixedEventName.js": 107, 111 | "./node_modules/react-dom/lib/ReactDOMInput.js": 108, 112 | "./node_modules/react-dom/lib/LinkedValueUtils.js": 109, 113 | "./node_modules/react-dom/lib/ReactPropTypesSecret.js": 110, 114 | "./node_modules/react-dom/lib/ReactDOMOption.js": 111, 115 | "./node_modules/react-dom/lib/ReactDOMSelect.js": 112, 116 | "./node_modules/react-dom/lib/ReactDOMTextarea.js": 113, 117 | "./node_modules/react-dom/lib/ReactMultiChild.js": 114, 118 | "./node_modules/react-dom/lib/ReactComponentEnvironment.js": 115, 119 | "./node_modules/react-dom/lib/ReactInstanceMap.js": 116, 120 | "./node_modules/react-dom/lib/ReactChildReconciler.js": 117, 121 | "./node_modules/react-dom/lib/instantiateReactComponent.js": 118, 122 | "./node_modules/react-dom/lib/ReactCompositeComponent.js": 119, 123 | "./node_modules/react-dom/lib/ReactNodeTypes.js": 120, 124 | "./node_modules/react-dom/lib/checkReactTypeSpec.js": 121, 125 | "./node_modules/react-dom/lib/ReactPropTypeLocationNames.js": 122, 126 | "./node_modules/fbjs/lib/shallowEqual.js": 123, 127 | "./node_modules/react-dom/lib/shouldUpdateReactComponent.js": 124, 128 | "./node_modules/react-dom/lib/ReactEmptyComponent.js": 125, 129 | "./node_modules/react-dom/lib/ReactHostComponent.js": 126, 130 | "./node_modules/react-dom/lib/getNextDebugID.js": 127, 131 | "./node_modules/react-dom/lib/KeyEscapeUtils.js": 128, 132 | "./node_modules/react-dom/lib/traverseAllChildren.js": 129, 133 | "./node_modules/react-dom/lib/ReactElementSymbol.js": 130, 134 | "./node_modules/react-dom/lib/getIteratorFn.js": 131, 135 | "./node_modules/react-dom/lib/flattenChildren.js": 132, 136 | "./node_modules/react-dom/lib/ReactServerRenderingTransaction.js": 133, 137 | "./node_modules/react-dom/lib/ReactServerUpdateQueue.js": 134, 138 | "./node_modules/react-dom/lib/ReactUpdateQueue.js": 135, 139 | "./node_modules/react-dom/lib/validateDOMNesting.js": 136, 140 | "./node_modules/react-dom/lib/ReactDOMEmptyComponent.js": 137, 141 | "./node_modules/react-dom/lib/ReactDOMTreeTraversal.js": 138, 142 | "./node_modules/react-dom/lib/ReactDOMTextComponent.js": 139, 143 | "./node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js": 140, 144 | "./node_modules/react-dom/lib/ReactEventListener.js": 141, 145 | "./node_modules/fbjs/lib/EventListener.js": 142, 146 | "./node_modules/fbjs/lib/getUnboundedScrollPosition.js": 143, 147 | "./node_modules/react-dom/lib/ReactInjection.js": 144, 148 | "./node_modules/react-dom/lib/ReactReconcileTransaction.js": 145, 149 | "./node_modules/react-dom/lib/ReactInputSelection.js": 146, 150 | "./node_modules/react-dom/lib/ReactDOMSelection.js": 147, 151 | "./node_modules/react-dom/lib/getNodeForCharacterOffset.js": 148, 152 | "./node_modules/fbjs/lib/containsNode.js": 149, 153 | "./node_modules/fbjs/lib/isTextNode.js": 150, 154 | "./node_modules/fbjs/lib/isNode.js": 151, 155 | "./node_modules/fbjs/lib/getActiveElement.js": 152, 156 | "./node_modules/react-dom/lib/SVGDOMPropertyConfig.js": 153, 157 | "./node_modules/react-dom/lib/SelectEventPlugin.js": 154, 158 | "./node_modules/react-dom/lib/SimpleEventPlugin.js": 155, 159 | "./node_modules/react-dom/lib/SyntheticAnimationEvent.js": 156, 160 | "./node_modules/react-dom/lib/SyntheticClipboardEvent.js": 157, 161 | "./node_modules/react-dom/lib/SyntheticFocusEvent.js": 158, 162 | "./node_modules/react-dom/lib/SyntheticKeyboardEvent.js": 159, 163 | "./node_modules/react-dom/lib/getEventCharCode.js": 160, 164 | "./node_modules/react-dom/lib/getEventKey.js": 161, 165 | "./node_modules/react-dom/lib/SyntheticDragEvent.js": 162, 166 | "./node_modules/react-dom/lib/SyntheticTouchEvent.js": 163, 167 | "./node_modules/react-dom/lib/SyntheticTransitionEvent.js": 164, 168 | "./node_modules/react-dom/lib/SyntheticWheelEvent.js": 165, 169 | "./node_modules/react-dom/lib/ReactMount.js": 166, 170 | "./node_modules/react-dom/lib/ReactDOMContainerInfo.js": 167, 171 | "./node_modules/react-dom/lib/ReactDOMFeatureFlags.js": 168, 172 | "./node_modules/react-dom/lib/ReactMarkupChecksum.js": 169, 173 | "./node_modules/react-dom/lib/adler32.js": 170, 174 | "./node_modules/react-dom/lib/ReactVersion.js": 171, 175 | "./node_modules/react-dom/lib/findDOMNode.js": 172, 176 | "./node_modules/react-dom/lib/getHostComponentFromComposite.js": 173, 177 | "./node_modules/react-dom/lib/renderSubtreeIntoContainer.js": 174, 178 | "./node_modules/react-dom/lib/ReactDOMUnknownPropertyHook.js": 175, 179 | "./node_modules/react-dom/lib/ReactDOMNullInputValuePropHook.js": 176, 180 | "./node_modules/react-dom/lib/ReactDOMInvalidARIAHook.js": 177, 181 | "./node_modules/react-router/lib/index.js": 178, 182 | "./node_modules/react-router/lib/RouteUtils.js": 179, 183 | "./node_modules/react-router/lib/PropTypes.js": 180, 184 | "./node_modules/react-router/lib/deprecateObjectProperties.js": 181, 185 | "./node_modules/react-router/lib/routerWarning.js": 182, 186 | "./node_modules/warning/browser.js": 183, 187 | "./node_modules/react-router/lib/InternalPropTypes.js": 184, 188 | "./node_modules/react-router/lib/PatternUtils.js": 185, 189 | "./node_modules/invariant/browser.js": 186, 190 | "./node_modules/react-router/lib/Router.js": 187, 191 | "./node_modules/history/lib/createHashHistory.js": 188, 192 | "./node_modules/history/node_modules/warning/browser.js": 189, 193 | "./node_modules/history/lib/Actions.js": 190, 194 | "./node_modules/history/lib/PathUtils.js": 191, 195 | "./node_modules/history/lib/ExecutionEnvironment.js": 192, 196 | "./node_modules/history/lib/DOMUtils.js": 193, 197 | "./node_modules/history/lib/DOMStateStorage.js": 194, 198 | "./node_modules/history/lib/createDOMHistory.js": 195, 199 | "./node_modules/history/lib/createHistory.js": 196, 200 | "./node_modules/deep-equal/index.js": 197, 201 | "./node_modules/deep-equal/lib/keys.js": 198, 202 | "./node_modules/deep-equal/lib/is_arguments.js": 199, 203 | "./node_modules/history/lib/AsyncUtils.js": 200, 204 | "./node_modules/history/lib/createLocation.js": 201, 205 | "./node_modules/history/lib/runTransitionHook.js": 202, 206 | "./node_modules/history/lib/deprecate.js": 203, 207 | "./node_modules/history/lib/useQueries.js": 204, 208 | "./node_modules/query-string/index.js": 205, 209 | "./node_modules/strict-uri-encode/index.js": 206, 210 | "./node_modules/react-router/lib/createTransitionManager.js": 207, 211 | "./node_modules/react-router/lib/computeChangedRoutes.js": 208, 212 | "./node_modules/react-router/lib/TransitionUtils.js": 209, 213 | "./node_modules/react-router/lib/AsyncUtils.js": 210, 214 | "./node_modules/react-router/lib/isActive.js": 211, 215 | "./node_modules/react-router/lib/getComponents.js": 212, 216 | "./node_modules/react-router/lib/makeStateWithLocation.js": 213, 217 | "./node_modules/react-router/lib/matchRoutes.js": 214, 218 | "./node_modules/react-router/lib/RouterContext.js": 215, 219 | "./node_modules/react-router/lib/getRouteParams.js": 216, 220 | "./node_modules/react-router/lib/RouterUtils.js": 217, 221 | "./node_modules/react-router/lib/Link.js": 218, 222 | "./node_modules/react-router/lib/IndexLink.js": 219, 223 | "./node_modules/react-router/lib/withRouter.js": 220, 224 | "./node_modules/hoist-non-react-statics/index.js": 221, 225 | "./node_modules/react-router/lib/IndexRedirect.js": 222, 226 | "./node_modules/react-router/lib/Redirect.js": 223, 227 | "./node_modules/react-router/lib/IndexRoute.js": 224, 228 | "./node_modules/react-router/lib/Route.js": 225, 229 | "./node_modules/react-router/lib/History.js": 226, 230 | "./node_modules/react-router/lib/Lifecycle.js": 227, 231 | "./node_modules/react-router/lib/RouteContext.js": 228, 232 | "./node_modules/react-router/lib/useRoutes.js": 229, 233 | "./node_modules/react-router/lib/RoutingContext.js": 230, 234 | "./node_modules/react-router/lib/match.js": 231, 235 | "./node_modules/react-router/lib/createMemoryHistory.js": 232, 236 | "./node_modules/history/lib/useBasename.js": 233, 237 | "./node_modules/history/lib/createMemoryHistory.js": 234, 238 | "./node_modules/react-router/lib/useRouterHistory.js": 235, 239 | "./node_modules/react-router/lib/applyRouterMiddleware.js": 236, 240 | "./node_modules/react-router/lib/browserHistory.js": 237, 241 | "./node_modules/history/lib/createBrowserHistory.js": 238, 242 | "./node_modules/react-router/lib/createRouterHistory.js": 239, 243 | "./node_modules/react-router/lib/hashHistory.js": 240, 244 | "./node_modules/leancloud-storage/dist/av.js": 241, 245 | "./node_modules/buffer/index.js": 242, 246 | "./node_modules/base64-js/index.js": 243, 247 | "./node_modules/ieee754/index.js": 244, 248 | "./node_modules/buffer/node_modules/isarray/index.js": 245, 249 | "./node_modules/antd/lib/index.js": 246, 250 | "./node_modules/antd/lib/affix/index.js": 247, 251 | "./node_modules/babel-runtime/helpers/defineProperty.js": 248, 252 | "./node_modules/babel-runtime/core-js/object/define-property.js": 249, 253 | "./node_modules/core-js/library/fn/object/define-property.js": 250, 254 | "./node_modules/core-js/library/modules/es6.object.define-property.js": 251, 255 | "./node_modules/core-js/library/modules/_export.js": 252, 256 | "./node_modules/core-js/library/modules/_global.js": 253, 257 | "./node_modules/core-js/library/modules/_core.js": 254, 258 | "./node_modules/core-js/library/modules/_ctx.js": 255, 259 | "./node_modules/core-js/library/modules/_a-function.js": 256, 260 | "./node_modules/core-js/library/modules/_hide.js": 257, 261 | "./node_modules/core-js/library/modules/_object-dp.js": 258, 262 | "./node_modules/core-js/library/modules/_an-object.js": 259, 263 | "./node_modules/core-js/library/modules/_is-object.js": 260, 264 | "./node_modules/core-js/library/modules/_ie8-dom-define.js": 261, 265 | "./node_modules/core-js/library/modules/_descriptors.js": 262, 266 | "./node_modules/core-js/library/modules/_fails.js": 263, 267 | "./node_modules/core-js/library/modules/_dom-create.js": 264, 268 | "./node_modules/core-js/library/modules/_to-primitive.js": 265, 269 | "./node_modules/core-js/library/modules/_property-desc.js": 266, 270 | "./node_modules/babel-runtime/helpers/extends.js": 267, 271 | "./node_modules/babel-runtime/core-js/object/assign.js": 268, 272 | "./node_modules/core-js/library/fn/object/assign.js": 269, 273 | "./node_modules/core-js/library/modules/es6.object.assign.js": 270, 274 | "./node_modules/core-js/library/modules/_object-assign.js": 271, 275 | "./node_modules/core-js/library/modules/_object-keys.js": 272, 276 | "./node_modules/core-js/library/modules/_object-keys-internal.js": 273, 277 | "./node_modules/core-js/library/modules/_has.js": 274, 278 | "./node_modules/core-js/library/modules/_to-iobject.js": 275, 279 | "./node_modules/core-js/library/modules/_iobject.js": 276, 280 | "./node_modules/core-js/library/modules/_cof.js": 277, 281 | "./node_modules/core-js/library/modules/_defined.js": 278, 282 | "./node_modules/core-js/library/modules/_array-includes.js": 279, 283 | "./node_modules/core-js/library/modules/_to-length.js": 280, 284 | "./node_modules/core-js/library/modules/_to-integer.js": 281, 285 | "./node_modules/core-js/library/modules/_to-index.js": 282, 286 | "./node_modules/core-js/library/modules/_shared-key.js": 283, 287 | "./node_modules/core-js/library/modules/_shared.js": 284, 288 | "./node_modules/core-js/library/modules/_uid.js": 285, 289 | "./node_modules/core-js/library/modules/_enum-bug-keys.js": 286, 290 | "./node_modules/core-js/library/modules/_object-gops.js": 287, 291 | "./node_modules/core-js/library/modules/_object-pie.js": 288, 292 | "./node_modules/core-js/library/modules/_to-object.js": 289, 293 | "./node_modules/babel-runtime/helpers/classCallCheck.js": 290, 294 | "./node_modules/babel-runtime/helpers/possibleConstructorReturn.js": 291, 295 | "./node_modules/babel-runtime/helpers/typeof.js": 292, 296 | "./node_modules/babel-runtime/core-js/symbol/iterator.js": 293, 297 | "./node_modules/core-js/library/fn/symbol/iterator.js": 294, 298 | "./node_modules/core-js/library/modules/es6.string.iterator.js": 295, 299 | "./node_modules/core-js/library/modules/_string-at.js": 296, 300 | "./node_modules/core-js/library/modules/_iter-define.js": 297, 301 | "./node_modules/core-js/library/modules/_library.js": 298, 302 | "./node_modules/core-js/library/modules/_redefine.js": 299, 303 | "./node_modules/core-js/library/modules/_iterators.js": 300, 304 | "./node_modules/core-js/library/modules/_iter-create.js": 301, 305 | "./node_modules/core-js/library/modules/_object-create.js": 302, 306 | "./node_modules/core-js/library/modules/_object-dps.js": 303, 307 | "./node_modules/core-js/library/modules/_html.js": 304, 308 | "./node_modules/core-js/library/modules/_set-to-string-tag.js": 305, 309 | "./node_modules/core-js/library/modules/_wks.js": 306, 310 | "./node_modules/core-js/library/modules/_object-gpo.js": 307, 311 | "./node_modules/core-js/library/modules/web.dom.iterable.js": 308, 312 | "./node_modules/core-js/library/modules/es6.array.iterator.js": 309, 313 | "./node_modules/core-js/library/modules/_add-to-unscopables.js": 310, 314 | "./node_modules/core-js/library/modules/_iter-step.js": 311, 315 | "./node_modules/core-js/library/modules/_wks-ext.js": 312, 316 | "./node_modules/babel-runtime/core-js/symbol.js": 313, 317 | "./node_modules/core-js/library/fn/symbol/index.js": 314, 318 | "./node_modules/core-js/library/modules/es6.symbol.js": 315, 319 | "./node_modules/core-js/library/modules/_meta.js": 316, 320 | "./node_modules/core-js/library/modules/_wks-define.js": 317, 321 | "./node_modules/core-js/library/modules/_keyof.js": 318, 322 | "./node_modules/core-js/library/modules/_enum-keys.js": 319, 323 | "./node_modules/core-js/library/modules/_is-array.js": 320, 324 | "./node_modules/core-js/library/modules/_object-gopn-ext.js": 321, 325 | "./node_modules/core-js/library/modules/_object-gopn.js": 322, 326 | "./node_modules/core-js/library/modules/_object-gopd.js": 323, 327 | "./node_modules/core-js/library/modules/es6.object.to-string.js": 324, 328 | "./node_modules/core-js/library/modules/es7.symbol.async-iterator.js": 325, 329 | "./node_modules/core-js/library/modules/es7.symbol.observable.js": 326, 330 | "./node_modules/babel-runtime/helpers/inherits.js": 327, 331 | "./node_modules/babel-runtime/core-js/object/set-prototype-of.js": 328, 332 | "./node_modules/core-js/library/fn/object/set-prototype-of.js": 329, 333 | "./node_modules/core-js/library/modules/es6.object.set-prototype-of.js": 330, 334 | "./node_modules/core-js/library/modules/_set-proto.js": 331, 335 | "./node_modules/babel-runtime/core-js/object/create.js": 332, 336 | "./node_modules/core-js/library/fn/object/create.js": 333, 337 | "./node_modules/core-js/library/modules/es6.object.create.js": 334, 338 | "./node_modules/rc-util/lib/Dom/addEventListener.js": 335, 339 | "./node_modules/add-dom-event-listener/lib/index.js": 336, 340 | "./node_modules/add-dom-event-listener/lib/EventObject.js": 337, 341 | "./node_modules/add-dom-event-listener/lib/EventBaseObject.js": 338, 342 | "./node_modules/classnames/index.js": 339, 343 | "./node_modules/shallowequal/modules/index.js": 340, 344 | "./node_modules/lodash.keys/index.js": 341, 345 | "./node_modules/lodash._getnative/index.js": 342, 346 | "./node_modules/lodash.isarguments/index.js": 343, 347 | "./node_modules/lodash.isarray/index.js": 344, 348 | "./node_modules/omit.js/index.js": 345, 349 | "./node_modules/antd/lib/_util/getScroll.js": 346, 350 | "./node_modules/antd/lib/_util/throttleByAnimationFrame.js": 347, 351 | "./node_modules/babel-runtime/helpers/toConsumableArray.js": 348, 352 | "./node_modules/babel-runtime/core-js/array/from.js": 349, 353 | "./node_modules/core-js/library/fn/array/from.js": 350, 354 | "./node_modules/core-js/library/modules/es6.array.from.js": 351, 355 | "./node_modules/core-js/library/modules/_iter-call.js": 352, 356 | "./node_modules/core-js/library/modules/_is-array-iter.js": 353, 357 | "./node_modules/core-js/library/modules/_create-property.js": 354, 358 | "./node_modules/core-js/library/modules/core.get-iterator-method.js": 355, 359 | "./node_modules/core-js/library/modules/_classof.js": 356, 360 | "./node_modules/core-js/library/modules/_iter-detect.js": 357, 361 | "./node_modules/antd/lib/_util/getRequestAnimationFrame.js": 358, 362 | "./node_modules/antd/lib/anchor/index.js": 359, 363 | "./node_modules/antd/lib/anchor/AnchorLink.js": 360, 364 | "./node_modules/antd/lib/anchor/anchorHelper.js": 361, 365 | "./node_modules/antd/lib/auto-complete/index.js": 362, 366 | "./node_modules/antd/lib/select/index.js": 363, 367 | "./node_modules/rc-select/lib/index.js": 364, 368 | "./node_modules/rc-select/lib/Select.js": 365, 369 | "./node_modules/rc-util/lib/KeyCode.js": 366, 370 | "./node_modules/rc-animate/lib/index.js": 367, 371 | "./node_modules/rc-animate/lib/Animate.js": 368, 372 | "./node_modules/rc-animate/lib/ChildrenUtils.js": 369, 373 | "./node_modules/rc-animate/lib/AnimateChild.js": 370, 374 | "./node_modules/css-animation/lib/index.js": 371, 375 | "./node_modules/css-animation/lib/Event.js": 372, 376 | "./node_modules/component-classes/index.js": 373, 377 | "./node_modules/component-indexof/index.js": 374, 378 | "./node_modules/rc-animate/lib/util.js": 375, 379 | "./node_modules/rc-select/lib/util.js": 376, 380 | "./node_modules/rc-select/lib/SelectTrigger.js": 377, 381 | "./node_modules/babel-runtime/helpers/objectWithoutProperties.js": 378, 382 | "./node_modules/rc-trigger/lib/index.js": 379, 383 | "./node_modules/rc-trigger/lib/Trigger.js": 380, 384 | "./node_modules/rc-util/lib/Dom/contains.js": 381, 385 | "./node_modules/rc-trigger/lib/Popup.js": 382, 386 | "./node_modules/rc-align/lib/index.js": 383, 387 | "./node_modules/rc-align/lib/Align.js": 384, 388 | "./node_modules/dom-align/lib/index.js": 385, 389 | "./node_modules/dom-align/lib/utils.js": 386, 390 | "./node_modules/dom-align/lib/propertyUtils.js": 387, 391 | "./node_modules/dom-align/lib/getOffsetParent.js": 388, 392 | "./node_modules/dom-align/lib/getVisibleRectForElement.js": 389, 393 | "./node_modules/dom-align/lib/adjustForViewport.js": 390, 394 | "./node_modules/dom-align/lib/getRegion.js": 391, 395 | "./node_modules/dom-align/lib/getElFuturePos.js": 392, 396 | "./node_modules/dom-align/lib/getAlignOffset.js": 393, 397 | "./node_modules/rc-align/lib/isWindow.js": 394, 398 | "./node_modules/rc-trigger/lib/PopupInner.js": 395, 399 | "./node_modules/rc-trigger/lib/LazyRenderBox.js": 396, 400 | "./node_modules/rc-trigger/lib/utils.js": 397, 401 | "./node_modules/rc-util/lib/getContainerRenderMixin.js": 398, 402 | "./node_modules/rc-select/lib/DropdownMenu.js": 399, 403 | "./node_modules/rc-util/lib/Children/toArray.js": 400, 404 | "./node_modules/rc-menu/lib/index.js": 401, 405 | "./node_modules/rc-menu/lib/Menu.js": 402, 406 | "./node_modules/rc-menu/lib/MenuMixin.js": 403, 407 | "./node_modules/rc-menu/node_modules/rc-util/lib/KeyCode.js": 404, 408 | "./node_modules/rc-menu/node_modules/rc-util/lib/createChainedFunction.js": 405, 409 | "./node_modules/dom-scroll-into-view/lib/index.js": 406, 410 | "./node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js": 407, 411 | "./node_modules/dom-scroll-into-view/lib/util.js": 408, 412 | "./node_modules/rc-menu/lib/util.js": 409, 413 | "./node_modules/rc-menu/lib/DOMWrap.js": 410, 414 | "./node_modules/rc-menu/lib/SubMenu.js": 411, 415 | "./node_modules/rc-menu/lib/SubPopupMenu.js": 412, 416 | "./node_modules/rc-menu/lib/SubMenuStateMixin.js": 413, 417 | "./node_modules/rc-menu/node_modules/rc-util/lib/Dom/addEventListener.js": 414, 418 | "./node_modules/rc-menu/node_modules/rc-util/lib/Dom/contains.js": 415, 419 | "./node_modules/rc-menu/lib/MenuItem.js": 416, 420 | "./node_modules/rc-menu/lib/MenuItemGroup.js": 417, 421 | "./node_modules/rc-menu/lib/Divider.js": 418, 422 | "./node_modules/rc-select/lib/FilterMixin.js": 419, 423 | "./node_modules/rc-select/node_modules/warning/browser.js": 420, 424 | "./node_modules/rc-select/lib/Option.js": 421, 425 | "./node_modules/rc-select/lib/OptGroup.js": 422, 426 | "./node_modules/antd/lib/input/index.js": 423, 427 | "./node_modules/antd/lib/input/Input.js": 424, 428 | "./node_modules/antd/lib/input/calculateNodeHeight.js": 425, 429 | "./node_modules/antd/lib/input/Group.js": 426, 430 | "./node_modules/antd/lib/input/Search.js": 427, 431 | "./node_modules/antd/lib/icon/index.js": 428, 432 | "./node_modules/antd/lib/alert/index.js": 429, 433 | "./node_modules/antd/lib/back-top/index.js": 430, 434 | "./node_modules/antd/lib/badge/index.js": 431, 435 | "./node_modules/antd/lib/badge/ScrollNumber.js": 432, 436 | "./node_modules/antd/lib/_util/isCssAnimationSupported.js": 433, 437 | "./node_modules/antd/lib/_util/warning.js": 434, 438 | "./node_modules/antd/lib/breadcrumb/index.js": 435, 439 | "./node_modules/antd/lib/breadcrumb/Breadcrumb.js": 436, 440 | "./node_modules/antd/lib/breadcrumb/BreadcrumbItem.js": 437, 441 | "./node_modules/antd/lib/button/index.js": 438, 442 | "./node_modules/antd/lib/button/button.js": 439, 443 | "./node_modules/antd/lib/button/button-group.js": 440, 444 | "./node_modules/antd/lib/calendar/index.js": 441, 445 | "./node_modules/moment/moment.js": 442, 446 | "./node_modules/webpack/buildin/module.js": 443, 447 | "./node_modules/moment/locale/af.js": 445, 448 | "./node_modules/moment/locale/ar.js": 446, 449 | "./node_modules/moment/locale/ar-dz.js": 447, 450 | "./node_modules/moment/locale/ar-ly.js": 448, 451 | "./node_modules/moment/locale/ar-ma.js": 449, 452 | "./node_modules/moment/locale/ar-sa.js": 450, 453 | "./node_modules/moment/locale/ar-tn.js": 451, 454 | "./node_modules/moment/locale/az.js": 452, 455 | "./node_modules/moment/locale/be.js": 453, 456 | "./node_modules/moment/locale/bg.js": 454, 457 | "./node_modules/moment/locale/bn.js": 455, 458 | "./node_modules/moment/locale/bo.js": 456, 459 | "./node_modules/moment/locale/br.js": 457, 460 | "./node_modules/moment/locale/bs.js": 458, 461 | "./node_modules/moment/locale/ca.js": 459, 462 | "./node_modules/moment/locale/cs.js": 460, 463 | "./node_modules/moment/locale/cv.js": 461, 464 | "./node_modules/moment/locale/cy.js": 462, 465 | "./node_modules/moment/locale/da.js": 463, 466 | "./node_modules/moment/locale/de.js": 464, 467 | "./node_modules/moment/locale/de-at.js": 465, 468 | "./node_modules/moment/locale/dv.js": 466, 469 | "./node_modules/moment/locale/el.js": 467, 470 | "./node_modules/moment/locale/en-au.js": 468, 471 | "./node_modules/moment/locale/en-ca.js": 469, 472 | "./node_modules/moment/locale/en-gb.js": 470, 473 | "./node_modules/moment/locale/en-ie.js": 471, 474 | "./node_modules/moment/locale/en-nz.js": 472, 475 | "./node_modules/moment/locale/eo.js": 473, 476 | "./node_modules/moment/locale/es.js": 474, 477 | "./node_modules/moment/locale/es-do.js": 475, 478 | "./node_modules/moment/locale/et.js": 476, 479 | "./node_modules/moment/locale/eu.js": 477, 480 | "./node_modules/moment/locale/fa.js": 478, 481 | "./node_modules/moment/locale/fi.js": 479, 482 | "./node_modules/moment/locale/fo.js": 480, 483 | "./node_modules/moment/locale/fr.js": 481, 484 | "./node_modules/moment/locale/fr-ca.js": 482, 485 | "./node_modules/moment/locale/fr-ch.js": 483, 486 | "./node_modules/moment/locale/fy.js": 484, 487 | "./node_modules/moment/locale/gd.js": 485, 488 | "./node_modules/moment/locale/gl.js": 486, 489 | "./node_modules/moment/locale/he.js": 487, 490 | "./node_modules/moment/locale/hi.js": 488, 491 | "./node_modules/moment/locale/hr.js": 489, 492 | "./node_modules/moment/locale/hu.js": 490, 493 | "./node_modules/moment/locale/hy-am.js": 491, 494 | "./node_modules/moment/locale/id.js": 492, 495 | "./node_modules/moment/locale/is.js": 493, 496 | "./node_modules/moment/locale/it.js": 494, 497 | "./node_modules/moment/locale/ja.js": 495, 498 | "./node_modules/moment/locale/jv.js": 496, 499 | "./node_modules/moment/locale/ka.js": 497, 500 | "./node_modules/moment/locale/kk.js": 498, 501 | "./node_modules/moment/locale/km.js": 499, 502 | "./node_modules/moment/locale/ko.js": 500, 503 | "./node_modules/moment/locale/ky.js": 501, 504 | "./node_modules/moment/locale/lb.js": 502, 505 | "./node_modules/moment/locale/lo.js": 503, 506 | "./node_modules/moment/locale/lt.js": 504, 507 | "./node_modules/moment/locale/lv.js": 505, 508 | "./node_modules/moment/locale/me.js": 506, 509 | "./node_modules/moment/locale/mi.js": 507, 510 | "./node_modules/moment/locale/mk.js": 508, 511 | "./node_modules/moment/locale/ml.js": 509, 512 | "./node_modules/moment/locale/mr.js": 510, 513 | "./node_modules/moment/locale/ms.js": 511, 514 | "./node_modules/moment/locale/ms-my.js": 512, 515 | "./node_modules/moment/locale/my.js": 513, 516 | "./node_modules/moment/locale/nb.js": 514, 517 | "./node_modules/moment/locale/ne.js": 515, 518 | "./node_modules/moment/locale/nl.js": 516, 519 | "./node_modules/moment/locale/nl-be.js": 517, 520 | "./node_modules/moment/locale/nn.js": 518, 521 | "./node_modules/moment/locale/pa-in.js": 519, 522 | "./node_modules/moment/locale/pl.js": 520, 523 | "./node_modules/moment/locale/pt.js": 521, 524 | "./node_modules/moment/locale/pt-br.js": 522, 525 | "./node_modules/moment/locale/ro.js": 523, 526 | "./node_modules/moment/locale/ru.js": 524, 527 | "./node_modules/moment/locale/se.js": 525, 528 | "./node_modules/moment/locale/si.js": 526, 529 | "./node_modules/moment/locale/sk.js": 527, 530 | "./node_modules/moment/locale/sl.js": 528, 531 | "./node_modules/moment/locale/sq.js": 529, 532 | "./node_modules/moment/locale/sr.js": 530, 533 | "./node_modules/moment/locale/sr-cyrl.js": 531, 534 | "./node_modules/moment/locale/ss.js": 532, 535 | "./node_modules/moment/locale/sv.js": 533, 536 | "./node_modules/moment/locale/sw.js": 534, 537 | "./node_modules/moment/locale/ta.js": 535, 538 | "./node_modules/moment/locale/te.js": 536, 539 | "./node_modules/moment/locale/tet.js": 537, 540 | "./node_modules/moment/locale/th.js": 538, 541 | "./node_modules/moment/locale/tl-ph.js": 539, 542 | "./node_modules/moment/locale/tlh.js": 540, 543 | "./node_modules/moment/locale/tr.js": 541, 544 | "./node_modules/moment/locale/tzl.js": 542, 545 | "./node_modules/moment/locale/tzm.js": 543, 546 | "./node_modules/moment/locale/tzm-latn.js": 544, 547 | "./node_modules/moment/locale/uk.js": 545, 548 | "./node_modules/moment/locale/uz.js": 546, 549 | "./node_modules/moment/locale/vi.js": 547, 550 | "./node_modules/moment/locale/x-pseudo.js": 548, 551 | "./node_modules/moment/locale/yo.js": 549, 552 | "./node_modules/moment/locale/zh-cn.js": 550, 553 | "./node_modules/moment/locale/zh-hk.js": 551, 554 | "./node_modules/moment/locale/zh-tw.js": 552, 555 | "./node_modules/rc-calendar/lib/FullCalendar.js": 553, 556 | "./node_modules/rc-calendar/lib/date/DateTable.js": 554, 557 | "./node_modules/rc-calendar/lib/date/DateTHead.js": 555, 558 | "./node_modules/rc-calendar/lib/date/DateConstants.js": 556, 559 | "./node_modules/rc-calendar/lib/date/DateTBody.js": 557, 560 | "./node_modules/rc-calendar/lib/util/index.js": 558, 561 | "./node_modules/rc-calendar/lib/month/MonthTable.js": 559, 562 | "./node_modules/rc-calendar/lib/mixin/CalendarMixin.js": 560, 563 | "./node_modules/rc-calendar/lib/mixin/CommonMixin.js": 561, 564 | "./node_modules/rc-calendar/lib/locale/en_US.js": 562, 565 | "./node_modules/rc-calendar/lib/full-calendar/CalendarHeader.js": 563, 566 | "./node_modules/antd/lib/calendar/Constants.js": 564, 567 | "./node_modules/antd/lib/calendar/Header.js": 565, 568 | "./node_modules/antd/lib/radio/index.js": 566, 569 | "./node_modules/antd/lib/radio/radio.js": 567, 570 | "./node_modules/rc-radio/lib/index.js": 568, 571 | "./node_modules/rc-radio/lib/Radio.js": 569, 572 | "./node_modules/rc-checkbox/lib/index.js": 570, 573 | "./node_modules/rc-checkbox/lib/Checkbox.js": 571, 574 | "./node_modules/rc-util/lib/PureRenderMixin.js": 572, 575 | "./node_modules/antd/lib/radio/group.js": 573, 576 | "./node_modules/antd/lib/radio/radioButton.js": 574, 577 | "./node_modules/antd/lib/_util/getLocale.js": 575, 578 | "./node_modules/antd/lib/calendar/locale/zh_CN.js": 576, 579 | "./node_modules/antd/lib/date-picker/locale/zh_CN.js": 577, 580 | "./node_modules/rc-calendar/lib/locale/zh_CN.js": 578, 581 | "./node_modules/antd/lib/time-picker/locale/zh_CN.js": 579, 582 | "./node_modules/antd/lib/card/index.js": 580, 583 | "./node_modules/antd/lib/collapse/index.js": 581, 584 | "./node_modules/rc-collapse/lib/index.js": 582, 585 | "./node_modules/rc-collapse/lib/Collapse.js": 583, 586 | "./node_modules/rc-collapse/lib/Panel.js": 584, 587 | "./node_modules/rc-collapse/lib/PanelContent.js": 585, 588 | "./node_modules/rc-collapse/lib/openAnimationFactory.js": 586, 589 | "./node_modules/antd/lib/_util/openAnimation.js": 587, 590 | "./node_modules/antd/lib/carousel/index.js": 588, 591 | "./node_modules/lodash.debounce/index.js": 589, 592 | "./node_modules/react-slick/lib/index.js": 590, 593 | "./node_modules/react-slick/lib/slider.js": 591, 594 | "./node_modules/react-slick/lib/inner-slider.js": 592, 595 | "./node_modules/react-slick/lib/mixins/event-handlers.js": 593, 596 | "./node_modules/react-slick/lib/mixins/trackHelper.js": 594, 597 | "./node_modules/react-slick/lib/mixins/helpers.js": 595, 598 | "./node_modules/react-slick/lib/initial-state.js": 596, 599 | "./node_modules/react-slick/lib/default-props.js": 597, 600 | "./node_modules/react-slick/lib/track.js": 598, 601 | "./node_modules/react-slick/lib/dots.js": 599, 602 | "./node_modules/react-slick/lib/arrows.js": 600, 603 | "./node_modules/json2mq/index.js": 601, 604 | "./node_modules/string-convert/camel2hyphen.js": 602, 605 | "./node_modules/react-responsive-mixin/index.js": 603, 606 | "./node_modules/can-use-dom/index.js": 604, 607 | "./node_modules/enquire.js/dist/enquire.js": 605, 608 | "./node_modules/antd/lib/cascader/index.js": 606, 609 | "./node_modules/rc-cascader/lib/index.js": 607, 610 | "./node_modules/rc-cascader/lib/Cascader.js": 608, 611 | "./node_modules/rc-cascader/lib/Menus.js": 609, 612 | "./node_modules/array-tree-filter/index.js": 610, 613 | "./node_modules/antd/lib/checkbox/index.js": 611, 614 | "./node_modules/antd/lib/checkbox/Group.js": 612, 615 | "./node_modules/antd/lib/col/index.js": 613, 616 | "./node_modules/antd/lib/grid/index.js": 614, 617 | "./node_modules/antd/lib/grid/row.js": 615, 618 | "./node_modules/antd/lib/grid/col.js": 616, 619 | "./node_modules/antd/lib/date-picker/index.js": 617, 620 | "./node_modules/rc-calendar/lib/index.js": 618, 621 | "./node_modules/rc-calendar/lib/Calendar.js": 619, 622 | "./node_modules/rc-calendar/node_modules/rc-util/lib/KeyCode.js": 620, 623 | "./node_modules/rc-calendar/lib/calendar/CalendarHeader.js": 621, 624 | "./node_modules/rc-calendar/lib/month/MonthPanel.js": 622, 625 | "./node_modules/rc-calendar/lib/year/YearPanel.js": 623, 626 | "./node_modules/rc-calendar/lib/decade/DecadePanel.js": 624, 627 | "./node_modules/rc-calendar/node_modules/rc-util/lib/Children/mapSelf.js": 625, 628 | "./node_modules/rc-calendar/lib/calendar/CalendarFooter.js": 626, 629 | "./node_modules/rc-calendar/lib/calendar/TodayButton.js": 627, 630 | "./node_modules/rc-calendar/lib/calendar/OkButton.js": 628, 631 | "./node_modules/rc-calendar/lib/calendar/TimePickerButton.js": 629, 632 | "./node_modules/rc-calendar/lib/date/DateInput.js": 630, 633 | "./node_modules/rc-calendar/lib/MonthCalendar.js": 631, 634 | "./node_modules/antd/lib/date-picker/createPicker.js": 632, 635 | "./node_modules/rc-calendar/lib/Picker.js": 633, 636 | "./node_modules/rc-calendar/node_modules/rc-util/lib/createChainedFunction.js": 634, 637 | "./node_modules/rc-calendar/lib/picker/placements.js": 635, 638 | "./node_modules/antd/lib/date-picker/wrapPicker.js": 636, 639 | "./node_modules/rc-time-picker/lib/Panel.js": 637, 640 | "./node_modules/rc-time-picker/lib/Header.js": 638, 641 | "./node_modules/rc-time-picker/lib/Combobox.js": 639, 642 | "./node_modules/rc-time-picker/lib/Select.js": 640, 643 | "./node_modules/antd/lib/date-picker/RangePicker.js": 641, 644 | "./node_modules/rc-calendar/lib/RangeCalendar.js": 642, 645 | "./node_modules/babel-runtime/helpers/slicedToArray.js": 643, 646 | "./node_modules/babel-runtime/core-js/is-iterable.js": 644, 647 | "./node_modules/core-js/library/fn/is-iterable.js": 645, 648 | "./node_modules/core-js/library/modules/core.is-iterable.js": 646, 649 | "./node_modules/babel-runtime/core-js/get-iterator.js": 647, 650 | "./node_modules/core-js/library/fn/get-iterator.js": 648, 651 | "./node_modules/core-js/library/modules/core.get-iterator.js": 649, 652 | "./node_modules/rc-calendar/lib/range-calendar/CalendarPart.js": 650, 653 | "./node_modules/antd/lib/date-picker/Calendar.js": 651, 654 | "./node_modules/antd/lib/dropdown/index.js": 652, 655 | "./node_modules/antd/lib/dropdown/dropdown.js": 653, 656 | "./node_modules/rc-dropdown/lib/index.js": 654, 657 | "./node_modules/rc-dropdown/lib/Dropdown.js": 655, 658 | "./node_modules/rc-dropdown/lib/placements.js": 656, 659 | "./node_modules/antd/lib/dropdown/dropdown-button.js": 657, 660 | "./node_modules/antd/lib/form/index.js": 658, 661 | "./node_modules/antd/lib/form/Form.js": 659, 662 | "./node_modules/rc-form/lib/createDOMForm.js": 660, 663 | "./node_modules/rc-form/lib/createBaseForm.js": 661, 664 | "./node_modules/rc-form/lib/utils.js": 662, 665 | "./node_modules/async-validator/lib/index.js": 663, 666 | "./node_modules/async-validator/lib/util.js": 664, 667 | "./node_modules/async-validator/lib/validator/index.js": 665, 668 | "./node_modules/async-validator/lib/validator/string.js": 666, 669 | "./node_modules/async-validator/lib/rule/index.js": 667, 670 | "./node_modules/async-validator/lib/rule/required.js": 668, 671 | "./node_modules/async-validator/lib/rule/whitespace.js": 669, 672 | "./node_modules/async-validator/lib/rule/type.js": 670, 673 | "./node_modules/async-validator/lib/rule/range.js": 671, 674 | "./node_modules/async-validator/lib/rule/enum.js": 672, 675 | "./node_modules/async-validator/lib/rule/pattern.js": 673, 676 | "./node_modules/async-validator/lib/validator/method.js": 674, 677 | "./node_modules/async-validator/lib/validator/number.js": 675, 678 | "./node_modules/async-validator/lib/validator/boolean.js": 676, 679 | "./node_modules/async-validator/lib/validator/regexp.js": 677, 680 | "./node_modules/async-validator/lib/validator/integer.js": 678, 681 | "./node_modules/async-validator/lib/validator/float.js": 679, 682 | "./node_modules/async-validator/lib/validator/array.js": 680, 683 | "./node_modules/async-validator/lib/validator/object.js": 681, 684 | "./node_modules/async-validator/lib/validator/enum.js": 682, 685 | "./node_modules/async-validator/lib/validator/pattern.js": 683, 686 | "./node_modules/async-validator/lib/validator/type.js": 684, 687 | "./node_modules/async-validator/lib/validator/date.js": 685, 688 | "./node_modules/async-validator/lib/validator/required.js": 686, 689 | "./node_modules/async-validator/lib/messages.js": 687, 690 | "./node_modules/lodash.get/index.js": 688, 691 | "./node_modules/lodash.has/index.js": 689, 692 | "./node_modules/lodash.set/index.js": 690, 693 | "./node_modules/rc-form/lib/createForm.js": 691, 694 | "./node_modules/antd/lib/form/FormItem.js": 692, 695 | "./node_modules/antd/lib/row/index.js": 693, 696 | "./node_modules/antd/lib/form/constants.js": 694, 697 | "./node_modules/antd/lib/input-number/index.js": 695, 698 | "./node_modules/rc-input-number/lib/index.js": 696, 699 | "./node_modules/rc-input-number/lib/mixin.js": 697, 700 | "./node_modules/rc-input-number/lib/InputHandler.js": 698, 701 | "./node_modules/rc-touchable/lib/index.js": 699, 702 | "./node_modules/antd/lib/layout/index.js": 700, 703 | "./node_modules/antd/lib/layout/layout.js": 701, 704 | "./node_modules/antd/lib/layout/Sider.js": 702, 705 | "./node_modules/antd/lib/locale-provider/index.js": 703, 706 | "./node_modules/antd/lib/modal/locale.js": 704, 707 | "./node_modules/antd/lib/message/index.js": 705, 708 | "./node_modules/rc-notification/lib/index.js": 706, 709 | "./node_modules/rc-notification/lib/Notification.js": 707, 710 | "./node_modules/rc-notification/node_modules/rc-util/lib/createChainedFunction.js": 708, 711 | "./node_modules/rc-notification/lib/Notice.js": 709, 712 | "./node_modules/antd/lib/menu/index.js": 710, 713 | "./node_modules/antd/lib/modal/index.js": 711, 714 | "./node_modules/antd/lib/modal/Modal.js": 712, 715 | "./node_modules/rc-dialog/lib/DialogWrap.js": 713, 716 | "./node_modules/rc-dialog/lib/Dialog.js": 714, 717 | "./node_modules/rc-dialog/node_modules/rc-util/lib/KeyCode.js": 715, 718 | "./node_modules/rc-dialog/lib/LazyRenderBox.js": 716, 719 | "./node_modules/rc-dialog/node_modules/rc-util/lib/getScrollBarSize.js": 717, 720 | "./node_modules/rc-dialog/node_modules/rc-util/lib/getContainerRenderMixin.js": 718, 721 | "./node_modules/antd/lib/modal/confirm.js": 719, 722 | "./node_modules/antd/lib/modal/ActionButton.js": 720, 723 | "./node_modules/antd/lib/notification/index.js": 721, 724 | "./node_modules/antd/lib/pagination/index.js": 722, 725 | "./node_modules/antd/lib/pagination/Pagination.js": 723, 726 | "./node_modules/rc-pagination/lib/index.js": 724, 727 | "./node_modules/rc-pagination/lib/Pagination.js": 725, 728 | "./node_modules/rc-pagination/lib/Pager.js": 726, 729 | "./node_modules/rc-pagination/lib/Options.js": 727, 730 | "./node_modules/rc-pagination/lib/KeyCode.js": 728, 731 | "./node_modules/rc-pagination/lib/locale/zh_CN.js": 729, 732 | "./node_modules/antd/lib/pagination/MiniSelect.js": 730, 733 | "./node_modules/antd/lib/popconfirm/index.js": 731, 734 | "./node_modules/antd/lib/tooltip/index.js": 732, 735 | "./node_modules/rc-tooltip/lib/index.js": 733, 736 | "./node_modules/rc-tooltip/lib/Tooltip.js": 734, 737 | "./node_modules/rc-tooltip/lib/placements.js": 735, 738 | "./node_modules/antd/lib/tooltip/placements.js": 736, 739 | "./node_modules/antd/lib/popover/index.js": 737, 740 | "./node_modules/antd/lib/progress/index.js": 738, 741 | "./node_modules/antd/lib/progress/progress.js": 739, 742 | "./node_modules/rc-progress/lib/index.js": 740, 743 | "./node_modules/rc-progress/lib/Line.js": 741, 744 | "./node_modules/rc-progress/lib/mixin.js": 742, 745 | "./node_modules/rc-progress/lib/Circle.js": 743, 746 | "./node_modules/antd/lib/rate/index.js": 744, 747 | "./node_modules/rc-rate/lib/index.js": 745, 748 | "./node_modules/rc-rate/lib/Rate.js": 746, 749 | "./node_modules/rc-rate/lib/util.js": 747, 750 | "./node_modules/rc-rate/lib/Star.js": 748, 751 | "./node_modules/antd/lib/slider/index.js": 749, 752 | "./node_modules/rc-slider/lib/Slider.js": 750, 753 | "./node_modules/rc-slider/lib/common/Track.js": 751, 754 | "./node_modules/rc-slider/lib/common/createSlider.js": 752, 755 | "./node_modules/rc-slider/lib/common/Steps.js": 753, 756 | "./node_modules/rc-slider/lib/common/Marks.js": 754, 757 | "./node_modules/rc-slider/lib/Handle.js": 755, 758 | "./node_modules/rc-slider/lib/utils.js": 756, 759 | "./node_modules/rc-slider/lib/Range.js": 757, 760 | "./node_modules/antd/lib/spin/index.js": 758, 761 | "./node_modules/antd/lib/steps/index.js": 759, 762 | "./node_modules/rc-steps/lib/index.js": 760, 763 | "./node_modules/rc-steps/lib/Steps.js": 761, 764 | "./node_modules/rc-steps/lib/Step.js": 762, 765 | "./node_modules/antd/lib/switch/index.js": 763, 766 | "./node_modules/rc-switch/lib/index.js": 764, 767 | "./node_modules/rc-switch/lib/Switch.js": 765, 768 | "./node_modules/antd/lib/table/index.js": 766, 769 | "./node_modules/antd/lib/table/Table.js": 767, 770 | "./node_modules/rc-table/lib/index.js": 768, 771 | "./node_modules/rc-table/lib/Table.js": 769, 772 | "./node_modules/rc-table/lib/TableRow.js": 770, 773 | "./node_modules/rc-table/lib/TableCell.js": 771, 774 | "./node_modules/rc-table/lib/ExpandIcon.js": 772, 775 | "./node_modules/rc-table/lib/TableHeader.js": 773, 776 | "./node_modules/rc-table/lib/utils.js": 774, 777 | "./node_modules/rc-table/lib/ColumnManager.js": 775, 778 | "./node_modules/rc-table/lib/createStore.js": 776, 779 | "./node_modules/rc-table/lib/Column.js": 777, 780 | "./node_modules/rc-table/lib/ColumnGroup.js": 778, 781 | "./node_modules/antd/lib/table/filterDropdown.js": 779, 782 | "./node_modules/dom-closest/index.js": 780, 783 | "./node_modules/dom-matches/index.js": 781, 784 | "./node_modules/antd/lib/table/FilterDropdownMenuWrapper.js": 782, 785 | "./node_modules/antd/lib/table/util.js": 783, 786 | "./node_modules/antd/lib/table/ColumnGroup.js": 784, 787 | "./node_modules/antd/lib/table/createStore.js": 785, 788 | "./node_modules/antd/lib/table/SelectionBox.js": 786, 789 | "./node_modules/antd/lib/table/SelectionCheckboxAll.js": 787, 790 | "./node_modules/antd/lib/table/Column.js": 788, 791 | "./node_modules/antd/lib/transfer/index.js": 789, 792 | "./node_modules/antd/lib/transfer/list.js": 790, 793 | "./node_modules/antd/lib/transfer/search.js": 791, 794 | "./node_modules/antd/lib/transfer/item.js": 792, 795 | "./node_modules/react-lazy-load/lib/LazyLoad.js": 793, 796 | "./node_modules/eventlistener/eventlistener.js": 794, 797 | "./node_modules/lodash.throttle/index.js": 795, 798 | "./node_modules/react-lazy-load/lib/utils/parentScroll.js": 796, 799 | "./node_modules/react-lazy-load/lib/utils/inViewport.js": 797, 800 | "./node_modules/react-lazy-load/lib/utils/getElementPosition.js": 798, 801 | "./node_modules/antd/lib/transfer/operation.js": 799, 802 | "./node_modules/antd/lib/tree/index.js": 800, 803 | "./node_modules/rc-tree/lib/index.js": 801, 804 | "./node_modules/rc-tree/lib/Tree.js": 802, 805 | "./node_modules/rc-tree/lib/util.js": 803, 806 | "./node_modules/rc-tree/lib/TreeNode.js": 804, 807 | "./node_modules/antd/lib/tree-select/index.js": 805, 808 | "./node_modules/rc-tree-select/lib/index.js": 806, 809 | "./node_modules/rc-tree-select/lib/Select.js": 807, 810 | "./node_modules/rc-tree-select/node_modules/rc-util/lib/KeyCode.js": 808, 811 | "./node_modules/rc-tree-select/lib/util.js": 809, 812 | "./node_modules/rc-tree-select/lib/SelectTrigger.js": 810, 813 | "./node_modules/rc-tree-select/node_modules/rc-util/lib/Children/toArray.js": 811, 814 | "./node_modules/rc-tree-select/lib/TreeNode.js": 812, 815 | "./node_modules/antd/lib/tabs/index.js": 813, 816 | "./node_modules/rc-tabs/lib/index.js": 814, 817 | "./node_modules/rc-tabs/lib/Tabs.js": 815, 818 | "./node_modules/rc-tabs/lib/KeyCode.js": 816, 819 | "./node_modules/rc-tabs/lib/TabPane.js": 817, 820 | "./node_modules/rc-tabs/lib/ScrollableInkTabBar.js": 818, 821 | "./node_modules/rc-tabs/lib/InkTabBarMixin.js": 819, 822 | "./node_modules/rc-tabs/lib/utils.js": 820, 823 | "./node_modules/rc-tabs/lib/ScrollableTabBarMixin.js": 821, 824 | "./node_modules/rc-tabs/lib/TabBarMixin.js": 822, 825 | "./node_modules/rc-tabs/lib/TabContent.js": 823, 826 | "./node_modules/antd/lib/_util/isFlexSupported.js": 824, 827 | "./node_modules/antd/lib/tag/index.js": 825, 828 | "./node_modules/antd/lib/tag/CheckableTag.js": 826, 829 | "./node_modules/antd/lib/time-picker/index.js": 827, 830 | "./node_modules/rc-time-picker/lib/TimePicker.js": 828, 831 | "./node_modules/rc-time-picker/lib/placements.js": 829, 832 | "./node_modules/antd/lib/timeline/index.js": 830, 833 | "./node_modules/antd/lib/timeline/Timeline.js": 831, 834 | "./node_modules/antd/lib/timeline/TimelineItem.js": 832, 835 | "./node_modules/antd/lib/mention/index.js": 833, 836 | "./node_modules/rc-editor-mention/lib/index.js": 834, 837 | "./node_modules/rc-editor-core/lib/index.js": 835, 838 | "./node_modules/rc-editor-core/lib/EditorCore/index.js": 836, 839 | "./node_modules/draft-js/lib/Draft.js": 837, 840 | "./node_modules/draft-js/lib/AtomicBlockUtils.js": 838, 841 | "./node_modules/draft-js/lib/BlockMapBuilder.js": 839, 842 | "./node_modules/draft-js/node_modules/immutable/dist/immutable.js": 840, 843 | "./node_modules/draft-js/lib/CharacterMetadata.js": 841, 844 | "./node_modules/draft-js/lib/ContentBlock.js": 842, 845 | "./node_modules/draft-js/lib/findRangesImmutable.js": 843, 846 | "./node_modules/draft-js/lib/DraftModifier.js": 844, 847 | "./node_modules/draft-js/lib/ContentStateInlineStyle.js": 845, 848 | "./node_modules/draft-js/lib/applyEntityToContentState.js": 846, 849 | "./node_modules/draft-js/lib/applyEntityToContentBlock.js": 847, 850 | "./node_modules/draft-js/lib/getCharacterRemovalRange.js": 848, 851 | "./node_modules/draft-js/lib/DraftEntitySegments.js": 849, 852 | "./node_modules/draft-js/lib/getRangesForDraftEntity.js": 850, 853 | "./node_modules/draft-js/lib/getContentStateFragment.js": 851, 854 | "./node_modules/draft-js/lib/generateRandomKey.js": 852, 855 | "./node_modules/draft-js/lib/removeEntitiesAtEdges.js": 853, 856 | "./node_modules/draft-js/lib/insertFragmentIntoContentState.js": 854, 857 | "./node_modules/draft-js/lib/insertIntoList.js": 855, 858 | "./node_modules/draft-js/lib/insertTextIntoContentState.js": 856, 859 | "./node_modules/draft-js/lib/modifyBlockForContentState.js": 857, 860 | "./node_modules/draft-js/lib/removeRangeFromContentState.js": 858, 861 | "./node_modules/draft-js/lib/splitBlockInContentState.js": 859, 862 | "./node_modules/draft-js/lib/EditorState.js": 860, 863 | "./node_modules/draft-js/lib/BlockTree.js": 861, 864 | "./node_modules/draft-js/lib/ContentState.js": 862, 865 | "./node_modules/draft-js/lib/DraftEntity.js": 863, 866 | "./node_modules/draft-js/lib/DraftEntityInstance.js": 864, 867 | "./node_modules/draft-js/lib/SelectionState.js": 865, 868 | "./node_modules/draft-js/lib/sanitizeDraftText.js": 866, 869 | "./node_modules/draft-js/lib/EditorBidiService.js": 867, 870 | "./node_modules/fbjs/lib/UnicodeBidiService.js": 868, 871 | "./node_modules/fbjs/lib/UnicodeBidi.js": 869, 872 | "./node_modules/fbjs/lib/UnicodeBidiDirection.js": 870, 873 | "./node_modules/fbjs/lib/nullthrows.js": 871, 874 | "./node_modules/draft-js/lib/CompositeDraftDecorator.js": 872, 875 | "./node_modules/draft-js/lib/DefaultDraftBlockRenderMap.js": 873, 876 | "./node_modules/fbjs/lib/cx.js": 874, 877 | "./node_modules/draft-js/lib/DefaultDraftInlineStyle.js": 875, 878 | "./node_modules/draft-js/lib/DraftEditor.react.js": 876, 879 | "./node_modules/draft-js/lib/DraftEditorCompositionHandler.js": 877, 880 | "./node_modules/fbjs/lib/Keys.js": 878, 881 | "./node_modules/draft-js/lib/getEntityKeyForSelection.js": 879, 882 | "./node_modules/draft-js/lib/isSelectionAtLeafStart.js": 880, 883 | "./node_modules/draft-js/lib/DraftEditorContents.react.js": 881, 884 | "./node_modules/draft-js/lib/DraftEditorBlock.react.js": 882, 885 | "./node_modules/draft-js/lib/DraftEditorLeaf.react.js": 883, 886 | "./node_modules/draft-js/lib/DraftEditorTextNode.react.js": 884, 887 | "./node_modules/fbjs/lib/UserAgent.js": 885, 888 | "./node_modules/fbjs/lib/UserAgentData.js": 886, 889 | "./node_modules/ua-parser-js/src/ua-parser.js": 887, 890 | "./node_modules/webpack/buildin/amd-options.js": 888, 891 | "./node_modules/fbjs/lib/VersionRange.js": 889, 892 | "./node_modules/fbjs/lib/mapObject.js": 890, 893 | "./node_modules/draft-js/lib/setDraftEditorSelection.js": 891, 894 | "./node_modules/draft-js/lib/DraftOffsetKey.js": 892, 895 | "./node_modules/fbjs/lib/Scroll.js": 893, 896 | "./node_modules/fbjs/lib/Style.js": 894, 897 | "./node_modules/fbjs/lib/getStyleProperty.js": 895, 898 | "./node_modules/fbjs/lib/getElementPosition.js": 896, 899 | "./node_modules/fbjs/lib/getElementRect.js": 897, 900 | "./node_modules/fbjs/lib/getScrollPosition.js": 898, 901 | "./node_modules/fbjs/lib/getDocumentScrollElement.js": 899, 902 | "./node_modules/fbjs/lib/getViewportDimensions.js": 900, 903 | "./node_modules/fbjs/lib/joinClasses.js": 901, 904 | "./node_modules/draft-js/lib/DraftEditorDragHandler.js": 902, 905 | "./node_modules/fbjs/lib/DataTransfer.js": 903, 906 | "./node_modules/fbjs/lib/PhotosMimeType.js": 904, 907 | "./node_modules/draft-js/lib/findAncestorOffsetKey.js": 905, 908 | "./node_modules/draft-js/lib/getSelectionOffsetKeyForNode.js": 906, 909 | "./node_modules/draft-js/lib/getTextContentFromFiles.js": 907, 910 | "./node_modules/draft-js/lib/getUpdatedSelectionState.js": 908, 911 | "./node_modules/draft-js/lib/isEventHandled.js": 909, 912 | "./node_modules/draft-js/lib/DraftEditorEditHandler.js": 910, 913 | "./node_modules/draft-js/lib/editOnBeforeInput.js": 911, 914 | "./node_modules/fbjs/lib/setImmediate.js": 912, 915 | "./node_modules/setimmediate/setImmediate.js": 913, 916 | "./node_modules/draft-js/lib/editOnBlur.js": 914, 917 | "./node_modules/draft-js/lib/editOnCompositionStart.js": 915, 918 | "./node_modules/draft-js/lib/editOnCopy.js": 916, 919 | "./node_modules/draft-js/lib/getFragmentFromSelection.js": 917, 920 | "./node_modules/draft-js/lib/editOnCut.js": 918, 921 | "./node_modules/draft-js/lib/editOnDragOver.js": 919, 922 | "./node_modules/draft-js/lib/editOnDragStart.js": 920, 923 | "./node_modules/draft-js/lib/editOnFocus.js": 921, 924 | "./node_modules/draft-js/lib/editOnInput.js": 922, 925 | "./node_modules/draft-js/lib/editOnKeyDown.js": 923, 926 | "./node_modules/draft-js/lib/KeyBindingUtil.js": 924, 927 | "./node_modules/draft-js/lib/SecondaryClipboard.js": 925, 928 | "./node_modules/draft-js/lib/keyCommandBackspaceToStartOfLine.js": 926, 929 | "./node_modules/draft-js/lib/expandRangeToStartOfLine.js": 927, 930 | "./node_modules/fbjs/lib/UnicodeUtils.js": 928, 931 | "./node_modules/draft-js/lib/getRangeClientRects.js": 929, 932 | "./node_modules/draft-js/lib/getDraftEditorSelectionWithNodes.js": 930, 933 | "./node_modules/draft-js/lib/moveSelectionBackward.js": 931, 934 | "./node_modules/draft-js/lib/removeTextWithStrategy.js": 932, 935 | "./node_modules/draft-js/lib/keyCommandBackspaceWord.js": 933, 936 | "./node_modules/draft-js/lib/DraftRemovableWord.js": 934, 937 | "./node_modules/fbjs/lib/TokenizeUtil.js": 935, 938 | "./node_modules/draft-js/lib/keyCommandDeleteWord.js": 936, 939 | "./node_modules/draft-js/lib/moveSelectionForward.js": 937, 940 | "./node_modules/draft-js/lib/keyCommandInsertNewline.js": 938, 941 | "./node_modules/draft-js/lib/keyCommandPlainBackspace.js": 939, 942 | "./node_modules/draft-js/lib/keyCommandPlainDelete.js": 940, 943 | "./node_modules/draft-js/lib/keyCommandMoveSelectionToEndOfBlock.js": 941, 944 | "./node_modules/draft-js/lib/keyCommandMoveSelectionToStartOfBlock.js": 942, 945 | "./node_modules/draft-js/lib/keyCommandTransposeCharacters.js": 943, 946 | "./node_modules/draft-js/lib/keyCommandUndo.js": 944, 947 | "./node_modules/draft-js/lib/editOnPaste.js": 945, 948 | "./node_modules/draft-js/lib/DraftPasteProcessor.js": 946, 949 | "./node_modules/draft-js/lib/convertFromHTMLToContentBlocks.js": 947, 950 | "./node_modules/fbjs/lib/URI.js": 948, 951 | "./node_modules/draft-js/lib/getSafeBodyFromHTML.js": 949, 952 | "./node_modules/draft-js/lib/splitTextIntoTextBlocks.js": 950, 953 | "./node_modules/draft-js/lib/editOnSelect.js": 951, 954 | "./node_modules/draft-js/lib/getDraftEditorSelection.js": 952, 955 | "./node_modules/draft-js/lib/DraftEditorPlaceholder.react.js": 953, 956 | "./node_modules/draft-js/lib/getDefaultKeyBinding.js": 954, 957 | "./node_modules/draft-js/lib/RichTextEditorUtil.js": 955, 958 | "./node_modules/draft-js/lib/adjustBlockDepthForContentState.js": 956, 959 | "./node_modules/draft-js/lib/convertFromDraftStateToRaw.js": 957, 960 | "./node_modules/draft-js/lib/DraftStringKey.js": 958, 961 | "./node_modules/draft-js/lib/encodeEntityRanges.js": 959, 962 | "./node_modules/draft-js/lib/encodeInlineStyleRanges.js": 960, 963 | "./node_modules/draft-js/lib/convertFromRawToDraftState.js": 961, 964 | "./node_modules/draft-js/lib/createCharacterList.js": 962, 965 | "./node_modules/draft-js/lib/decodeEntityRanges.js": 963, 966 | "./node_modules/draft-js/lib/decodeInlineStyleRanges.js": 964, 967 | "./node_modules/draft-js/lib/getVisibleSelectionRect.js": 965, 968 | "./node_modules/draft-js/lib/getRangeBoundingClientRect.js": 966, 969 | "./node_modules/immutable/dist/immutable.js": 967, 970 | "./node_modules/rc-editor-core/lib/Toolbar/index.js": 968, 971 | "./node_modules/rc-editor-core/lib/Toolbar/Toolbar.js": 969, 972 | "./node_modules/rc-editor-core/lib/Toolbar/ToolbarLine.js": 970, 973 | "./node_modules/rc-editor-core/lib/EditorCore/ConfigStore.js": 971, 974 | "./node_modules/rc-editor-core/lib/EditorCore/export/getHTML.js": 972, 975 | "./node_modules/rc-editor-core/lib/EditorCore/export/isUnitlessNumber.js": 973, 976 | "./node_modules/rc-editor-core/lib/EditorCore/export/exportText.js": 974, 977 | "./node_modules/rc-editor-core/lib/EditorCore/customHTML2Content.js": 975, 978 | "./node_modules/lodash/lodash.js": 976, 979 | "./node_modules/rc-editor-mention/lib/component/Mention.react.js": 977, 980 | "./node_modules/rc-editor-mention/lib/utils/createMention.js": 978, 981 | "./node_modules/rc-editor-mention/lib/component/Suggestions.react.js": 979, 982 | "./node_modules/rc-editor-mention/lib/component/Nav.react.js": 980, 983 | "./node_modules/rc-editor-mention/lib/component/SuggestionWrapper.react.js": 981, 984 | "./node_modules/rc-editor-mention/lib/utils/insertMention.js": 982, 985 | "./node_modules/rc-editor-mention/lib/utils/getSearchWord.js": 983, 986 | "./node_modules/rc-editor-mention/lib/utils/clearMention.js": 984, 987 | "./node_modules/rc-editor-mention/lib/utils/getOffset.js": 985, 988 | "./node_modules/rc-editor-mention/lib/utils/getMentions.js": 986, 989 | "./node_modules/rc-editor-mention/lib/utils/getRegExp.js": 987, 990 | "./node_modules/rc-editor-mention/lib/component/SuggestionPortal.react.js": 988, 991 | "./node_modules/rc-editor-mention/lib/component/MentionContent.react.js": 989, 992 | "./node_modules/rc-editor-mention/lib/model/mentionStore.js": 990, 993 | "./node_modules/rc-editor-mention/lib/utils/exportContent.js": 991, 994 | "./node_modules/antd/lib/upload/index.js": 992, 995 | "./node_modules/rc-upload/lib/index.js": 993, 996 | "./node_modules/rc-upload/lib/Upload.js": 994, 997 | "./node_modules/rc-upload/lib/AjaxUploader.js": 995, 998 | "./node_modules/rc-upload/lib/request.js": 996, 999 | "./node_modules/rc-upload/lib/uid.js": 997, 1000 | "./node_modules/rc-upload/lib/IframeUploader.js": 998, 1001 | "./node_modules/rc-upload/node_modules/warning/browser.js": 999, 1002 | "./node_modules/antd/lib/upload/uploadList.js": 1000, 1003 | "./node_modules/antd/lib/upload/getFileItem.js": 1001, 1004 | "./node_modules/antd/lib/version/index.js": 1002 1005 | } 1006 | } --------------------------------------------------------------------------------