Browse Source

申请付款

mentoswzq 4 years ago
parent
commit
d6c3eea3ff

+ 211 - 0
js/component/manageCenter/components/checkProject/applyPaymentModal.js

@@ -0,0 +1,211 @@
+import React,{Component} from 'react';
+import {Button, Form, Input, message, Modal} from "antd";
+import propType from 'prop-types';
+import $ from "jquery";
+
+const layout = {
+    labelCol: {
+        span: 8,
+    },
+    wrapperCol: {
+        span: 16,
+    },
+};
+
+const formItemLayout = {
+    labelCol: { span: 8 },
+    wrapperCol: { span: 14 },
+};
+
+class ApplyPaymentModal extends Component{
+    // static propTypes = {
+    //     visible: PropTypes.bool.isRequired,
+    //     changeVisible: PropTypes.func.isRequired,
+    // }
+    //
+    // static defaultProps = {
+    //     visible: false,
+    //     changeVisible: ()=>{},
+    // }
+
+
+    constructor(props) {
+        super(props);
+    }
+
+    //申请付款
+    handleSubmit(e){
+        e.preventDefault();
+        this.props.form.validateFieldsAndScroll((err, values) => {
+            if (err) {
+                return;
+            }
+            console.log('Success:',values);
+            values.tid = this.props.tid;
+            values.nodeId = this.props.nodeId;
+            values.paymentType = 0;                 //支付类型 0第三方 1官费(用来做判断发起区别)
+            values.chooseType = 1;                  //支付选择 0第三方 1催款
+            $.ajax({
+                method: 'POST',
+                dataType: 'json',
+                crossDomain: false,
+                url: globalConfig.context + '/api/admin/company/addOrderPayment',
+                data: values,
+            }).done(
+                function (data) {
+                    this.setState({
+                        loading: false,
+                    })
+                    if (!data.error.length) {
+                        message.success('申请成功!')
+                    } else {
+                        message.warning(data.error[0].message)
+                    }
+                }.bind(this)
+            )
+        })
+    }
+
+    render() {
+        const { getFieldDecorator } = this.props.form;
+        const { previewPayInfor } = this.props;
+        if(!previewPayInfor){
+            return;
+        }
+        return(
+            <Modal
+                maskClosable={false}
+                footer={null}
+                visible={this.props.visible}
+                onCancel={() => {
+                    this.props.changeVisible();
+                }}
+            >
+                <div>
+                    <div>支付供应商费用</div>
+                    <Form
+                        {...layout}
+                        name="basic"
+                        initialValues={{
+                            remember: true,
+                        }}
+                        onSubmit={(e)=>{
+                            this.handleSubmit(e)
+                        }}
+                    >
+                        <Form.Item
+                            {...formItemLayout}
+                            style={{
+                                display:'flex'
+                            }}
+                            label="付款单位/个人:"
+                        >
+                            {getFieldDecorator('companyName', {
+                                initialValue: previewPayInfor.companyName,
+                                rules: [{
+                                    required: false,
+                                    message: '请输入付款单位/个人!',
+                                }],
+                            })(
+                                <Input
+                                    style={{ width: '200px' }}
+                                    placeholder="请输入付款单位/个人"
+                                />
+                            )}
+                        </Form.Item>
+                        {/*<Form.Item*/}
+                        {/*    {...formItemLayout}*/}
+                        {/*    style={{*/}
+                        {/*        display:'flex'*/}
+                        {/*    }}*/}
+                        {/*    label="单价(万元):"*/}
+                        {/*>*/}
+                        {/*    {getFieldDecorator('unitPrice', {*/}
+                        {/*        rules: [{ required: true, message: '请输入单价!' }],*/}
+                        {/*    })(*/}
+                        {/*        <Input style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>*/}
+                        {/*    )}*/}
+                        {/*</Form.Item>*/}
+                        <Form.Item
+                            {...formItemLayout}
+                            style={{
+                                display:'flex'
+                            }}
+                            label="数量:"
+                        >
+                            {getFieldDecorator('quantity', {
+                                initialValue: parseInt(previewPayInfor.quantity),
+                                rules: [{ required: false, message: '请输入數量!' }],
+                            })(
+                                <Input disabled={previewPayInfor.quantity <= 1} style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
+                            )}
+                        </Form.Item>
+                        {/*<Form.Item*/}
+                        {/*    {...formItemLayout}*/}
+                        {/*    style={{*/}
+                        {/*        display:'flex'*/}
+                        {/*    }}*/}
+                        {/*    label="总价(万元):"*/}
+                        {/*>*/}
+                        {/*    {getFieldDecorator('totalPrice', {*/}
+                        {/*        rules: [{ required: false, message: '请输入总价!' }],*/}
+                        {/*    })(*/}
+                        {/*        <Input style={{ width: '200px' }} placeholder="请输入总价" type={'number'}/>*/}
+                        {/*    )}*/}
+                        {/*</Form.Item>*/}
+                        <Form.Item
+                            {...formItemLayout}
+                            style={{
+                                display:'flex'
+                            }}
+                            label="已付(万元):"
+                        >
+                            {getFieldDecorator('totalPrice', {
+                                initialValue: parseFloat(previewPayInfor.partyAmount),
+                                rules: [{ required: false, message: '请输入已付金额!' }],
+                            })(
+                                <Input disabled={true} style={{ width: '200px' }} placeholder="请输入已付金额" type={'number'}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item
+                            {...formItemLayout}
+                            style={{
+                                display:'flex'
+                            }}
+                            label="本次申请支付金额(万元):"
+                        >
+                            {getFieldDecorator('applicationAmount', {
+                                initialValue: parseFloat(previewPayInfor.totalAmount) - parseFloat(previewPayInfor.partyAmount),
+                                rules: [{ required: true, message: '请输入本次申请支付金额!' }],
+                            })(
+                                <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额" type={'number'}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item
+                            {...formItemLayout}
+                            style={{
+                                display:'flex'
+                            }}
+                            label="备注:"
+                        >
+                            {getFieldDecorator('remarks', {
+                                rules: [{ required: true, message: '请输入备注!' }],
+                            })(
+                                <Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
+                            )}
+                        </Form.Item>
+                        <Form.Item>
+                            <Button type="primary" htmlType="submit">
+                                确定申请支付
+                            </Button>
+                        </Form.Item>
+                    </Form>
+                </div>
+            </Modal>
+        )
+    }
+}
+
+const WrappedNormalLoginForm = Form.create()(ApplyPaymentModal);
+
+export default WrappedNormalLoginForm

+ 494 - 0
js/component/manageCenter/components/checkProject/index.jsx

@@ -0,0 +1,494 @@
+import React, { Component } from 'react'
+import {
+  Form,
+  Spin,
+  Table,
+  Modal,
+  Col,
+  Upload,
+  Input,
+  Button, message,
+  Row,
+} from 'antd'
+import { getMaterialStatus, getUrgentStatus } from '@/tools'
+import ApplyPaymentModal from './applyPaymentModal';
+import './index.less'
+import $ from "jquery";
+
+class CheckProject extends Component {
+  constructor(props) {
+    super(props)
+    this.state = {
+      value: '',
+      loading: false,
+      previewImage: '',
+      previewVisible: false,
+      previewPayVisible: false,
+      previewPayInfor: {},        //点击申请付款的第三方信息或者支付节点信息
+      nodeId: -1,
+      // 专利
+      ContactsListsNew: [
+        {
+          title: '供应商名称',
+          dataIndex: 'companyName',
+          key: 'companyName',
+          render: (text, record, index) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '单价(万元)',
+          dataIndex: 'unitPrice',
+          key: 'unitPrice',
+          render: (text, record) => {
+            if (text) {
+              return <span>***</span>
+            }
+          },
+        },
+        {
+          title: '数量',
+          dataIndex: 'quantity',
+          key: 'quantity',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '总价(万元)',
+          dataIndex: 'totalAmount',
+          key: 'totalAmount',
+          render: (text, record) => {
+            if (text) {
+              return <span>***</span>
+            }
+          },
+        },
+        {
+          title: '已付(万元)',
+          dataIndex: 'partyAmount',
+          key: 'partyAmount',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '材料',
+          dataIndex: 'material',
+          key: 'material',
+          render: (text, record) => {
+            return getMaterialStatus(text)
+          },
+        },
+        {
+          title: '加急',
+          dataIndex: 'urgent',
+          key: 'urgent',
+          render: (text, record) => {
+            return getUrgentStatus(text)
+          },
+        },
+        {
+          title: '操作',
+          dataIndex: 'action',
+          key: 'action',
+          render: (text, record) => {
+            return (
+              <div>
+                {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
+                {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
+                {this.props.isPreviewPay && this.props.status === 1 && this.props.dataSource.length === 0?
+                <Button type="primary" onClick={() => {
+                  this.setState({
+                    previewPayVisible: true,
+                    previewPayInfor: record,
+                  })
+                }}>
+                  申请付款
+                </Button> : <div/>}
+              </div>
+            )
+          },
+        },
+      ],
+      //付款节点表头
+      PayNodeTableColunms: [
+        {
+          title: '供应商名称',
+          dataIndex: 'companyName',
+          key: 'companyName',
+          render: (text, record, index) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '付款科目',
+          dataIndex: 'dunType',
+          key: 'dunType',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '付款时间',
+          dataIndex: 'partyTimes',
+          key: 'partyTimes',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '数量',
+          dataIndex: 'quantity',
+          key: 'quantity',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '总价(万元)',
+          dataIndex: 'totalAmount',
+          key: 'totalAmount',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '已付(万元)',
+          dataIndex: 'partyAmount',
+          key: 'partyAmount',
+          render: (text, record) => {
+            if (text) {
+              return <span>{text}</span>
+            }
+          },
+        },
+        {
+          title: '操作',
+          dataIndex: 'action',
+          key: 'action',
+          render: (text, record) => {
+            return (
+                <div>
+                  {/*外包审核通过后,咨询师/咨询经理可申请付款*/}
+                  {/*0-待审核 ,1-审核通过,2-审核拒绝 true [NULL]*/}
+                  <Button type="primary" onClick={() => {
+                    this.setState({
+                      previewPayVisible: true,
+                      nodeId: record.id,           //付款节点id
+                      previewPayInfor: record,
+                    })
+                  }}>
+                    申请付款
+                  </Button>
+                </div>
+            )
+          },
+        },
+      ],
+      outsourceLogs: [],//审核日志
+      selectOrderPayments: [],//支付列表
+    }
+  }
+
+  componentDidMount() {
+    if(this.props.tid){
+      this.getSelectOutsourceLog();
+      this.getSelectOrderPayment();
+    }
+  }
+
+  onChange() {
+    this.setState({
+      value: e.target.value,
+    })
+  }
+
+  tableRowClickOne(record) {}
+
+  //点击付款节点详情
+  payNodeTableRowClickOne(record) {}
+
+  //外包日志列表
+  getSelectOutsourceLog(){
+    $.ajax({
+      method: 'get',
+      dataType: 'json',
+      crossDomain: false,
+      url: globalConfig.context + '/api/admin/outsourceOrg/selectOutsourceLog',
+      data: {
+        tid: this.props.tid,
+      },
+      success: function (data) {
+        if (data.error.length) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          this.setState({
+            outsourceLogs: data.data
+          })
+        }
+      }.bind(this),
+    }).always(
+        function () {
+
+        }.bind(this)
+    )
+  }
+
+  //支付列表
+  getSelectOrderPayment() {
+    $.ajax({
+      method: 'get',
+      dataType: 'json',
+      crossDomain: false,
+      url: globalConfig.context + '/api/admin/company/selectOrderPayment',
+      data: {
+        id: this.props.tid,
+      },
+      success: function (data) {
+        if (data.error.length) {
+          if (data.error && data.error.length) {
+            message.warning(data.error[0].message);
+          }
+        } else {
+          this.setState({
+            selectOrderPayments: data.data
+          })
+        }
+      }.bind(this),
+    }).always(
+        function () {
+
+        }.bind(this)
+    )
+  }
+
+  render() {
+    return (
+      <div className="App">
+        <div className="projectType">
+          <div className="typeTitle">
+            <div className="required">*</div>
+            <div>类型:</div>
+          </div>
+          {
+            parseInt(this.props.startType) === 0 ?
+                <div>
+                  <div>供应商信息(外包派单,不走总部)</div>
+                  <div className="tipsText">提示高于总部价格,费用个人承担</div>
+                </div> :
+                <div>供应商信息(普通单)</div>
+          }
+        </div>
+        <div className="thirdParty">
+          <div>
+            <span className="title">
+              第三方信息
+            </span>
+          </div>
+          <div
+            className="clearfix"
+          >
+            <Spin spinning={this.state.loading}>
+              <Form layout="horizontal">
+                <Table
+                  pagination={false}
+                  columns={this.state.ContactsListsNew}
+                  dataSource={this.props.thirdInfoList}
+                  onRowClick={this.tableRowClickOne}
+                  scroll={{ x: 'max-content', y: 0 }}
+                  bordered
+                  size="small"
+                />
+                <Col span={24} offset={9} style={{ marginTop: '15px' }}/>
+              </Form>
+            </Spin>
+          </div>
+        </div>
+        <div className="thirdParty">
+          <div>
+            <span className="title">
+              付款节点
+            </span>
+          </div>
+          <div
+            className="clearfix"
+          >
+            <Spin spinning={this.state.loading}>
+              <Form layout="horizontal">
+                <Table
+                  pagination={false}
+                  columns={this.state.PayNodeTableColunms}
+                  dataSource={this.props.dataSource}
+                  onRowClick={this.payNodeTableRowClickOne}
+                  scroll={{ x: 'max-content', y: 0 }}
+                  bordered
+                  size="small"
+                />
+                <Col span={24} offset={9} style={{ marginTop: '15px' }}/>
+              </Form>
+            </Spin>
+          </div>
+        </div>
+        <div
+          style={{
+            borderTop: '1px #000000 dashed',
+            padding: '20px 20px 0px 20px',
+          }}
+        >
+          <div>
+            <div className="title">备注</div>
+            <Input
+                type="textarea"
+                placeholder="请输入备注"
+                rows={4}
+                value={this.props.outsourceRemarks}
+            />
+          </div>
+          <div style={{paddingTop:'20px'}}>
+            <div className="title">合同/协议扫描件</div>
+            <Upload
+                className="demandDetailShow-upload"
+                listType="picture-card"
+                fileList={this.props.fileList}
+                onPreview={(file) => {
+                  this.setState({
+                    previewImage: file.url || file.thumbUrl,
+                    previewVisible: true,
+                  })
+                }}
+            />
+            <Modal
+                maskClosable={false}
+                footer={null}
+                visible={this.state.previewVisible}
+                onCancel={() => {
+                  this.setState({ previewVisible: false })
+                }}
+            >
+              <img
+                  alt=""
+                  style={{ width: '100%' }}
+                  src={this.state.previewImage || ''}
+              />
+            </Modal>
+          </div>
+        </div>
+        <div className="outsourceLogConent">
+          <div className="title">外包状态:</div>
+          <div className="outsourceLogList">
+            {
+              this.state.outsourceLogs.map((value,index)=>(
+                  <div key={index} className="outsourceLogItem">
+                    <Row gutter={16}>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          {value.aname}
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          {
+                            value.status === 0 ? '发起外包审核' :
+                                value.status === 1 ? '通过' : '驳回'
+                          }
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          {value.remarks}
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          {value.createTimes}
+                        </div>
+                      </Col>
+                    </Row>
+                  </div>
+              ))
+            }
+          </div>
+        </div>
+        <div className="outsourceLogConent">
+          <div className="title">支付记录:</div>
+          <div className="outsourceLogList">
+            {
+              this.state.selectOrderPayments.map((value,index)=>(
+                  <div key={index} className="outsourceLogItem">
+                    <Row gutter={16}>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                            编号
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          订单编号
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          支付类型
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          申请支付金额(万元)
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          申请时间
+                        </div>
+                      </Col>
+                      <Col className="gutter-row" span={6}>
+                        <div className="gutter-box">
+                          状态
+                        </div>
+                      </Col>
+                    </Row>
+                  </div>
+              ))
+            }
+          </div>
+        </div>
+        {/*
+            申请付款
+            tid:项目id
+            nodeId: 付款节点id
+            previewPayInfor: 项目或者节点信息
+         */}
+        <ApplyPaymentModal
+            {...this.props}
+            tid={this.props.tid}
+            nodeId={this.state.nodeId}
+            previewPayInfor={this.state.previewPayInfor}
+            visible={this.state.previewPayVisible}
+            changeVisible={()=>{
+              this.setState({ previewPayVisible: false })
+            }}/>
+      </div>
+    )
+  }
+}
+
+export default CheckProject

+ 16 - 0
js/component/manageCenter/project/task/checkProjectStyle.less

@@ -26,4 +26,20 @@
       color: #F00;
     }
   }
+  .outsourceLogConent{
+    padding: 20px 20px 0px 20px;
+    .outsourceLogList{
+      .outsourceLogItem{
+        padding-bottom: 10px;
+      }
+    }
+  }
+  .title{
+    font-size: 18px;
+    padding-bottom:10px;
+  }
+}
+
+#components-form-demo-normal-login .login-form-forgot {
+  float: left;
 }

+ 0 - 515
js/component/manageCenter/order/orderNew/checkProject.jsx

@@ -1,515 +0,0 @@
-import React, { Component } from 'react'
-import {
-  Form,
-  Spin,
-  Table,
-  Modal,
-  Radio,
-  Col,
-  Upload,
-  Input,
-  Button,
-} from 'antd'
-import { getMaterialStatus, getUrgentStatus } from '@/tools'
-import './checkProjectStyle.less'
-
-const radioGroupStyle = {
-  display: 'flex',
-  flexFlow: 'row nowrap',
-  alignItems: 'flex-start',
-  flex: 1,
-}
-
-const layout = {
-  labelCol: {
-    span: 8,
-  },
-  wrapperCol: {
-    span: 16,
-  },
-};
-
-const tailLayout = {
-  wrapperCol: {
-    offset: 8,
-    span: 16,
-  },
-};
-
-const radioStyle = {
-  display: 'flex',
-  flexFlow: 'row nowrap',
-}
-
-const FormItem = Form.Item
-
-class CheckProject extends Component {
-  constructor(props) {
-    super(props)
-    this.state = {
-      value: '',
-      loading: false,
-      previewImage: '',
-      previewVisible: false,
-      previewPayVisible: false,
-      // 专利
-      ContactsListsNew: [
-        {
-          title: '供应商名称',
-          dataIndex: 'companyName',
-          key: 'companyName',
-          render: (text, record, index) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '单价(万元)',
-          dataIndex: 'unitPrice',
-          key: 'unitPrice',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '数量',
-          dataIndex: 'quantity',
-          key: 'quantity',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '总价(万元)',
-          dataIndex: 'totalAmount',
-          key: 'totalAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '材料',
-          dataIndex: 'material',
-          key: 'material',
-          render: (text, record) => {
-            return getMaterialStatus(text)
-          },
-        },
-        {
-          title: '加急',
-          dataIndex: 'urgent',
-          key: 'urgent',
-          render: (text, record) => {
-            return getUrgentStatus(text)
-          },
-        },
-        {
-          title: '操作',
-          dataIndex: 'action',
-          key: 'action',
-          render: (text, record) => {
-            return (
-              <div>
-                <Button type="primary" onClick={() => {
-                  this.setState({
-                    previewPayVisible: true
-                  })
-                }}>
-                  申请付款
-                </Button>
-              </div>
-            )
-          },
-        },
-      ],
-      //付款节点表头
-      PayNodeTableColunms: [
-        {
-          title: '供应商名称',
-          dataIndex: 'companyName',
-          key: 'companyName',
-          render: (text, record, index) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款科目',
-          dataIndex: 'dunType',
-          key: 'dunType',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款时间',
-          dataIndex: 'partyTimes',
-          key: 'partyTimes',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '数量',
-          dataIndex: 'quantity',
-          key: 'quantity',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '总价(万元)',
-          dataIndex: 'totalAmount',
-          key: 'totalAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款(万元)',
-          dataIndex: 'partyAmount',
-          key: 'partyAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-      ],
-    }
-  }
-
-  onChange() {
-    this.setState({
-      value: e.target.value,
-    })
-  }
-
-  tableRowClickOne(record) {}
-
-  //点击付款节点详情
-  payNodeTableRowClickOne(record) {}
-
-  //第三方信息 新增支付
-  addOrderPayment(id) {
-    $.ajax({
-      method: 'POST',
-      dataType: 'json',
-      crossDomain: false,
-      url: globalConfig.context + '/api/admin/company/addOrderPayment',
-      data: {},
-    }).done(
-      function (data) {
-        this.setState({
-          loading: false,
-        })
-        if (!data.error.length) {
-          message.success('保存成功!')
-          this.noCancel()
-        } else {
-          message.warning(data.error[0].message)
-        }
-      }.bind(this)
-    )
-  }
-
-  handleSubmit(e){
-    e.preventDefault();
-    console.log('Success:',this.props.form);
-  }
-
-  render() {
-    return (
-      <div className="App">
-        <div className="projectType">
-          <div className="typeTitle">
-            <div className="required">*</div>
-            <div>类型:</div>
-          </div>
-          <Radio.Group style={radioGroupStyle} value={this.props.startType}>
-            <Radio value={0} style={radioStyle}>
-              <div>
-                <div>供应商信息(外包派单,不走总部)</div>
-                <div className="tipsText">提示高于总部价格,费用个人承担</div>
-              </div>
-            </Radio>
-            <Radio value={1} style={radioStyle}>
-              供应商信息(普通单)
-            </Radio>
-          </Radio.Group>
-        </div>
-        <div className="thirdParty">
-          <div>
-            <span
-              style={{
-                fontSize: '18px',
-              }}
-            >
-              第三方信息
-            </span>
-          </div>
-          <div
-            className="clearfix"
-            style={
-              {
-                // display: this.state.type == 1 ? 'block' : 'block',
-              }
-            }
-          >
-            <Spin spinning={this.state.loading}>
-              <Form layout="horizontal">
-                <Table
-                  pagination={false}
-                  columns={this.state.ContactsListsNew}
-                  dataSource={this.props.thirdInfoList}
-                  onRowClick={this.tableRowClickOne}
-                  scroll={{ x: 'max-content', y: 0 }}
-                  bordered
-                  size="small"
-                />
-                <Col span={24} offset={9} style={{ marginTop: '15px' }}></Col>
-              </Form>
-            </Spin>
-          </div>
-        </div>
-        <div className="thirdParty">
-          <div>
-            <span
-              style={{
-                fontSize: '18px',
-              }}
-            >
-              付款节点
-            </span>
-          </div>
-          <div
-            className="clearfix"
-            style={
-              {
-                // display: this.state.type == 1 ? 'block' : 'block',
-              }
-            }
-          >
-            <Spin spinning={this.state.loading}>
-              <Form layout="horizontal">
-                <Table
-                  pagination={false}
-                  columns={this.state.PayNodeTableColunms}
-                  dataSource={this.props.dataSource}
-                  onRowClick={this.payNodeTableRowClickOne}
-                  scroll={{ x: 'max-content', y: 0 }}
-                  bordered
-                  size="small"
-                />
-                <Col span={24} offset={9} style={{ marginTop: '15px' }}></Col>
-              </Form>
-            </Spin>
-          </div>
-        </div>
-        <div
-          className="clearfix"
-          style={{
-            borderTop: '1px #000000 dashed',
-            paddingTop: '20px',
-          }}
-        >
-          <FormItem
-            labelCol={{ span: 2 }}
-            wrapperCol={{ span: 8 }}
-            label="备注"
-          >
-            <Input
-              type="textarea"
-              placeholder="请输入备注"
-              rows={4}
-              value={this.props.outsourceRemarks}
-            />
-          </FormItem>
-        </div>
-        <div className="clearfix">
-          <FormItem
-            labelCol={{ span: 3 }}
-            wrapperCol={{ span: 18 }}
-            label="合同/协议扫描件"
-          >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={this.props.fileList}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                })
-              }}
-            />
-            <Modal
-              maskClosable={false}
-              footer={null}
-              visible={this.state.previewVisible}
-              onCancel={() => {
-                this.setState({ previewVisible: false })
-              }}
-            >
-              <img
-                alt=""
-                style={{ width: '100%' }}
-                src={this.state.previewImage || ''}
-              />
-            </Modal>
-          </FormItem>
-        </div>
-        {/* 申请付款 */}
-        <Modal
-          maskClosable={false}
-          footer={null}
-          visible={this.state.previewPayVisible}
-          onCancel={() => {
-            this.setState({ previewPayVisible: false })
-          }}
-        >
-          <div>
-            <div>支付供应商费用</div>
-            <Form
-                {...layout}
-                name="basic"
-                initialValues={{
-                  remember: true,
-                }}
-                onSubmit={this.handleSubmit}
-            >
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="付款单位/个人:"
-                  name="company"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入付款单位/个人!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入付款单位/个人"/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="单价(万元):"
-                  name="unitPrice"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入单价!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="数量:"
-                  name="num"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入數量!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="总价(万元):"
-                  name="totalPrice"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入总价!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入总价" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="已付(万元):"
-                  name="paid"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入已付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入已付金额" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="本次申请支付金额(万元):"
-                  name="payment"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入本次申请支付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额(" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="备注:"
-                  name="remarks"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入本次申请支付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额(" type={'textarea'}/>
-              </Form.Item>
-              <Form.Item>
-                <Button type="primary" htmlType="submit">
-                  确定申请支付
-                </Button>
-              </Form.Item>
-            </Form>
-          </div>
-        </Modal>
-      </div>
-    )
-  }
-}
-
-export default CheckProject

+ 0 - 29
js/component/manageCenter/order/orderNew/checkProjectStyle.less

@@ -1,29 +0,0 @@
-.App {
-  padding-top: 10px;
-
-  .thirdParty {
-    padding: 20px 20px 0px 20px;
-  }
-
-  .projectType {
-    display: flex;
-    flex-flow: row nowrap;
-    border-bottom: 1px #000000 dashed;
-    padding-left: 20px;
-
-    .typeTitle {
-      display: flex;
-      flex-flow: row nowrap;
-      align-items: center;
-      padding-right: 15px;
-
-      .required {
-        color: #F00;
-      }
-    }
-
-    .tipsText {
-      color: #F00;
-    }
-  }
-}

+ 3 - 2
js/component/manageCenter/order/orderNew/outsourcingPro.jsx

@@ -34,7 +34,7 @@ import "./customer.less";
 import ShowModalDiv from "@/showModal.jsx";
 import ResolutionDetail from "@/resolutionDetail";
 const confirm = Modal.confirm;
-import CheckProject from './checkProject'
+import CheckProject from '../../components/checkProject'
 import OrderRiZi from "@/orderRiZi.jsx";
 //图片组件
 const PicturesWall = React.createClass({
@@ -1857,7 +1857,7 @@ const outsourcingPro = Form.create()(
                                 span={24}
                                 offset={9}
                                 style={{ marginTop: "15px" }}
-                              ></Col>
+                              />
                             </Form>
                           </Spin>
                         </div>
@@ -1869,6 +1869,7 @@ const outsourcingPro = Form.create()(
                   <Spin spinning={this.state.loading}>
                     <CheckProject
                         {...this.props}
+                        tid={this.state.tid}
                         thirdInfoList={this.state.thirdInfoList}
                         dataSource={this.state.payNodeList}
                         outsourceRemarks={this.state.outsourceRemarks}

+ 0 - 516
js/component/manageCenter/project/task/checkProject.jsx

@@ -1,516 +0,0 @@
-import React, { Component } from 'react'
-import {
-  Form,
-  Spin,
-  Table,
-  Modal,
-  Radio,
-  Col,
-  Upload,
-  Input,
-  Button,
-} from 'antd'
-import { getMaterialStatus, getUrgentStatus } from '@/tools'
-import './checkProjectStyle.less'
-
-const radioGroupStyle = {
-  display: 'flex',
-  flexFlow: 'row nowrap',
-  alignItems: 'flex-start',
-  flex: 1,
-}
-
-const layout = {
-  labelCol: {
-    span: 8,
-  },
-  wrapperCol: {
-    span: 16,
-  },
-};
-
-const tailLayout = {
-  wrapperCol: {
-    offset: 8,
-    span: 16,
-  },
-};
-
-const radioStyle = {
-  display: 'flex',
-  flexFlow: 'row nowrap',
-}
-
-const FormItem = Form.Item
-
-class CheckProject extends Component {
-  constructor(props) {
-    super(props)
-    this.state = {
-      value: '',
-      loading: false,
-      previewImage: '',
-      previewVisible: false,
-      previewPayVisible: false,
-      // 专利
-      ContactsListsNew: [
-        {
-          title: '供应商名称',
-          dataIndex: 'companyName',
-          key: 'companyName',
-          render: (text, record, index) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '单价(万元)',
-          dataIndex: 'unitPrice',
-          key: 'unitPrice',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '数量',
-          dataIndex: 'quantity',
-          key: 'quantity',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '总价(万元)',
-          dataIndex: 'totalAmount',
-          key: 'totalAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '材料',
-          dataIndex: 'material',
-          key: 'material',
-          render: (text, record) => {
-            return getMaterialStatus(text)
-          },
-        },
-        {
-          title: '加急',
-          dataIndex: 'urgent',
-          key: 'urgent',
-          render: (text, record) => {
-            return getUrgentStatus(text)
-          },
-        },
-        {
-          title: '操作',
-          dataIndex: 'action',
-          key: 'action',
-          render: (text, record) => {
-            return (
-              <div>
-                <Button type="primary" onClick={() => {
-                  this.setState({
-                    previewPayVisible: true
-                  })
-                }}>
-                  申请付款
-                </Button>
-              </div>
-            )
-          },
-        },
-      ],
-      //付款节点表头
-      PayNodeTableColunms: [
-        {
-          title: '供应商名称',
-          dataIndex: 'companyName',
-          key: 'companyName',
-          render: (text, record, index) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款科目',
-          dataIndex: 'dunType',
-          key: 'dunType',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款时间',
-          dataIndex: 'partyTimes',
-          key: 'partyTimes',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '数量',
-          dataIndex: 'quantity',
-          key: 'quantity',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '总价(万元)',
-          dataIndex: 'totalAmount',
-          key: 'totalAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-        {
-          title: '付款(万元)',
-          dataIndex: 'partyAmount',
-          key: 'partyAmount',
-          render: (text, record) => {
-            if (text) {
-              return <span>{text}</span>
-            }
-          },
-        },
-      ],
-    }
-  }
-
-  onChange() {
-    this.setState({
-      value: e.target.value,
-    })
-  }
-
-  tableRowClickOne(record) {}
-
-  //点击付款节点详情
-  payNodeTableRowClickOne(record) {}
-
-  //第三方信息 新增支付
-  addOrderPayment(id) {
-    $.ajax({
-      method: 'POST',
-      dataType: 'json',
-      crossDomain: false,
-      url: globalConfig.context + '/api/admin/company/addOrderPayment',
-      data: {},
-    }).done(
-      function (data) {
-        this.setState({
-          loading: false,
-        })
-        if (!data.error.length) {
-          message.success('保存成功!')
-          this.noCancel()
-        } else {
-          message.warning(data.error[0].message)
-        }
-      }.bind(this)
-    )
-  }
-
-  handleSubmit(e){
-    e.preventDefault();
-    console.log('Success:',this.props.form);
-  }
-
-  render() {
-    return (
-      <div className="App">
-        <div className="projectType">
-          <div className="typeTitle">
-            <div className="required">*</div>
-            <div>类型:</div>
-          </div>
-          <Radio.Group style={radioGroupStyle} value={this.props.startType}>
-            <Radio value={0} style={radioStyle}>
-              <div>
-                <div>供应商信息(外包派单,不走总部)</div>
-                <div className="tipsText">提示高于总部价格,费用个人承担</div>
-              </div>
-            </Radio>
-            <Radio value={1} style={radioStyle}>
-              供应商信息(普通单)
-            </Radio>
-          </Radio.Group>
-        </div>
-        <div className="thirdParty">
-          <div>
-            <span
-              style={{
-                fontSize: '18px',
-              }}
-            >
-              第三方信息
-            </span>
-          </div>
-          <div
-            className="clearfix"
-            style={
-              {
-                // display: this.state.type == 1 ? 'block' : 'block',
-              }
-            }
-          >
-            <Spin spinning={this.state.loading}>
-              <Form layout="horizontal">
-                <Table
-                  pagination={false}
-                  columns={this.state.ContactsListsNew}
-                  dataSource={this.props.thirdInfoList}
-                  onRowClick={this.tableRowClickOne}
-                  scroll={{ x: 'max-content', y: 0 }}
-                  bordered
-                  size="small"
-                />
-                <Col span={24} offset={9} style={{ marginTop: '15px' }}></Col>
-              </Form>
-            </Spin>
-          </div>
-        </div>
-        <div className="thirdParty">
-          <div>
-            <span
-              style={{
-                fontSize: '18px',
-              }}
-            >
-              付款节点
-            </span>
-          </div>
-          <div
-            className="clearfix"
-            style={
-              {
-                // display: this.state.type == 1 ? 'block' : 'block',
-              }
-            }
-          >
-            <Spin spinning={this.state.loading}>
-              <Form layout="horizontal">
-                <Table
-                  pagination={false}
-                  columns={this.state.PayNodeTableColunms}
-                  dataSource={this.props.dataSource}
-                  onRowClick={this.payNodeTableRowClickOne}
-                  scroll={{ x: 'max-content', y: 0 }}
-                  bordered
-                  size="small"
-                />
-                <Col span={24} offset={9} style={{ marginTop: '15px' }}></Col>
-              </Form>
-            </Spin>
-          </div>
-        </div>
-        <div
-          style={{
-            borderTop: '1px #000000 dashed',
-            paddingTop: '20px',
-          }}
-        >
-          <Form.Item
-            labelCol={{ span: 2 }}
-            wrapperCol={{ span: 8 }}
-            labelAlign="left"
-            label="备注"
-          >
-            <Input
-              type="textarea"
-              placeholder="请输入备注"
-              rows={4}
-              value={this.props.outsourceRemarks}
-            />
-          </Form.Item>
-        </div>
-        <div className="clearfix">
-          <FormItem
-            labelCol={{ span: 3 }}
-            wrapperCol={{ span: 18 }}
-            label="合同/协议扫描件"
-            labelAlign='left'
-          >
-            <Upload
-              className="demandDetailShow-upload"
-              listType="picture-card"
-              fileList={this.props.fileList}
-              onPreview={(file) => {
-                this.setState({
-                  previewImage: file.url || file.thumbUrl,
-                  previewVisible: true,
-                })
-              }}
-            />
-            <Modal
-              maskClosable={false}
-              footer={null}
-              visible={this.state.previewVisible}
-              onCancel={() => {
-                this.setState({ previewVisible: false })
-              }}
-            >
-              <img
-                alt=""
-                style={{ width: '100%' }}
-                src={this.state.previewImage || ''}
-              />
-            </Modal>
-          </FormItem>
-        </div>
-        {/* 申请付款 */}
-        <Modal
-          maskClosable={false}
-          footer={null}
-          visible={this.state.previewPayVisible}
-          onCancel={() => {
-            this.setState({ previewPayVisible: false })
-          }}
-        >
-          <div>
-            <div>支付供应商费用</div>
-            <Form
-                {...layout}
-                name="basic"
-                initialValues={{
-                  remember: true,
-                }}
-                onSubmit={this.handleSubmit}
-            >
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="付款单位/个人:"
-                  name="company"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入付款单位/个人!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入付款单位/个人"/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="单价(万元):"
-                  name="unitPrice"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入单价!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="数量:"
-                  name="num"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入數量!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入數量" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="总价(万元):"
-                  name="totalPrice"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入总价!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入总价" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="已付(万元):"
-                  name="paid"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入已付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入已付金额" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="本次申请支付金额(万元):"
-                  name="payment"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入本次申请支付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额(" type={'number'}/>
-              </Form.Item>
-              <Form.Item
-                  style={{
-                    display:'flex'
-                  }}
-                  label="备注:"
-                  name="remarks"
-                  rules={[
-                    {
-                      required: true,
-                      message: '请输入本次申请支付金额!',
-                    },
-                  ]}
-              >
-                <Input style={{ width: '200px' }} placeholder="请输入本次申请支付金额(" type={'textarea'}/>
-              </Form.Item>
-              <Form.Item>
-                <Button type="primary" htmlType="submit">
-                  确定申请支付
-                </Button>
-              </Form.Item>
-            </Form>
-          </div>
-        </Modal>
-      </div>
-    )
-  }
-}
-
-export default CheckProject

+ 0 - 24
js/component/manageCenter/project/task/checkProjectStyle.css

@@ -1,24 +0,0 @@
-.App {
-  padding-top: 10px;
-}
-.App .thirdParty {
-  padding: 20px;
-}
-.App .projectType {
-  display: flex;
-  flex-flow: row nowrap;
-  border-bottom: 1px #000000 dashed;
-  padding-left: 20px;
-}
-.App .projectType .typeTitle {
-  display: flex;
-  flex-flow: row nowrap;
-  align-items: center;
-  padding-right: 15px;
-}
-.App .projectType .typeTitle .required {
-  color: #F00;
-}
-.App .projectType .tipsText {
-  color: #F00;
-}

+ 4 - 1
js/component/manageCenter/project/task/myTask.jsx

@@ -48,7 +48,7 @@ import {
 import { taskStatus, projectStatus, cuiJieDian } from '@/dataDic.js'
 import ShowModalDiv from '@/showModal.jsx'
 
-import CheckProject from './CheckProject'
+import CheckProject from '../../components/checkProject'
 
 const confirm = Modal.confirm
 const FormItem = Form.Item
@@ -3866,6 +3866,9 @@ const Task = React.createClass({
               ) : (
                 <CheckProject
                   {...this.props}
+                  tid={this.state.tid}
+                  status={this.state.refundStatus}
+                  isPreviewPay={true}
                   thirdInfoList={this.state.thirdInfoList}
                   dataSource={this.state.payNodeList}
                   outsourceRemarks={this.state.outsourceRemarks}

+ 325 - 312
webpack.config.js

@@ -1,345 +1,358 @@
-const webpack = require('webpack');
-const path = require('path');
-const ExtractTextPlugin = require("extract-text-webpack-plugin");
-const HtmlWebpackPlugin = require('html-webpack-plugin');
-const CopyWebpackPlugin = require('copy-webpack-plugin');
-const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin');
-const WebpackDevServer = require('webpack-dev-server');
-const entries = require('./webpack/entry.config.js');
-const version = require('./package.json').version;
-const argv = require('yargs').argv;
-const dirVars = require('./webpack/dir.config.js');
+const webpack = require('webpack')
+const path = require('path')
+const ExtractTextPlugin = require('extract-text-webpack-plugin')
+const HtmlWebpackPlugin = require('html-webpack-plugin')
+const CopyWebpackPlugin = require('copy-webpack-plugin')
+const HtmlWebpackIncludeAssetsPlugin = require('html-webpack-include-assets-plugin')
+const WebpackDevServer = require('webpack-dev-server')
+const entries = require('./webpack/entry.config.js')
+const version = require('./package.json').version
+const argv = require('yargs').argv
+const dirVars = require('./webpack/dir.config.js')
 
 let theme = {
     '@primary-color': '#58a3ff',
-    '@link-color': '#58a3ff'
-};
-let isWatch = argv.env.watch == 'watch';
-let isDev = isWatch || argv.env.deploy == 'dev';
+    '@link-color': '#58a3ff',
+}
+let isWatch = argv.env.watch == 'watch'
+let isDev = isWatch || argv.env.deploy == 'dev'
 
-process.traceDeprecation = true;
-process.noDeprecation = true;
+process.traceDeprecation = true
+process.noDeprecation = true
 
 module.exports = (function () {
-    let jumlApi = '';
+    let jumlApi = ''
     switch (argv.env.deploy) {
-        case 'dev': jumlApi = "http://sb.jishutao.com"; break;
-        case 'test': jumlApi = "http://uat.jishutao.com"; break;
-        case 'prod': jumlApi = "http://bm.jishutao.com"; break;
+        case 'dev':
+            jumlApi = 'http://sb.jishutao.com'
+            break
+        case 'test':
+            jumlApi = 'http://uat.jishutao.com'
+            break
+        case 'prod':
+            jumlApi = 'http://bm.jishutao.com'
+            break
         default:
-            break;
+            break
     }
     let plugins = [
-      //把入口文件里面的数组打包成verdors.js
-      new webpack.optimize.CommonsChunkPlugin({
-        name: "vendors",
-      }),
-      /* 配置好Dll */
-      new webpack.DllReferencePlugin({
-        context: dirVars.staticRootDir, // 指定一个路径作为上下文环境,需要与DllPlugin的context参数保持一致,建议统一设置为项目根目录
-        manifest: require("./dll/" + argv.env.deploy + "/manifest.json"), // 指定manifest.json
-      }),
-      // 把dll文件复制到打包后的文件中
-      new CopyWebpackPlugin([
-        {
-          from: path.resolve("./dll/" + argv.env.deploy),
-          to: (__dirname, "./dll/"),
-          ignore: [".*"],
-        },
-      ]),
-      // 将 dll.js 插入HTML里
-      new HtmlWebpackIncludeAssetsPlugin({
-        assets: [(__dirname, "dll/dll.js"), (__dirname, "dll/dll.css")],
-        append: false,
-      }),
-      new ExtractTextPlugin({
-        filename: "[name].css",
-        disable: false,
-        allChunks: true,
-      }),
-      //定义全局变量区分本地测试生产做跳转
-      new webpack.DefinePlugin({
-        jumpUrl: `'${jumlApi}'`,
-      }),
-      //user
-      new HtmlWebpackPlugin({
-        title: "用户首页",
-        filename: "user/index.html",
-        template: "./template/template.html",
-        chunks: ["user/index", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户登录",
-        filename: "user/login.html",
-        template: "./template/template.html",
-        chunks: ["user/login", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户注册",
-        filename: "user/signIn.html",
-        template: "./template/template.html",
-        chunks: ["user/signIn", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "个人用户认证",
-        filename: "user/certify.html",
-        template: "./template/template.html",
-        chunks: ["user/certify", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "团体用户认证",
-        filename: "user/groupCertify.html",
-        template: "./template/template.html",
-        chunks: ["user/groupCertify", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户详情",
-        filename: "user/subscriberDetail.html",
-        template: "./template/template.html",
-        chunks: ["user/subscriberDetail", "vendors"],
-      }),
-      //user-account
-      new HtmlWebpackPlugin({
-        title: "用户中心-首页",
-        filename: "user/account/index.html",
-        template: "./template/template.html",
-        chunks: ["user/account/index", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户中心-设置",
-        filename: "user/account/set.html",
-        template: "./template/template.html",
-        chunks: ["user/account/set", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户中心-科技服务",
-        filename: "user/account/services.html",
-        template: "./template/template.html",
-        chunks: ["user/account/services", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户中心-科技服务",
-        filename: "user/account/achievement.html",
-        template: "./template/template.html",
-        chunks: ["user/account/achievement", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "用户中心-科技服务",
-        filename: "user/account/demand.html",
-        template: "./template/template.html",
-        chunks: ["user/account/demand", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-科技评估信息",
-        filename: "user/account/evaluateInfo.html",
-        template: "./template/template.html",
-        chunks: ["user/account/evaluateInfo", "vendors"],
-      }),
-      //admin
-      new HtmlWebpackPlugin({
-        title: "管理员-首页",
-        filename: "admin/index.html",
-        template: "./template/template.html",
-        chunks: ["admin/index", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-登录",
-        filename: "admin/login.html",
-        template: "./template/template.html",
-        chunks: ["admin/login", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-用户管理",
-        filename: "admin/userManage.html",
-        template: "./template/template.html",
-        chunks: ["admin/userManage", "vendors"],
-      }),
-      //admin-servicesManage
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-专利",
-        filename: "admin/servicesManage/contract.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/contract", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-专利",
-        filename: "admin/servicesManage/patent.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/patent", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-软著",
-        filename: "admin/servicesManage/copyright.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/copyright", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-高企",
-        filename: "admin/servicesManage/highTech.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/highTech", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-高企信息",
-        filename: "admin/servicesManage/highTechInfo.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/highTechInfo", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-科技",
-        filename: "admin/servicesManage/technology.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/technology", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-科技服务管理-项目单",
-        filename: "admin/servicesManage/projectOrder.html",
-        template: "./template/template.html",
-        chunks: ["admin/servicesManage/projectOrder", "vendors"],
-      }),
-      //admin-demand
-      new HtmlWebpackPlugin({
-        title: "管理员-用户管理",
-        filename: "admin/demand.html",
-        template: "./template/template.html",
-        chunks: ["admin/demand", "vendors"],
-      }),
-      //admin-achievement
-      new HtmlWebpackPlugin({
-        title: "管理员-用户管理",
-        filename: "admin/achievement.html",
-        template: "./template/template.html",
-        chunks: ["admin/achievement", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-用户管理",
-        filename: "admin/customer.html",
-        template: "./template/template.html",
-        chunks: ["admin/customer", "vendors"],
-      }),
-      //admin-set
-      new HtmlWebpackPlugin({
-        title: "管理员-用户管理",
-        filename: "admin/set.html",
-        template: "./template/template.html",
-        chunks: ["admin/set", "vendors"],
-      }),
-      //admin-idea
-      new HtmlWebpackPlugin({
-        title: "管理员-财务管理",
-        filename: "admin/idea.html",
-        template: "./template/template.html",
-        chunks: ["admin/idea", "vendors"],
-      }),
-      //admin-userOrder
-      new HtmlWebpackPlugin({
-        title: "管理员-用户订单管理",
-        filename: "admin/userOrder.html",
-        template: "./template/template.html",
-        chunks: ["admin/userOrder", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-订单管理",
-        filename: "admin/order.html",
-        template: "./template/template.html",
-        chunks: ["admin/order", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-平台管理",
-        filename: "admin/operate.html",
-        template: "./template/template.html",
-        chunks: ["admin/operate", "vendors"],
-      }), //statistics
-      new HtmlWebpackPlugin({
-        title: "管理员-数据统计",
-        filename: "admin/statistics.html",
-        template: "./template/template.html",
-        chunks: ["admin/statistics", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-项目管理",
-        filename: "admin/project.html",
-        template: "./template/template.html",
-        chunks: ["admin/project", "vendors"],
-      }),
-      new HtmlWebpackPlugin({
-        title: "管理员-人事管理",
-        filename: "admin/personnel.html",
-        template: "./template/template.html",
-        chunks: ["admin/personnel", "vendors"],
-      }),
-      //portal 门户
-      // new HtmlWebpackPlugin({
-      //     title: '主页-需求搜索',
-      //     filename: 'portal/search/demand.html',
-      //     template: './template/template.html',
-      //     chunks: ['portal/search/demand', 'vendors']
-      // }),
-      // new HtmlWebpackPlugin({
-      //     title: '主页-科技成果搜索',
-      //     filename: 'portal/search/achievement.html',
-      //     template: './template/template.html',
-      //     chunks: ['portal/search/achievement', 'vendors']
-      // }),
-      // new HtmlWebpackPlugin({
-      //     title: '主页-行家搜索',
-      //     filename: 'portal/search/subscriberUser.html',
-      //     template: './template/template.html',
-      //     chunks: ['portal/search/subscriberUser', 'vendors']
-      // }),
-      // new HtmlWebpackPlugin({
-      //     title: '主页-伙伴搜索',
-      //     filename: 'portal/search/subscriberOrg.html',
-      //     template: './template/template.html',
-      //     chunks: ['portal/search/subscriberOrg', 'vendors']
-      // })
-    ];
+        //把入口文件里面的数组打包成verdors.js
+        new webpack.optimize.CommonsChunkPlugin({
+            name: 'vendors',
+        }),
+        /* 配置好Dll */
+        new webpack.DllReferencePlugin({
+            context: dirVars.staticRootDir, // 指定一个路径作为上下文环境,需要与DllPlugin的context参数保持一致,建议统一设置为项目根目录
+            manifest: require('./dll/' + argv.env.deploy + '/manifest.json'), // 指定manifest.json
+        }),
+        // 把dll文件复制到打包后的文件中
+        new CopyWebpackPlugin([
+            {
+                from: path.resolve('./dll/' + argv.env.deploy),
+                to: (__dirname, './dll/'),
+                ignore: ['.*'],
+            },
+        ]),
+        // 将 dll.js 插入HTML里
+        new HtmlWebpackIncludeAssetsPlugin({
+            assets: [(__dirname, 'dll/dll.js'), (__dirname, 'dll/dll.css')],
+            append: false,
+        }),
+        new ExtractTextPlugin({
+            filename: '[name].css',
+            disable: false,
+            allChunks: true,
+        }),
+        //定义全局变量区分本地测试生产做跳转
+        new webpack.DefinePlugin({
+            jumpUrl: `'${jumlApi}'`,
+        }),
+        //user
+        new HtmlWebpackPlugin({
+            title: '用户首页',
+            filename: 'user/index.html',
+            template: './template/template.html',
+            chunks: ['user/index', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户登录',
+            filename: 'user/login.html',
+            template: './template/template.html',
+            chunks: ['user/login', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户注册',
+            filename: 'user/signIn.html',
+            template: './template/template.html',
+            chunks: ['user/signIn', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '个人用户认证',
+            filename: 'user/certify.html',
+            template: './template/template.html',
+            chunks: ['user/certify', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '团体用户认证',
+            filename: 'user/groupCertify.html',
+            template: './template/template.html',
+            chunks: ['user/groupCertify', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户详情',
+            filename: 'user/subscriberDetail.html',
+            template: './template/template.html',
+            chunks: ['user/subscriberDetail', 'vendors'],
+        }),
+        //user-account
+        new HtmlWebpackPlugin({
+            title: '用户中心-首页',
+            filename: 'user/account/index.html',
+            template: './template/template.html',
+            chunks: ['user/account/index', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户中心-设置',
+            filename: 'user/account/set.html',
+            template: './template/template.html',
+            chunks: ['user/account/set', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户中心-科技服务',
+            filename: 'user/account/services.html',
+            template: './template/template.html',
+            chunks: ['user/account/services', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户中心-科技服务',
+            filename: 'user/account/achievement.html',
+            template: './template/template.html',
+            chunks: ['user/account/achievement', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '用户中心-科技服务',
+            filename: 'user/account/demand.html',
+            template: './template/template.html',
+            chunks: ['user/account/demand', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-科技评估信息',
+            filename: 'user/account/evaluateInfo.html',
+            template: './template/template.html',
+            chunks: ['user/account/evaluateInfo', 'vendors'],
+        }),
+        //admin
+        new HtmlWebpackPlugin({
+            title: '管理员-首页',
+            filename: 'admin/index.html',
+            template: './template/template.html',
+            chunks: ['admin/index', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-登录',
+            filename: 'admin/login.html',
+            template: './template/template.html',
+            chunks: ['admin/login', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-用户管理',
+            filename: 'admin/userManage.html',
+            template: './template/template.html',
+            chunks: ['admin/userManage', 'vendors'],
+        }),
+        //admin-servicesManage
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-专利',
+            filename: 'admin/servicesManage/contract.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/contract', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-专利',
+            filename: 'admin/servicesManage/patent.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/patent', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-软著',
+            filename: 'admin/servicesManage/copyright.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/copyright', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-高企',
+            filename: 'admin/servicesManage/highTech.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/highTech', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-高企信息',
+            filename: 'admin/servicesManage/highTechInfo.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/highTechInfo', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-科技',
+            filename: 'admin/servicesManage/technology.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/technology', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-科技服务管理-项目单',
+            filename: 'admin/servicesManage/projectOrder.html',
+            template: './template/template.html',
+            chunks: ['admin/servicesManage/projectOrder', 'vendors'],
+        }),
+        //admin-demand
+        new HtmlWebpackPlugin({
+            title: '管理员-用户管理',
+            filename: 'admin/demand.html',
+            template: './template/template.html',
+            chunks: ['admin/demand', 'vendors'],
+        }),
+        //admin-achievement
+        new HtmlWebpackPlugin({
+            title: '管理员-用户管理',
+            filename: 'admin/achievement.html',
+            template: './template/template.html',
+            chunks: ['admin/achievement', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-用户管理',
+            filename: 'admin/customer.html',
+            template: './template/template.html',
+            chunks: ['admin/customer', 'vendors'],
+        }),
+        //admin-set
+        new HtmlWebpackPlugin({
+            title: '管理员-用户管理',
+            filename: 'admin/set.html',
+            template: './template/template.html',
+            chunks: ['admin/set', 'vendors'],
+        }),
+        //admin-idea
+        new HtmlWebpackPlugin({
+            title: '管理员-财务管理',
+            filename: 'admin/idea.html',
+            template: './template/template.html',
+            chunks: ['admin/idea', 'vendors'],
+        }),
+        //admin-userOrder
+        new HtmlWebpackPlugin({
+            title: '管理员-用户订单管理',
+            filename: 'admin/userOrder.html',
+            template: './template/template.html',
+            chunks: ['admin/userOrder', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-订单管理',
+            filename: 'admin/order.html',
+            template: './template/template.html',
+            chunks: ['admin/order', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-平台管理',
+            filename: 'admin/operate.html',
+            template: './template/template.html',
+            chunks: ['admin/operate', 'vendors'],
+        }), //statistics
+        new HtmlWebpackPlugin({
+            title: '管理员-数据统计',
+            filename: 'admin/statistics.html',
+            template: './template/template.html',
+            chunks: ['admin/statistics', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-项目管理',
+            filename: 'admin/project.html',
+            template: './template/template.html',
+            chunks: ['admin/project', 'vendors'],
+        }),
+        new HtmlWebpackPlugin({
+            title: '管理员-人事管理',
+            filename: 'admin/personnel.html',
+            template: './template/template.html',
+            chunks: ['admin/personnel', 'vendors'],
+        }),
+        //portal 门户
+        // new HtmlWebpackPlugin({
+        //     title: '主页-需求搜索',
+        //     filename: 'portal/search/demand.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/demand', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-科技成果搜索',
+        //     filename: 'portal/search/achievement.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/achievement', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-行家搜索',
+        //     filename: 'portal/search/subscriberUser.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/subscriberUser', 'vendors']
+        // }),
+        // new HtmlWebpackPlugin({
+        //     title: '主页-伙伴搜索',
+        //     filename: 'portal/search/subscriberOrg.html',
+        //     template: './template/template.html',
+        //     chunks: ['portal/search/subscriberOrg', 'vendors']
+        // })
+    ]
     if (!isDev) {
         //这个使用uglifyJs压缩你的js代码
-        plugins.unshift(new webpack.DefinePlugin({
-            "process.env": {
-                NODE_ENV: JSON.stringify("production")
-            }
-        }));
-        plugins.unshift(new webpack.optimize.UglifyJsPlugin({
-            minimize: true,
-            compress: {
-                warnings: true
-            }
-        }));
+        plugins.unshift(
+            new webpack.DefinePlugin({
+                'process.env': {
+                    NODE_ENV: JSON.stringify('production'),
+                },
+            })
+        )
+        plugins.unshift(
+            new webpack.optimize.UglifyJsPlugin({
+                minimize: true,
+                compress: {
+                    warnings: true,
+                },
+            })
+        )
     }
 
     //let staticHost = 'http://afts.hnzhiming.com';
-    let staticHost = "http://172.16.0.254";
+    let staticHost = 'http://172.16.0.253:3000'
     // let staticHost = "http://192.168.0.106";
     // let staticHost = "http://192.168.0.103";
     switch (argv.env.deploy) {
         case 'test':
-            staticHost = "http://static.jishutao.com";
-            break;
+            staticHost = 'http://static.jishutao.com'
+            break
         case 'prod':
-            staticHost = "http://s.jishutao.com";
-            break;
+            staticHost = 'http://s.jishutao.com'
+            break
         default:
-            break;
+            break
     }
-    staticHost = staticHost + '/' + version + '/';
+    staticHost = staticHost + '/' + version + '/'
     theme['@icon-url'] = '"' + staticHost + 'css/iconfont/iconfont"'
     return {
         //devtool:"source-map",
         entry: isWatch ? entries.watch : entries.prod,
         output: {
-            path: path.resolve(__dirname, './build/' + argv.env.deploy + '/' + version),
+            path: path.resolve(
+                __dirname,
+                './build/' + argv.env.deploy + '/' + version
+            ),
             filename: '[name].js',
             publicPath: staticHost,
-            chunkFilename: 'chunks/[name].[hash:8].js'
+            chunkFilename: 'chunks/[name].[hash:8].js',
         },
         module: require('./webpack/module.config.js')(theme),
         resolve: {
             alias: {
                 '@': __dirname + '/js/component',
             },
-            extensions: ['.js', '.jsx']
+            extensions: ['.js', '.jsx'],
         },
         plugins: plugins,
         // devServer: {
@@ -355,8 +368,8 @@ module.exports = (function () {
             port: 3000,
             allowedHosts: ['127.0.0.1', '192.168.0.20', '192.168.0.99'],
             headers: {
-                "Access-Control-Allow-Origin": "*"
-            }
-        }
-    };
-})();
+                'Access-Control-Allow-Origin': '*',
+            },
+        },
+    }
+})()

+ 47 - 364
yarn.lock

@@ -45,11 +45,6 @@
     "@types/prop-types" "*"
     csstype "^2.2.0"
 
-abab@^1.0.0:
-  version "1.0.4"
-  resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
-  integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=
-
 abbrev@1:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@@ -70,18 +65,6 @@ acorn-dynamic-import@^2.0.0:
   dependencies:
     acorn "^4.0.3"
 
-acorn-globals@^1.0.4:
-  version "1.0.9"
-  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf"
-  integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=
-  dependencies:
-    acorn "^2.1.0"
-
-acorn@^2.1.0, acorn@^2.4.0:
-  version "2.7.0"
-  resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7"
-  integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=
-
 acorn@^4.0.3:
   version "4.0.13"
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787"
@@ -135,7 +118,7 @@ ajv@^5.0.0:
     fast-json-stable-stringify "^2.0.0"
     json-schema-traverse "^0.3.0"
 
-ajv@^6.1.0, ajv@^6.5.5:
+ajv@^6.1.0:
   version "6.10.2"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52"
   integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==
@@ -282,11 +265,6 @@ arr-union@^3.1.0:
   resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
   integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
 
-array-equal@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
-  integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
-
 array-find-index@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
@@ -430,12 +408,7 @@ aws-sign2@~0.6.0:
   resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
   integrity sha1-FDQt0428yU0OW4fXY81jYSwOeU8=
 
-aws-sign2@~0.7.0:
-  version "0.7.0"
-  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
-  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
-
-aws4@^1.2.1, aws4@^1.8.0:
+aws4@^1.2.1:
   version "1.8.0"
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
   integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
@@ -999,11 +972,6 @@ base62@^1.1.0:
   resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.8.tgz#1264cb0fb848d875792877479dbe8bae6bae3428"
   integrity sha512-V6YHUbjLxN1ymqNLb1DPHoU1CpfdL7d2YTIp5W3U4hhoG4hhxNmsFDs66M9EXxBiSEke5Bt5dwdfMwwZF70iLA==
 
-base64-arraybuffer@^0.1.5:
-  version "0.1.5"
-  resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
-  integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg=
-
 base64-js@^1.0.2:
   version "1.3.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
@@ -1319,16 +1287,6 @@ caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
   resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000996.tgz#bf37e65ebd994c503280892090427fbe991339d9"
   integrity sha512-WvzxMtKe5CCBUaTVBM/EjsoFXJf6f/2s17BlWeZMhc5DSP7d9QjAZe5vdZp3T3fjxtGkJbg5W24bnRAdz9LVIw==
 
-canvg@1.5.3:
-  version "1.5.3"
-  resolved "https://registry.yarnpkg.com/canvg/-/canvg-1.5.3.tgz#aad17915f33368bf8eb80b25d129e3ae922ddc5f"
-  integrity sha512-7Gn2IuQzvUQWPIuZuFHrzsTM0gkPz2RRT9OcbdmA03jeKk8kltrD8gqUzNX15ghY/4PV5bbe5lmD6yDLDY6Ybg==
-  dependencies:
-    jsdom "^8.1.0"
-    rgbcolor "^1.0.1"
-    stackblur-canvas "^1.4.1"
-    xmldom "^0.1.22"
-
 caseless@~0.12.0:
   version "0.12.0"
   resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
@@ -1539,7 +1497,7 @@ colors@~1.1.2:
   resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
   integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
 
-combined-stream@^1.0.5, combined-stream@^1.0.6, combined-stream@~1.0.5, combined-stream@~1.0.6:
+combined-stream@^1.0.5, combined-stream@~1.0.5:
   version "1.0.8"
   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
   integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
@@ -1825,13 +1783,6 @@ css-color-names@0.0.4:
   resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
   integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
 
-css-line-break@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/css-line-break/-/css-line-break-1.0.1.tgz#19f2063a33e95fb2831b86446c0b80c188af450a"
-  integrity sha1-GfIGOjPpX7KDG4ZEbAuAwYivRQo=
-  dependencies:
-    base64-arraybuffer "^0.1.5"
-
 css-loader@^0.26.2:
   version "0.26.4"
   resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.26.4.tgz#b61e9e30db94303e6ffc892f10ecd09ad025a1fd"
@@ -1925,18 +1876,6 @@ csso@~2.3.1:
     clap "^1.0.9"
     source-map "^0.5.3"
 
-cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0":
-  version "0.3.8"
-  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
-  integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
-
-"cssstyle@>= 0.2.34 < 0.3.0":
-  version "0.2.37"
-  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54"
-  integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=
-  dependencies:
-    cssom "0.3.x"
-
 csstype@^2.2.0:
   version "2.6.6"
   resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.6.tgz#c34f8226a94bbb10c32cc0d714afdf942291fc41"
@@ -2014,11 +1953,6 @@ deep-extend@^0.6.0:
   resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
   integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
 
-deep-is@~0.1.3:
-  version "0.1.3"
-  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
-  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
-
 define-properties@^1.1.2, define-properties@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
@@ -2155,9 +2089,9 @@ dns-txt@^2.0.2:
     buffer-indexof "^1.0.0"
 
 dom-align@^1.7.0:
-  version "1.10.2"
-  resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.10.2.tgz#540ea1c9e20462bd11b9fc28c561dc8351ece4c6"
-  integrity sha512-AYZUzLepy05E9bCY4ExoqHrrIlM49PEak9oF93JEFoibqKL0F7w5DLM70/rosLOawerWZ3MlepQcl+EmHskOyw==
+  version "1.12.0"
+  resolved "https://registry.yarnpkg.com/dom-align/-/dom-align-1.12.0.tgz#56fb7156df0b91099830364d2d48f88963f5a29c"
+  integrity sha512-YkoezQuhp3SLFGdOlr5xkqZ640iXrnHAwVYcDg8ZKRUtO7mSzSC2BA5V0VuyAwPSJA4CLIc6EDDJh4bEsD2+zA==
 
 dom-closest@^0.2.0:
   version "0.2.0"
@@ -2397,18 +2331,6 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
   resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
   integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
 
-escodegen@^1.6.1:
-  version "1.12.0"
-  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.12.0.tgz#f763daf840af172bb3a2b6dd7219c0e17f7ff541"
-  integrity sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==
-  dependencies:
-    esprima "^3.1.3"
-    estraverse "^4.2.0"
-    esutils "^2.0.2"
-    optionator "^0.8.1"
-  optionalDependencies:
-    source-map "~0.6.1"
-
 esprima-fb@^15001.1.0-dev-harmony-fb:
   version "15001.1.0-dev-harmony-fb"
   resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901"
@@ -2419,16 +2341,11 @@ esprima@^2.6.0:
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
   integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
 
-esprima@^3.1.3, esprima@~3.1.0:
+esprima@~3.1.0:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
   integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
 
-estraverse@^4.2.0:
-  version "4.3.0"
-  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
-  integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
-
 esutils@^2.0.2:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
@@ -2543,7 +2460,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2:
     assign-symbols "^1.0.0"
     is-extendable "^1.0.1"
 
-extend@^3.0.2, extend@~3.0.0, extend@~3.0.2:
+extend@^3.0.2, extend@~3.0.0:
   version "3.0.2"
   resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
   integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
@@ -2602,11 +2519,6 @@ fast-json-stable-stringify@^2.0.0:
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
   integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
 
-fast-levenshtein@~2.0.4:
-  version "2.0.6"
-  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
-  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-
 fastparse@^1.1.1:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
@@ -2646,10 +2558,6 @@ file-loader@^0.10.1:
   dependencies:
     loader-utils "^1.0.2"
 
-"file-saver@github:eligrey/FileSaver.js#1.3.8":
-  version "1.3.8"
-  resolved "https://codeload.github.com/eligrey/FileSaver.js/tar.gz/e865e37af9f9947ddcced76b549e27dc45c1cb2e"
-
 fill-range@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
@@ -2745,15 +2653,6 @@ form-data@~2.1.1:
     combined-stream "^1.0.5"
     mime-types "^2.1.12"
 
-form-data@~2.3.2:
-  version "2.3.3"
-  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
-  integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
-  dependencies:
-    asynckit "^0.4.0"
-    combined-stream "^1.0.6"
-    mime-types "^2.1.12"
-
 forwarded@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84"
@@ -2934,11 +2833,6 @@ har-schema@^1.0.5:
   resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
   integrity sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=
 
-har-schema@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
-  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-
 har-validator@~4.2.1:
   version "4.2.1"
   resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
@@ -2947,14 +2841,6 @@ har-validator@~4.2.1:
     ajv "^4.9.1"
     har-schema "^1.0.5"
 
-har-validator@~5.1.0:
-  version "5.1.3"
-  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
-  integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
-  dependencies:
-    ajv "^6.5.5"
-    har-schema "^2.0.0"
-
 has-ansi@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -3152,13 +3038,6 @@ html-webpack-plugin@^2.28.0:
     pretty-error "^2.0.2"
     toposort "^1.0.0"
 
-html2canvas@1.0.0-alpha.12:
-  version "1.0.0-alpha.12"
-  resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-1.0.0-alpha.12.tgz#3b1992e3c9b3f56063c35fd620494f37eba88513"
-  integrity sha1-OxmS48mz9WBjw1/WIElPN+uohRM=
-  dependencies:
-    css-line-break "1.0.1"
-
 html2canvas@^0.5.0-beta4:
   version "0.5.0-beta4"
   resolved "https://registry.yarnpkg.com/html2canvas/-/html2canvas-0.5.0-beta4.tgz#8282c62ac5fd78168f5702b5e4877157ca93f39e"
@@ -3246,21 +3125,12 @@ http-signature@~1.1.0:
     jsprim "^1.2.2"
     sshpk "^1.7.0"
 
-http-signature@~1.2.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
-  integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
-  dependencies:
-    assert-plus "^1.0.0"
-    jsprim "^1.2.2"
-    sshpk "^1.7.0"
-
 https-browserify@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
   integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
 
-iconv-lite@0.4.24, iconv-lite@^0.4.13, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13:
+iconv-lite@0.4.24, iconv-lite@^0.4.4, iconv-lite@^0.4.5, iconv-lite@~0.4.13:
   version "0.4.24"
   resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -3676,29 +3546,6 @@ jsbn@~0.1.0:
   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
   integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
 
-jsdom@^8.1.0:
-  version "8.5.0"
-  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-8.5.0.tgz#d4d8f5dbf2768635b62a62823b947cf7071ebc98"
-  integrity sha1-1Nj12/J2hjW2KmKCO5R89wcevJg=
-  dependencies:
-    abab "^1.0.0"
-    acorn "^2.4.0"
-    acorn-globals "^1.0.4"
-    array-equal "^1.0.0"
-    cssom ">= 0.3.0 < 0.4.0"
-    cssstyle ">= 0.2.34 < 0.3.0"
-    escodegen "^1.6.1"
-    iconv-lite "^0.4.13"
-    nwmatcher ">= 1.3.7 < 2.0.0"
-    parse5 "^1.5.1"
-    request "^2.55.0"
-    sax "^1.1.4"
-    symbol-tree ">= 3.1.0 < 4.0.0"
-    tough-cookie "^2.2.0"
-    webidl-conversions "^3.0.1"
-    whatwg-url "^2.0.1"
-    xml-name-validator ">= 2.0.1 < 3.0.0"
-
 jsesc@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
@@ -3770,18 +3617,6 @@ jsonify@~0.0.0:
   resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
   integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
 
-jspdf@^1.3.3:
-  version "1.5.3"
-  resolved "https://registry.yarnpkg.com/jspdf/-/jspdf-1.5.3.tgz#5a12c011479defabef5735de55c913060ed219f2"
-  integrity sha512-J9X76xnncMw+wIqb15HeWfPMqPwYxSpPY8yWPJ7rAZN/ZDzFkjCSZObryCyUe8zbrVRNiuCnIeQteCzMn7GnWw==
-  dependencies:
-    canvg "1.5.3"
-    file-saver eligrey/FileSaver.js#1.3.8
-    html2canvas "1.0.0-alpha.12"
-    omggif "1.0.7"
-    promise-polyfill "8.1.0"
-    stackblur-canvas "2.2.0"
-
 jsprim@^1.2.2:
   version "1.4.1"
   resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
@@ -3873,14 +3708,6 @@ less@^2.7.2:
     request "2.81.0"
     source-map "^0.5.3"
 
-levn@~0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
-  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
-  dependencies:
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-
 load-json-file@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -3983,7 +3810,12 @@ lodash.uniqby@^4.7.0:
   resolved "https://registry.yarnpkg.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302"
   integrity sha1-2ZwHpmnp5tJOE2Lf4mbGdhavEwI=
 
-lodash@^4.16.5, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.3, lodash@^4.17.4:
+lodash@^4.16.5:
+  version "4.17.20"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
+  integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
+
+lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.3, lodash@^4.17.4:
   version "4.17.15"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
   integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@@ -4140,7 +3972,7 @@ mime-db@1.40.0:
   resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.41.0.tgz#9110408e1f6aa1b34aef51f2c9df3caddf46b6a0"
   integrity sha512-B5gxBI+2K431XW8C2rcc/lhppbuji67nf9v39eH8pkWoZDxnAL0PxdpH32KYRScniF8qDHBDlI+ipgg5WrCUYw==
 
-mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.7:
+mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.7:
   version "2.1.24"
   resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81"
   integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==
@@ -4231,9 +4063,9 @@ mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
     minimist "0.0.8"
 
 moment@2.x, moment@^2.19.3:
-  version "2.24.0"
-  resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b"
-  integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==
+  version "2.27.0"
+  resolved "https://registry.yarnpkg.com/moment/-/moment-2.27.0.tgz#8bff4e3e26a236220dfe3e36de756b6ebaa0105d"
+  integrity sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==
 
 move-concurrently@^1.0.1:
   version "1.0.1"
@@ -4471,21 +4303,11 @@ number-is-nan@^1.0.0:
   resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
   integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
 
-"nwmatcher@>= 1.3.7 < 2.0.0":
-  version "1.4.4"
-  resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e"
-  integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==
-
 oauth-sign@~0.8.1:
   version "0.8.2"
   resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
   integrity sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=
 
-oauth-sign@~0.9.0:
-  version "0.9.0"
-  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
-  integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
-
 object-assign@4.x, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1, object-assign@~4.1.0:
   version "4.1.1"
   resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -4539,11 +4361,6 @@ obuf@^1.0.0, obuf@^1.1.2:
   resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
   integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
 
-omggif@1.0.7:
-  version "1.0.7"
-  resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.7.tgz#59d2eecb0263de84635b3feb887c0c9973f1e49d"
-  integrity sha1-WdLuywJj3oRjWz/riHwMmXPx5J0=
-
 omit.js@^1.0.0:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858"
@@ -4577,18 +4394,6 @@ opn@^5.1.0:
   dependencies:
     is-wsl "^1.1.0"
 
-optionator@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
-  integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
-  dependencies:
-    deep-is "~0.1.3"
-    fast-levenshtein "~2.0.4"
-    levn "~0.3.0"
-    prelude-ls "~1.1.2"
-    type-check "~0.3.2"
-    wordwrap "~1.0.0"
-
 original@>=0.0.5:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f"
@@ -4695,11 +4500,6 @@ parse-json@^2.2.0:
   dependencies:
     error-ex "^1.2.0"
 
-parse5@^1.5.1:
-  version "1.5.1"
-  resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94"
-  integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=
-
 parseurl@~1.3.2, parseurl@~1.3.3:
   version "1.3.3"
   resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
@@ -5131,11 +4931,6 @@ postcss@^6.0.1:
     source-map "^0.6.1"
     supports-color "^5.4.0"
 
-prelude-ls@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
-  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
-
 prepend-http@^1.0.0:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
@@ -5174,11 +4969,6 @@ promise-inflight@^1.0.1:
   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
   integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
 
-promise-polyfill@8.1.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.0.tgz#30059da54d1358ce905ac581f287e184aedf995d"
-  integrity sha512-OzSf6gcCUQ01byV4BgwyUCswlaQQ6gzXc23aLQWhicvfX9kfsUiUhgt3CCQej8jDnl8/PhGF31JdHX2/MzF3WA==
-
 promise@^7.1.1:
   version "7.3.1"
   resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf"
@@ -5213,11 +5003,6 @@ pseudomap@^1.0.2:
   resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
   integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
 
-psl@^1.1.24, psl@^1.1.28:
-  version "1.4.0"
-  resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2"
-  integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==
-
 public-encrypt@^4.0.0:
   version "4.0.3"
   resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
@@ -5257,7 +5042,7 @@ punycode@^1.2.4, punycode@^1.4.1:
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
   integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
 
-punycode@^2.1.0, punycode@^2.1.1:
+punycode@^2.1.0:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
   integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
@@ -5277,11 +5062,6 @@ qs@~6.4.0:
   resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
   integrity sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=
 
-qs@~6.5.2:
-  version "6.5.2"
-  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
-  integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
-
 query-string@^4.1.0, query-string@^4.2.2:
   version "4.3.4"
   resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
@@ -5374,16 +5154,16 @@ rc-align@2.x, rc-align@^2.4.0:
     rc-util "^4.0.4"
 
 rc-animate@2.x, rc-animate@^2.0.2, rc-animate@^2.3.0, rc-animate@^2.4.1:
-  version "2.10.0"
-  resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.10.0.tgz#d2224cee4700cc9e9836700eb47af6b6e41a080c"
-  integrity sha512-gZM3WteZO0e3X8B71KP0bs95EY2tAPRuiZyKnlhdLpOjTX/64SrhDZM3pT2Z8mJjKWNiiB5q2SSSf+BD8ljwVw==
+  version "2.11.1"
+  resolved "https://registry.yarnpkg.com/rc-animate/-/rc-animate-2.11.1.tgz#2666eeb6f1f2a495a13b2af09e236712278fdb2c"
+  integrity sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==
   dependencies:
     babel-runtime "6.x"
     classnames "^2.2.6"
     css-animation "^1.3.2"
     prop-types "15.x"
     raf "^3.4.0"
-    rc-util "^4.8.0"
+    rc-util "^4.15.3"
     react-lifecycles-compat "^3.0.4"
 
 rc-calendar@~9.0.0:
@@ -5487,9 +5267,9 @@ rc-form@~1.4.0:
     warning "^3.0.0"
 
 rc-hammerjs@~0.6.0:
-  version "0.6.9"
-  resolved "https://registry.yarnpkg.com/rc-hammerjs/-/rc-hammerjs-0.6.9.tgz#9a4ddbda1b2ec8f9b9596091a6a989842a243907"
-  integrity sha512-4llgWO3RgLyVbEqUdGsDfzUDqklRlQW5VEhE3x35IvhV+w//VPRG34SBavK3D2mD/UaLKaohgU41V4agiftC8g==
+  version "0.6.10"
+  resolved "https://registry.yarnpkg.com/rc-hammerjs/-/rc-hammerjs-0.6.10.tgz#1831a3bd8f2199700bfcc5ad6b20a35630aeb5e0"
+  integrity sha512-Vgh9qIudyN5CHRop4M+v+xUniQBFWXKrsJxQRVtJOi2xgRrCeI52/bkpaL5HWwUhqTK9Ayq0n7lYTItT6ld5rg==
   dependencies:
     babel-runtime "6.x"
     hammerjs "^2.0.8"
@@ -5738,16 +5518,16 @@ rc-upload@~2.4.0:
     prop-types "^15.5.7"
     warning "2.x"
 
-rc-util@4.x, rc-util@^4.0.2, rc-util@^4.0.4, rc-util@^4.4.0, rc-util@^4.8.0:
-  version "4.11.0"
-  resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.11.0.tgz#cf437dcff74ca08a8565ae14f0368acb3a650796"
-  integrity sha512-nB29kXOXsSVjBkWfH+Z1GVh6tRg7XGZtZ0Yfie+OI0stCDixGQ1cPrS6iYxlg+AV2St6COCK5MFrCmpTgghh0w==
+rc-util@4.x, rc-util@^4.0.2, rc-util@^4.0.4, rc-util@^4.15.3, rc-util@^4.4.0:
+  version "4.21.1"
+  resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-4.21.1.tgz#88602d0c3185020aa1053d9a1e70eac161becb05"
+  integrity sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==
   dependencies:
     add-dom-event-listener "^1.1.0"
-    babel-runtime "6.x"
     prop-types "^15.5.10"
+    react-is "^16.12.0"
     react-lifecycles-compat "^3.0.4"
-    shallowequal "^0.2.2"
+    shallowequal "^1.1.0"
 
 rc@^1.2.7:
   version "1.2.8"
@@ -5797,15 +5577,20 @@ react-hot-loader@^1.3.1:
     react-hot-api "^0.4.5"
     source-map "^0.4.4"
 
+react-is@^16.12.0:
+  version "16.13.1"
+  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
 react-is@^16.8.1, react-is@^16.8.6:
   version "16.9.0"
   resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.9.0.tgz#21ca9561399aad0ff1a7701c01683e8ca981edcb"
   integrity sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==
 
 react-lazy-load@^3.0.12:
-  version "3.0.13"
-  resolved "https://registry.yarnpkg.com/react-lazy-load/-/react-lazy-load-3.0.13.tgz#3b0a92d336d43d3f0d73cbe6f35b17050b08b824"
-  integrity sha1-OwqS0zbUPT8Nc8vm81sXBQsIuCQ=
+  version "3.1.13"
+  resolved "https://registry.yarnpkg.com/react-lazy-load/-/react-lazy-load-3.1.13.tgz#236943f76b7084cc8458716d9632a1c9853ea5cd"
+  integrity sha512-eAVNUn3vhNj79Iv04NOCwy/sCLyqDEhL3j9aJKV7VJuRBDg6rCiB+BIWHuG7VXJGCgb//6nX/soR8PTyWRhFvQ==
   dependencies:
     eventlistener "0.0.1"
     lodash.debounce "^4.0.0"
@@ -6111,32 +5896,6 @@ request@2.81.0:
     tunnel-agent "^0.6.0"
     uuid "^3.0.0"
 
-request@^2.55.0:
-  version "2.88.0"
-  resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
-  integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
-  dependencies:
-    aws-sign2 "~0.7.0"
-    aws4 "^1.8.0"
-    caseless "~0.12.0"
-    combined-stream "~1.0.6"
-    extend "~3.0.2"
-    forever-agent "~0.6.1"
-    form-data "~2.3.2"
-    har-validator "~5.1.0"
-    http-signature "~1.2.0"
-    is-typedarray "~1.0.0"
-    isstream "~0.1.2"
-    json-stringify-safe "~5.0.1"
-    mime-types "~2.1.19"
-    oauth-sign "~0.9.0"
-    performance-now "^2.1.0"
-    qs "~6.5.2"
-    safe-buffer "^5.1.2"
-    tough-cookie "~2.4.3"
-    tunnel-agent "^0.6.0"
-    uuid "^3.3.2"
-
 require-directory@^2.1.1:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -6181,11 +5940,6 @@ ret@~0.1.10:
   resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
   integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
 
-rgbcolor@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/rgbcolor/-/rgbcolor-1.0.1.tgz#d6505ecdb304a6595da26fa4b43307306775945d"
-  integrity sha1-1lBezbMEplldom+ktDMHMGd1lF0=
-
 right-align@^0.1.1:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
@@ -6237,7 +5991,7 @@ safe-regex@^1.1.0:
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
-sax@^1.1.4, sax@^1.2.4, sax@~1.2.1:
+sax@^1.2.4, sax@~1.2.1:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -6368,9 +6122,9 @@ sha.js@^2.4.0, sha.js@^2.4.8:
     safe-buffer "^5.0.1"
 
 shallow-equal@^1.0.0:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.0.tgz#fd828d2029ff4e19569db7e19e535e94e2d1f5cc"
-  integrity sha512-Z21pVxR4cXsfwpMKMhCEIO1PCi5sp7KEp+CmOpBQ+E8GpHwKOw2sEzk7sgblM3d/j4z4gakoWEoPcjK0VJQogA==
+  version "1.2.1"
+  resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
+  integrity sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==
 
 shallowequal@^0.2.2:
   version "0.2.2"
@@ -6379,7 +6133,7 @@ shallowequal@^0.2.2:
   dependencies:
     lodash.keys "^3.1.2"
 
-shallowequal@^1.0.1:
+shallowequal@^1.0.1, shallowequal@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
   integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
@@ -6608,16 +6362,6 @@ ssri@^5.2.4:
   dependencies:
     safe-buffer "^5.1.1"
 
-stackblur-canvas@2.2.0:
-  version "2.2.0"
-  resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-2.2.0.tgz#cacc5924a0744b3e183eb2e6c1d8559c1a17c26e"
-  integrity sha512-5Gf8dtlf8k6NbLzuly2NkGrkS/Ahh+I5VUjO7TnFizdJtgpfpLLEdQlLe9umbcnZlitU84kfYjXE67xlSXfhfQ==
-
-stackblur-canvas@^1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/stackblur-canvas/-/stackblur-canvas-1.4.1.tgz#849aa6f94b272ff26f6471fa4130ed1f7e47955b"
-  integrity sha1-hJqm+UsnL/JvZHH6QTDtH35HlVs=
-
 static-extend@^0.1.1:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -6797,11 +6541,6 @@ svgo@^0.7.0:
     sax "~1.2.1"
     whet.extend "~0.9.9"
 
-"symbol-tree@>= 3.1.0 < 4.0.0":
-  version "3.2.4"
-  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
-  integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-
 tapable@^0.2.7, tapable@~0.2.5:
   version "0.2.9"
   resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.9.tgz#af2d8bbc9b04f74ee17af2b4d9048f807acd18a8"
@@ -6895,14 +6634,6 @@ toposort@^1.0.0:
   resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
   integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
 
-tough-cookie@^2.2.0:
-  version "2.5.0"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
-  integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
-  dependencies:
-    psl "^1.1.28"
-    punycode "^2.1.1"
-
 tough-cookie@~2.3.0:
   version "2.3.4"
   resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655"
@@ -6910,19 +6641,6 @@ tough-cookie@~2.3.0:
   dependencies:
     punycode "^1.4.1"
 
-tough-cookie@~2.4.3:
-  version "2.4.3"
-  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
-  integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
-  dependencies:
-    psl "^1.1.24"
-    punycode "^1.4.1"
-
-tr46@~0.0.3:
-  version "0.0.3"
-  resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
-  integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
-
 trim-newlines@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
@@ -6950,13 +6668,6 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
   resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
   integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
 
-type-check@~0.3.2:
-  version "0.3.2"
-  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
-  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
-  dependencies:
-    prelude-ls "~1.1.2"
-
 type-is@~1.6.17, type-is@~1.6.18:
   version "1.6.18"
   resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
@@ -7125,7 +6836,7 @@ utils-merge@1.0.1:
   resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
   integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
 
-uuid@^3.0.0, uuid@^3.0.1, uuid@^3.3.2:
+uuid@^3.0.0, uuid@^3.0.1:
   version "3.3.3"
   resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866"
   integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==
@@ -7197,11 +6908,6 @@ wbuf@^1.1.0, wbuf@^1.7.3:
   dependencies:
     minimalistic-assert "^1.0.0"
 
-webidl-conversions@^3.0.0, webidl-conversions@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
-  integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=
-
 webpack-dev-middleware@1.12.2:
   version "1.12.2"
   resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz#f8fc1120ce3b4fc5680ceecb43d777966b21105e"
@@ -7300,14 +7006,6 @@ whatwg-fetch@>=0.10.0:
   resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb"
   integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==
 
-whatwg-url@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-2.0.1.tgz#5396b2043f020ee6f704d9c45ea8519e724de659"
-  integrity sha1-U5ayBD8CDub3BNnEXqhRnnJN5lk=
-  dependencies:
-    tr46 "~0.0.3"
-    webidl-conversions "^3.0.0"
-
 whet.extend@~0.9.9:
   version "0.9.9"
   resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
@@ -7335,11 +7033,6 @@ wordwrap@0.0.2:
   resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
   integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=
 
-wordwrap@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
-  integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
-
 worker-loader@^1.0.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-1.1.1.tgz#920d74ddac6816fc635392653ed8b4af1929fd92"
@@ -7381,16 +7074,6 @@ xlsx@^0.13.3:
     exit-on-epipe "~1.0.1"
     ssf "~0.10.2"
 
-"xml-name-validator@>= 2.0.1 < 3.0.0":
-  version "2.0.1"
-  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635"
-  integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=
-
-xmldom@^0.1.22:
-  version "0.1.27"
-  resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9"
-  integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk=
-
 xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"