Commit 99d545a8 by wangshuo

拉取最新分支

parents ffb989e8 c367fc34
......@@ -51,6 +51,7 @@
"postcss-loader": "3.0.0",
"postcss-preset-env": "6.5.0",
"postcss-safe-parser": "4.0.1",
"qrcode": "^1.3.3",
"react": "^16.8.6",
"react-app-polyfill": "^0.2.2",
"react-dev-utils": "^8.0.0",
......
......@@ -13,13 +13,13 @@ import './orderlist.scss';
*/
const OrderItem = ({ info, tab, children, ...restProps }) => {
const OrderItem = ({ info, tab, children, src, ...restProps }) => {
return (
<div className='public-list-item'>
<div className="public-content">
{tab}
<div className="public-cover" >
<img src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg' alt="" />
<img src={src} alt="" />
</div>
{info}
</div>
......
.public-list-item{
margin-top: 5px;
background: $bg_fff;
.public-content{
display: flex;
height: 100%;
// margin: 0px 15px;
padding: 10px 0;
.public-cover{
flex: 1 0 auto;
margin-right: 15px;
position: relative;
img{
width: 125px;
height: 90px;
border-radius: 3px;
}
}
}
.public-list-item {
background: $bg_fff;
.public-content {
display: flex;
height: 100%;
.public-cover {
flex: 1 0 auto;
margin-right: 15px;
position: relative;
width: 125px;
height: 90px;
img {
width: 100%;
height: 100%;
border-radius: 3px;
}
}
.public-list-item:first-child{
margin-top: 0px;
.order-info {
position: relative;
.order-title {
font-size: 16px;
color: $color_333;
height: 16px;
line-height: 16px;
}
.order-content {
font-size: 14px;
color: $color_666;
margin-top: 14px;
line-height: 18px;
}
.order-des {
position: absolute;
bottom: 0;
height: 24px;
line-height: 33px;
.order-newprice {
font-size: 16px;
color: $redprice;
}
.order-price {
font-size: 12px;
color: $color_999;
margin-left: 15px;
text-decoration: line-through;
}
}
}
}
}
import React, {Component} from 'react';
import {api, getParam, http} from "@/utils";
import {Toast} from 'antd-mobile';
import {Link} from 'react-router-dom'
import './index.scss'
......@@ -11,6 +14,20 @@ class BtnStatus extends Component {
}
}
// 加入购物车
toCart = () => {
let data = {
course_id: getParam('id')
}
http.post(`${api.home}/m/cart/add`, data).then((res) => {
if (res.data.code === 200) {
Toast.info('已加入购物车', 2);
} else {
Toast.info(res.data.msg, 2);
}
})
}
render() {
return (
<div>
......@@ -22,8 +39,8 @@ class BtnStatus extends Component {
<i className='iconfont iconerji'></i>
<span>课程咨询</span>
</a>
<button className='btn btn-s bg-FCCD05'>加入购物车</button>
<button className='btn btn-s bg-FD7700'>立即报名</button>
<button className='btn btn-s bg-FCCD05' onClick={this.toCart}>加入购物车</button>
<Link to='/order' className='btn btn-s bg-FD7700'>立即报名</Link>
</div>
}
......
......@@ -65,6 +65,7 @@
font-size: 16px;
border: none;
padding: 8px 0;
text-align: center;
}
.btn-s {
......
......@@ -31,7 +31,7 @@ class Detail extends Component {
}
componentDidUpdate() {
console.log(this.props.courseInfo.course_info)
// console.log(this.props.courseInfo.course_info)
}
toApp = () => {
......@@ -138,7 +138,7 @@ class Detail extends Component {
{/*分享赚钱*/}
{
courseInfo.is_dist &&
<ShareRank shareRank={this.state.shareRank} openRanking={this.openRanking} boxHide={this.boxHide}/>
<ShareRank data={this.props.courseInfo} shareRank={this.state.shareRank} openRanking={this.openRanking} boxHide={this.boxHide}/>
}
{/*砍价*/}
......
import React, {Component} from 'react'
import './index.scss'
import {api, getParam, http} from "@/utils";
import {withRouter} from "react-router-dom";
class ShareRank extends Component {
constructor(props) {
super(props)
this.state = {
list: '',
rankingslice: ''
rankingslice: '',
code: ''
}
}
componentDidMount() {
// 获取排行榜
http.get(`${api.home}/dist/rankList/${getParam('id')}`).then((res) => {
if (res.data.code === 200) {
this.setState({
list: res.data.data,
rankingslice: res.data.data.slice(0,2)
rankingslice: res.data.data.slice(0, 2),
courseInfo: this.props.data.course_info
})
}
})
// 获取分销码
let data = {
course_id: getParam('id')
}
http.post(`${api.home}/dist/createCode`, data).then((res) => {
if (res.data.code === 200) {
this.setState({
code: res.data.data.code
})
}
})
}
share = () => {
const courseId = getParam('id')
const dist_first = this.state.courseInfo.dist_first_level_ti
const uid = this.state.courseInfo.uid
const dist_code = this.state.code
this.props.history.push(`/shareposter?courseId=${courseId}&dist_first=${dist_first}&uid=${uid}&dist_code=${dist_code}`)
}
// 关闭弹窗
colse = () => {
this.props.boxHide(false)
}
render() {
let info = ''
if (this.props.data.course_info) {
info = this.props.data.course_info
}
return (
<div className='share-ranking'>
<span className="title">排行榜:</span>
<div className='ranking-box' onClick={this.props.openRanking}>
{
this.state.rankingslice && this.state.rankingslice.length > 0 && this.state.rankingslice.map((item,index)=>{
return(
this.state.rankingslice && this.state.rankingslice.length > 0 && this.state.rankingslice.map((item, index) => {
return (
<span key={index} className="ranking-mess">
<img src={item.head_imgurl} alt=""/>
<i>{item.amount}</i>
......@@ -46,7 +74,7 @@ class ShareRank extends Component {
<img className="ranking-ellipsis"
src="https://julyedu-img.oss-cn-beijing.aliyuncs.com/Image/train/ellipsis.png" alt=""/>
</div>
<button className="share">分享赚22</button>
<button className="share" onClick={this.share}>分享赚{info.dist_first_level_ti}</button>
{
this.props.shareRank &&
......@@ -58,8 +86,8 @@ class ShareRank extends Component {
</div>
<ul>
{
this.state.list && this.state.list.length > 0 && this.state.list.map((item,index)=>{
return(
this.state.list && this.state.list.length > 0 && this.state.list.map((item, index) => {
return (
<li key={index}>
<img src={item.head_imgurl} alt=""/>
<span className='course-title'>{item.user_name}</span>
......@@ -70,7 +98,7 @@ class ShareRank extends Component {
}
</ul>
<div className='shareBtn'>
<button>分享赚67</button>
<button onClick={this.share}>分享赚{info.dist_first_level_ti}</button>
</div>
</div>
<i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>
......@@ -81,4 +109,4 @@ class ShareRank extends Component {
}
}
export default ShareRank;
export default withRouter(ShareRank);
......@@ -136,7 +136,7 @@
text-align: center;
button {
border: none;
width: 105px;
padding: 0 10px;
height: 24px;
margin-top: 10px;
background: linear-gradient(90deg, $bg_FF0000 0%, $bg_FF4000 100%);
......
import React, {Component} from 'react'
import './index.scss'
import {api, getParam, http, is_weixin} from "@/utils";
import {Toast, WhiteSpace, WingBlank, Button} from 'antd-mobile';
class Single extends Component {
constructor(props) {
super(props)
this.state = {
status: 1
status: 1,
orderId: '',
nowPrice: '',
laterPrice: '',
payType: '0', // 1支付宝 0微信
}
}
componentDidMount() {
if (getParam('is_class') === 1 || getParam('weixinpay')) {
this.payCallback()
}
if (is_weixin) {
this.isweixinPay()
}
}
// 选择支付方式
check = (type) => {
this.setState({
payType: type
})
}
// 确定购买
toBuy = () => {
http.get(`${api.home}/sys/createClassOrder/${this.props.data.video_id}`).then((res) => {
if (res.data.code === 200) {
this.setState({
orderId: res.data.data.order_id
})
this.state.payType === '1' ? this.alipayPay(this.state.orderId) : this.weixinPay(this.state.orderId)
} else {
alert(res.data.msg)
}
})
}
// 微信支付
weixinPay = (orderId) => {
// 微信内部-支付
if (is_weixin) {
window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=" + encodeURIComponent(window.location.href + "&aa=bb").toLowerCase() + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
} else {
// 微信外部-支付
http.get(`${api['pay-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {
if (res.data.errno === 0) {
window.location.href = res.data.data.url + "&redirect_url=" + encodeURIComponent(window.location.href + "&weixinpay=1").toLowerCase();
} else {
alert(res.data.msg);
}
})
}
}
// 支付宝支付
alipayPay = (orderId) => {
http.get(`${api['pay-api']}/pay/alipay/wap_charge/oid/${orderId}`).then((res) => {
if (res.data.errno === 0) {
window.location = res.data.data.url;
} else {
alert(res.data.msg);
}
})
}
onBridgeReady = (data) => {
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": data.appId, //公众号名称,由商户传入
"timeStamp": data.timeStamp, //时间戳,自1970年以来的秒数
"nonceStr": data.nonceStr, //随机串
"package": data.package,
"signType": data.signType, //微信签名方式:
"paySign": data.paySign //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
this.payCallback()
} else {
alert('支付失败')
}
}
)
}
// 微信内部支付
isweixinPay = () => {
let weixin_code = getParam('code')
if (weixin_code) {
if (getParam('oid') === undefined) {
return
} else {
http.get(`${api['pay-api']}/pay/wxpay/pub_charge/oid/${getParam('oid')}/code/${weixin_code}`).then((res) => {
if (res.data.errno === 0) {
const data = res.data.data
this.onBridgeReady(data)
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady, false)
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', this.onBridgeReady)
document.attachEvent('onWeixinJSBridgeReady', this.onBridgeReady)
}
} else {
this.onBridgeReady()
}
} else {
alert(res.data.msg)
}
})
}
}
}
// 支付完成之后获取状态
payCallback = () => {
http.get(`${api.home}/sys/orderStatus/${getParam('oid')}`).then((res) => {
if (res.data.data.errno == '200') {
// 正常购买单集成功
this.setState({
status: 6
})
} else if (res.data.data.errno == '201') {
// 0元参团
this.setState({
status: 4
})
} else if (res.data.data.errno == '202') {
// 0元购
this.setState({
status: 3
})
} else if (res.data.data.errno == '203') {
// 三天内特价
this.setState({
nowPrice: res.data.data.data.now_price,
laterPrice: res.data.data.data.three_day_later_price,
status: 2
})
} else {
alert(res.data.data.msg)
}
})
// this.setState({
// status: 2
// })
}
// 特价购买全集
toBuyAll = () => {
}
// 0元购买全集
zerobuyReceive = () => {
Toast.success('购买全集成功', 3)
this.colse()
}
// 0元参团
zerogroupBuy = () => {
this.setState({
status: 7
})
}
// 关闭弹窗
......@@ -32,7 +176,6 @@ class Single extends Component {
}
render() {
{console.log(is_weixin(),1)}
return (
<div>
{
......@@ -55,15 +198,19 @@ class Single extends Component {
</div>
<div className='payment-type'>
<label>支付方式:</label>
<p>
<i className='iconfont iconzhifubaox-'></i>
<span>支付宝</span>
<i className='iconfont icondanseshixintubiao-5 redioed'></i>
</p>
<p>
{
!is_weixin() &&
<p onClick={this.check.bind(this, '1')}>
<i className='iconfont iconzhifubaox-'></i>
<span>支付宝</span>
<i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '1' ? 'redioed' : ''}`}></i>
</p>
}
<p onClick={this.check.bind(this, '0')}>
<i className='iconfont iconweixinzhifu buy'></i>
<span>微信支付</span>
<i className='iconfont icondanseshixintubiao-5 redio'></i>
<i className={`iconfont icondanseshixintubiao-5 redio ${this.state.payType === '0' ? 'redioed' : ''}`}></i>
</p>
</div>
<div className='btn btn-18B4ED' onClick={this.toBuy}>确认购买</div>
......@@ -76,10 +223,11 @@ class Single extends Component {
<i className='iconfont icondanseshixintubiao-5'></i>
<span>购买成功</span>
</div>
<div className="dec">· 3天内购买全集,可直接抵扣该集费用,275元购买。</div>
<div className="dec">· 超过3天,按照未够集数/全部集数等比例计费,280元购买全集。</div>
<div className="dec">· 3天内购买全集,可直接抵扣该集费用,{this.state.nowPrice}元购买。</div>
<div className="dec">· 超过3天,按照未够集数/全部集数等比例计费,{this.state.laterPrice}元购买全集。</div>
<div className='btn btn-18B4ED'>开始学习</div>
<div className='btn btn-FF4000'>275购买全集</div>
<div className='btn btn-FF4000' onclick={this.toBuyAll()}>{this.state.nowPrice}购买全集
</div>
</div>
}
{
......@@ -90,7 +238,7 @@ class Single extends Component {
<span>购买成功</span>
</div>
<div className="dec">· 恭喜您获得0元拼团购买剩余课时的机会。</div>
<div className='btn btn-FF4000'>0元参团</div>
<div className='btn btn-FF4000' onClick={this.zerogroupBuy}>0元参团</div>
</div>
}
{
......@@ -101,7 +249,38 @@ class Single extends Component {
<span>购买成功</span>
</div>
<div className="dec">· 恭喜您获得0元购买剩余课时的机会。</div>
<div className='btn btn-FF4000'>0元购</div>
<div className='btn btn-FF4000' onClick={this.zerobuyReceive}>0元购</div>
</div>
}
{
this.state.status === 6 &&
<div className='content zero'>
<div className="header">
<i className='iconfont icondanseshixintubiao-5'></i>
<span>购买成功</span>
</div>
<div className='btn btn-18B4ED'>去学习</div>
</div>
}
{
this.state.status === 7 &&
<div className='content group'>
<div className="header">
<i className='iconfont icondanseshixintubiao-5'></i>
<span>参团成功</span>
</div>
<div className='group-img'>
<img
src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/Sv3Vz4B8Tp.jpg'
alt=""/>
<img
src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/CwJoTNA21g.jpg'
alt=""/>
<img
src='https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/vu/image_head/Sv3Vz4B8Tp.jpg'
alt=""/>
</div>
<div className='btn-l btn-FF4000'>剩余235923 邀请好友参团</div>
</div>
}
<i onClick={this.colse} className={'iconfont iconiconfront-2 close'}></i>
......
.popup-box {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .6);
z-index: 2;
.content {
width: 300px;
position: relative;
background-color: $white;
padding-top: 20px;
border-radius: 3px;
}
.close {
color: #fff;
font-size: 22px;
position: relative;
left: 50%;
margin-left: -11px;
}
.btn {
position: absolute;
bottom: 24px;
left: 83px;
width: 135px;
height: 30px;
border-radius: 3px;
font-size: 16px;
color: $white;
text-align: center;
line-height: 30px;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, .6);
z-index: 2;
.content {
width: 300px;
position: relative;
background-color: $white;
padding-top: 20px;
border-radius: 3px;
}
.close {
color: #fff;
font-size: 22px;
position: relative;
left: 50%;
margin-left: -11px;
}
.btn {
position: absolute;
bottom: 24px;
left: 83px;
width: 135px;
height: 30px;
border-radius: 3px;
font-size: 16px;
color: $white;
text-align: center;
line-height: 30px;
}
.btn-18B4ED {
background-color: $bg_18B4ED;
}
.btn-FF4000 {
background-color: $bg_FF4000;
}
.header {
color: $active;
height: 24px;
line-height: 24px;
text-align: center;
i {
font-size: 24px;
}
.btn-18B4ED {
background-color: $bg_18B4ED;
span {
font-size: 18px;
margin-left: 10px;
vertical-align: text-bottom;
}
}
.btn-FF4000 {
background-color: $bg_FF4000;
}
.singleset-payment {
height: 305px;
margin: 140px auto 22px auto;
padding: 17px 20px;
.header {
color: $active;
height: 24px;
line-height: 24px;
text-align: center;
.price-box {
padding-bottom: 15px;
border-bottom: 1px solid $sp_ddd;
i {
font-size: 24px;
span {
font-size: 12px;
color: $color_666;
}
span {
font-size: 18px;
margin-left: 10px;
vertical-align: text-bottom;
p {
height: 22px;
line-height: 22px;
color: $color_FF4000;
font-size: 22px;
text-align: center;
margin-top: 5px;
}
}
.singleset-payment {
height: 305px;
margin: 140px auto 22px auto;
padding: 17px 20px;
.course-info {
font-size: 14px;
.price-box {
padding-bottom: 15px;
border-bottom: 1px solid $sp_ddd;
p {
height: 14px;
line-height: 14px;
margin-top: 10px;
color: $color_333;
span {
font-size: 12px;
color: $color_666;
}
}
}
.payment-type {
margin-top: 20px;
p {
height: 22px;
line-height: 22px;
color: $color_FF4000;
label {
display: inline-block;
width: 100%;
border-bottom: 1px solid $sp_ddd;
color: $color_666;
font-size: 12px;
padding-bottom: 5px;
}
p {
height: 22px;
line-height: 22px;
margin-top: 10px;
position: relative;
.iconzhifubaox- {
font-size: 22px;
text-align: center;
margin-top: 5px;
color: #01aaef;
}
}
.course-info {
font-size: 14px;
.iconweixinzhifu {
font-size: 22px;
color: #3baf34;
}
p {
height: 14px;
line-height: 14px;
margin-top: 10px;
span {
display: inline-block;
margin-left: 10px;
color: $color_333;
span {
color: $color_666;
}
font-size: 14px;
vertical-align: text-bottom;
}
}
.payment-type {
margin-top: 20px;
.icondanseshixintubiao-5 {
position: absolute;
right: 0;
font-size: 24px;
}
label {
display: inline-block;
width: 100%;
border-bottom: 1px solid $sp_ddd;
color: $color_666;
font-size: 12px;
padding-bottom: 5px;
.redio {
color: $border_ccc;
}
p {
height: 22px;
line-height: 22px;
margin-top: 10px;
position: relative;
.iconzhifubaox- {
font-size: 22px;
color: #01aaef;
}
.iconweixinzhifu {
font-size: 22px;
color: #3baf34;
}
span {
display: inline-block;
margin-left: 10px;
color: $color_333;
font-size: 14px;
vertical-align: text-bottom;
}
.icondanseshixintubiao-5 {
position: absolute;
right: 0;
font-size: 24px;
}
.redioed {
color: #4cd964;
}
.redio {
color: $border_ccc;
}
.redioed {
color: #4cd964;
}
}
}
}
.zero {
height: 147px;
margin: 213px auto 22px auto;
text-align: center;
.header {
color: $active;
height: 24px;
line-height: 24px;
.zero {
height: 147px;
margin: 213px auto 22px auto;
text-align: center;
i {
font-size: 24px;
}
.header {
color: $active;
height: 24px;
line-height: 24px;
span {
font-size: 18px;
margin-left: 10px;
vertical-align: text-bottom;
}
i {
font-size: 24px;
}
.dec {
height: 14px;
line-height: 14px;
color: $color_666;
font-size: 14px;
margin-top: 15px;
span {
font-size: 18px;
margin-left: 10px;
vertical-align: text-bottom;
}
}
.payment-success {
height: 258px;
margin: 143px auto 22px auto;
padding: 20px 24px;
.dec {
height: 33px;
line-height: 20px;
color: $color_666;
font-size: 14px;
margin-top: 12px;
}
.dec {
height: 14px;
line-height: 14px;
color: $color_666;
font-size: 14px;
margin-top: 15px;
}
}
.payment-success {
height: 258px;
margin: 143px auto 22px auto;
padding: 20px 24px;
.dec {
height: 33px;
line-height: 20px;
color: $color_666;
font-size: 14px;
margin-top: 12px;
}
.btn-18B4ED {
bottom: 70px;
.btn-18B4ED {
bottom: 70px;
}
}
.group {
height: 165px;
margin: 213px auto 22px auto;
text-align: center;
.group-img {
margin-top: 15px;
img {
width: 40px;
height: 40px;
border-radius: 50px;
margin-right: 15px;
}
}
}
\ No newline at end of file
.btn-l {
position: absolute;
width: 240px;
bottom: 20px;
left: 30px;
height: 30px;
border-radius: 3px;
font-size: 16px;
color: $white;
text-align: center;
line-height: 30px;
}
}
}
\ No newline at end of file
import React, {Component} from 'react'
import './index.scss'
import {HeaderBar} from '../../common'
import {http, api, getParam} from '@/utils'
import QRCode from 'qrcode';
class SharePoster extends Component {
constructor(props) {
super(props)
this.state = {
codeSrc: '',
billSrc: '', // 图片链接
imgUrl: '',
smallListImg: [], // 小图片地址
smallactive: 0, // 小图选中标记
distPrice: '', // 分销价格
name: '', // 用户姓名
bgImage: [] // 背景图
}
}
componentDidMount() {
this.getCodeWe()
http.get(`${api.home}/m/dist/posters/${getParam('courseId')}/${getParam('uid')}`).then((res) => {
if (res.data.code === 200) {
this.setState({
imgUrl: res.data.data.avatar,
smallListImg: res.data.data.list,
distPrice: res.data.data.dist_course,
bgImage: res.data.data.list,
name: res.data.data.username
})
this.initCanvas(this.state.bgImage, 0)
}
})
}
// 初始化海报
initCanvas = (imgList, index) => {
let _this = this;
let imgSrc1 = imgList[index].poster;
let $width = 450;
let $height = 800;
let avatarWidth = 50 // imgList[index].poster_width // 头像宽度
let avatarHeight = 50 // imgList[index].poster_height // 头像高度
let avatarPositionX = (imgList[index].header_position_x * $width) // 头像x轴位置
let avatarPositionY = (imgList[index].header_position_y * $height) // 头像Y轴位置
let qrCodePositionX = imgList[index].qr_code_x * $width // 二维码x轴位置
let qrCodePositionY = imgList[index].qr_code_y * $height // 二维码y轴位置
let qrCodeWidth = (imgList[index].qr_code_width * $width) // 二维码宽度
let qrCodeHeight = (imgList[index].qr_code_height * $height) - avatarHeight / 2 // 二维码高度
let qrCodeLink = `/detail/${getParam('courseId')}/${getParam('dist_code')}`
var canvas = document.getElementById("canvas"),
context = canvas.getContext("2d");
_this.getBase64(imgSrc1)
// 背景图片合成
.then((img) => {
let bgImage = new Image();
bgImage.src = img;
let qrCodeImg = document.getElementById('qrcode');
let ua = navigator.userAgent.toLowerCase();
// Android终端
let isAndroid = ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1;
// Ios终端
let isiOS = !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
qrCodeImg = document.getElementById('qrcode');
} else if (/(Android)/i.test(navigator.userAgent)) {
//Android终端
qrCodeImg = document.getElementById('qrcode');
}
bgImage.setAttribute('crossOrigin', 'anonymous');
bgImage.onload = function () {
context.drawImage(bgImage, 0, 0, 450, 800);
context.drawImage(qrCodeImg, 320, 685, 100, 100);
context.fillStyle = imgList[index].username_color;
context.font = "16px serif";
context.fillText('@' + _this.name, (avatarPositionX + avatarWidth) + 20, (avatarPositionY + avatarHeight / 2));
context.font = "14px serif";
context.fillText('正在学习该课程', (avatarPositionX + avatarWidth) + 20, (avatarPositionY + avatarHeight / 2) + 20);
context.restore();
}
})
// 头像生成
.then(() => {
_this.getBase64(_this.state.imgUrl)
.then((img) => {
let bgImage = new Image();
bgImage.src = img;
bgImage.setAttribute('crossOrigin', 'anonymous');
bgImage.setAttribute('border-Radius', '50%');
bgImage.onload = function () {
_this.imgPosition(context, bgImage, avatarPositionX, avatarPositionY, 24);
context.drawImage(bgImage, avatarPositionX, avatarPositionY, 48, 48);
context.restore();
_this.setState({
billSrc: _this.convertCanvasToImage(canvas)
})
}
})
})
}
children = (curEle, tagName) => {
var nodeList = curEle.childNodes;
var ary = [];
if (/MSIE(6|7|8)/.test(navigator.userAgent)) {
for (var i = 0; i < nodeList.length; i++) {
var curNode = nodeList[i];
if (curNode.nodeType === 1) {
ary[ary.length] = curNode;
}
}
} else {
ary = Array.prototype.slice.call(curEle.children);
}
// 获取指定子元素
if (typeof tagName === "string") {
for (var k = 0; k < ary.length; k++) {
curEle = ary[k];
if (curEle.nodeName.toLowerCase() !== tagName.toLowerCase()) {
ary.splice(k, 1);
k--;
}
}
}
return ary;
}
// 合成图片位置
imgPosition = (ctx, img, x, y, r) => {
ctx.save();
var d = 2 * r;
var cx = x + r;
var cy = y + r;
ctx.beginPath();
ctx.arc(cx, cy, r, 0, 2 * Math.PI);
ctx.clip();
}
// 获取二维码
getCodeWe() {
let _this = this
let qrCodeLink = `/detail/${getParam('courseId')}/${getParam('dist_code')}`
return new Promise(resolve => {
QRCode.toDataURL(qrCodeLink, {}, function (err, url) {
_this.setState({
codeSrc: url
})
})
/*
let qrcode = new QRCode(document.getElementById('qrcode'), {
text: qrCodeLink,
width: 160,
height: 160,
colorDark: "#000000", // 生成的二维码的深色部分
colorLight: "#ffffff", //生成二维码的浅色部分
})
*/
resolve()
})
}
// 图片路径转成base64
getBase64(img) {
let _this = this;
return new Promise(resolve => {
let base64 = null;
let image = new Image();
let timeStamp = +new Date();
image.setAttribute('crossOrigin', 'anonymous');
image.src = img + '?' + timeStamp;
image.onload = () => {
base64 = _this.getBase64Image(image)
resolve(base64)
}
image.onerror = function () {
let timeStamp = +new Date();
_this.getBase64(img + '?' + timeStamp);
}
})
}
// 图片路径放入canvas转成base64
getBase64Image = (img) => {
let canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
let ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
let ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
let dataURL = canvas.toDataURL("image/" + ext);
return dataURL;
}
// canvas转换成img图片
convertCanvasToImage = (canvas) => {
let image = new Image();
image.src = canvas.toDataURL("image/png");
return image;
}
// 小图切换
squareClick = (index) => {
this.setState({
smallactive: index
})
this.initCanvas(this.state.bgImage, index);
}
render() {
return (
<div className='share-poster'>
<HeaderBar title={'生成专属海报'}></HeaderBar>
<div className="total-container">
<div className='placard-img-container' id='imgWrapper'>
<img src={this.state.billSrc.src} alt=""/>
</div>
<img src={this.state.codeSrc} alt="" id='qrcode' className='placard-code'/>
<canvas id='canvas' width='450' height='800'
className={this.state.billSrc === '' ? '' : 'hide'}></canvas>
</div>
<div className='placard-desc'>
<span className='placard-sharetxt'>
长按保存海报分享给好友,每有一人通过您的分享购买该课程,您可以
{
this.state.distPrice.count_type === 0 &&
<span className='placard-price'>获得{this.state.distPrice.first_level_tip}元的佣金奖励。</span>
}
{
this.state.distPrice.count_type === 1 &&
<span
className='placard-price'>获得成交金额的{this.state.distPrice.first_level_scale}%作为佣金奖励。</span>
}
</span>
</div>
<div className='placard-swiper'>
<ul className='placard-list'>
{
this.state.smallListImg && this.state.smallListImg.length > 0 && this.state.smallListImg.map((item, index) => {
return (
<li onClick={this.squareClick.bind(this, index)} key={index}
className={this.state.smallactive === index ? 'active' : ''}>
<img src={item.square} alt=""/>
</li>
)
})
}
</ul>
</div>
</div>
)
}
}
export default SharePoster
.share-poster {
.total-container {
width: 100%;
background-color: $bg_000;
height: 420px;
overflow: hidden;
position: relative;
.placard-img-container {
width: 100%;
height: 840px;
background: $bg_000;
padding-top: 20px;
overflow: hidden;
position: relative;
zoom: 0.5;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
}
}
.placard-code {
opacity: 0;
}
}
.placard-desc {
width: 100%;
height: 45px;
background: $bg_000;
padding: 0 10px;
.placard-sharetxt {
width: 100%;
height: 100%;
line-height: 20px;
display: inline-block;
font-size: 14px;
color: $white;
.placard-price {
font-size: 14px;
color: $active;
}
}
}
.placard-swiper {
width: 100%;
background-color: $white;
.placard-list {
display: flex;
justify-content: center;
align-items: center;
li {
width: 64px;
height: 64px;
border-radius: 5px;
line-height: 90px;
margin: 20px 15px;
img {
display: inline-block;
width: 64px;
height: 64px;
border-radius: 5px;
}
}
li.active {
width: 64px;
height: 64px;
background: url('./image/choose_pic.png') no-repeat center;
z-index: 1002;
background-size: 64px;
img {
opacity: 0.1;
}
}
}
}
.hide {
display: none;
}
}
\ No newline at end of file
.cart-page{
.cart-page {
height: 100%;
width: 100%;
display: flex;
flex-direction: column;
.cart-tip {
color: #555;
margin-top: 140px;
text-align: center;
.iconfridge {
font-size: 21px;
}
.cart-mess {
font-size: 12px;
color: $color_666;
}
a {
display: inline-block;
font-size: 16px;
margin-top: 40px;
color: $active;
}
}
.edit {
padding-right: 10px;
font-size: 14px;
}
.cart-body {
height: 100%;
width: 100%;
flex: 1;
margin-bottom: 50px;
display: flex;
flex-direction: column;
.cart-tip{
background-color: $bg_f5f5f5;
overflow-y: auto;
position: relative;
.cart-main {
width: 100%;
> .am-list-item {
border-bottom: 1px solid #eee;
.am-list-line::after {
background-color: transparent;
}
}
> .am-list-item.am-list-item-active {
background-color: transparent;
}
.cart-c-title {
display: flex;
align-items:center;
justify-content: center;
min-height: 60px;
color:#555;
}
.edit{
padding-right:10px;
font-size:14px;
}
.cart-body{
height:100%;
flex: 1;
margin-bottom: 50px;
display: flex;
background-color: $bg_f5f5f5;
overflow-y: auto;
position: relative;
.cart-main{
width:100%;
>.am-list-item{
border-bottom: 1px solid #eee;
.am-list-line::after{
background-color: transparent;
}
align-items: center;
justify-content: space-between;
> div {
flex: 1;
}
span {
font-size: 14px;
margin-left: 10px;
}
.next {
width: 14px;
height: 14px;
display: inline-block;
margin-left: 10px;
}
i {
font-style: inherit;
font-size: 14px;
display: block;
padding: 0 10px;
}
}
.cart-c-body {
.am-list-item-active {
background-color: transparent;
}
.am-list-line {
padding-right: 0px;
}
.am-list-content {
position: relative;
}
.cart-c-item {
overflow: hidden;
margin: 8px 0;
height: 120px;
padding: 15px 15px 15px 12px;
background-color: $white;
.cart-c-check {
width: 30px;
float: left;
display: flex;
align-items: center;
height: 100%;
}
>.am-list-item.am-list-item-active{
background-color: transparent;
}
.cart-ci-left {
position: absolute;
top: 0;
left: 40px;
height: 100%;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
img {
height: 85px;
width: 85px;
display: block;
border: 1px solid #eee;
}
.cart-c-title{
display: flex;
align-items: center;
justify-content: space-between;
>div{
flex:1;
}
span{
font-size:14px;
margin-left:10px;
}
.next{
width:14px;
height:14px;
display: inline-block;
margin-left:10px;
}
i{
font-style: inherit;
font-size:14px;
display: block;
padding:0 10px;
}
}
.cart-ci-right {
min-height: 87px;
margin-left: 135px;
margin-right: 8px;
.am-stepper-handler {
line-height: 28px;
font-size: 14px;
width: 26px;
height: 26px;
display: flex;
justify-content: center;
align-items: center;
}
.cart-c-body{
.am-list-item-active{
background-color: transparent;
}
.am-list-line{
padding-right: 0px;
}
.am-list-content{
position: relative;
}
.cart-c-item{
overflow: hidden;
position: relative;
margin: 8px 0;
padding-right: 10px;
box-sizing: border-box;
background-color: $white;
.cart-c-check{
width:40px;
display: flex;
align-items: center;
justify-content: center;
height: 100%;
box-sizing: border-box;
position: absolute;
}
.r-title {
font-size: 15px;
white-space: normal;
font-weight: bold;
overflow: hidden;
max-height: 46px;
span {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
/* autoprefixer: ignore next */
-webkit-box-orient: vertical;
white-space: inherit;
-webkit-line-clamp: 2;
}
}
.r-step {
display: flex;
justify-content: space-between;
.r-price {
color: #ff5b05;
font-size: 14px;
line-height: 30px;
span {
font-size: 12px;
}
.cart-ci-left{
position: absolute;
top: 0;
left: 40px;
height: 100%;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
img{
height:85px;
width:85px;
display: block;
border:1px solid #eee;
}
}
.cart-ci-right{
min-height:87px;
margin-left:135px;
margin-right:8px;
.am-stepper-handler{
line-height: 28px;
font-size: 14px;
width: 26px;
height: 26px;
display:flex;
justify-content: center;
align-items: center;
}
.r-title{
font-size:15px;
white-space:normal;
font-weight:bold;
overflow : hidden;
max-height: 46px;
span{
overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
/* autoprefixer: ignore next */
-webkit-box-orient: vertical;
white-space:inherit;
-webkit-line-clamp: 2;
}
}
.r-step{
display: flex;
justify-content: space-between;
.r-price{
color:#ff5b05;
font-size:14px;
line-height:30px;
span{
font-size:12px;
}
}
.span-stepper{
width:100px;
}
.am-stepper-input{
font-size:12px;
}
}
.span-stepper {
width: 100px;
}
.am-stepper-input {
font-size: 12px;
}
}
}
}
}
}
.cart-footer {
position: fixed;
bottom: 0;
left: 0;
width: 100%;
display: flex;
justify-content: space-between;
border-top: 1px solid #eee;
background-color: rgba(255, 255, 255, 1);
height: 50px;
.cart-label {
display: flex;
}
& > div:nth-child(1) {
text-align: center;
height: 50px;
line-height: 50px;
padding-left: 12px;
div {
font-size: $font_16;
color: $color_333;
margin-left: 6px;
}
}
.cart-footer{
position: fixed;
bottom: 0;
left: 0;
.all-pirce {
flex: 1;
margin-right: 20px;
display: flex;
align-items: center;
p {
margin: 0;
padding: 0;
font-size: $font_16;
text-align: right;
width: 100%;
display: flex;
justify-content: space-between;
border-top:1px solid #eee;
background-color:rgba(255,255,255,.7);
height:50px;
.cart-label{
display: flex;
}
&>div:nth-child(1){
text-align: center;
height: 50px;
line-height: 50px;
padding-left: 12px;
div{
font-size: $font_16;
color: $color_333;
margin-left: 6px;
}
}
.all-pirce{
flex:1;
margin-right: 20px;
display: flex;
align-items: center;
p{
margin:0;
padding:0;
font-size: $font_16;
text-align: right;
width:100%;
span{
color: $color_333;
font-size: $font_16;
}
span:nth-child(2){
color: $red;
}
}
span {
color: $color_666;
font-size: $font_14;
}
&>div:nth-child(3){
width: 100px;
line-height: 50px;
text-align: center;
font-size: $font_16;
background-color: $bg_ff3131;
color: $white;
span{
font-size: 10px;
font-weight:400;
}
}
div.active{
background-color: #ff5b05;
color:#fff;
span:nth-child(2) {
color: $red;
}
}
}
& > div:nth-child(3) {
width: 100px;
line-height: 50px;
text-align: center;
font-size: $font_16;
background-color: $bg_ff3131;
color: $white;
span {
font-size: 16px;
font-weight: 400;
}
}
div.active {
background-color: #ff5b05;
color: #fff;
}
}
.am-navbar-light {
background-color: $bg_f7f9fc;
}
}
.shopcard-check{
display: flex;
justify-items: center;
align-items: center;
padding-right: 12px;
}
.card-wrap{
margin-left: 40px;
.shopcard-check {
display: flex;
justify-items: center;
align-items: center;
padding-right: 12px;
}
......@@ -13,33 +13,19 @@ class CartItem extends Component {
}
// 改变选择
onChange(e, id) {
let checked = e.target.checked;
// console.log(checked,id)
let checked = e.target.checked
this.props.checkChange(id, checked)
}
// 修改购物车
editCart(it, val) {
}
// 删除购物车
delete(id) {
}
//跳转
goto(id) {
}
//render
render() {
let item = this.props.item
const Info = (
<div className="order-info">
<p className='order-title'>{item.title}</p>
<p className='order-content'>{item.content}</p>
<p className='order-title text-overflow-one'>{item.course_title}</p>
<p className='order-content text-overflow-2'>{item.simpledescription}</p>
<p className='order-des'>
<span className='order-newprice'>¥{item.newprice}</span>
<span className='order-price'>¥{item.price}</span>
<span className='order-newprice'>¥{item.price1}</span>
<span className='order-price'>¥{item.price0}</span>
</p>
</div>
)
......@@ -48,15 +34,13 @@ class CartItem extends Component {
<div className="cart-c-item" >
<div className="cart-c-check">
<Checkbox checked={item.check} onChange={(e) => {
this.onChange(e, item.id)
this.onChange(e, item.course_id)
}} />
</div>
<div className="card-wrap">
<OrderList info={Info}></OrderList>
</div>
<div className="card-wrap">
<OrderList info={Info} src={item.image_name}></OrderList>
</div>
</div>
)
......
import React, { Component } from 'react'
import React, {Component} from 'react'
import {Link} from 'react-router-dom'
import CartItem from './cartItem'
class ShopCard extends Component {
class cartList extends Component {
render() {
return (
<div className="cart-main">
{/* 遍历购物车商品列表 */}
<div className="cart-c-body">
{
this.props.data.length > 0 ?
this.props.data.map((item, i) => {
this.props.data.length < 0 ?
this.props.data.map((item, index) => {
return (
<CartItem
index={i}
index={index}
changeStock={(id, val) => {
this.props.changeStock(id, val)
}}
checkChange={(id, val) => {
this.props.checkChange(id, val)
}}
getCartList={() => {
this.props.getCartList()
}} key={i} item={item}/>
key={index} item={item}/>
)
})
: <div className="cart-tip">暂无商品</div>
: <div className="cart-tip">
<p><i className='iconfont iconfridge'></i></p>
<p className='cart-mess'>这里是空的,快去逛逛吧~</p>
<Link to='/'>去逛逛</Link>
</div>
}
</div>
</div>
......@@ -33,4 +36,4 @@ class ShopCard extends Component {
}
}
export default ShopCard;
\ No newline at end of file
export default cartList;
\ No newline at end of file
import React, { Component } from 'react'
import { connect } from 'react-redux'
import { Checkbox, NavBar } from 'antd-mobile'
import React, {Component} from 'react'
import {connect} from 'react-redux'
import {Checkbox, NavBar, Modal, Toast} from 'antd-mobile'
//组件
import ShopCart from './cartList.js'
import Loading from '@common/Loading'
import ShopCart from './cartList.js'
//css
import './card.scss'
import classnames from 'classnames'
import {api, http} from "@/utils";
const mockData = [
{
title: '三月面试求职班',
imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
content: '涵盖ML主流算法及其应用-文字超过一行换行',
newprice: '980',
price: '1280',
id: '110',
check: false
},
{
title: '三月面试求职班',
imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
content: '涵盖ML主流算法及其应用-文字超过一行换行',
newprice: '980',
price: '1280',
id: '111',
check: false
},
{
title: '三月面试求职班',
imgUrl: 'https://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/Image/4c5ccac604.jpg',
content: '涵盖ML主流算法及其应用-文字超过一行换行',
newprice: '980',
price: '1280',
id: '112',
check: false
}
]
const alert = Modal.alert;
class Cart extends Component {
constructor(props) {
super(props)
this.state = {
data: [],
deleteAll: false,
loading: false,
checkedNum: 0,
allPrice: 0,
cartNmu: 0,
data: mockData
courseIdarr: [] // 选中的课程id
}
this.checkChange = this.checkChange.bind(this);
this.getCartList = this.getCartList.bind(this);
this.changeStock = this.changeStock.bind(this);
}
//获取购物车列表
getCartList() {
componentDidMount() {
this.getList()
}
changeStock() {
getList = () => {
http.get(`${api.home}/m/cart/list`).then((res) => {
if (res.data.code === 200) {
this.setState({
data: res.data.data.courses
})
} else {
Toast.info(res.data.msg, 2);
}
})
}
//全选
allChange(e) {
let checked = e.target.checked
......@@ -75,12 +56,28 @@ class Cart extends Component {
data: newData
})
this.calc(newData)
if (checked) {
let arr = []
newData.map((item, i) => {
arr.push(item.course_id)
})
this.setState({
courseIdarr: arr
})
} else {
this.setState({
courseIdarr: []
})
}
}
//点击
checkChange(id, check) {
let newData = this.state.data.map((item, i) => {
if (item.id === id) {
if (item.course_id === id) {
return {
...item,
check: check
......@@ -93,7 +90,21 @@ class Cart extends Component {
data: newData
})
this.calc(newData)
let arr = []
newData.forEach((item, i) => {
if (item.check) {
arr.push(item.course_id)
this.setState({
courseIdarr: arr
})
} else {
this.setState({
courseIdarr: arr
})
}
})
}
//计算总价
calc(newData) {
let allPrice = 0;
......@@ -104,7 +115,7 @@ class Cart extends Component {
i++;
cartNmu += 1;
checkedNum = i;
allPrice += parseFloat(item.newprice);
allPrice += parseFloat(item.price1);
}
})
this.setState({
......@@ -113,40 +124,53 @@ class Cart extends Component {
cartNmu
})
}
//购买
buy() {
}
deleteAll() {
}
//装载组件
componentDidMount() {
this.getCartList()
// 删除
detail = () => {
if (this.state.courseIdarr.length > 0) {
alert('', '确定从购物车中删除?', [
{text: '取消', onPress: () => console.log('cancel')},
{
text: '确认',
onPress: () => {
console.log(this.state.courseIdarr)
let data = {
course_id: JSON.stringify(this.state.courseIdarr)
}
console.log(data)
http.post(`${api.home}/m/cart/remove`, data).then((res) => {
if (res.data.code === 200) {
this.getList()
} else {
Toast.info(res.data.msg, 2);
}
})
}
}
])
}
}
render() {
return (
<div className="cart-page" style={{ overflow: 'hidden' }}>
<div className="cart-page" style={{overflow: 'hidden'}}>
<NavBar
style={{ "height": "44px" }}
style={{"height": "44px"}}
className="order-tab"
mode="light"
icon={<i style={{"fontSize": '24px'}} className="iconfont iconiconfront-68"></i>}
rightContent={[
<i key="0" style={{ "fontSize": '24px' }} className="iconfont iconiconfront-56"></i>
<i key="0" style={{"fontSize": '24px'}} className="iconfont iconiconfront-56"
onClick={this.detail}></i>
]}
>
购物车
</NavBar>
<div className="cart-body">
{
this.state.loading ?
<Loading />
:
<ShopCart getCartList={this.getCartList} changeStock={this.changeStock} checkChange={this.checkChange} data={this.state.data}/>
}
<ShopCart checkChange={this.checkChange.bind(this)} data={this.state.data}/>
{
this.state.deleteAll ?
......@@ -154,18 +178,18 @@ class Cart extends Component {
<div>
<Checkbox onChange={(e) => {
this.allChange(e)
}} />
}}/>
<div>全选</div>
</div>
<div></div>
<div className={classnames({
'active': this.state.cartNmu > 0
})}
onClick={() => {
if (this.state.cartNmu > 0) {
this.delete()
}
}}>
})}
onClick={() => {
if (this.state.cartNmu > 0) {
this.delete()
}
}}>
删除<span>({this.state.cartNmu})</span>
</div>
</div>
......@@ -174,7 +198,7 @@ class Cart extends Component {
<div className="cart-label">
<Checkbox onChange={(e) => {
this.allChange(e)
}} />
}}/>
<div>全选</div>
</div>
<div className="all-pirce">
......@@ -190,12 +214,12 @@ class Cart extends Component {
this.buy()
}
}}>
去结算<span>({this.state.checkedNum})</span>
结算<span> ( {this.state.checkedNum} ) </span>
</div>
</div>
}
</div>
</div>
)
......
......@@ -21,6 +21,7 @@ import DrawDocument from '@/components/scholarship/DrawDocument/DrawDocument'
const Coupons = loadable(() => import(/* webpackChunkName: 'coupons'*/ '@/components/coupons'))
const Study = loadable(() => import(/* webpackChunkName: 'study'*/'@/components/study'))
const Video = loadable(() => import(/* webpackChunkName: 'video'*/'@/components/video'))
const sharePoster = loadable(() => import(/* webpackChunkName: 'shareposter'*/'@/components/sharePoster'))
export default [
{
......@@ -80,7 +81,8 @@ export default [
},
{
path: '/shopcart',
component: ShopCart
component: ShopCart,
isPrivate: true
},
{
path: '/bargain-middle-page',
......@@ -102,4 +104,8 @@ export default [
path: '/document',
component: DrawDocument
},
{
path: '/shareposter',
component: sharePoster
},
]
\ No newline at end of file
......@@ -25,6 +25,12 @@ const config = {
production: 'http://passport.julyedu.com',
proxy: {}
},
'pay-api':{
development: '/pay-api',
test: 'http://api-test.julyedu.com',
production: 'https://api.julyedu.com',
proxy: {}
}
}
module.exports = config
\ No newline at end of file
......@@ -854,7 +854,7 @@
dependencies:
regenerator-runtime "^0.13.2"
"@babel/runtime@^7.2.0", "@babel/runtime@^7.4.4":
"@babel/runtime@^7.2.0", "@babel/runtime@^7.4.0", "@babel/runtime@^7.4.4":
version "7.4.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.5.tgz#582bb531f5f9dc67d2fcb682979894f75e253f12"
integrity sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==
......@@ -1374,10 +1374,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1:
dependencies:
color-convert "^1.9.0"
antd-mobile@^2.2.11:
version "2.2.11"
resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-2.2.11.tgz#1e3f55d4cd78a837cdbf7a057869842aa96d6501"
integrity sha512-OV+bgpR/Z8Pxm73B39cajfBzLfCx4v52Qb57Oi9hgrhMtTCs+CBxDTKP94pcVnaltNmYY610Ok1fu91i10TiHg==
antd-mobile@^2.2.13:
version "2.2.13"
resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-2.2.13.tgz#ae9a2b33ed8af52ed92127b50691af401ac4c8ce"
integrity sha512-izBPlj5yvjPwzqvpjYYmKp9HOSoeIbqY4Z7gzFpxJXnDvaDoeY3ULr4AHQ1gdeJo6BpqjlcCHHw1IwX8DWN3JQ==
dependencies:
array-tree-filter "~2.1.0"
babel-runtime "6.x"
......@@ -1606,13 +1606,6 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
async-validator@~1.8.5:
version "1.8.5"
resolved "https://registry.yarnpkg.com/async-validator/-/async-validator-1.8.5.tgz#dc3e08ec1fd0dddb67e60842f02c0cd1cec6d7f0"
integrity sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==
dependencies:
babel-runtime "6.x"
async@^1.5.2:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
......@@ -1635,7 +1628,7 @@ atob@^2.1.1:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
autoprefixer@^9.4.2, autoprefixer@^9.5.1:
autoprefixer@^9.4.2:
version "9.5.1"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.5.1.tgz#243b1267b67e7e947f28919d786b50d3bb0fb357"
integrity sha512-KJSzkStUl3wP0D5sdMlP82Q52JLy5+atf2MHAre48+ckWkXgixmfHyWmA77wFDy6jTHU6mIgXv6hAQ2mf1PjJQ==
......@@ -1647,6 +1640,19 @@ autoprefixer@^9.4.2, autoprefixer@^9.5.1:
postcss "^7.0.14"
postcss-value-parser "^3.3.1"
autoprefixer@^9.6.0:
version "9.6.0"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.6.0.tgz#0111c6bde2ad20c6f17995a33fad7cf6854b4c87"
integrity sha512-kuip9YilBqhirhHEGHaBTZKXL//xxGnzvsD0FtBQa6z+A69qZD6s/BAX9VzDF1i9VKDquTJDQaPLSEhOnL6FvQ==
dependencies:
browserslist "^4.6.1"
caniuse-lite "^1.0.30000971"
chalk "^2.4.2"
normalize-range "^0.1.2"
num2fraction "^1.2.2"
postcss "^7.0.16"
postcss-value-parser "^3.3.1"
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
......@@ -1657,13 +1663,13 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
axios@^0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.0.tgz#32d53e4851efdc0a11993b6cd000789d70c05102"
integrity sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=
axios@^0.19.0:
version "0.19.0"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8"
integrity sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==
dependencies:
follow-redirects "^1.3.0"
is-buffer "^1.1.5"
follow-redirects "1.5.10"
is-buffer "^2.0.2"
axobject-query@^2.0.1:
version "2.0.2"
......@@ -2170,6 +2176,15 @@ browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.3.5, browserslist@^4.5
electron-to-chromium "^1.3.124"
node-releases "^1.1.14"
browserslist@^4.6.1:
version "4.6.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.6.2.tgz#574c665950915c2ac73a4594b8537a9eba26203f"
integrity sha512-2neU/V0giQy9h3XMPwLhEY3+Ao0uHSwHvU8Q1Ea6AgLVL1sXbX3dzPrJ8NWe5Hi4PoTkCYXOtVR9rfRLI0J/8Q==
dependencies:
caniuse-lite "^1.0.30000974"
electron-to-chromium "^1.3.150"
node-releases "^1.1.23"
bser@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
......@@ -2306,11 +2321,18 @@ camelcase@^4.1.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
camelcase@^5.3.1:
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
can-promise@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/can-promise/-/can-promise-0.0.1.tgz#7a7597ad801fb14c8b22341dfec314b6bd6ad8d3"
integrity sha512-gzVrHyyrvgt0YpDm7pn04MQt8gjh0ZAhN4ZDyCRtGl6YnuuK6b4aiUTD7G52r9l4YNmxfTtEscb92vxtAlL6XQ==
dependencies:
window-or-global "^1.0.1"
caniuse-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
......@@ -2326,6 +2348,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000918, caniuse-lite@^1.0.30000929, can
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000962.tgz#6c10c3ab304b89bea905e66adf98c0905088ee44"
integrity sha512-WXYsW38HK+6eaj5IZR16Rn91TGhU3OhbwjKZvJ4HN/XBIABLKfbij9Mnd3pM0VEwZSlltWjoWg3I8FQ0DGgNOA==
caniuse-lite@^1.0.30000971, caniuse-lite@^1.0.30000974:
version "1.0.30000974"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000974.tgz#b7afe14ee004e97ce6dc73e3f878290a12928ad8"
integrity sha512-xc3rkNS/Zc3CmpMKuczWEdY2sZgx09BkAxfvkxlAEBTqcMHeL8QnPqhKse+5sRTi3nrw2pJwToD2WvKn1Uhvww==
capture-exit@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
......@@ -2821,7 +2848,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
create-react-class@^15.5.3, create-react-class@^15.6.0:
create-react-class@^15.6.0:
version "15.6.3"
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036"
integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg==
......@@ -3166,6 +3193,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6.
dependencies:
ms "2.0.0"
debug@=3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
debug@^3.1.0, debug@^3.2.5, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
......@@ -3180,7 +3214,7 @@ debug@^4.0.1, debug@^4.1.0:
dependencies:
ms "^2.1.1"
decamelize@^1.1.1, decamelize@^1.1.2:
decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
......@@ -3350,6 +3384,11 @@ diffie-hellman@^5.0.0:
miller-rabin "^4.0.0"
randombytes "^2.0.0"
dijkstrajs@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b"
integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs=
dir-glob@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
......@@ -3405,11 +3444,6 @@ dom-converter@^0.2:
dependencies:
utila "~0.4"
dom-scroll-into-view@1.x:
version "1.2.1"
resolved "https://registry.yarnpkg.com/dom-scroll-into-view/-/dom-scroll-into-view-1.2.1.tgz#e8f36732dd089b0201a88d7815dc3f88e6d66c7e"
integrity sha1-6PNnMt0ImwIBqI14Fdw/iObWbH4=
dom-serializer@0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0"
......@@ -3513,6 +3547,11 @@ electron-to-chromium@^1.3.103, electron-to-chromium@^1.3.124:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.125.tgz#dbde0e95e64ebe322db0eca764d951f885a5aff2"
integrity sha512-XxowpqQxJ4nDwUXHtVtmEhRqBpm2OnjBomZmZtHD0d2Eo0244+Ojezhk3sD/MBSSe2nxCdGQFRXHIsf/LUTL9A==
electron-to-chromium@^1.3.150:
version "1.3.155"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.155.tgz#ebf0cc8eeaffd6151d1efad60fd9e021fb45fd3a"
integrity sha512-/ci/XgZG8jkLYOgOe3mpJY1onxPPTDY17y7scldhnSjjZqV6VvREG/LvwhRuV7BJbnENFfuDWZkSqlTh4x9ZjQ==
elliptic@^6.0.0:
version "6.4.1"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
......@@ -4262,7 +4301,14 @@ flush-write-stream@^1.0.0:
inherits "^2.0.3"
readable-stream "^2.3.6"
follow-redirects@^1.0.0, follow-redirects@^1.3.0:
follow-redirects@1.5.10:
version "1.5.10"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
dependencies:
debug "=3.1.0"
follow-redirects@^1.0.0:
version "1.7.0"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76"
integrity sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==
......@@ -4327,7 +4373,7 @@ form-data@~2.3.2:
combined-stream "^1.0.6"
mime-types "^2.1.12"
formik@^1.5.4:
formik@^1.5.7:
version "1.5.7"
resolved "https://registry.yarnpkg.com/formik/-/formik-1.5.7.tgz#2fc5fc2f0c693cdc4e8c9dad3a10eb4c4e131ff5"
integrity sha512-kZo8lS4WzfC2uivnSkE9DOuX9x+jVjCtIZOlb1A4lHGeURyuLt6eDfwGJzNlcP0lXIwmpANKzegiB8j60B54TA==
......@@ -5255,7 +5301,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
is-buffer@^2.0.0:
is-buffer@^2.0.0, is-buffer@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725"
integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
......@@ -5551,6 +5597,11 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isarray@^2.0.1:
version "2.0.4"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7"
integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA==
isemail@3.x.x:
version "3.2.0"
resolved "https://registry.yarnpkg.com/isemail/-/isemail-3.2.0.tgz#59310a021931a9fb06bbb51e155ce0b3f236832c"
......@@ -6731,6 +6782,15 @@ min-document@^2.19.0:
dependencies:
dom-walk "^0.1.0"
mini-create-react-context@^0.3.0:
version "0.3.2"
resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189"
integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw==
dependencies:
"@babel/runtime" "^7.4.0"
gud "^1.0.0"
tiny-warning "^1.0.2"
mini-css-extract-plugin@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz#ac0059b02b9692515a637115b0cc9fed3a35c7b0"
......@@ -7043,6 +7103,13 @@ node-releases@^1.1.14, node-releases@^1.1.3:
dependencies:
semver "^5.3.0"
node-releases@^1.1.23:
version "1.1.23"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.23.tgz#de7409f72de044a2fa59c097f436ba89c39997f0"
integrity sha512-uq1iL79YjfYC0WXoHbC/z28q/9pOl8kSHaXdWmAAc8No+bDwqkZbzIJz55g/MUsPgSGm9LZ7QSUbzTcH5tz47w==
dependencies:
semver "^5.3.0"
node-sass@^4.11.0:
version "4.11.0"
resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.11.0.tgz#183faec398e9cbe93ba43362e2768ca988a6369a"
......@@ -7703,6 +7770,11 @@ pn@^1.1.0:
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
pngjs@^3.3.0:
version "3.4.0"
resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f"
integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==
pnp-webpack-plugin@1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.2.1.tgz#cd9d698df2a6fcf7255093c1c9511adf65b9421b"
......@@ -8352,6 +8424,15 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.2, postcss@^7.0.5,
source-map "^0.6.1"
supports-color "^6.1.0"
postcss@^7.0.16:
version "7.0.17"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f"
integrity sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==
dependencies:
chalk "^2.4.2"
source-map "^0.6.1"
supports-color "^6.1.0"
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
......@@ -8531,6 +8612,17 @@ q@^1.1.2:
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
qrcode@^1.3.3:
version "1.3.3"
resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.3.3.tgz#5ef50c0c890cffa1897f452070f0f094936993de"
integrity sha512-SH7V13AcJusH3GT8bMNOGz4w0L+LjcpNOU/NiOgtBhT/5DoWeZE6D5ntMJnJ84AMkoaM4kjJJoHoh9g++8lWFg==
dependencies:
can-promise "0.0.1"
dijkstrajs "^1.0.1"
isarray "^2.0.1"
pngjs "^3.3.0"
yargs "^12.0.5"
qs@6.5.2, qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
......@@ -8639,19 +8731,6 @@ rc-collapse@~1.9.1:
prop-types "^15.5.6"
rc-animate "2.x"
rc-form@^2.4.4:
version "2.4.4"
resolved "https://registry.yarnpkg.com/rc-form/-/rc-form-2.4.4.tgz#ac0f3cc643724991c742d5ae6742777fbc0bcfbb"
integrity sha512-AHR2GGYJOlKG5jP6ZjqS+PVBrUUXt+kDJFgJeDw17k6RDVIrG1535MxDPgNmRXp2VM4GQij4sVvjaHvwFsUgCA==
dependencies:
async-validator "~1.8.5"
babel-runtime "6.x"
create-react-class "^15.5.3"
dom-scroll-into-view "1.x"
hoist-non-react-statics "^3.3.0"
lodash "^4.17.4"
warning "^4.0.3"
rc-gesture@~0.0.18, rc-gesture@~0.0.22:
version "0.0.22"
resolved "https://registry.yarnpkg.com/rc-gesture/-/rc-gesture-0.0.22.tgz#fbcbdd5b46387a978b3ede48b42748e8ff77dddd"
......@@ -8840,29 +8919,29 @@ react-redux@^7.0.2:
prop-types "^15.7.2"
react-is "^16.8.6"
react-router-dom@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.0.tgz#542a9b86af269a37f0b87218c4c25ea8dcf0c073"
integrity sha512-wSpja5g9kh5dIteZT3tUoggjnsa+TPFHSMrpHXMpFsaHhQkm/JNVGh2jiF9Dkh4+duj4MKCkwO6H08u6inZYgQ==
react-router-dom@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.0.1.tgz#ee66f4a5d18b6089c361958e443489d6bab714be"
integrity sha512-zaVHSy7NN0G91/Bz9GD4owex5+eop+KvgbxXsP/O+iW1/Ln+BrJ8QiIR5a6xNPtrdTvLkxqlDClx13QO1uB8CA==
dependencies:
"@babel/runtime" "^7.1.2"
history "^4.9.0"
loose-envify "^1.3.1"
prop-types "^15.6.2"
react-router "5.0.0"
react-router "5.0.1"
tiny-invariant "^1.0.2"
tiny-warning "^1.0.0"
react-router@5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.0.tgz#349863f769ffc2fa10ee7331a4296e86bc12879d"
integrity sha512-6EQDakGdLG/it2x9EaCt9ZpEEPxnd0OCLBHQ1AcITAAx7nCnyvnzf76jKWG1s2/oJ7SSviUgfWHofdYljFexsA==
react-router@5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.0.1.tgz#04ee77df1d1ab6cb8939f9f01ad5702dbadb8b0f"
integrity sha512-EM7suCPNKb1NxcTZ2LEOWFtQBQRQXecLxVpdsP4DW4PbbqYWeRiLyV/Tt1SdCrvT2jcyXAXmVTmzvSzrPR63Bg==
dependencies:
"@babel/runtime" "^7.1.2"
create-react-context "^0.2.2"
history "^4.9.0"
hoist-non-react-statics "^3.1.0"
loose-envify "^1.3.1"
mini-create-react-context "^0.3.0"
path-to-regexp "^1.7.0"
prop-types "^15.6.2"
react-is "^16.6.0"
......@@ -10917,13 +10996,6 @@ warning@^3.0.0:
dependencies:
loose-envify "^1.0.0"
warning@^4.0.3:
version "4.0.3"
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
dependencies:
loose-envify "^1.0.0"
watch@~0.18.0:
version "0.18.0"
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
......@@ -11131,6 +11203,11 @@ wide-align@^1.1.0:
dependencies:
string-width "^1.0.2 || 2"
window-or-global@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/window-or-global/-/window-or-global-1.0.1.tgz#dbe45ba2a291aabc56d62cf66c45b7fa322946de"
integrity sha1-2+RboqKRqrxW1iz2bEW3+jIpRt4=
wordwrap@~0.0.2:
version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
......@@ -11368,6 +11445,14 @@ yargs-parser@^10.1.0:
dependencies:
camelcase "^4.1.0"
yargs-parser@^11.1.1:
version "11.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4"
integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs-parser@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
......@@ -11418,6 +11503,24 @@ yargs@^11.0.0:
y18n "^3.2.1"
yargs-parser "^9.0.2"
yargs@^12.0.5:
version "12.0.5"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13"
integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
dependencies:
cliui "^4.0.0"
decamelize "^1.2.0"
find-up "^3.0.0"
get-caller-file "^1.0.1"
os-locale "^3.0.0"
require-directory "^2.1.1"
require-main-filename "^1.0.1"
set-blocking "^2.0.0"
string-width "^2.0.0"
which-module "^2.0.0"
y18n "^3.2.1 || ^4.0.0"
yargs-parser "^11.1.1"
yargs@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment