├── 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 | 
33 | 2. 所有城市
34 | 
35 | 3. 城市折线
36 | 
--------------------------------------------------------------------------------
/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 |
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 |
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 | }
--------------------------------------------------------------------------------