Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xiaomai-cloud-class-web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaomai-cloud-class
xiaomai-cloud-class-web
Commits
a8e0b8af
Commit
a8e0b8af
authored
Jun 24, 2021
by
wufan
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into feature/wufan/2010621/replace-empty-picture
parents
bc01c551
9e1ba3d2
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
1338 additions
and
727 deletions
+1338
-727
src/common/js/axios.ts
+3
-3
src/common/js/user.ts
+15
-8
src/common/less/icon-font.less
+8
-11
src/index.html
+102
-90
src/index.tsx
+8
-4
src/modules/root/App.tsx
+37
-13
src/modules/root/CollegeManagePage.jsx
+12
-0
src/modules/root/CreateCollege.jsx
+5
-3
src/modules/root/Header.jsx
+127
-117
src/modules/root/Header.less
+89
-81
src/modules/root/Login.jsx
+167
-139
src/modules/root/Login.less
+29
-35
src/modules/root/Menu.less
+20
-23
src/modules/root/Menu.tsx
+48
-50
src/modules/root/WechatLogin.less
+24
-25
src/modules/root/WechatLogin.tsx
+124
-114
yarn.lock
+520
-11
No files found.
src/common/js/axios.ts
View file @
a8e0b8af
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-31 09:34:31
* @Date: 2020-08-31 09:34:31
* @LastEditors:
wufan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
5-27 10:42:12
* @LastEditTime: 2021-0
6-24 19:34:21
* @Description:
* @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
...
@@ -84,7 +84,7 @@ class Axios {
...
@@ -84,7 +84,7 @@ class Axios {
})
})
instance
.
interceptors
.
response
.
use
((
response
:
AxiosResponse
):
AxiosResponse
|
AxiosPromise
=>
{
instance
.
interceptors
.
response
.
use
((
response
:
AxiosResponse
):
AxiosResponse
|
AxiosPromise
=>
{
const
{
message
:
ResMessage
,
success
,
resultMsg
,
resultCode
}
=
response
.
data
;
const
{
message
:
ResMessage
,
success
,
resultMsg
,
resultCode
,
code
}
=
response
.
data
;
if
(
success
||
resultCode
===
0
)
{
if
(
success
||
resultCode
===
0
)
{
return
response
;
return
response
;
}
else
if
(
!
options
.
reject
)
{
}
else
if
(
!
options
.
reject
)
{
...
...
src/common/js/user.ts
View file @
a8e0b8af
...
@@ -2,21 +2,26 @@
...
@@ -2,21 +2,26 @@
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-31 09:34:25
* @Date: 2020-08-31 09:34:25
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-0
5-12 17:27:08
* @LastEditTime: 2021-0
6-23 16:08:50
* @Description:
* @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
*/
*/
import
Storage
from
'./storage'
;
import
Storage
from
'./storage'
;
import
{
PREFIX
,
USER_PREFIX
}
from
'@/domains/basic-domain/constants'
;
import
{
PREFIX
,
USER_PREFIX
}
from
'@/domains/basic-domain/constants'
;
declare
var
window
:
any
;
class
User
{
class
User
{
getStoreId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_storeId`
);
getVersion
()
{
return
Storage
.
getObj
(
`
${
PREFIX
}
_version`
)
}
getStoreId
(){
return
window
.
currentStoreUserInfo
.
storeId
||
Storage
.
get
(
`
${
PREFIX
}
_storeId`
)
}
}
getEnterpriseId
()
{
getEnterpriseId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_enterpriseId`
);
return
window
.
currentStoreUserInfo
.
enterpriseId
||
Storage
.
get
(
`
${
PREFIX
}
_enterpriseId`
);
}
}
getStoreName
()
{
getStoreName
()
{
...
@@ -28,21 +33,23 @@ class User {
...
@@ -28,21 +33,23 @@ class User {
}
}
getStoreUserId
()
{
getStoreUserId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_storeUserId`
);
return
window
.
currentStoreUserInfo
.
storeUserId
||
Storage
.
get
(
`
${
PREFIX
}
_storeUserId`
);
}
}
getCustomerId
()
{
getCustomerId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_customerId`
);
return
Storage
.
get
(
`
${
PREFIX
}
_customerId`
);
}
}
getUserId
()
{
getUserId
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_userId`
);
return
window
.
currentStoreUserInfo
.
userId
||
Storage
.
get
(
`
${
PREFIX
}
_userId`
);
}
}
getUserRole
()
{
getUserRole
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_userRole`
);
return
Storage
.
get
(
`
${
PREFIX
}
_userRole`
);
}
}
getToken
()
{
getToken
()
{
return
Storage
.
get
(
`
${
PREFIX
}
_token`
);
return
window
.
currentStoreUserInfo
.
token
||
Storage
.
get
(
`
${
PREFIX
}
_token`
);
}
}
getIsAdmin
()
{
getIsAdmin
()
{
...
...
src/common/less/icon-font.less
View file @
a8e0b8af
@font-face {
@font-face {
font-family: 'iconfont'; /* project id 2223403 */
font-family: 'iconfont'; /* Project id 2223403 */
src: url('//at.alicdn.com/t/font_2223403_boiin24pch6.eot');
src: url('//at.alicdn.com/t/font_2223403_oe5p510553.woff2?t=1624259078391') format('woff2'),
src: url('//at.alicdn.com/t/font_2223403_boiin24pch6.eot?#iefix') format('embedded-opentype'),
url('//at.alicdn.com/t/font_2223403_oe5p510553.woff?t=1624259078391') format('woff'),
url('//at.alicdn.com/t/font_2223403_boiin24pch6.woff2') format('woff2'),
url('//at.alicdn.com/t/font_2223403_oe5p510553.ttf?t=1624259078391') format('truetype');
url('//at.alicdn.com/t/font_2223403_boiin24pch6.woff') format('woff'),
url('//at.alicdn.com/t/font_2223403_boiin24pch6.ttf') format('truetype'),
url('//at.alicdn.com/t/font_2223403_boiin24pch6.svg#iconfont') format('svg');
}
}
.iconfont{
.iconfont
{
font-family:
"iconfont"
!important;
font-family:
'iconfont'
!important;
font-size:16px;
font-size:
16px;
font-style:normal;
font-style:
normal;
}
}
src/index.html
View file @
a8e0b8af
<!--
<!--
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-08-24 12:20:57
* @Date: 2020-08-24 12:20:57
* @LastEditors:
wufan
* @LastEditors:
fusanqiasng
* @LastEditTime: 2021-0
5-27 10:24:06
* @LastEditTime: 2021-0
6-21 15:06:27
* @Description:
* @Description:
* @Copyright: 杭州杰竞科技有限公司 版权所有
* @Copyright: 杭州杰竞科技有限公司 版权所有
-->
-->
...
@@ -13,17 +13,23 @@
...
@@ -13,17 +13,23 @@
<link
rel=
"icon"
href=
""
/>
<link
rel=
"icon"
href=
""
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
/>
<meta
name=
"theme-color"
content=
"#000000"
/>
<meta
name=
"theme-color"
content=
"#000000"
/>
<meta
name=
"description"
content=
"小麦企学院,一站式企业培训数字化服务商,通过“工具+内容”,帮助企业快速从0到1搭建数字化培训体系,并让整个培训过程可视化,降低培训成本,提升培训效率。"
>
<meta
<meta
name=
"keywords"
content=
"小麦企学院,企业培训,员工培训,企业大学,企业内训,企业外训,培训计划,培训素材,企培,企训,资料云盘,培训课程,培训任务,直播课,视频课,图文课,线下课,知识库,作业,考试,排行榜,培训类别管理,定制培训计划,管理数据,学习数据,企学院,资料共享,培训数字化,数字化培训,培训工具,在线培训,线上培训,培训saas,培训管理,企业微信培训,对客培训,客户培训,直播培训,互联网培训,新员工培训,管理培训,管理者培训,工人培训,制造业培训,餐饮培训,服务业培训,零售培训,门店培训,工厂培训,车间培训,培训补贴,人事培训,财务培训,职场培训,企业学院平台,教育企业学院,教育企业平台,教育平台学院,企业学习,酷学院,小鹅通,企业学院,云学堂,时代光华,云课堂,魔学院,云大学,米知云,授课学堂"
>
name=
"description"
content=
"小麦企学院,一站式企业培训数字化服务商,通过“工具+内容”,帮助企业快速从0到1搭建数字化培训体系,并让整个培训过程可视化,降低培训成本,提升培训效率。"
/>
<meta
name=
"keywords"
content=
"小麦企学院,企业培训,员工培训,企业大学,企业内训,企业外训,培训计划,培训素材,企培,企训,资料云盘,培训课程,培训任务,直播课,视频课,图文课,线下课,知识库,作业,考试,排行榜,培训类别管理,定制培训计划,管理数据,学习数据,企学院,资料共享,培训数字化,数字化培训,培训工具,在线培训,线上培训,培训saas,培训管理,企业微信培训,对客培训,客户培训,直播培训,互联网培训,新员工培训,管理培训,管理者培训,工人培训,制造业培训,餐饮培训,服务业培训,零售培训,门店培训,工厂培训,车间培训,培训补贴,人事培训,财务培训,职场培训,企业学院平台,教育企业学院,教育企业平台,教育平台学院,企业学习,酷学院,小鹅通,企业学院,云学堂,时代光华,云课堂,魔学院,云大学,米知云,授课学堂"
/>
<!-- <link rel="apple-touch-icon" href="../src/common/images/logo.png" /> -->
<!-- <link rel="apple-touch-icon" href="../src/common/images/logo.png" /> -->
<link
rel=
"shortcut icon"
href=
"https://image.xiaomaiketang.com/xm/c4KiP2epBP.png"
>
<link
rel=
"shortcut icon"
href=
"https://image.xiaomaiketang.com/xm/c4KiP2epBP.png"
/
>
<!--
<!--
manifest.json provides metadata used when your web app is installed on a
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
-->
<link
rel=
"manifest"
href=
"%PUBLIC_URL%/manifest.json"
/>
<link
rel=
"manifest"
href=
"%PUBLIC_URL%/manifest.json"
/>
<link
rel=
"stylesheet"
href=
"//at.alicdn.com/t/font_2223403_o
qqm4z9s35j.css"
>
<link
rel=
"stylesheet"
href=
"//at.alicdn.com/t/font_2223403_o
e5p510553.css"
/
>
<!--
<!--
Notice the use of %PUBLIC_URL% in the tags above.
Notice the use of %PUBLIC_URL% in the tags above.
...
@@ -69,146 +75,152 @@
...
@@ -69,146 +75,152 @@
// Browser globals (root is window)
// Browser globals (root is window)
root
.
download
=
factory
();
root
.
download
=
factory
();
}
}
}(
this
,
function
()
{
})(
this
,
function
()
{
return
function
download
(
data
,
strFileName
,
strMimeType
)
{
return
function
download
(
data
,
strFileName
,
strMimeType
)
{
var
self
=
window
,
// this script is only for browsers anyway...
var
self
=
window
,
// this script is only for browsers anyway...
defaultMime
=
"application/octet-stream"
,
// this default mime also triggers iframe downloads
defaultMime
=
'application/octet-stream'
,
// this default mime also triggers iframe downloads
mimeType
=
strMimeType
||
defaultMime
,
mimeType
=
strMimeType
||
defaultMime
,
payload
=
data
,
payload
=
data
,
url
=
!
strFileName
&&
!
strMimeType
&&
payload
,
url
=
!
strFileName
&&
!
strMimeType
&&
payload
,
anchor
=
document
.
createElement
(
"a"
),
anchor
=
document
.
createElement
(
'a'
),
toString
=
function
(
a
){
return
String
(
a
);},
toString
=
function
(
a
)
{
myBlob
=
(
self
.
Blob
||
self
.
MozBlob
||
self
.
WebKitBlob
||
toString
),
return
String
(
a
);
fileName
=
strFileName
||
"download"
,
},
myBlob
=
self
.
Blob
||
self
.
MozBlob
||
self
.
WebKitBlob
||
toString
,
fileName
=
strFileName
||
'download'
,
blob
,
blob
,
reader
;
reader
;
myBlob
=
myBlob
.
call
?
myBlob
.
bind
(
self
)
:
Blob
;
myBlob
=
myBlob
.
call
?
myBlob
.
bind
(
self
)
:
Blob
;
if
(
String
(
this
)
===
"true"
){
//reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
payload
=
[
payload
,
mimeType
];
mimeType
=
payload
[
0
];
payload
=
payload
[
1
];
}
if
(
String
(
this
)
===
'true'
)
{
//reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
payload
=
[
payload
,
mimeType
];
mimeType
=
payload
[
0
];
payload
=
payload
[
1
];
}
if
(
url
&&
url
.
length
<
2048
){
// if no filename and no mime, assume a url was passed as the only argument
if
(
url
&&
url
.
length
<
2048
)
{
fileName
=
url
.
split
(
"/"
).
pop
().
split
(
"?"
)[
0
];
// if no filename and no mime, assume a url was passed as the only argument
fileName
=
url
.
split
(
'/'
).
pop
().
split
(
'?'
)[
0
];
anchor
.
href
=
url
;
// assign href prop to temp anchor
anchor
.
href
=
url
;
// assign href prop to temp anchor
if
(
anchor
.
href
.
indexOf
(
url
)
!==
-
1
){
// if the browser determines that it's a potentially valid url path:
if
(
anchor
.
href
.
indexOf
(
url
)
!==
-
1
)
{
var
ajax
=
new
XMLHttpRequest
();
// if the browser determines that it's a potentially valid url path:
ajax
.
open
(
"GET"
,
url
,
true
);
var
ajax
=
new
XMLHttpRequest
();
ajax
.
responseType
=
'blob'
;
ajax
.
open
(
'GET'
,
url
,
true
);
ajax
.
onload
=
function
(
e
){
ajax
.
responseType
=
'blob'
;
ajax
.
onload
=
function
(
e
)
{
download
(
e
.
target
.
response
,
fileName
,
defaultMime
);
download
(
e
.
target
.
response
,
fileName
,
defaultMime
);
};
};
setTimeout
(
function
(){
ajax
.
send
();},
0
);
// allows setting custom ajax headers using the return:
setTimeout
(
function
()
{
return
ajax
;
ajax
.
send
();
},
0
);
// allows setting custom ajax headers using the return:
return
ajax
;
}
// end if valid url?
}
// end if valid url?
}
// end if url?
}
// end if url?
//go ahead and download dataURLs right away
//go ahead and download dataURLs right away
if
(
/^data
\:[\w
+
\-]
+
\/[\w
+
\-]
+
[
,;
]
/
.
test
(
payload
)){
if
(
/^data
\:[\w
+
\-]
+
\/[\w
+
\-]
+
[
,;
]
/
.
test
(
payload
))
{
if
(
payload
.
length
>
1024
*
1024
*
1.999
&&
myBlob
!==
toString
)
{
if
(
payload
.
length
>
(
1024
*
1024
*
1.999
)
&&
myBlob
!==
toString
){
payload
=
dataUrlToBlob
(
payload
);
payload
=
dataUrlToBlob
(
payload
);
mimeType
=
payload
.
type
||
defaultMime
;
mimeType
=
payload
.
type
||
defaultMime
;
}
else
{
}
else
{
return
navigator
.
msSaveBlob
// IE10 can't do a[download], only Blobs:
return
navigator
.
msSaveBlob
?
// IE10 can't do a[download], only Blobs:
?
navigator
.
msSaveBlob
(
dataUrlToBlob
(
payload
),
fileName
)
navigator
.
msSaveBlob
(
dataUrlToBlob
(
payload
),
fileName
)
:
:
saver
(
payload
);
// everyone else can save dataURLs un-processed
saver
(
payload
)
;
// everyone else can save dataURLs un-processed
}
}
}
//end if dataURL passed?
}
//end if dataURL passed?
blob
=
payload
instanceof
myBlob
?
payload
:
new
myBlob
([
payload
],
{
type
:
mimeType
})
;
blob
=
payload
instanceof
myBlob
?
payload
:
new
myBlob
([
payload
],
{
type
:
mimeType
});
function
dataUrlToBlob
(
strUrl
)
{
function
dataUrlToBlob
(
strUrl
)
{
var
parts
=
strUrl
.
split
(
/
[
:;,
]
/
),
var
parts
=
strUrl
.
split
(
/
[
:;,
]
/
),
type
=
parts
[
1
],
type
=
parts
[
1
],
decoder
=
parts
[
2
]
==
"base64"
?
atob
:
decodeURIComponent
,
decoder
=
parts
[
2
]
==
'base64'
?
atob
:
decodeURIComponent
,
binData
=
decoder
(
parts
.
pop
()
),
binData
=
decoder
(
parts
.
pop
()
),
mx
=
binData
.
length
,
mx
=
binData
.
length
,
i
=
0
,
i
=
0
,
uiArr
=
new
Uint8Array
(
mx
);
uiArr
=
new
Uint8Array
(
mx
);
for
(
i
;
i
<
mx
;
++
i
)
uiArr
[
i
]
=
binData
.
charCodeAt
(
i
);
for
(
i
;
i
<
mx
;
++
i
)
uiArr
[
i
]
=
binData
.
charCodeAt
(
i
);
return
new
myBlob
([
uiArr
],
{
type
:
type
});
return
new
myBlob
([
uiArr
],
{
type
:
type
});
}
}
function
saver
(
url
,
winMode
){
function
saver
(
url
,
winMode
)
{
if
(
'download'
in
anchor
)
{
if
(
'download'
in
anchor
)
{
//html5 A[download]
//html5 A[download]
anchor
.
href
=
url
;
anchor
.
href
=
url
;
anchor
.
setAttribute
(
"download"
,
fileName
);
anchor
.
setAttribute
(
'download'
,
fileName
);
anchor
.
className
=
"download-js-link"
;
anchor
.
className
=
'download-js-link'
;
anchor
.
innerHTML
=
"downloading..."
;
anchor
.
innerHTML
=
'downloading...'
;
anchor
.
style
.
display
=
"none"
;
anchor
.
style
.
display
=
'none'
;
document
.
body
.
appendChild
(
anchor
);
document
.
body
.
appendChild
(
anchor
);
setTimeout
(
function
()
{
setTimeout
(
function
()
{
anchor
.
click
();
anchor
.
click
();
document
.
body
.
removeChild
(
anchor
);
document
.
body
.
removeChild
(
anchor
);
if
(
winMode
===
true
){
setTimeout
(
function
(){
self
.
URL
.
revokeObjectURL
(
anchor
.
href
);},
250
);}
if
(
winMode
===
true
)
{
setTimeout
(
function
()
{
self
.
URL
.
revokeObjectURL
(
anchor
.
href
);
},
250
);
}
},
66
);
},
66
);
return
true
;
return
true
;
}
}
// handle non-a[download] safari as best we can:
// handle non-a[download] safari as best we can:
if
(
/
(
Version
)\/(\d
+
)\.(\d
+
)(?:\.(\d
+
))?
.*Safari
\/
/
.
test
(
navigator
.
userAgent
))
{
if
(
/
(
Version
)\/(\d
+
)\.(\d
+
)(?:\.(\d
+
))?
.*Safari
\/
/
.
test
(
navigator
.
userAgent
))
{
url
=
url
.
replace
(
/^data:
([\w\/\-\+]
+
)
/
,
defaultMime
);
url
=
url
.
replace
(
/^data:
([\w\/\-\+]
+
)
/
,
defaultMime
);
if
(
!
window
.
open
(
url
)){
// popup blocked, offer direct download:
if
(
!
window
.
open
(
url
))
{
if
(
confirm
(
"Displaying New Document
\
n
\
nUse Save As... to download, then click back to return to this page."
)){
location
.
href
=
url
;
}
// popup blocked, offer direct download:
if
(
confirm
(
'Displaying New Document
\
n
\
nUse Save As... to download, then click back to return to this page.'
))
{
location
.
href
=
url
;
}
}
}
return
true
;
return
true
;
}
}
//do iframe dataURL download (old ch+FF):
//do iframe dataURL download (old ch+FF):
var
f
=
document
.
createElement
(
"iframe"
);
var
f
=
document
.
createElement
(
'iframe'
);
document
.
body
.
appendChild
(
f
);
document
.
body
.
appendChild
(
f
);
if
(
!
winMode
){
// force a mime that will download:
if
(
!
winMode
)
{
url
=
"data:"
+
url
.
replace
(
/^data:
([\w\/\-\+]
+
)
/
,
defaultMime
);
// force a mime that will download:
url
=
'data:'
+
url
.
replace
(
/^data:
([\w\/\-\+]
+
)
/
,
defaultMime
);
}
}
f
.
src
=
url
;
f
.
src
=
url
;
setTimeout
(
function
(){
document
.
body
.
removeChild
(
f
);
},
333
);
setTimeout
(
function
()
{
document
.
body
.
removeChild
(
f
);
}
//end saver
},
333
);
}
//end saver
if
(
navigator
.
msSaveBlob
)
{
// IE10+ : (has Blob, but not a[download] or URL)
if
(
navigator
.
msSaveBlob
)
{
// IE10+ : (has Blob, but not a[download] or URL)
return
navigator
.
msSaveBlob
(
blob
,
fileName
);
return
navigator
.
msSaveBlob
(
blob
,
fileName
);
}
}
if
(
self
.
URL
){
// simple fast and modern way using Blob and URL:
if
(
self
.
URL
)
{
// simple fast and modern way using Blob and URL:
saver
(
self
.
URL
.
createObjectURL
(
blob
),
true
);
saver
(
self
.
URL
.
createObjectURL
(
blob
),
true
);
}
else
{
}
else
{
// handle non-Blob()+non-URL browsers:
// handle non-Blob()+non-URL browsers:
if
(
typeof
blob
===
"string"
||
blob
.
constructor
===
toString
)
{
if
(
typeof
blob
===
'string'
||
blob
.
constructor
===
toString
)
{
try
{
try
{
return
saver
(
"data:"
+
mimeType
+
";base64,"
+
self
.
btoa
(
blob
)
);
return
saver
(
'data:'
+
mimeType
+
';base64,'
+
self
.
btoa
(
blob
)
);
}
catch
(
y
)
{
}
catch
(
y
)
{
return
saver
(
"data:"
+
mimeType
+
","
+
encodeURIComponent
(
blob
)
);
return
saver
(
'data:'
+
mimeType
+
','
+
encodeURIComponent
(
blob
)
);
}
}
}
}
// Blob but not URL support:
// Blob but not URL support:
reader
=
new
FileReader
();
reader
=
new
FileReader
();
reader
.
onload
=
function
(
e
)
{
reader
.
onload
=
function
(
e
)
{
saver
(
this
.
result
);
saver
(
this
.
result
);
};
};
reader
.
readAsDataURL
(
blob
);
reader
.
readAsDataURL
(
blob
);
}
}
return
true
;
return
true
;
};
/* end download() */
};
/* end download() */
})
)
})
;
</script>
</script>
</body>
</body>
</html>
</html>
src/index.tsx
View file @
a8e0b8af
/*
/*
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2020-04-27 20:35:34
* @Date: 2020-04-27 20:35:34
* @LastEditors:
wufan
* @LastEditors:
Please set LastEditors
* @LastEditTime: 2021-0
3-26 16:14:09
* @LastEditTime: 2021-0
6-23 14:14:20
* @Description:
* @Description:
*/
*/
...
@@ -23,8 +23,8 @@ import User from '@/common/js/user';
...
@@ -23,8 +23,8 @@ import User from '@/common/js/user';
import
Service
from
"@/common/js/service"
;
import
Service
from
"@/common/js/service"
;
declare
var
getParameterByName
:
any
;
declare
var
getParameterByName
:
any
;
declare
var
window
:
any
;
window
.
currentStoreUserInfo
=
{}
const
history
=
createHashHistory
();
const
history
=
createHashHistory
();
window
.
RCHistory
=
_
.
extend
({},
history
,
{
window
.
RCHistory
=
_
.
extend
({},
history
,
{
...
@@ -65,6 +65,10 @@ if (getParameterByName('code') && isWeiXin()) {
...
@@ -65,6 +65,10 @@ if (getParameterByName('code') && isWeiXin()) {
User
.
setUserId
(
res
.
result
.
loginInfo
.
userId
);
User
.
setUserId
(
res
.
result
.
loginInfo
.
userId
);
User
.
setToken
(
res
.
result
.
loginInfo
.
xmToken
);
User
.
setToken
(
res
.
result
.
loginInfo
.
xmToken
);
User
.
setEnterpriseId
(
res
.
result
.
enterpriseId
);
User
.
setEnterpriseId
(
res
.
result
.
enterpriseId
);
window
.
currentStoreUserInfo
=
{}
window
.
currentStoreUserInfo
.
userId
=
res
.
result
.
loginInfo
.
userId
;
window
.
currentStoreUserInfo
.
token
=
res
.
result
.
loginInfo
.
xmToken
;
window
.
currentStoreUserInfo
.
enterpriseId
=
res
.
result
.
enterpriseId
;
mount
()
mount
()
})
})
}
else
{
}
else
{
...
...
src/modules/root/App.tsx
View file @
a8e0b8af
...
@@ -2,12 +2,12 @@
...
@@ -2,12 +2,12 @@
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2019-07-10 10:30:49
* @Date: 2019-07-10 10:30:49
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-0
5-24 16:29:05
* @LastEditTime: 2021-0
6-22 17:47:02
* @Description:
* @Description:
*/
*/
import
React
,
{
useContext
,
useEffect
,
useState
}
from
'react'
;
import
React
,
{
useContext
,
useEffect
,
useState
}
from
'react'
;
import
{
withRouter
}
from
'react-router-dom'
;
import
{
withRouter
}
from
'react-router-dom'
;
import
{
ConfigProvider
,
message
}
from
'antd'
;
import
{
ConfigProvider
,
message
,
Layout
}
from
'antd'
;
import
Header
from
'./Header'
import
Header
from
'./Header'
import
Menu
from
'./Menu'
import
Menu
from
'./Menu'
import
Main
from
'./Main'
import
Main
from
'./Main'
...
@@ -20,6 +20,8 @@ import Service from "@/common/js/service";
...
@@ -20,6 +20,8 @@ import Service from "@/common/js/service";
import
Bus
from
'@/core/tbus'
;
import
Bus
from
'@/core/tbus'
;
import
{
func
}
from
'prop-types'
;
import
{
func
}
from
'prop-types'
;
const
{
Footer
,
Sider
,
Content
}
=
Layout
;
declare
var
window
:
any
;
declare
var
window
:
any
;
const
App
:
React
.
FC
=
(
props
:
any
)
=>
{
const
App
:
React
.
FC
=
(
props
:
any
)
=>
{
...
@@ -29,7 +31,7 @@ const App: React.FC = (props: any) => {
...
@@ -29,7 +31,7 @@ const App: React.FC = (props: any) => {
const
[
menuType
,
setMenuType
]
=
useState
(
true
);
const
[
menuType
,
setMenuType
]
=
useState
(
true
);
const
enterpriseId
=
User
.
getEnterpriseId
();
const
enterpriseId
=
User
.
getEnterpriseId
();
window
.
ctx
=
ctx
;
window
.
ctx
=
ctx
;
useEffect
(()
=>
{
useEffect
(()
=>
{
getStoreAndUserInfo
();
getStoreAndUserInfo
();
...
@@ -60,24 +62,36 @@ const App: React.FC = (props: any) => {
...
@@ -60,24 +62,36 @@ const App: React.FC = (props: any) => {
async
function
getStoreAndUserInfo
()
{
async
function
getStoreAndUserInfo
()
{
await
(
enterpriseId
?
getStoreInfo
()
:
getStoreGroupAndStoreList
());
await
(
enterpriseId
?
getStoreInfo
()
:
getStoreGroupAndStoreList
());
}
}
function
getStoreInfo
()
{
function
getStoreInfo
()
{
console
.
log
(
"currentStoreUserInfo"
,
window
.
currentStoreUserInfo
);
const
params
=
{
const
params
=
{
storeId
:
User
.
getStoreId
(),
storeId
:
User
.
getStoreId
(),
userId
:
User
.
getUserId
(),
userId
:
User
.
getUserId
(),
};
};
Service
.
Hades
(
'public/customerHades/getStoreAndUserMsg'
,
params
).
then
((
res
)
=>
{
Service
.
Hades
(
'public/customerHades/getStoreAndUserMsg'
,
params
).
then
((
res
)
=>
{
const
{
id
,
storeUserId
,
storeName
,
userRole
,
storeType
}
=
res
.
result
;
if
(
res
.
success
){
User
.
setStoreId
(
id
);
const
{
id
,
storeUserId
,
storeName
,
userRole
,
storeType
}
=
res
.
result
;
User
.
setStoreUserId
(
storeUserId
);
User
.
setStoreId
(
id
);
User
.
setStoreName
(
storeName
);
User
.
setStoreUserId
(
storeUserId
);
Bus
.
trigger
(
'storeNameChange'
,
storeName
);
User
.
setStoreName
(
storeName
);
User
.
setUserRole
(
userRole
);
Bus
.
trigger
(
'storeNameChange'
,
storeName
);
User
.
setStoreType
(
storeType
);
User
.
setUserRole
(
userRole
);
setStoreUserId
(
storeUserId
)
User
.
setStoreType
(
storeType
);
getUserPermission
();
setCurrentStoreUserInfo
(
id
,
storeUserId
)
setStoreUserId
(
storeUserId
);
getUserPermission
();
}
})
})
}
}
function
setCurrentStoreUserInfo
(
storeId
:
any
,
storeUserId
:
any
){
window
.
currentStoreUserInfo
.
storeId
=
storeId
;
window
.
currentStoreUserInfo
.
storeUserId
=
storeUserId
;
window
.
currentStoreUserInfo
.
userId
=
User
.
getUserId
();
window
.
currentStoreUserInfo
.
token
=
User
.
getToken
();
window
.
currentStoreUserInfo
.
enterpriseId
=
User
.
getEnterpriseId
();
}
function
getStoreGroupAndStoreList
()
{
function
getStoreGroupAndStoreList
()
{
...
@@ -97,6 +111,7 @@ const App: React.FC = (props: any) => {
...
@@ -97,6 +111,7 @@ const App: React.FC = (props: any) => {
Bus
.
trigger
(
'storeNameChange'
,
storeName
);
Bus
.
trigger
(
'storeNameChange'
,
storeName
);
User
.
setUserRole
(
userRole
);
User
.
setUserRole
(
userRole
);
User
.
setStoreType
(
storeType
);
User
.
setStoreType
(
storeType
);
setCurrentStoreUserInfo
(
id
,
storeUserId
);
ctx
.
dispatch
(
setStoreGroupList
(
storeGroupVOS
))
ctx
.
dispatch
(
setStoreGroupList
(
storeGroupVOS
))
ctx
.
dispatch
(
setStoreList
(
storeVOS
));
ctx
.
dispatch
(
setStoreList
(
storeVOS
));
setStoreUserId
(
storeUserId
)
setStoreUserId
(
storeUserId
)
...
@@ -122,6 +137,15 @@ const App: React.FC = (props: any) => {
...
@@ -122,6 +137,15 @@ const App: React.FC = (props: any) => {
return
(
return
(
<
div
id=
"home"
>
<
div
id=
"home"
>
{
/* <Layout>
<Sider><Menu menuType={menuType} handleMenuType={handleMenuType} /></Sider>
<Layout>
<Header id="app" handleMenuType={handleMenuType} menuType={menuType} />
<ConfigProvider locale={zhCN} autoInsertSpaceInButton={false}>
<Main menuType={menuType} />
</ConfigProvider>
</Layout>
</Layout> */
}
<
Header
id=
"app"
handleMenuType=
{
handleMenuType
}
menuType=
{
menuType
}
/>
<
Header
id=
"app"
handleMenuType=
{
handleMenuType
}
menuType=
{
menuType
}
/>
<
ConfigProvider
locale=
{
zhCN
}
autoInsertSpaceInButton=
{
false
}
>
<
ConfigProvider
locale=
{
zhCN
}
autoInsertSpaceInButton=
{
false
}
>
<
Main
menuType=
{
menuType
}
/>
<
Main
menuType=
{
menuType
}
/>
...
...
src/modules/root/CollegeManagePage.jsx
View file @
a8e0b8af
...
@@ -179,6 +179,9 @@ export default class CollegeManagePage extends React.Component {
...
@@ -179,6 +179,9 @@ export default class CollegeManagePage extends React.Component {
return
null
;
return
null
;
};
};
User
.
setStoreId
(
item
.
id
);
User
.
setStoreId
(
item
.
id
);
User
.
setStoreUserId
(
item
.
storeUserId
);
window
.
currentStoreUserInfo
.
storeId
=
item
.
id
;
window
.
currentStoreUserInfo
.
storeUserId
=
item
.
storeUserId
;
window
.
RCHistory
.
push
(
'/home'
)
window
.
RCHistory
.
push
(
'/home'
)
}
}
}
}
>
>
...
@@ -196,6 +199,9 @@ export default class CollegeManagePage extends React.Component {
...
@@ -196,6 +199,9 @@ export default class CollegeManagePage extends React.Component {
e
.
preventDefault
();
e
.
preventDefault
();
e
.
stopPropagation
();
e
.
stopPropagation
();
User
.
setStoreId
(
item
.
id
);
User
.
setStoreId
(
item
.
id
);
User
.
setStoreUserId
(
item
.
storeUserId
);
window
.
currentStoreUserInfo
.
storeId
=
item
.
id
;
window
.
currentStoreUserInfo
.
storeUserId
=
item
.
storeUserId
;
window
.
RCHistory
.
push
(
'/college-info'
)
window
.
RCHistory
.
push
(
'/college-info'
)
}
}
}
}
>
编辑
</
span
>
>
编辑
</
span
>
...
@@ -250,6 +256,9 @@ export default class CollegeManagePage extends React.Component {
...
@@ -250,6 +256,9 @@ export default class CollegeManagePage extends React.Component {
return
null
;
return
null
;
};
};
User
.
setStoreId
(
item
.
id
);
User
.
setStoreId
(
item
.
id
);
User
.
setStoreUserId
(
item
.
storeUserId
);
window
.
currentStoreUserInfo
.
storeId
=
item
.
id
;
window
.
currentStoreUserInfo
.
storeUserId
=
item
.
storeUserId
;
window
.
RCHistory
.
push
(
'/home'
)
window
.
RCHistory
.
push
(
'/home'
)
}
}
}
}
>
>
...
@@ -267,6 +276,9 @@ export default class CollegeManagePage extends React.Component {
...
@@ -267,6 +276,9 @@ export default class CollegeManagePage extends React.Component {
e
.
preventDefault
();
e
.
preventDefault
();
e
.
stopPropagation
();
e
.
stopPropagation
();
User
.
setStoreId
(
item
.
id
);
User
.
setStoreId
(
item
.
id
);
User
.
setStoreUserId
(
item
.
storeUserId
);
window
.
currentStoreUserInfo
.
storeId
=
item
.
id
;
window
.
currentStoreUserInfo
.
storeUserId
=
item
.
storeUserId
;
window
.
RCHistory
.
push
(
'/college-info'
)
window
.
RCHistory
.
push
(
'/college-info'
)
}
}
}
}
>
编辑
</
span
>
>
编辑
</
span
>
...
...
src/modules/root/CreateCollege.jsx
View file @
a8e0b8af
...
@@ -10,6 +10,7 @@ import './CreateCollege.less';
...
@@ -10,6 +10,7 @@ import './CreateCollege.less';
let
cutFlag
=
false
;
let
cutFlag
=
false
;
export
default
class
CreateCollege
extends
React
.
Component
{
export
default
class
CreateCollege
extends
React
.
Component
{
constructor
(
props
)
{
constructor
(
props
)
{
super
(
props
);
super
(
props
);
this
.
state
=
{
this
.
state
=
{
...
@@ -18,6 +19,7 @@ export default class CreateCollege extends React.Component {
...
@@ -18,6 +19,7 @@ export default class CreateCollege extends React.Component {
name
:
''
,
name
:
''
,
enterpriseId
:
User
.
getEnterpriseId
(),
enterpriseId
:
User
.
getEnterpriseId
(),
};
};
this
.
loginInputRef
=
React
.
createRef
()
}
}
componentDidMount
()
{
componentDidMount
()
{
...
@@ -200,11 +202,11 @@ export default class CreateCollege extends React.Component {
...
@@ -200,11 +202,11 @@ export default class CreateCollege extends React.Component {
</
div
>
</
div
>
<
div
className=
"create-box"
>
<
div
className=
"create-box"
>
<
div
className=
"image-box"
>
<
div
className=
"image-box"
>
<
img
className=
"image"
src=
"https://image.xiaomaiketang.com/xm/fe4NCjr7XF.png"
/>
<
img
className=
"image"
src=
{
logo
}
/>
<
div
className=
"image-mask"
>
<
div
className=
"image-mask"
>
<
span
<
span
className=
"icon iconfont"
className=
"icon iconfont"
onClick=
{
()
=>
this
.
refs
.
logoInpu
t
.
click
()
}
onClick=
{
()
=>
this
.
loginInputRef
.
curren
t
.
click
()
}
>

</
span
>
>

</
span
>
<
span
<
span
className=
"icon iconfont"
className=
"icon iconfont"
...
@@ -241,7 +243,7 @@ export default class CreateCollege extends React.Component {
...
@@ -241,7 +243,7 @@ export default class CreateCollege extends React.Component {
type=
"file"
type=
"file"
accept=
"image/*"
accept=
"image/*"
value=
{
""
}
value=
{
""
}
ref=
"logoInput"
ref=
{
this
.
loginInputRef
}
style=
{
{
display
:
"none"
}
}
style=
{
{
display
:
"none"
}
}
onChange=
{
this
.
handleSelectCover
}
onChange=
{
this
.
handleSelectCover
}
/>
/>
...
...
src/modules/root/Header.jsx
View file @
a8e0b8af
...
@@ -2,33 +2,33 @@
...
@@ -2,33 +2,33 @@
* @Author: 吴文洁
* @Author: 吴文洁
* @Date: 2019-09-10 18:26:03
* @Date: 2019-09-10 18:26:03
* @LastEditors: Please set LastEditors
* @LastEditors: Please set LastEditors
* @LastEditTime: 2021-0
5-27 19:44:42
* @LastEditTime: 2021-0
6-24 19:28:14
* @Description:
* @Description:
*/
*/
import
React
,
{
useRef
,
useContext
,
useEffect
,
useState
}
from
"react"
;
import
React
,
{
useRef
,
useContext
,
useEffect
,
useState
}
from
'react'
;
import
"./Header.less"
;
import
'./Header.less'
;
import
{
Radio
,
Button
,
Dropdown
,
Modal
,
Tooltip
,
message
}
from
"antd"
;
import
{
Radio
,
Button
,
Dropdown
,
Modal
,
Tooltip
,
message
}
from
'antd'
;
import
{
LIVE_SHARE
}
from
"@/domains/course-domain/constants"
;
import
{
LIVE_SHARE
}
from
'@/domains/course-domain/constants'
;
import
User
from
"@/common/js/user"
;
import
User
from
'@/common/js/user'
;
import
Service
from
"@/common/js/service"
;
import
Service
from
'@/common/js/service'
;
import
StoreService
from
"@/domains/store-domain/storeService"
;
import
StoreService
from
'@/domains/store-domain/storeService'
;
import
BaseService
from
"@/domains/basic-domain/baseService"
;
import
BaseService
from
'@/domains/basic-domain/baseService'
;
import
{
XMContext
}
from
"@/store/context"
;
import
{
XMContext
}
from
'@/store/context'
;
import
logoImg
from
"@/common/images/logo.png"
;
import
logoImg
from
'@/common/images/logo.png'
;
import
CourseService
from
"@/domains/course-domain/CourseService"
;
import
CourseService
from
'@/domains/course-domain/CourseService'
;
import
qrcode
from
"@/libs/qrcode/qrcode.js"
;
import
qrcode
from
'@/libs/qrcode/qrcode.js'
;
import
Bus
from
'@/core/tbus'
;
import
Bus
from
'@/core/tbus'
;
import
ClickOutside
from
'../../components/ClickOutside'
;
import
ClickOutside
from
'../../components/ClickOutside'
;
import
_
from
"underscore"
;
import
_
from
'underscore'
;
const
baseImg
=
"https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png"
;
const
baseImg
=
'https://image.xiaomaiketang.com/xm/rJeQaZxtc7.png'
;
const
{
confirm
}
=
Modal
;
const
{
confirm
}
=
Modal
;
const
RadioGroup
=
Radio
.
Group
;
const
RadioGroup
=
Radio
.
Group
;
function
Header
(
props
)
{
function
Header
(
props
)
{
const
{
menuType
,
handleMenuType
}
=
props
;
const
{
menuType
,
handleMenuType
}
=
props
;
const
[
storeId
,
setStoreId
]
=
useState
(
User
.
getStoreId
());
const
[
storeId
,
setStoreId
]
=
useState
(
User
.
getStoreId
());
const
[
storeName
,
setStoreName
]
=
useState
(
User
.
getStoreName
())
const
[
storeName
,
setStoreName
]
=
useState
(
User
.
getStoreName
())
;
const
[
avatar
,
setAvatar
]
=
useState
(
''
);
const
[
avatar
,
setAvatar
]
=
useState
(
''
);
const
[
nickName
,
setNickName
]
=
useState
(
''
);
const
[
nickName
,
setNickName
]
=
useState
(
''
);
const
[
phone
,
setPhone
]
=
useState
(
''
);
const
[
phone
,
setPhone
]
=
useState
(
''
);
...
@@ -37,10 +37,11 @@ function Header(props) {
...
@@ -37,10 +37,11 @@ function Header(props) {
const
[
instScroll
,
setInstScroll
]
=
useState
(
false
);
const
[
instScroll
,
setInstScroll
]
=
useState
(
false
);
const
ctx
=
useContext
(
XMContext
);
const
ctx
=
useContext
(
XMContext
);
const
htmlUrl
=
`
${
LIVE_SHARE
}
store/index?id=
${
User
.
getStoreId
()}
&userId=
${
User
.
getUserId
()}
&from=work_weixin`
;
const
htmlUrl
=
`
${
LIVE_SHARE
}
store/index?id=
${
User
.
getStoreId
()}
&userId=
${
User
.
getUserId
()}
&from=work_weixin`
;
const
helpCenterUrl
=
'https://www.yuque.com/wangzhong-zkqw0/qixue'
;
// 帮助中心
const
storeUserId
=
User
.
getStoreUserId
();
const
storeUserId
=
User
.
getStoreUserId
();
const
enterpriseId
=
User
.
getEnterpriseId
();
const
enterpriseId
=
User
.
getEnterpriseId
();
const
messageHelpRef
=
useRef
(
null
)
const
messageHelpRef
=
useRef
(
null
)
;
const
domRef
=
useRef
(
null
);
const
domRef
=
useRef
(
null
);
const
listRef
=
useRef
(
list
);
const
listRef
=
useRef
(
list
);
...
@@ -58,17 +59,17 @@ function Header(props) {
...
@@ -58,17 +59,17 @@ function Header(props) {
enterpriseId
?
getEnterpriseUser
()
:
User
.
setIsAdmin
(
false
);
enterpriseId
?
getEnterpriseUser
()
:
User
.
setIsAdmin
(
false
);
},
[
storeUserId
]);
},
[
storeUserId
]);
useEffect
(()
=>
{
useEffect
(()
=>
{
if
(
!
messageHelpRef
.
current
)
{
if
(
!
messageHelpRef
.
current
)
{
return
return
;
}
}
if
(
menuType
)
{
if
(
menuType
)
{
messageHelpRef
.
current
.
style
.
marginLeft
=
"194px"
messageHelpRef
.
current
.
style
.
marginLeft
=
'194px'
;
}
else
{
}
else
{
messageHelpRef
.
current
.
style
.
marginLeft
=
"76px"
messageHelpRef
.
current
.
style
.
marginLeft
=
'76px'
;
}
}
},
[
menuType
])
},
[
menuType
]);
function
getUserInfo
()
{
function
getUserInfo
()
{
const
param
=
{
const
param
=
{
storeUserId
:
User
.
getStoreUserId
(),
storeUserId
:
User
.
getStoreUserId
(),
...
@@ -85,7 +86,7 @@ function Header(props) {
...
@@ -85,7 +86,7 @@ function Header(props) {
const
params
=
{
const
params
=
{
enterpriseId
,
enterpriseId
,
userId
:
User
.
getUserId
(),
userId
:
User
.
getUserId
(),
}
}
;
BaseService
.
getEnterpriseUser
(
params
).
then
((
res
)
=>
{
BaseService
.
getEnterpriseUser
(
params
).
then
((
res
)
=>
{
const
{
isAdmin
}
=
res
.
result
;
const
{
isAdmin
}
=
res
.
result
;
User
.
setIsAdmin
(
isAdmin
);
User
.
setIsAdmin
(
isAdmin
);
...
@@ -99,7 +100,7 @@ function Header(props) {
...
@@ -99,7 +100,7 @@ function Header(props) {
userId
:
User
.
getUserId
(),
userId
:
User
.
getUserId
(),
};
};
Service
.
Hades
(
'public/customerHades/getStoreListUser'
,
params
).
then
((
res
)
=>
{
Service
.
Hades
(
'public/customerHades/getStoreListUser'
,
params
).
then
((
res
)
=>
{
const
newList
=
_
.
filter
(
res
.
result
,
item
=>
item
.
state
===
'VALID'
);
const
newList
=
_
.
filter
(
res
.
result
,
(
item
)
=>
item
.
state
===
'VALID'
);
setList
(
newList
);
setList
(
newList
);
listRef
.
current
=
newList
;
listRef
.
current
=
newList
;
});
});
...
@@ -119,53 +120,52 @@ function Header(props) {
...
@@ -119,53 +120,52 @@ function Header(props) {
}
}
function
scrollEventListener
()
{
function
scrollEventListener
()
{
if
(
domRef
.
current
.
scrollHeight
===
190
+
domRef
.
current
.
scrollTop
)
{
if
(
domRef
.
current
.
scrollHeight
===
190
+
domRef
.
current
.
scrollTop
)
{
setInstScroll
(
false
);
setInstScroll
(
false
);
}
else
{
}
else
{
setInstScroll
(
true
);
setInstScroll
(
true
);
}
}
}
;
}
function
userMenu
()
{
function
userMenu
()
{
return
(
return
(
<
div
className=
"user-center-dropdown"
>
<
div
className=
'user-center-dropdown'
>
<
div
className=
"user-detail"
>
<
div
className=
'user-detail'
>
<
div
className=
"box"
>
<
div
className=
'box'
>
<
Tooltip
title=
{
nickName
}
>
<
Tooltip
title=
{
nickName
}
>
<
div
className=
"name"
>
{
nickName
}
</
div
>
<
div
className=
'name'
>
{
nickName
}
</
div
>
</
Tooltip
>
</
Tooltip
>
<
span
className=
"phone"
>
{
phone
}
</
span
>
<
span
className=
'phone'
>
{
phone
}
</
span
>
</
div
>
</
div
>
<
span
className=
"setting"
onClick=
{
()
=>
toPersonalInfoPage
()
}
>
个人设置
<
span
className=
'setting'
onClick=
{
()
=>
toPersonalInfoPage
()
}
>
<
span
className=
"iconfont icon"
>

</
span
>
个人设置
<
span
className=
'iconfont icon'
>

</
span
>
</
span
>
</
span
>
</
div
>
</
div
>
<
div
className=
"menu"
>
<
div
className=
'menu'
>
{
User
.
getEnterpriseId
()
&&
{
User
.
getEnterpriseId
()
&&
(
<
div
<
div
className=
"menu-item"
className=
'menu-item'
key=
"1"
key=
'1'
onClick=
{
()
=>
{
onClick=
{
()
=>
{
window
.
RCHistory
.
push
({
window
.
RCHistory
.
push
({
pathname
:
'/college-manage'
,
pathname
:
'/college-manage'
,
});
});
}
}
}
}
>
>
<
span
className=
'menu-before iconfont icon'
>

</
span
>
<
span
className=
"menu-before iconfont icon"
>

</
span
>
<
span
>
进入管理后台
</
span
>
<
span
>
进入管理后台
</
span
>
<
span
className=
"menu-after iconfont icon"
>

</
span
>
<
span
className=
'menu-after iconfont icon'
>

</
span
>
</
div
>
</
div
>
}
)
}
<
div
<
div
className=
"menu-item"
className=
'menu-item'
key=
"2"
key=
'2'
onClick=
{
(
e
)
=>
{
onClick=
{
(
e
)
=>
{
handleLogoutConfirm
();
handleLogoutConfirm
();
}
}
}
}
>
>
<
span
className=
'menu-before iconfont icon'
>

</
span
>
<
span
className=
"menu-before iconfont icon"
>

</
span
>
<
span
>
退出登录
</
span
>
<
span
>
退出登录
</
span
>
<
span
className=
"menu-after iconfont icon"
>

</
span
>
<
span
className=
'menu-after iconfont icon'
>

</
span
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
...
@@ -184,13 +184,11 @@ function Header(props) {
...
@@ -184,13 +184,11 @@ function Header(props) {
function
handleLogoutConfirm
()
{
function
handleLogoutConfirm
()
{
return
confirm
({
return
confirm
({
title
:
"你确定要退出登录吗?"
,
title
:
'你确定要退出登录吗?'
,
content
:
"退出后,需重新登录"
,
content
:
'退出后,需重新登录'
,
icon
:
(
icon
:
<
span
className=
'icon iconfont default-confirm-icon'
>

</
span
>,
<
span
className=
"icon iconfont default-confirm-icon"
>

</
span
>
okText
:
'退出登录'
,
),
cancelText
:
'点错了'
,
okText
:
"退出登录"
,
cancelText
:
"点错了"
,
onOk
:
()
=>
{
onOk
:
()
=>
{
handleLogout
();
handleLogout
();
},
},
...
@@ -198,14 +196,13 @@ function Header(props) {
...
@@ -198,14 +196,13 @@ function Header(props) {
}
}
function
handleLogout
()
{
function
handleLogout
()
{
BaseService
.
logout
({
identifier
:
User
.
getIdentifier
()
}).
then
((
res
)
=>
{
BaseService
.
logout
({
identifier
:
User
.
getIdentifier
()
}).
then
((
res
)
=>
{
User
.
removeUserId
();
User
.
removeUserId
();
User
.
removeToken
();
User
.
removeToken
();
User
.
removeEnterpriseId
();
User
.
removeEnterpriseId
();
User
.
clearUserInfo
();
User
.
clearUserInfo
();
const
url
=
`
${
LIVE_SHARE
}
store/index?id=
${
User
.
getCustomerStoreId
()
||
User
.
getStoreId
()}
&userId=
${
User
.
getUserId
()}
&from=work_weixin`
;
const
url
=
`
${
LIVE_SHARE
}
store/index?id=
${
User
.
getCustomerStoreId
()
||
User
.
getStoreId
()}
&userId=
${
User
.
getUserId
()}
&from=work_weixin`
;
window
.
location
.
href
=
url
;
window
.
location
.
href
=
url
;
});
});
}
}
...
@@ -214,29 +211,29 @@ function Header(props) {
...
@@ -214,29 +211,29 @@ function Header(props) {
urls
:
[
htmlUrl
],
urls
:
[
htmlUrl
],
}).
then
((
res
)
=>
{
}).
then
((
res
)
=>
{
const
{
result
=
[]
}
=
res
;
const
{
result
=
[]
}
=
res
;
const
qrcodeWrapDom
=
document
.
querySelector
(
"#h5-qrcode"
);
const
qrcodeWrapDom
=
document
.
querySelector
(
'#h5-qrcode'
);
const
qrcodeNode
=
new
qrcode
({
const
qrcodeNode
=
new
qrcode
({
text
:
result
[
0
].
shortUrl
,
text
:
result
[
0
].
shortUrl
,
size
:
110
,
size
:
110
,
});
});
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrcodeNode
);
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrcodeNode
);
});
});
}
}
// 复制分享链接
// 复制分享链接
function
handleCopy
()
{
function
handleCopy
()
{
window
.
copyText
(
htmlUrl
);
window
.
copyText
(
htmlUrl
);
message
.
success
(
'已复制学院地址,快去分享吧~'
);
message
.
success
(
'已复制学院地址,快去分享吧~'
);
}
}
return
(
return
(
<
div
id=
"top-container"
className=
"top-container"
>
<
div
id=
'top-container'
className=
'top-container'
>
<
div
className=
"top top-nav"
>
<
div
className=
'top top-nav'
>
{
/* <div>
{
/* <div>
<img src={topLeftLogo} className="logo" alt="" />
<img src={topLeftLogo} className="logo" alt="" />
</div> */
}
</div> */
}
<
div
className=
"message-help"
ref=
{
messageHelpRef
}
>
<
div
className=
'message-help'
ref=
{
messageHelpRef
}
>
{
list
.
length
?
(
{
list
.
length
?
(
<
ClickOutside
<
ClickOutside
onClickOutside=
{
()
=>
{
onClickOutside=
{
()
=>
{
...
@@ -244,46 +241,56 @@ function Header(props) {
...
@@ -244,46 +241,56 @@ function Header(props) {
setOpenDropdown
(
false
);
setOpenDropdown
(
false
);
}
}
}
}
}
}
className=
"college-container"
className=
'college-container'
>
>
<
div
style=
{
{
width
:
'100%'
,
height
:
'100%'
}
}
>
<
div
style=
{
{
width
:
'100%'
,
height
:
'100%'
}
}
>
<
div
className=
"college"
onClick=
{
()
=>
setOpenDropdown
(
false
)
}
>
<
div
className=
'college'
onClick=
{
()
=>
setOpenDropdown
(
false
)
}
>
<
span
<
span
className=
"college-name"
className=
'college-name'
onClick=
{
(
e
)
=>
{
e
.
stopPropagation
();
setOpenDropdown
(
!
openDropdown
);
addShadow
();
}
}
>
{
storeName
}
</
span
>
{
list
.
length
>
1
&&
<
span
className=
{
`icon iconfont ${list.length > 1 ? 'select' : ''}`
}
onClick=
{
(
e
)
=>
{
onClick=
{
(
e
)
=>
{
e
.
stopPropagation
();
e
.
stopPropagation
();
setOpenDropdown
(
!
openDropdown
);
setOpenDropdown
(
!
openDropdown
);
addShadow
();
addShadow
();
}
}
}
}
>
>

</
span
>
}
{
storeName
}
</
span
>
{
list
.
length
>
1
&&
(
<
span
className=
{
`icon iconfont ${list.length > 1 ? 'select' : ''}`
}
onClick=
{
(
e
)
=>
{
e
.
stopPropagation
();
setOpenDropdown
(
!
openDropdown
);
addShadow
();
}
}
>

</
span
>
)
}
</
div
>
</
div
>
<
div
className=
{
`select-college ${openDropdown ? 'active' : ''}`
}
>
<
div
className=
{
`select-college ${openDropdown ? 'active' : ''}`
}
>
<
h2
>
切换学院
</
h2
>
<
h2
>
切换学院
</
h2
>
<
RadioGroup
<
RadioGroup
onChange=
{
(
e
)
=>
{
onChange=
{
(
e
)
=>
{
setStoreId
(
e
.
target
.
value
)
setStoreId
(
e
.
target
.
value
)
;
User
.
setStoreId
(
e
.
target
.
value
);
User
.
setStoreId
(
e
.
target
.
value
);
list
.
map
((
item
)
=>
{
if
(
item
.
id
===
e
.
target
.
value
){
User
.
setStoreUserId
(
item
.
storeUserId
);
}
})
User
.
setUserId
(
User
.
getUserId
());
User
.
setToken
(
User
.
getToken
());
User
.
setEnterpriseId
(
User
.
getEnterpriseId
())
window
.
RCHistory
.
push
(
'/home'
);
window
.
RCHistory
.
push
(
'/home'
);
window
.
location
.
reload
();
window
.
location
.
reload
();
}
}
}
}
value=
{
storeId
}
value=
{
storeId
}
id=
"college-radio-group"
id=
'college-radio-group'
>
>
{
_
.
map
(
list
,
(
item
)
=>
(
{
_
.
map
(
list
,
(
item
)
=>
(
<
Radio
value=
{
item
.
id
}
key=
{
item
.
id
}
>
<
Radio
value=
{
item
.
id
}
key=
{
item
.
id
}
>
<
span
className=
"name"
>
{
item
.
storeName
}
</
span
>
<
span
className=
'name'
>
{
item
.
storeName
}
</
span
>
</
Radio
>
</
Radio
>
))
}
))
}
</
RadioGroup
>
</
RadioGroup
>
{
instScroll
&&
<
div
className=
"scroll-shadow"
></
div
>
}
{
instScroll
&&
<
div
className=
'scroll-shadow'
></
div
>
}
{
/* <div className="control">
{
/* <div className="control">
<Button
<Button
size="small"
size="small"
...
@@ -308,61 +315,64 @@ function Header(props) {
...
@@ -308,61 +315,64 @@ function Header(props) {
</
div
>
</
div
>
</
ClickOutside
>
</
ClickOutside
>
)
:
(
)
:
(
<
div
className=
"store-related"
>
<
div
className=
'store-related'
>
<
div
className=
"store-name"
>
{
storeName
}
</
div
>
<
div
className=
'store-name'
>
{
storeName
}
</
div
>
</
div
>
</
div
>
)
}
)
}
<
div
className=
"right-box"
>
<
div
className=
'right-box'
>
<
div
className=
"right-bg-img"
>
<
div
className=
'right-bg-img'
>
<
img
src=
"https://image.xiaomaiketang.com/xm/WCwjyyXYda.png"
></
img
>
<
img
src=
'https://image.xiaomaiketang.com/xm/WCwjyyXYda.png'
></
img
>
</
div
>
</
div
>
<
div
className=
"link-to-store"
>
<
div
className=
'link-to-store'
>
<
div
className=
"link"
>
<
div
className=
'link'
>
<
span
className=
"link-btn"
>
<
span
className=
'link-btn'
>
<
span
className=
"icon iconfont tool-tip-right"
>

</
span
>
<
span
className=
'icon iconfont tool-tip-right'
>

</
span
>
<
span
className=
"text"
>
前往学院
</
span
>
<
span
className=
'text'
>
前往学院
</
span
>
</
span
>
</
span
>
<
div
className=
"store-popover"
>
<
div
className=
'store-popover'
>
<
div
className=
"pc-url"
>
<
div
className=
'pc-url'
>
<
div
className=
"name"
>
网页端学院
</
div
>
<
div
className=
'name'
>
网页端学院
</
div
>
<
div
<
div
className=
"url-link"
className=
'url-link'
onClick=
{
()
=>
{
onClick=
{
()
=>
{
window
.
open
(
htmlUrl
);
window
.
open
(
htmlUrl
);
}
}
}
}
>
>
{
'立即前往 >'
}
{
"立即前往 >"
}
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
"h5-url"
>
<
div
className=
'h5-url'
>
<
div
className=
"name"
>
手机端学院
</
div
>
<
div
className=
'name'
>
手机端学院
</
div
>
<
div
id=
"h5-qrcode"
></
div
>
<
div
id=
'h5-qrcode'
></
div
>
<
div
className=
"tip"
>
微信扫码,打开学院
</
div
>
<
div
className=
'tip'
>
微信扫码,打开学院
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
"share"
onClick=
{
handleCopy
}
>
<
div
className=
'share'
onClick=
{
handleCopy
}
>
<
span
className=
"share-btn"
>
<
span
className=
'share-btn'
>
<
span
className=
"icon iconfont tool-tip-right"
>

</
span
>
<
span
className=
'icon iconfont tool-tip-right'
>

</
span
>
<
span
className=
"text"
>
分享学院
</
span
>
<
span
className=
'text'
>
分享学院
</
span
>
</
span
>
</
span
>
</
div
>
</
div
>
<
div
className=
'help'
>
<
a
href=
{
helpCenterUrl
}
target=
'_blank'
className=
'help-btn'
>
<
span
className=
'icon iconfont tool-tip-right'
>

</
span
>
<
span
className=
'text'
>
帮助中心
</
span
>
</
a
>
</
div
>
</
div
>
</
div
>
<
Dropdown
overlay=
{
userMenu
()
}
arrow
>
<
Dropdown
overlay=
{
userMenu
()
}
arrow
>
<
div
className=
"user"
>
<
div
className=
'user'
>
<
img
<
img
style=
{
{
style=
{
{
width
:
32
+
"px"
,
width
:
32
+
'px'
,
height
:
32
+
"px"
,
height
:
32
+
'px'
,
borderRadius
:
"50%"
,
borderRadius
:
'50%'
,
overflow
:
"hidden"
,
overflow
:
'hidden'
,
flexShrink
:
0
,
flexShrink
:
0
,
}
}
}
}
src=
{
avatar
||
baseImg
}
src=
{
avatar
||
baseImg
}
/>
/>
<
span
className=
"name"
>
<
span
className=
'name'
>
{
nickName
}
</
span
>
{
nickName
}
</
span
>
</
div
>
</
div
>
</
Dropdown
>
</
Dropdown
>
</
div
>
</
div
>
...
...
src/modules/root/Header.less
View file @
a8e0b8af
@import
"../../core/variables.less"
;
@import
'../../core/variables.less'
;
@top-height: 60px;
@top-height: 60px;
@icon-color: #939393;
@icon-color: #939393;
.top-container {
.top-container {
...
@@ -7,16 +7,23 @@
...
@@ -7,16 +7,23 @@
left: 0;
left: 0;
right: 0;
right: 0;
height: @top-height;
height: @top-height;
background-color: #2966
FF
;
background-color: #2966
ff
;
// z-index:2;
// z-index:2;
&::after{
&::after {
content:'';
content: '';
width:100%;
width: 100%;
height:60px;
height: 60px;
background: linear-gradient(180deg, #2966FF 0%, rgba(41, 102, 255, 0.82) 29%, rgba(41, 102, 255, 0.58) 55%, rgba(41, 102, 255, 0.27) 77%, rgba(7, 78, 255, 0) 100%);
background: linear-gradient(
position:absolute;
180deg,
z-index:2;
#2966ff 0%,
top:59px;
rgba(41, 102, 255, 0.82) 29%,
rgba(41, 102, 255, 0.58) 55%,
rgba(41, 102, 255, 0.27) 77%,
rgba(7, 78, 255, 0) 100%
);
position: absolute;
z-index: 2;
top: 59px;
}
}
.logo {
.logo {
display: inline-block;
display: inline-block;
...
@@ -26,7 +33,7 @@
...
@@ -26,7 +33,7 @@
.logo-name {
.logo-name {
font-size: 14px;
font-size: 14px;
font-weight: 500;
font-weight: 500;
color: #2966
FF
;
color: #2966
ff
;
line-height: 20px;
line-height: 20px;
vertical-align: middle;
vertical-align: middle;
font-weight: bold;
font-weight: bold;
...
@@ -204,7 +211,7 @@
...
@@ -204,7 +211,7 @@
cursor: pointer;
cursor: pointer;
}
}
.college-name {
.college-name {
color:
#FFFFFF
;
color:
#ffffff
;
white-space: nowrap;
white-space: nowrap;
text-overflow: ellipsis;
text-overflow: ellipsis;
overflow: hidden;
overflow: hidden;
...
@@ -213,9 +220,9 @@
...
@@ -213,9 +220,9 @@
.icon {
.icon {
font-size: 14px;
font-size: 14px;
margin-left: 8px;
margin-left: 8px;
color: #
FFF
;
color: #
fff
;
&:hover {
&:hover {
color:
#FFF
;
color:
#fff
;
}
}
}
}
}
}
...
@@ -283,7 +290,7 @@
...
@@ -283,7 +290,7 @@
align-items: center;
align-items: center;
.store-name {
.store-name {
font-size: 14px;
font-size: 14px;
color: #
FFF
;
color: #
fff
;
line-height: 49px;
line-height: 49px;
margin-left: 8px;
margin-left: 8px;
white-space: nowrap;
white-space: nowrap;
...
@@ -296,17 +303,17 @@
...
@@ -296,17 +303,17 @@
width: 1px;
width: 1px;
height: 16px;
height: 16px;
background-color: #f4f4f4;
background-color: #f4f4f4;
margin-right:16px;
margin-right:
16px;
}
}
}
}
.right-box {
.right-box {
display: flex;
display: flex;
align-items: center;
align-items: center;
}
}
.right-bg-img{
.right-bg-img
{
img{
img
{
width:277px;
width:
277px;
height:60px;
height:
60px;
}
}
}
}
.link-to-store {
.link-to-store {
...
@@ -315,90 +322,91 @@
...
@@ -315,90 +322,91 @@
line-height: 49px;
line-height: 49px;
.text {
.text {
font-size: 14px;
font-size: 14px;
color: #
FFF
;
color: #
fff
;
line-height: 49px;
line-height: 49px;
margin-left: 7px;
margin-left: 7px;
}
}
.iconfont {
.iconfont {
color: #
FFF
;
color: #
fff
;
}
}
.link {
.link {
cursor: pointer;
cursor: pointer;
position: relative;
position: relative;
.link-btn{
.link-btn
{
padding:3px 12px;
padding:
3px 12px;
border: 1px solid rgba(255, 255, 255, 0.5);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 4px;
border-radius: 4px;
&:hover{
&:hover
{
border: 1px solid rgba(255, 255, 255, 1);
border: 1px solid rgba(255, 255, 255, 1);
}
}
}
}
.store-popover {
.store-popover {
position: absolute;
display: none;
display: none;
width: 216px;
height: 260px;
top: 49px;
left: 0;
background-color: #fff;
flex-wrap: wrap;
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1);
z-index: 10;
.pc-url {
display: flex;
justify-content: space-between;
width: 100%;
height: 56px;
padding: 16px;
border-bottom: 1px solid #e8e8e8;
.name {
width: 70px;
font-size: 14px;
color: #333333;
line-height: 20px;
}
.url-link {
color: #2966ff;
font-size: 14px;
line-height: 20px;
}
}
.h5-url {
width: 100%;
.name,
.tip {
width: 70px;
font-size: 14px;
color: #333333;
line-height: 52px;
margin: 0 auto;
}
#h5-qrcode {
width: 110px;
height: 110px;
margin: 0 auto;
}
.tip {
line-height: 41px;
width: 130px;
}
}
}
}
&:hover {
&:hover {
.store-popover {
.store-popover {
position: absolute;
display: flex;
display: flex;
width: 216px;
height: 260px;
top: 49px;
left: 0;
background-color: #fff;
flex-wrap: wrap;
box-shadow: 0px 0px 8px 0px rgba(0, 0, 0, 0.1);
z-index: 10;
.pc-url {
display: flex;
justify-content: space-between;
width: 100%;
height: 56px;
padding: 16px;
border-bottom: 1px solid #e8e8e8;
.name {
width: 70px;
font-size: 14px;
color: #333333;
line-height: 20px;
}
.url-link {
color: #2966FF;
font-size: 14px;
line-height: 20px;
}
}
.h5-url {
width: 100%;
.name,
.tip {
width: 70px;
font-size: 14px;
color: #333333;
line-height: 52px;
margin: 0 auto;
}
#h5-qrcode {
width: 110px;
height: 110px;
margin: 0 auto;
}
.tip {
line-height: 41px;
width: 130px;
}
}
}
}
}
}
}
}
.share {
.share,
.help {
cursor: pointer;
cursor: pointer;
margin-left: 16px;
margin-left: 16px;
.share-btn{
.share-btn,
padding:3px 12px;
.help-btn {
padding: 3px 12px;
border: 1px solid rgba(255, 255, 255, 0.5);
border: 1px solid rgba(255, 255, 255, 0.5);
border-radius: 4px;
border-radius: 4px;
&:hover{
&:hover
{
border: 1px solid rgba(255, 255, 255, 1);
border: 1px solid rgba(255, 255, 255, 1);
}
}
}
}
...
@@ -529,7 +537,7 @@
...
@@ -529,7 +537,7 @@
white-space: nowrap;
white-space: nowrap;
overflow: hidden;
overflow: hidden;
text-overflow: ellipsis;
text-overflow: ellipsis;
color:
#FFF
;
color:
#fff
;
}
}
}
}
}
}
...
@@ -588,7 +596,7 @@
...
@@ -588,7 +596,7 @@
.user-detail {
.user-detail {
position: relative;
position: relative;
padding-bottom: 16px;
padding-bottom: 16px;
border-bottom: 1px solid #
E8E8E
8;
border-bottom: 1px solid #
e8e8e
8;
display: flex;
display: flex;
align-items: center;
align-items: center;
justify-content: space-between;
justify-content: space-between;
...
@@ -625,7 +633,7 @@
...
@@ -625,7 +633,7 @@
cursor: pointer;
cursor: pointer;
color: #333;
color: #333;
.menu-before {
.menu-before {
color: #
BFBFBF
;
color: #
bfbfbf
;
margin-right: 8px;
margin-right: 8px;
font-size: 14px;
font-size: 14px;
}
}
...
...
src/modules/root/Login.jsx
View file @
a8e0b8af
import
React
,
{
useEffect
,
useState
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
withRouter
}
from
'react-router-dom'
import
{
withRouter
}
from
'react-router-dom'
;
import
'./Login.less'
import
'./Login.less'
;
import
{
Input
,
Popover
,
message
,
Tabs
,
Button
}
from
'antd'
import
{
Input
,
Popover
,
message
,
Tabs
,
Button
}
from
'antd'
;
import
CheckBeforeSendCode
from
'../../components/CheckBeforeSendCode'
import
CheckBeforeSendCode
from
'../../components/CheckBeforeSendCode'
;
import
User
from
'@/common/js/user'
import
User
from
'@/common/js/user'
;
import
WechatLogin
from
'./WechatLogin'
import
WechatLogin
from
'./WechatLogin'
;
import
BaseService
from
'@/domains/basic-domain/baseService'
import
BaseService
from
'@/domains/basic-domain/baseService'
;
import
axios
from
'axios'
import
axios
from
'axios'
;
import
_
from
'underscore'
import
_
from
'underscore'
;
import
user
from
'@/common/js/user'
import
user
from
'@/common/js/user'
;
const
{
TabPane
}
=
Tabs
const
{
TabPane
}
=
Tabs
;
function
Login
(
props
)
{
function
Login
(
props
)
{
const
[
phone
,
setPhone
]
=
useState
(
''
)
// 登录手机号
/**
const
[
phoneverify
,
setPhoneverify
]
=
useState
(
''
)
// 密码登录验证码
* 手机登陆入口,暂时隐藏,此页注释代码勿删
const
[
openCheck1
,
setOpenCheck1
]
=
useState
(
false
)
*/
const
[
checking1
,
setChecking1
]
=
useState
(
false
)
const
[
codeText
,
setCodeText
]
=
useState
(
'获取验证码'
)
// 验证码提示语
// const [phone, setPhone] = useState(''); // 登录手机号
const
[
waitStatus
,
setWaitStatus
]
=
useState
(
false
)
// 验证码是否在倒计时
// const [phoneverify, setPhoneverify] = useState(''); // 密码登录验证码
const
[
errorMessage
,
setErrorMessage
]
=
useState
(
''
)
// const [openCheck1, setOpenCheck1] = useState(false);
const
[
phoneError
,
setPhoneError
]
=
useState
(
false
)
// const [checking1, setChecking1] = useState(false);
const
[
checkObject1
,
setCheckObject1
]
=
useState
({})
// const [codeText, setCodeText] = useState('获取验证码'); // 验证码提示语
// const [waitStatus, setWaitStatus] = useState(false); // 验证码是否在倒计时
// const [errorMessage, setErrorMessage] = useState('');
// const [phoneError, setPhoneError] = useState(false);
// const [checkObject1, setCheckObject1] = useState({});
/**
* 手机登陆入口,暂时隐藏,此页注释代码勿删
*/
useEffect
(()
=>
{
useEffect
(()
=>
{
const
enterpriseId
=
getParameterByName
(
'enterpriseId'
)
const
enterpriseId
=
getParameterByName
(
'enterpriseId'
)
;
const
userId
=
getParameterByName
(
'userId'
)
const
userId
=
getParameterByName
(
'userId'
)
;
const
from
=
getParameterByName
(
'from'
)
const
from
=
getParameterByName
(
'from'
)
;
const
storeId
=
getParameterByName
(
'storeId'
)
const
storeId
=
getParameterByName
(
'storeId'
)
;
if
(
storeId
)
{
if
(
storeId
)
{
User
.
setCustomerStoreId
(
storeId
)
User
.
setCustomerStoreId
(
storeId
)
;
}
}
if
(
from
===
'customer'
&&
enterpriseId
&&
userId
)
{
if
(
from
===
'customer'
&&
enterpriseId
&&
userId
)
{
if
(
!
user
.
getToken
()
||
enterpriseId
!==
user
.
getEnterpriseId
()
||
userId
!==
User
.
getUserId
())
{
if
(
!
user
.
getToken
()
||
enterpriseId
!==
user
.
getEnterpriseId
()
||
userId
!==
User
.
getUserId
())
{
getWXWorkLoginNoCheck
(
enterpriseId
,
userId
)
getWXWorkLoginNoCheck
(
enterpriseId
,
userId
)
;
}
else
{
}
else
{
window
.
RCHistory
.
push
({
window
.
RCHistory
.
push
({
pathname
:
`/switch-route`
pathname
:
`/switch-route`
,
})
})
;
}
}
}
else
{
}
else
{
User
.
removeUserId
()
User
.
removeUserId
()
;
User
.
removeToken
()
User
.
removeToken
()
;
User
.
removeEnterpriseId
()
User
.
removeEnterpriseId
()
;
}
}
},
[])
},
[])
;
function
getWXWorkLoginNoCheck
(
enterpriseId
,
userId
)
{
function
getWXWorkLoginNoCheck
(
enterpriseId
,
userId
)
{
const
params
=
{
const
params
=
{
appTermEnum
:
'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN'
,
appTermEnum
:
'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN'
,
enterpriseId
,
enterpriseId
,
userId
userId
,
}
}
;
BaseService
.
getWXWorkLoginNoCheck
(
params
).
then
((
res
)
=>
{
BaseService
.
getWXWorkLoginNoCheck
(
params
).
then
((
res
)
=>
{
User
.
setUserId
(
res
.
result
.
loginInfo
.
userId
)
User
.
setUserId
(
res
.
result
.
loginInfo
.
userId
)
User
.
setToken
(
res
.
result
.
loginInfo
.
xmToken
)
User
.
setToken
(
res
.
result
.
loginInfo
.
xmToken
)
User
.
setEnterpriseId
(
res
.
result
.
enterpriseId
)
User
.
setEnterpriseId
(
res
.
result
.
enterpriseId
)
window
.
currentStoreUserInfo
=
{}
window
.
currentStoreUserInfo
.
userId
=
res
.
result
.
loginInfo
.
userId
;
window
.
currentStoreUserInfo
.
token
=
res
.
result
.
loginInfo
.
xmToken
;
window
.
currentStoreUserInfo
.
enterpriseId
=
res
.
result
.
enterpriseId
;
User
.
setIdentifier
(
res
.
result
.
identifier
)
User
.
setIdentifier
(
res
.
result
.
identifier
)
window
.
RCHistory
.
push
({
window
.
RCHistory
.
push
({
pathname
:
`/switch-route`
pathname
:
`/switch-route`
,
})
});
})
});
}
async
function
checkAccount
(
code
,
callback
=
()
=>
{})
{
callback
()
}
function
checkSend
(
code
)
{
if
(
!
phone
)
{
setPhoneError
(
true
)
setErrorMessage
(
'请输入手机号'
)
return
}
if
(
phone
.
length
!=
11
)
{
setPhoneError
(
true
)
setErrorMessage
(
'请输入11位手机号'
)
return
}
!
_
.
isEmpty
(
checkObject1
)
&&
checkObject1
.
reset
()
setOpenCheck1
(
true
)
}
function
handleSendSMSCode
(
checkData
,
userType
)
{
if
(
waitStatus
)
return
let
timer
const
params
=
{
phone
:
phone
,
sig
:
checkData
.
sig
,
sessionId
:
checkData
.
csessionid
,
token
:
checkData
.
token
,
scene
:
'nc_login'
,
serverType
:
'CLOUD_CLASS_LOGIN'
,
appTermEnum
:
'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN'
}
BaseService
.
sendLoginAuthCode
(
params
).
then
((
res
)
=>
{
if
(
!
res
.
success
)
{
setErrorMessage
(
res
.
message
)
}
else
{
timeSub
(
60
)
setChecking1
(
true
)
}
})
function
timeSub
(
waitTime
,
unit
)
{
clearTimeout
(
timer
)
timer
=
setTimeout
(
function
()
{
if
(
waitTime
===
0
)
{
setCodeText
(
'发送验证码'
)
setChecking1
(
false
)
setWaitStatus
(
false
)
clearTimeout
(
timer
)
}
else
{
setCodeText
(
`
${
waitTime
}
秒后重发`
)
setWaitStatus
(
true
)
timeSub
(
--
waitTime
,
1000
)
}
},
unit
||
0
)
}
}
}
function
handleSubmit
()
{
/**
if
(
!
phone
)
{
* 手机登陆入口,暂时隐藏,此页注释代码勿删
setPhoneError
(
true
)
*/
setErrorMessage
(
'请输入手机号'
)
return
// async function checkAccount(code, callback = () => {}) {
}
// callback();
if
(
phone
.
length
!=
11
)
{
// }
setPhoneError
(
true
)
// function checkSend(code) {
setErrorMessage
(
'请输入11位手机号'
)
// if (!phone) {
return
// setPhoneError(true);
}
// setErrorMessage('请输入手机号');
if
(
!
phoneverify
)
{
// return;
setErrorMessage
(
'请输入验证码'
)
// }
return
// if (phone.length != 11) {
}
// setPhoneError(true);
const
params
=
{
// setErrorMessage('请输入11位手机号');
phone
,
// return;
authCode
:
phoneverify
,
// }
appTermEnum
:
'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN'
// !_.isEmpty(checkObject1) && checkObject1.reset();
}
// setOpenCheck1(true);
BaseService
.
login
(
params
).
then
((
res
)
=>
{
// }
if
(
!
res
.
success
)
{
// function handleSendSMSCode(checkData, userType) {
setErrorMessage
(
res
.
message
)
// if (waitStatus) return;
}
else
{
// let timer;
User
.
setUserId
(
res
.
result
.
userId
)
// const params = {
User
.
setToken
(
res
.
result
.
xmToken
)
// phone: phone,
window
.
RCHistory
.
push
({
// sig: checkData.sig,
pathname
:
`/switch-route`
// sessionId: checkData.csessionid,
})
// token: checkData.token,
}
// scene: 'nc_login',
})
// serverType: 'CLOUD_CLASS_LOGIN',
}
// appTermEnum: 'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN',
// };
// BaseService.sendLoginAuthCode(params).then((res) => {
// if (!res.success) {
// setErrorMessage(res.message);
// } else {
// timeSub(60);
// setChecking1(true);
// }
// });
// function timeSub(waitTime, unit) {
// clearTimeout(timer);
// timer = setTimeout(function () {
// if (waitTime === 0) {
// setCodeText('发送验证码');
// setChecking1(false);
// setWaitStatus(false);
// clearTimeout(timer);
// } else {
// setCodeText(`${waitTime}秒后重发`);
// setWaitStatus(true);
// timeSub(--waitTime, 1000);
// }
// }, unit || 0);
// }
// }
// function handleSubmit() {
// if (!phone) {
// setPhoneError(true);
// setErrorMessage('请输入手机号');
// return;
// }
// if (phone.length != 11) {
// setPhoneError(true);
// setErrorMessage('请输入11位手机号');
// return;
// }
// if (!phoneverify) {
// setErrorMessage('请输入验证码');
// return;
// }
// const params = {
// phone,
// authCode: phoneverify,
// appTermEnum: 'XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN',
// };
// BaseService.login(params).then((res) => {
// if (!res.success) {
// setErrorMessage(res.message);
// } else {
// User.setUserId(res.result.userId);
// User.setToken(res.result.xmToken);
// window.RCHistory.push({
// pathname: `/switch-route`,
// });
// }
// });
// }
/**
* 手机登陆入口,暂时隐藏,此页注释代码勿删
*/
return
(
return
(
<
div
className=
"login-page"
>
<
div
className=
'login-page'
>
<
div
className=
"logo-img-box"
><
img
src=
"https://image.xiaomaiketang.com/xm/6k8PPCmywG.png"
className=
"logo-img"
/></
div
>
<
div
className=
'logo-img-box'
>
<
div
className=
"login-main"
>
<
img
src=
'https://image.xiaomaiketang.com/xm/6k8PPCmywG.png'
className=
'logo-img'
/>
<
div
className=
"left-banner"
>
</
div
>
<
div
className=
"img-box"
><
img
src=
"https://image.xiaomaiketang.com/xm/CDCcdAdaPs.png"
alt=
""
/></
div
>
<
div
className=
'login-main'
>
<
div
className=
'left-banner'
>
<
div
className=
'img-box'
>
<
img
src=
'https://image.xiaomaiketang.com/xm/CDCcdAdaPs.png'
alt=
''
/>
</
div
>
</
div
>
</
div
>
<
div
className=
"login-box"
>
<
div
className=
'login-box'
>
<
div
className=
"left-top-block color-block"
></
div
>
<
div
className=
'left-top-block color-block'
></
div
>
<
div
className=
"right-bottom-block color-block"
></
div
>
<
div
className=
'right-bottom-block color-block'
></
div
>
<
div
className=
"login"
>
<
div
className=
'login'
>
<
div
className=
"r"
>
<
div
className=
'r'
>
<
Tabs
defaultActiveKey=
"1"
>
<
Tabs
defaultActiveKey=
'1'
>
<
TabPane
tab=
"企业微信登录"
key=
"1"
>
<
TabPane
tab=
'企业微信登录'
key=
'1'
>
<
WechatLogin
></
WechatLogin
>
<
WechatLogin
></
WechatLogin
>
</
TabPane
>
</
TabPane
>
<
TabPane
tab=
'手机号登录'
key=
'2'
>
{
/* 手机登陆入口,暂时隐藏,此页注释代码勿删 */
}
{
/* <TabPane tab='手机号登录' key='2'>
<div className='login-form'>
<div className='login-form'>
<div className='form'>
<div className='form'>
<div className='username' style={{ marginBottom: 16 }}>
<div className='username' style={{ marginBottom: 16 }}>
...
@@ -244,14 +271,15 @@ function Login(props) {
...
@@ -244,14 +271,15 @@ function Login(props) {
</div>
</div>
</div>
</div>
</div>
</div>
</
TabPane
>
</TabPane> */
}
{
/* 手机登陆入口,暂时隐藏,此页注释代码勿删 */
}
</
Tabs
>
</
Tabs
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
)
)
;
}
}
export
default
withRouter
(
Login
)
export
default
withRouter
(
Login
)
;
src/modules/root/Login.less
View file @
a8e0b8af
@import url(
"../../core/variables.less"
);
@import url(
'../../core/variables.less'
);
.login-page {
.login-page {
position: static;
position: static;
font-family:
"微软雅黑"
;
font-family:
'微软雅黑'
;
padding: 0;
padding: 0;
min-width: 1200px;
min-width: 1200px;
background: #
F4F6FA
;
background: #
f4f6fa
;
height: 100%;
height: 100%;
overflow-y: hidden;
overflow-y: hidden;
.logo-img-box{
.logo-img-box
{
position: absolute;
position: absolute;
top:24px;
top:
24px;
right:32px;
right:
32px;
z-index:1;
z-index:
1;
.logo-img{
.logo-img
{
width:120px;
width:
120px;
display: inline-block;
display: inline-block;
}
}
}
}
.login-main {
.login-main {
min-width: 1200px;
min-width: 1200px;
display: flex;
display: flex;
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
width: 540px;
width: 540px;
height: 100vh;
height: 100vh;
.img-box {
.img-box {
background: #2966
FF
;
background: #2966
ff
;
width: 540px;
width: 540px;
height: 100vh;
height: 100vh;
img {
img {
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
position: absolute;
position: absolute;
left: 50%;
left: 50%;
top: 50%;
top: 50%;
transform: translate(-50%,-50%);
transform: translate(-50%,
-50%);
}
}
}
}
}
}
...
@@ -50,10 +50,10 @@
...
@@ -50,10 +50,10 @@
height: 256px;
height: 256px;
background: rgba(41, 102, 255, 0.05);
background: rgba(41, 102, 255, 0.05);
position: absolute;
position: absolute;
top:0;
top:
0;
left: 0;
left: 0;
&.right-bottom-block {
&.right-bottom-block {
top:auto;
top:
auto;
left: auto;
left: auto;
bottom: 0;
bottom: 0;
right: 0;
right: 0;
...
@@ -90,11 +90,11 @@
...
@@ -90,11 +90,11 @@
height: 420px;
height: 420px;
position: absolute;
position: absolute;
left: 50%;
left: 50%;
top:50%;
top:
50%;
transform: translate(-50%,-50%);
transform: translate(-50%,
-50%);
overflow: hidden;
overflow: hidden;
background-color: #ffffff;
background-color: #ffffff;
border-radius: 4px;
border-radius: 4px;
.ant-tabs-tab-btn {
.ant-tabs-tab-btn {
color: #999999;
color: #999999;
font-size: 18px;
font-size: 18px;
...
@@ -107,7 +107,7 @@
...
@@ -107,7 +107,7 @@
.ant-tabs-tab-active {
.ant-tabs-tab-active {
.ant-tabs-tab-btn {
.ant-tabs-tab-btn {
color: #333333;
color: #333333;
font-weight:
500
!important;
font-weight:
500
!important;
}
}
}
}
.ant-tabs-nav::before {
.ant-tabs-nav::before {
...
@@ -115,7 +115,7 @@
...
@@ -115,7 +115,7 @@
}
}
.ant-tabs-tab {
.ant-tabs-tab {
text-align: center;
text-align: center;
margin:0;
margin:
0;
}
}
.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list {
.ant-tabs > .ant-tabs-nav .ant-tabs-nav-list {
margin: 0 auto;
margin: 0 auto;
...
@@ -128,13 +128,7 @@
...
@@ -128,13 +128,7 @@
width: 280px;
width: 280px;
height: 100%;
height: 100%;
background: @primary;
background: @primary;
background: -webkit-gradient(
background: -webkit-gradient(linear, left top, left bottom, from(#ffaa1a), to(#ff8634)) !important;
linear,
left top,
left bottom,
from(#ffaa1a),
to(#ff8634)
) !important;
display: flex;
display: flex;
display: -webkit-flex;
display: -webkit-flex;
-webkit-flex-direction: column;
-webkit-flex-direction: column;
...
@@ -197,8 +191,8 @@
...
@@ -197,8 +191,8 @@
}
}
}
}
}
}
.login-form{
.login-form
{
margin-top:32px;
margin-top:
32px;
}
}
.qrcode {
.qrcode {
display: none;
display: none;
...
@@ -281,7 +275,7 @@
...
@@ -281,7 +275,7 @@
font-weight: 500;
font-weight: 500;
color: #333;
color: #333;
&::after {
&::after {
content:
""
;
content:
''
;
display: block;
display: block;
width: 24px;
width: 24px;
height: 4px;
height: 4px;
...
@@ -383,12 +377,12 @@
...
@@ -383,12 +377,12 @@
border-radius: 3px;
border-radius: 3px;
margin-top: 60px;
margin-top: 60px;
font-size: 14px; // font-weight: 300;
font-size: 14px; // font-weight: 300;
color:
#2966FF
;
color:
#2966ff
;
&:hover {
&:hover {
color: #2966
FF
;
color: #2966
ff
;
}
}
&::before {
&::before {
content:
""
;
content:
''
;
display: block;
display: block;
height: 20px;
height: 20px;
width: 1px;
width: 1px;
...
@@ -416,7 +410,7 @@
...
@@ -416,7 +410,7 @@
}
}
.refresh {
.refresh {
font-size: 14px;
font-size: 14px;
color: #2966
FF
;
color: #2966
ff
;
cursor: pointer;
cursor: pointer;
}
}
}
}
...
@@ -466,10 +460,10 @@
...
@@ -466,10 +460,10 @@
transition: all 0.3s;
transition: all 0.3s;
cursor: pointer;
cursor: pointer;
border: none;
border: none;
text-align:center;
text-align:
center;
&:hover {
&:hover {
opacity: 0.7;
opacity: 0.7;
background: #5
C8AFF
;
background: #5
c8aff
;
}
}
}
}
}
}
...
...
src/modules/root/Menu.less
View file @
a8e0b8af
...
@@ -12,31 +12,28 @@
...
@@ -12,31 +12,28 @@
width: @xm-left-width;
width: @xm-left-width;
background: @menu-bakg;
background: @menu-bakg;
color: #333;
color: #333;
.topLogo {
.top-ctrl {
height: 62px;
display: flex;
background: rgba(255, 255, 255, 0.5);
align-items: center;
.img1 {
.topLogo {
width: 138px;
height: 60px;
height: 35px;
background: rgba(255, 255, 255, 0.5);
margin-left: 19px;
.img1 {
margin-top: 13px;
width: 138px;
}
height: 35px;
.img0 {
margin: 15px 0 15px 8px;
display: none;
}
width: 35px;
height: 35px;
margin-left: 10px;
margin-top: 13px;
}
}
}
.menu-type-icon{
.menu-type-icon{
margin: 8px 14px 0px 4px;
margin:4px 0 0px 150px
;
cursor: pointer
;
cursor: pointer;
.icon{
.icon{
font-size:14px;
font-size:14px
;
color:#5E606A
;
color:#5E606A;
}
}
}
}
}
.ant-menu {
.ant-menu {
padding-left: 0 !important;
padding-left: 0 !important;
color: #333;
color: #333;
...
@@ -67,7 +64,7 @@
...
@@ -67,7 +64,7 @@
.icon-img{
.icon-img{
width:18px;
width:18px;
height:18px;
height:18px;
margin-right:
1
6px;
margin-right:6px;
}
}
.listType {
.listType {
width: 5px;
width: 5px;
...
...
src/modules/root/Menu.tsx
View file @
a8e0b8af
import
React
,
{
useContext
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
React
,
{
Key
,
useContext
,
useEffect
,
useRef
,
useState
}
from
'react'
;
import
{
import
{
withRouter
,
withRouter
,
}
from
'react-router-dom'
;
}
from
'react-router-dom'
;
...
@@ -10,7 +10,6 @@ import StoreService from "@/domains/store-domain/storeService";
...
@@ -10,7 +10,6 @@ import StoreService from "@/domains/store-domain/storeService";
import
User
from
"@/common/js/user"
;
import
User
from
"@/common/js/user"
;
import
_
from
'underscore'
;
import
_
from
'underscore'
;
import
"./Menu.less"
;
import
"./Menu.less"
;
console
.
log
(
'2021-06-17'
)
const
{
SubMenu
}
=
Menu
;
const
{
SubMenu
}
=
Menu
;
function
Aside
(
props
:
any
)
{
function
Aside
(
props
:
any
)
{
...
@@ -19,8 +18,7 @@ function Aside(props: any) {
...
@@ -19,8 +18,7 @@ function Aside(props: any) {
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
selectKey
,
setSelectKey
]
=
useState
();
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
openKeys
,
setOpenKeys
]
=
useState
([
''
]);
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
[
topLogoUrl
,
setTopLogoUrl
]
=
useState
(
""
)
const
logoImg0Ref
=
useRef
<
any
>
()
const
[
collapsed
,
setCollapsed
]
=
useState
(
false
)
const
logoImg1Ref
=
useRef
<
any
>
()
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
const
rootSubmenuKeys
=
_
.
pluck
(
menuList
,
'groupCode'
);
useEffect
(()
=>
{
useEffect
(()
=>
{
const
link
=
props
.
location
.
pathname
;
const
link
=
props
.
location
.
pathname
;
...
@@ -40,7 +38,7 @@ function Aside(props: any) {
...
@@ -40,7 +38,7 @@ function Aside(props: any) {
},
[
props
.
location
.
pathname
])
},
[
props
.
location
.
pathname
])
useEffect
(()
=>
{
useEffect
(()
=>
{
getTopLeftLogo
()
getTopLeftLogo
()
})
}
,[]
)
function
getTopLeftLogo
()
{
function
getTopLeftLogo
()
{
if
(
User
.
getToken
())
{
if
(
User
.
getToken
())
{
StoreService
.
getStoreDetail
({
storeId
:
User
.
getStoreId
()})
StoreService
.
getStoreDetail
({
storeId
:
User
.
getStoreId
()})
...
@@ -56,34 +54,37 @@ function Aside(props: any) {
...
@@ -56,34 +54,37 @@ function Aside(props: any) {
}
}
function
toggleMenu
(
item
:
any
)
{
function
toggleMenu
(
item
:
any
)
{
window
.
RCHistory
.
push
(
item
.
link
)
window
.
RCHistory
.
push
(
item
.
link
)
}
if
(
!
menuType
)
{
function
onOpenChange
(
key
:
any
)
{
setOpenKeys
([])
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
}
}
}
}
function
handleMenu
()
{
function
onOpenChange
(
key
:
Key
[])
{
handleMenuType
();
if
(
typeof
key
===
"string"
)
{
if
(
openKeys
.
includes
(
key
))
{
setOpenKeys
([]);
}
else
{
setOpenKeys
([
key
]);
}
}
}
}
useEffect
(()
=>
{
if
(
!
logoImg0Ref
.
current
||
!
logoImg1Ref
.
current
)
{
function
onOpenChangeForHover
(
key
:
Key
[])
{
if
(
menuType
)
{
return
return
}
}
if
(
!
menuType
)
{
if
(
typeof
key
===
"string"
)
{
if
(
topLogoUrl
.
indexOf
(
"xiaomaiketang.com"
)
<
0
)
{
if
(
openKeys
.
includes
(
key
))
{
logoImg0Ref
.
current
.
style
.
display
=
"none"
setOpenKeys
([]);
logoImg1Ref
.
current
.
style
.
display
=
"none"
}
else
{
}
else
{
logoImg0Ref
.
current
.
style
.
display
=
"inline"
setOpenKeys
([
key
]);
logoImg1Ref
.
current
.
style
.
display
=
"none"
}
}
}
else
{
logoImg0Ref
.
current
.
style
.
display
=
"none"
logoImg1Ref
.
current
.
style
.
display
=
"inline"
}
}
},[
menuType
])
}
function
handleMenu
()
{
handleMenuType
();
setCollapsed
(
!
collapsed
)
}
return
(
return
(
<
div
<
div
...
@@ -94,9 +95,9 @@ function Aside(props: any) {
...
@@ -94,9 +95,9 @@ function Aside(props: any) {
:
"left-container left-container-vertical"
:
"left-container left-container-vertical"
}
}
>
>
<
div
className=
"top-ctrl"
>
<
div
className=
"topLogo"
>
<
div
className=
"topLogo"
>
<
img
ref=
{
logoImg0Ref
}
src=
"https://image.xiaomaiketang.com/xm/c4KiP2epBP.png"
alt=
""
className=
"img0"
></
img
>
{
menuType
&&
<
img
src=
{
topLogoUrl
}
alt=
""
className=
"img1"
></
img
>
}
<
img
ref=
{
logoImg1Ref
}
src=
{
topLogoUrl
}
alt=
""
className=
"img1"
></
img
>
</
div
>
</
div
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
<
div
className=
"menu-type-icon"
onClick=
{
handleMenu
}
>
{
menuType
?
(
{
menuType
?
(
...
@@ -113,14 +114,17 @@ function Aside(props: any) {
...
@@ -113,14 +114,17 @@ function Aside(props: any) {
</
span
>
</
span
>
)
}
)
}
</
div
>
</
div
>
</
div
>
<
div
className=
"left"
>
<
div
className=
"left"
>
<
div
className=
"nav"
>
<
div
className=
"nav"
>
<
Menu
<
Menu
style=
{
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}
}
style=
{
menuType
?
{
minHeight
:
"100%"
,
background
:
'#0E1935'
}:{
minHeight
:
"100%"
,
background
:
'#0E1935'
,
width
:
"56px"
}
}
selectedKeys=
{
selectKey
}
selectedKeys=
{
selectKey
}
openKeys=
{
openKeys
}
openKeys=
{
menuType
?
openKeys
:
[]
}
inlineCollapsed=
{
false
}
onOpenChange=
{
onOpenChange
}
inlineCollapsed=
{
collapsed
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
mode=
{
menuType
?
"inline"
:
"vertical"
}
>
>
{
{
...
@@ -129,19 +133,19 @@ function Aside(props: any) {
...
@@ -129,19 +133,19 @@ function Aside(props: any) {
return
null
;
return
null
;
}
}
if
(
item
.
children
)
{
if
(
item
.
children
)
{
return
<
SubMenu
key=
{
item
.
groupCode
}
style=
{
{
marginTop
:
0
}
}
className=
"first-menu-item"
title=
{
<
div
>
return
<
SubMenu
{
/* <span style={{ marginRight: 16 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span> */
}
key=
{
item
.
groupCode
}
<
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
>
style=
{
{
marginTop
:
0
}
}
{
menuType
&&
icon=
{
<
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
>
}
<
span
>
{
item
.
groupName
}
</
span
>
title=
{
menuType
?
<
span
>
{
item
.
groupName
}
</
span
>
:
""
}
}
</
div
>
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
}
onTitleClick=
{
()
=>
onOpenChange
(
item
.
groupCode
)
}
>
>
{
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
item
.
children
.
map
((
_item
:
any
,
_index
:
any
)
=>
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
_item
.
groupCode
)
===
-
1
)
{
if
(
ctx
.
xmState
.
storeUserPermissionList
.
indexOf
(
_item
.
groupCode
)
===
-
1
)
{
return
null
;
return
null
;
}
}
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
>
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
_item
)
}
}
style=
{
{
marginTop
:
0
}
}
key=
{
_item
.
groupCode
+
index
+
_index
}
>
<
span
className=
"name"
>
{
_item
.
groupName
}
</
span
>
<
span
className=
"name"
>
{
_item
.
groupName
}
</
span
>
</
Menu
.
Item
>
</
Menu
.
Item
>
...
@@ -149,18 +153,12 @@ function Aside(props: any) {
...
@@ -149,18 +153,12 @@ function Aside(props: any) {
}
}
</
SubMenu
>
</
SubMenu
>
}
else
{
}
else
{
return
<
Menu
.
Item
onClick=
{
()
=>
{
toggleMenu
(
item
)
}
}
key=
{
item
.
groupCode
}
className=
"first-menu-item"
>
return
<
Menu
.
Item
{
/* <span style={{ marginRight: 16 }} className="iconfont icon" dangerouslySetInnerHTML={{ __html:item.icon}}></span> */
}
onClick=
{
()
=>
{
toggleMenu
(
item
)
}
}
{
selectKey
===
item
.
groupCode
?
key=
{
item
.
groupCode
}
<
img
src=
{
item
.
selectImg
}
className=
"icon-img"
></
img
>
icon=
{
<
img
src=
{
selectKey
===
item
.
groupCode
?
item
.
selectImg
:
item
.
img
}
className=
"icon-img"
></
img
>
}
:
>
<
img
src=
{
item
.
img
}
className=
"icon-img"
></
img
>
{
menuType
?
item
.
groupName
:
""
}
}
{
menuType
&&
<
span
>
{
item
.
groupName
}
</
span
>
}
</
Menu
.
Item
>
</
Menu
.
Item
>
}
}
})
})
...
...
src/modules/root/WechatLogin.less
View file @
a8e0b8af
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
color: #999999;
color: #999999;
line-height: 20px;
line-height: 20px;
}
}
.rwm{
.rwm
{
position: relative;
position: relative;
width: 210px;
width: 210px;
height: 210px;
height: 210px;
...
@@ -18,30 +18,29 @@
...
@@ -18,30 +18,29 @@
margin-top: 24px;
margin-top: 24px;
border: 1px solid #e8e8e8;
border: 1px solid #e8e8e8;
border-radius: 2px;
border-radius: 2px;
padding:15px;
padding: 15px;
.error{
.error {
position: absolute;
position: absolute;
width: 200px;
width: 200px;
height: 200px;
height: 200px;
background: rgba(255, 255, 255, 0.95);
background: rgba(255, 255, 255, 0.95);
display: flex;
display: flex;
align-items:center;
align-items: center;
justify-content:center;
justify-content: center;
left:5px;
left: 5px;
top:5px;
top: 5px;
div{
div {
margin: 0 10px;
margin: 0 10px;
font-size: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
font-weight: 400;
color: #333333;
color: #333333;
line-height: 20px;
line-height: 20px;
}
}
.ope {
.ope{
cursor: pointer;
cursor: pointer;
color: rgba(82, 137, 250, 1);
color:rgba(82, 137, 250, 1);
}
}
}
}
}
}
...
...
src/modules/root/WechatLogin.tsx
View file @
a8e0b8af
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
qrcode
from
"@/libs/qrcode/qrcode.js"
;
import
qrcode
from
'@/libs/qrcode/qrcode.js'
;
import
Service
from
"@/common/js/service"
;
import
Service
from
'@/common/js/service'
;
import
User
from
'@/common/js/user'
;
import
User
from
'@/common/js/user'
;
import
{
PATH
}
from
'@/domains/basic-domain/constants'
;
import
{
PATH
}
from
'@/domains/basic-domain/constants'
;
import
'./WechatLogin.less'
import
'./WechatLogin.less'
;
const
Logo
=
require
(
"@/common/images/logo.png"
)
const
Logo
=
require
(
'@/common/images/logo.png'
);
declare
var
location
:
any
;
declare
var
location
:
any
;
declare
var
window
:
any
;
export
default
function
WechatLogin
(
props
:
any
)
{
export
default
function
WechatLogin
(
props
:
any
)
{
const
freshTime
=
60
;
const
freshTime
=
60
;
const
init
:
any
=
null
;
const
init
:
any
=
null
;
const
[
status
,
setStatus
]
=
useState
(
0
);
const
[
status
,
setStatus
]
=
useState
(
0
);
const
[
ticket
,
setTicket
]
=
useState
(
''
);
const
[
ticket
,
setTicket
]
=
useState
(
''
);
const
[
leftTime
,
setLeftTime
]
=
useState
(
freshTime
)
const
[
leftTime
,
setLeftTime
]
=
useState
(
freshTime
);
const
QRCode
=
useRef
(
init
);
const
QRCode
=
useRef
(
init
);
const
timer
=
useRef
(
init
);
const
timer
=
useRef
(
init
);
const
leftTimeRef
=
useRef
(
init
);
const
leftTimeRef
=
useRef
(
init
);
useEffect
(()
=>
{
leftTimeRef
.
current
=
leftTime
;
},
[
leftTime
])
useEffect
(()
=>
{
clearInterval
(
timer
.
current
as
any
);
if
(
status
===
0
)
{
Service
.
Hades
(
"anon/hades/getTicket"
,
{}).
then
((
res
:
any
)
=>
{
setTicket
(
res
.
result
)
const
redirect
=
`
${
PATH
}
?ticket=
${
res
.
result
}
&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=
${
process
.
env
.
DEPLOY_ENV
||
'dev'
}
`
// console.log(redirect)
// const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww409ccf9c6e31f19e&redirect_uri=${encodeURIComponent(redirect)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect`
// console.log(url)
const
qrcodeWrapDom
:
any
=
document
.
querySelector
(
'#qrcode'
);
let
qrnode
=
new
qrcode
({
text
:
redirect
,
correctLevel
:
2
,
size
:
180
,
// image: 'https://image.xiaomaiketang.com/xm/Newk4NrxKC.png',
image
:
'https://image.xiaomaiketang.com/xm/bFkRBz7teA.png'
,
imageSize
:
50
});
qrcodeWrapDom
.
innerHTML
=
''
;
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrnode
);
// QRCode.current.innerHTML = ''
// QRCode.current.prepend(qrnode);
setLeftTime
(
freshTime
);
timer
.
current
=
setInterval
(()
=>
{
if
(
leftTimeRef
.
current
==
0
)
{
clearInterval
(
timer
.
current
);
setStatus
(
1
);
return
}
setLeftTime
(
leftTimeRef
.
current
-
1
);
useEffect
(()
=>
{
leftTimeRef
.
current
=
leftTime
;
},
[
leftTime
]);
},
1000
)
useEffect
(()
=>
{
})
clearInterval
(
timer
.
current
as
any
);
}
if
(
status
===
0
)
{
return
()
=>
{
Service
.
Hades
(
'anon/hades/getTicket'
,
{}).
then
((
res
:
any
)
=>
{
setTicket
(
res
.
result
);
const
redirect
=
`
${
PATH
}
?ticket=
${
res
.
result
}
&appTermEnum=XIAOMAI_CLOUD_CLASS_PC_WEB_ADMIN&env=
${
process
.
env
.
DEPLOY_ENV
||
'dev'
}
`
;
const
qrcodeWrapDom
:
any
=
document
.
querySelector
(
'#qrcode'
);
let
qrnode
=
new
qrcode
({
text
:
redirect
,
correctLevel
:
2
,
size
:
180
,
image
:
'https://image.xiaomaiketang.com/xm/bFkRBz7teA.png'
,
imageSize
:
50
,
});
qrcodeWrapDom
.
innerHTML
=
''
;
qrcodeWrapDom
&&
qrcodeWrapDom
.
appendChild
(
qrnode
);
// QRCode.current.innerHTML = ''
// QRCode.current.prepend(qrnode);
setLeftTime
(
freshTime
);
timer
.
current
=
setInterval
(()
=>
{
if
(
leftTimeRef
.
current
==
0
)
{
clearInterval
(
timer
.
current
);
clearInterval
(
timer
.
current
);
}
setStatus
(
1
);
},
[
status
])
return
;
}
useEffect
(()
=>
{
if
(
leftTime
==
60
||
!
ticket
)
{
return
}
Service
.
Hades
(
'anon/hades/getTicketState'
,
{
ticket
}).
then
((
res
:
any
)
=>
{
if
(
res
.
result
===
'AUTH_SUCCESS'
)
{
Service
.
Hades
(
'anon/hades/getTicketWXWorkLogin'
,
{
ticket
}).
then
((
_res
:
any
)
=>
{
User
.
setUserId
(
_res
.
result
.
loginInfo
.
userId
);
User
.
setToken
(
_res
.
result
.
loginInfo
.
xmToken
);
User
.
setEnterpriseId
(
_res
.
result
.
enterpriseId
);
User
.
setIdentifier
(
_res
.
result
.
identifier
)
window
.
RCHistory
.
push
({
pathname
:
`/switch-route`
,
})
})
}
})
},
[
leftTime
])
setLeftTime
(
leftTimeRef
.
current
-
1
);
},
1000
);
});
}
return
()
=>
{
clearInterval
(
timer
.
current
);
};
},
[
status
]);
return
<
div
className=
'wechatLoginBox'
>
useEffect
(()
=>
{
<
div
className=
"rwm"
>
if
(
leftTime
==
60
||
!
ticket
)
{
<
div
id=
"qrcode"
></
div
>
return
;
}
{
Service
.
Hades
(
'anon/hades/getTicketState'
,
{
status
===
1
&&
<
div
className=
"error"
>
ticket
,
<
div
>
二维码已过期
}).
then
((
res
:
any
)
=>
{
<
p
className=
"ope"
onClick=
{
()
=>
{
if
(
res
.
result
===
'AUTH_SUCCESS'
)
{
setStatus
(
0
)
Service
.
Hades
(
'anon/hades/getTicketWXWorkLogin'
,
{
}
}
>
刷新
</
p
>
ticket
,
</
div
>
}).
then
((
_res
:
any
)
=>
{
</
div
>
User
.
setUserId
(
_res
.
result
.
loginInfo
.
userId
);
}
User
.
setToken
(
_res
.
result
.
loginInfo
.
xmToken
);
{
User
.
setEnterpriseId
(
_res
.
result
.
enterpriseId
);
status
===
2
&&
<
div
className=
"error"
>
User
.
setIdentifier
(
_res
.
result
.
identifier
);
<
div
>
所在企业还未注册学院
window
.
currentStoreUserInfo
=
{}
window
.
currentStoreUserInfo
.
userId
=
_res
.
result
.
loginInfo
.
userId
;
window
.
currentStoreUserInfo
.
token
=
_res
.
result
.
loginInfo
.
xmToken
;
window
.
currentStoreUserInfo
.
enterpriseId
=
_res
.
result
.
enterpriseId
;
window
.
RCHistory
.
push
({
pathname
:
`/switch-route`
,
});
});
}
});
},
[
leftTime
]);
<
p
className=
"ope"
onClick=
{
()
=>
{
return
(
setStatus
(
0
)
<
div
className=
'wechatLoginBox'
>
}
}
>
我知道了
</
p
>
<
div
className=
'rwm'
>
</
div
>
<
div
id=
'qrcode'
></
div
>
</
div
>
}
{
status
===
3
&&
<
div
className=
"error"
>
<
div
>
你还不是学院员工,请联系企业管理员
<
p
className=
"ope"
onClick=
{
()
=>
{
{
status
===
1
&&
(
setStatus
(
0
)
<
div
className=
'error'
>
}
}
>
我知道了
</
p
>
<
div
>
</
div
>
二维码已过期
</
div
>
<
p
}
className=
'ope'
</
div
>
onClick=
{
()
=>
{
<
p
className=
'text'
>
请使用企业微信扫码登录
</
p
>
setStatus
(
0
);
}
}
>
刷新
</
p
>
</
div
>
</
div
>
)
}
{
status
===
2
&&
(
<
div
className=
'error'
>
<
div
>
所在企业还未注册学院
<
p
className=
'ope'
onClick=
{
()
=>
{
setStatus
(
0
);
}
}
>
我知道了
</
p
>
</
div
>
</
div
>
)
}
{
status
===
3
&&
(
<
div
className=
'error'
>
<
div
>
你还不是学院员工,请联系企业管理员
<
p
className=
'ope'
onClick=
{
()
=>
{
setStatus
(
0
);
}
}
>
我知道了
</
p
>
</
div
>
</
div
>
)
}
</
div
>
<
p
className=
'text'
>
请使用企业微信扫码登录
</
p
>
</
div
>
</
div
>
}
);
\ No newline at end of file
}
yarn.lock
View file @
a8e0b8af
...
@@ -1596,6 +1596,11 @@
...
@@ -1596,6 +1596,11 @@
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==
integrity sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==
"@sindresorhus/is@^0.7.0":
version "0.7.0"
resolved "https://registry.nlark.com/@sindresorhus/is/download/@sindresorhus/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd"
integrity sha1-mgb08TfuhNffBGDB/bETX/psUP0=
"@svgr/babel-plugin-add-jsx-attribute@^4.2.0":
"@svgr/babel-plugin-add-jsx-attribute@^4.2.0":
version "4.2.0"
version "4.2.0"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1"
resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz#dadcb6218503532d6884b210e7f3c502caaa44b1"
...
@@ -2520,6 +2525,13 @@ aproba@^1.1.1:
...
@@ -2520,6 +2525,13 @@ aproba@^1.1.1:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
archive-type@^4.0.0:
version "4.0.0"
resolved "https://registry.npm.taobao.org/archive-type/download/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70"
integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=
dependencies:
file-type "^4.2.0"
argparse@^1.0.7:
argparse@^1.0.7:
version "1.0.10"
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
...
@@ -2937,6 +2949,11 @@ base64-js@^1.0.2:
...
@@ -2937,6 +2949,11 @@ base64-js@^1.0.2:
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1"
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==
base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.nlark.com/base64-js/download/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
integrity sha1-GxtEAWClv3rUC2UPCVljSBkDkwo=
base@^0.11.1:
base@^0.11.1:
version "0.11.2"
version "0.11.2"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
...
@@ -2997,6 +3014,14 @@ bizcharts@^3.3.0:
...
@@ -2997,6 +3014,14 @@ bizcharts@^3.3.0:
resize-observer-polyfill "^1.5.1"
resize-observer-polyfill "^1.5.1"
warning "^3.0.0"
warning "^3.0.0"
bl@^1.0.0:
version "1.2.3"
resolved "https://registry.nlark.com/bl/download/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
integrity sha1-Ho3YAULqyA1xWMnczAR/tiDgNec=
dependencies:
readable-stream "^2.3.5"
safe-buffer "^5.1.1"
bluebird@^3.5.5:
bluebird@^3.5.5:
version "3.7.2"
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
...
@@ -3169,6 +3194,29 @@ bser@2.1.1:
...
@@ -3169,6 +3194,29 @@ bser@2.1.1:
dependencies:
dependencies:
node-int64 "^0.4.0"
node-int64 "^0.4.0"
buffer-alloc-unsafe@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/buffer-alloc-unsafe/download/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
integrity sha1-vX3CauKXLQ7aJTvgYdupkjScGfA=
buffer-alloc@^1.2.0:
version "1.2.0"
resolved "https://registry.nlark.com/buffer-alloc/download/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
integrity sha1-iQ3ZDZI6hz4I4Q5f1RpX5bfM4Ow=
dependencies:
buffer-alloc-unsafe "^1.1.0"
buffer-fill "^1.0.0"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
buffer-fill@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/buffer-fill/download/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
buffer-from@^1.0.0:
buffer-from@^1.0.0:
version "1.1.1"
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
...
@@ -3193,6 +3241,14 @@ buffer@^4.3.0:
...
@@ -3193,6 +3241,14 @@ buffer@^4.3.0:
ieee754 "^1.1.4"
ieee754 "^1.1.4"
isarray "^1.0.0"
isarray "^1.0.0"
buffer@^5.2.1:
version "5.7.1"
resolved "https://registry.nlark.com/buffer/download/buffer-5.7.1.tgz?cache=0&sync_timestamp=1618846959596&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fbuffer%2Fdownload%2Fbuffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
integrity sha1-umLnwTEzBTWCGXFghRqPZI6Z7tA=
dependencies:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builtin-status-codes@^3.0.0:
builtin-status-codes@^3.0.0:
version "3.0.0"
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
...
@@ -3268,6 +3324,19 @@ cache-base@^1.0.1:
...
@@ -3268,6 +3324,19 @@ cache-base@^1.0.1:
union-value "^1.0.0"
union-value "^1.0.0"
unset-value "^1.0.0"
unset-value "^1.0.0"
cacheable-request@^2.1.1:
version "2.1.4"
resolved "https://registry.nlark.com/cacheable-request/download/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d"
integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=
dependencies:
clone-response "1.0.2"
get-stream "3.0.0"
http-cache-semantics "3.8.1"
keyv "3.0.0"
lowercase-keys "1.0.0"
normalize-url "2.0.1"
responselike "1.0.2"
call-bind@^1.0.0, call-bind@^1.0.2:
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
...
@@ -3536,6 +3605,13 @@ clone-deep@^0.2.4:
...
@@ -3536,6 +3605,13 @@ clone-deep@^0.2.4:
lazy-cache "^1.0.3"
lazy-cache "^1.0.3"
shallow-clone "^0.1.2"
shallow-clone "^0.1.2"
clone-response@1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/clone-response/download/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=
dependencies:
mimic-response "^1.0.0"
clone@^2.1.2:
clone@^2.1.2:
version "2.1.2"
version "2.1.2"
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
...
@@ -3615,7 +3691,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
...
@@ -3615,7 +3691,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
dependencies:
dependencies:
delayed-stream "~1.0.0"
delayed-stream "~1.0.0"
commander@2, commander@^2.11.0, commander@^2.20.0:
commander@2, commander@^2.11.0, commander@^2.20.0
, commander@^2.8.1
:
version "2.20.3"
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
...
@@ -3717,10 +3793,10 @@ contains-path@^0.1.0:
...
@@ -3717,10 +3793,10 @@ contains-path@^0.1.0:
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a"
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=
content-disposition@0.5.3:
content-disposition@0.5.3
, content-disposition@^0.5.2
:
version "0.5.3"
version "0.5.3"
resolved "https://registry.
yarnpkg.com/content-disposition/-
/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
resolved "https://registry.
nlark.com/content-disposition/download
/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd"
integrity sha
512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g=
=
integrity sha
1-4TDK9+cnkIfFYWwgB9BIVpiYT70
=
dependencies:
dependencies:
safe-buffer "5.1.2"
safe-buffer "5.1.2"
...
@@ -4418,6 +4494,66 @@ decode-uri-component@^0.2.0:
...
@@ -4418,6 +4494,66 @@ decode-uri-component@^0.2.0:
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
decompress-response@^3.3.0:
version "3.3.0"
resolved "https://registry.npm.taobao.org/decompress-response/download/decompress-response-3.3.0.tgz?cache=0&sync_timestamp=1613125280468&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdecompress-response%2Fdownload%2Fdecompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
dependencies:
mimic-response "^1.0.0"
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-tar/download/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
integrity sha1-cYy9P8sWIJcW5womuE57pFkuWvE=
dependencies:
file-type "^5.2.0"
is-stream "^1.1.0"
tar-stream "^1.5.2"
decompress-tarbz2@^4.0.0:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-tarbz2/download/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
integrity sha1-MIKluIDqQEOBY0nzeLVsUWvho5s=
dependencies:
decompress-tar "^4.1.0"
file-type "^6.1.0"
is-stream "^1.1.0"
seek-bzip "^1.0.5"
unbzip2-stream "^1.0.9"
decompress-targz@^4.0.0:
version "4.1.1"
resolved "https://registry.npm.taobao.org/decompress-targz/download/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
integrity sha1-wJvDXE0R894J8tLaU+neI+fOHu4=
dependencies:
decompress-tar "^4.1.1"
file-type "^5.2.0"
is-stream "^1.1.0"
decompress-unzip@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/decompress-unzip/download/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k=
dependencies:
file-type "^3.8.0"
get-stream "^2.2.0"
pify "^2.3.0"
yauzl "^2.4.2"
decompress@^4.2.1:
version "4.2.1"
resolved "https://registry.nlark.com/decompress/download/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118"
integrity sha1-AH9VzGpiwFWvo3wH62pO4bdz8Rg=
dependencies:
decompress-tar "^4.0.0"
decompress-tarbz2 "^4.0.0"
decompress-targz "^4.0.0"
decompress-unzip "^4.0.1"
graceful-fs "^4.1.10"
make-dir "^1.0.0"
pify "^2.3.0"
strip-dirs "^2.0.0"
deep-equal@^1.0.1, deep-equal@~1.1.1:
deep-equal@^1.0.1, deep-equal@~1.1.1:
version "1.1.1"
version "1.1.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
...
@@ -4735,6 +4871,28 @@ dotignore@~0.1.2:
...
@@ -4735,6 +4871,28 @@ dotignore@~0.1.2:
dependencies:
dependencies:
minimatch "^3.0.4"
minimatch "^3.0.4"
download@^8.0.0:
version "8.0.0"
resolved "https://registry.npm.taobao.org/download/download/download-8.0.0.tgz#afc0b309730811731aae9f5371c9f46be73e51b1"
integrity sha1-r8CzCXMIEXMarp9Tccn0a+c+UbE=
dependencies:
archive-type "^4.0.0"
content-disposition "^0.5.2"
decompress "^4.2.1"
ext-name "^5.0.0"
file-type "^11.1.0"
filenamify "^3.0.0"
get-stream "^4.1.0"
got "^8.3.1"
make-dir "^2.1.0"
p-event "^2.1.0"
pify "^4.0.1"
duplexer3@^0.1.4:
version "0.1.4"
resolved "https://registry.npm.taobao.org/duplexer3/download/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=
duplexer@^0.1.1:
duplexer@^0.1.1:
version "0.1.1"
version "0.1.1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
...
@@ -5289,6 +5447,21 @@ express@^4.17.1:
...
@@ -5289,6 +5447,21 @@ express@^4.17.1:
utils-merge "1.0.1"
utils-merge "1.0.1"
vary "~1.1.2"
vary "~1.1.2"
ext-list@^2.0.0:
version "2.2.2"
resolved "https://registry.npm.taobao.org/ext-list/download/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37"
integrity sha1-C5jmTtgvWs8PKTG6v2khLvUt3Tc=
dependencies:
mime-db "^1.28.0"
ext-name@^5.0.0:
version "5.0.0"
resolved "https://registry.nlark.com/ext-name/download/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6"
integrity sha1-cHgZgdGD7hXROZPIgiBFxQbI8KY=
dependencies:
ext-list "^2.0.0"
sort-keys-length "^1.0.0"
ext@^1.1.2:
ext@^1.1.2:
version "1.4.0"
version "1.4.0"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244"
...
@@ -5397,6 +5570,13 @@ fb-watchman@^2.0.0:
...
@@ -5397,6 +5570,13 @@ fb-watchman@^2.0.0:
dependencies:
dependencies:
bser "2.1.1"
bser "2.1.1"
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies:
pend "~1.2.0"
fecha@~2.3.3:
fecha@~2.3.3:
version "2.3.3"
version "2.3.3"
resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd"
resolved "https://registry.yarnpkg.com/fecha/-/fecha-2.3.3.tgz#948e74157df1a32fd1b12c3a3c3cdcb6ec9d96cd"
...
@@ -5429,6 +5609,31 @@ file-loader@4.3.0:
...
@@ -5429,6 +5609,31 @@ file-loader@4.3.0:
loader-utils "^1.2.3"
loader-utils "^1.2.3"
schema-utils "^2.5.0"
schema-utils "^2.5.0"
file-type@^11.1.0:
version "11.1.0"
resolved "https://registry.nlark.com/file-type/download/file-type-11.1.0.tgz#93780f3fed98b599755d846b99a1617a2ad063b8"
integrity sha1-k3gPP+2YtZl1XYRrmaFheirQY7g=
file-type@^3.8.0:
version "3.9.0"
resolved "https://registry.nlark.com/file-type/download/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek=
file-type@^4.2.0:
version "4.4.0"
resolved "https://registry.nlark.com/file-type/download/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5"
integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU=
file-type@^5.2.0:
version "5.2.0"
resolved "https://registry.nlark.com/file-type/download/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
integrity sha1-LdvqfHP/42No365J3DOMBYwritY=
file-type@^6.1.0:
version "6.2.0"
resolved "https://registry.nlark.com/file-type/download/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
integrity sha1-5QzXXTVv/tTjBtxPW89Sp5kDqRk=
file-uri-to-path@1.0.0:
file-uri-to-path@1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
...
@@ -5439,6 +5644,20 @@ file-uri-to-path@2:
...
@@ -5439,6 +5644,20 @@ file-uri-to-path@2:
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba"
integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==
integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg==
filename-reserved-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/filename-reserved-regex/download/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229"
integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik=
filenamify@^3.0.0:
version "3.0.0"
resolved "https://registry.nlark.com/filenamify/download/filenamify-3.0.0.tgz?cache=0&sync_timestamp=1619455333690&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffilenamify%2Fdownload%2Ffilenamify-3.0.0.tgz#9603eb688179f8c5d40d828626dcbb92c3a4672c"
integrity sha1-lgPraIF5+MXUDYKGJty7ksOkZyw=
dependencies:
filename-reserved-regex "^2.0.0"
strip-outer "^1.0.0"
trim-repeated "^1.0.0"
filesize@6.0.1:
filesize@6.0.1:
version "6.0.1"
version "6.0.1"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f"
resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.0.1.tgz#f850b509909c7c86f7e450ea19006c31c2ed3d2f"
...
@@ -5666,14 +5885,19 @@ fresh@0.5.2:
...
@@ -5666,14 +5885,19 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
from2@^2.1.0:
from2@^2.1.0
, from2@^2.1.1
:
version "2.3.0"
version "2.3.0"
resolved "https://registry.
yarnpkg.com/from2/-
/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
resolved "https://registry.
nlark.com/from2/download
/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=
dependencies:
dependencies:
inherits "^2.0.1"
inherits "^2.0.1"
readable-stream "^2.0.0"
readable-stream "^2.0.0"
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fs-constants/download/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha1-a+Dem+mYzhavivwkSXue6bfM2a0=
fs-extra@^4.0.2:
fs-extra@^4.0.2:
version "4.0.3"
version "4.0.3"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
...
@@ -5783,7 +6007,20 @@ get-ready@^1.0.0, get-ready@~1.0.0:
...
@@ -5783,7 +6007,20 @@ get-ready@^1.0.0, get-ready@~1.0.0:
resolved "https://registry.yarnpkg.com/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782"
resolved "https://registry.yarnpkg.com/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782"
integrity sha1-+RgX8emt7P6hOlYq38jeiDqzR4I=
integrity sha1-+RgX8emt7P6hOlYq38jeiDqzR4I=
get-stream@^4.0.0:
get-stream@3.0.0, get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
get-stream@^2.2.0:
version "2.3.1"
resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
...
@@ -5910,6 +6147,34 @@ globby@^6.1.0:
...
@@ -5910,6 +6147,34 @@ globby@^6.1.0:
pify "^2.0.0"
pify "^2.0.0"
pinkie-promise "^2.0.0"
pinkie-promise "^2.0.0"
got@^8.3.1:
version "8.3.2"
resolved "https://registry.nlark.com/got/download/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937"
integrity sha1-HSP2Q5Dpf3dsrFLluTbl9RTS6Tc=
dependencies:
"@sindresorhus/is" "^0.7.0"
cacheable-request "^2.1.1"
decompress-response "^3.3.0"
duplexer3 "^0.1.4"
get-stream "^3.0.0"
into-stream "^3.1.0"
is-retry-allowed "^1.1.0"
isurl "^1.0.0-alpha5"
lowercase-keys "^1.0.0"
mimic-response "^1.0.0"
p-cancelable "^0.4.0"
p-timeout "^2.0.1"
pify "^3.0.0"
safe-buffer "^5.1.1"
timed-out "^4.0.1"
url-parse-lax "^3.0.0"
url-to-options "^1.0.1"
graceful-fs@^4.1.10:
version "4.2.6"
resolved "https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
integrity sha1-/wQLKwhTsjw9MQJ1I3BvGIXXa+4=
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2:
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2:
version "4.2.3"
version "4.2.3"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423"
...
@@ -5980,6 +6245,11 @@ has-flag@^4.0.0:
...
@@ -5980,6 +6245,11 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbol-support-x@^1.4.1:
version "1.4.2"
resolved "https://registry.npm.taobao.org/has-symbol-support-x/download/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455"
integrity sha1-FAn5i8ACR9pF2mfO4KNvKC/yZFU=
has-symbols@^1.0.0, has-symbols@^1.0.1:
has-symbols@^1.0.0, has-symbols@^1.0.1:
version "1.0.1"
version "1.0.1"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
...
@@ -5990,6 +6260,13 @@ has-symbols@^1.0.2:
...
@@ -5990,6 +6260,13 @@ has-symbols@^1.0.2:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423"
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==
has-to-string-tag-x@^1.2.0:
version "1.4.1"
resolved "https://registry.npm.taobao.org/has-to-string-tag-x/download/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
integrity sha1-oEWrOD17SyASoAFIqwql8pAETU0=
dependencies:
has-symbol-support-x "^1.4.1"
has-value@^0.3.1:
has-value@^0.3.1:
version "0.3.1"
version "0.3.1"
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
...
@@ -6173,6 +6450,11 @@ htmlparser2@^3.3.0:
...
@@ -6173,6 +6450,11 @@ htmlparser2@^3.3.0:
inherits "^2.0.1"
inherits "^2.0.1"
readable-stream "^3.1.1"
readable-stream "^3.1.1"
http-cache-semantics@3.8.1:
version "3.8.1"
resolved "https://registry.nlark.com/http-cache-semantics/download/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
integrity sha1-ObDhat2bYFvwqe89nar0hDtMrNI=
http-deceiver@^1.2.7:
http-deceiver@^1.2.7:
version "1.2.7"
version "1.2.7"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
...
@@ -6309,6 +6591,11 @@ identity-obj-proxy@3.0.0:
...
@@ -6309,6 +6591,11 @@ identity-obj-proxy@3.0.0:
dependencies:
dependencies:
harmony-reflect "^1.4.6"
harmony-reflect "^1.4.6"
ieee754@^1.1.13:
version "1.2.1"
resolved "https://registry.nlark.com/ieee754/download/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=
ieee754@^1.1.4:
ieee754@^1.1.4:
version "1.1.13"
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
...
@@ -6485,6 +6772,14 @@ internmap@^1.0.0:
...
@@ -6485,6 +6772,14 @@ internmap@^1.0.0:
resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95"
resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95"
integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==
integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==
into-stream@^3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/into-stream/download/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6"
integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=
dependencies:
from2 "^2.1.1"
p-is-promise "^1.1.0"
invariant@^2.2.2, invariant@^2.2.4:
invariant@^2.2.2, invariant@^2.2.4:
version "2.2.4"
version "2.2.4"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
...
@@ -6704,6 +6999,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
...
@@ -6704,6 +6999,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
dependencies:
is-extglob "^2.1.1"
is-extglob "^2.1.1"
is-natural-number@^4.0.1:
version "4.0.1"
resolved "https://registry.npm.taobao.org/is-natural-number/download/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=
is-negative-zero@^2.0.1:
is-negative-zero@^2.0.1:
version "2.0.1"
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
...
@@ -6736,6 +7036,11 @@ is-obj@^2.0.0:
...
@@ -6736,6 +7036,11 @@ is-obj@^2.0.0:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982"
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==
is-object@^1.0.1:
version "1.0.2"
resolved "https://registry.npm.taobao.org/is-object/download/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf"
integrity sha1-pWVS4cZlyelQtKAlRh2ofnL4b88=
is-path-cwd@^2.0.0:
is-path-cwd@^2.0.0:
version "2.2.0"
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb"
...
@@ -6797,6 +7102,11 @@ is-resolvable@^1.0.0:
...
@@ -6797,6 +7102,11 @@ is-resolvable@^1.0.0:
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
is-retry-allowed@^1.1.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/is-retry-allowed/download/is-retry-allowed-1.2.0.tgz?cache=0&sync_timestamp=1618646442055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-retry-allowed%2Fdownload%2Fis-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4"
integrity sha1-13hIi9CkZmo76KFIK58rqv7eqLQ=
is-root@2.1.0:
is-root@2.1.0:
version "2.1.0"
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
...
@@ -6944,6 +7254,14 @@ istanbul-reports@^2.2.6:
...
@@ -6944,6 +7254,14 @@ istanbul-reports@^2.2.6:
dependencies:
dependencies:
html-escaper "^2.0.0"
html-escaper "^2.0.0"
isurl@^1.0.0-alpha5:
version "1.0.0"
resolved "https://registry.npm.taobao.org/isurl/download/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
integrity sha1-sn9PSfPNqj6kSgpbfzRi5u3DnWc=
dependencies:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
jest-changed-files@^24.9.0:
jest-changed-files@^24.9.0:
version "24.9.0"
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
...
@@ -7438,6 +7756,11 @@ jsesc@~0.5.0:
...
@@ -7438,6 +7756,11 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/json-buffer/download/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
version "1.0.2"
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
...
@@ -7538,6 +7861,13 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3:
...
@@ -7538,6 +7861,13 @@ jsx-ast-utils@^2.2.1, jsx-ast-utils@^2.2.3:
array-includes "^3.0.3"
array-includes "^3.0.3"
object.assign "^4.1.0"
object.assign "^4.1.0"
keyv@3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/keyv/download/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373"
integrity sha1-RJI7o55osSp87H32wyaMAx8u83M=
dependencies:
json-buffer "3.0.0"
killable@^1.0.1:
killable@^1.0.1:
version "1.0.1"
version "1.0.1"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
...
@@ -7847,6 +8177,16 @@ lower-case@^2.0.1:
...
@@ -7847,6 +8177,16 @@ lower-case@^2.0.1:
dependencies:
dependencies:
tslib "^1.10.0"
tslib "^1.10.0"
lowercase-keys@1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=
lowercase-keys@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f"
integrity sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=
lru-cache@^5.1.1:
lru-cache@^5.1.1:
version "5.1.1"
version "5.1.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
...
@@ -7854,6 +8194,13 @@ lru-cache@^5.1.1:
...
@@ -7854,6 +8194,13 @@ lru-cache@^5.1.1:
dependencies:
dependencies:
yallist "^3.0.2"
yallist "^3.0.2"
make-dir@^1.0.0:
version "1.3.0"
resolved "https://registry.nlark.com/make-dir/download/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
integrity sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=
dependencies:
pify "^3.0.0"
make-dir@^2.0.0, make-dir@^2.1.0:
make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0"
version "2.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
...
@@ -7999,6 +8346,11 @@ mime-db@1.43.0, "mime-db@>= 1.43.0 < 2":
...
@@ -7999,6 +8346,11 @@ mime-db@1.43.0, "mime-db@>= 1.43.0 < 2":
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
mime-db@^1.28.0:
version "1.48.0"
resolved "https://registry.nlark.com/mime-db/download/mime-db-1.48.0.tgz?cache=0&sync_timestamp=1622433556078&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-db%2Fdownload%2Fmime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d"
integrity sha1-41sxBF3X6to6qtU37YijOvvvLR0=
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24:
version "2.1.26"
version "2.1.26"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
...
@@ -8026,6 +8378,11 @@ mimic-fn@^2.1.0:
...
@@ -8026,6 +8378,11 @@ mimic-fn@^2.1.0:
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
mimic-response@^1.0.0:
version "1.0.1"
resolved "https://registry.nlark.com/mimic-response/download/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
integrity sha1-SSNTiHju9CBjy4o+OweYeBSHqxs=
min-indent@^1.0.0:
min-indent@^1.0.0:
version "1.0.1"
version "1.0.1"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
...
@@ -8414,6 +8771,15 @@ normalize-url@1.9.1:
...
@@ -8414,6 +8771,15 @@ normalize-url@1.9.1:
query-string "^4.1.0"
query-string "^4.1.0"
sort-keys "^1.0.0"
sort-keys "^1.0.0"
normalize-url@2.0.1:
version "2.0.1"
resolved "https://registry.nlark.com/normalize-url/download/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6"
integrity sha1-g1qdoVUfom9w6SMpBpojqmV01+Y=
dependencies:
prepend-http "^2.0.0"
query-string "^5.0.1"
sort-keys "^2.0.0"
normalize-url@^3.0.0:
normalize-url@^3.0.0:
version "3.3.0"
version "3.3.0"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
...
@@ -8667,6 +9033,11 @@ osx-release@^1.0.0:
...
@@ -8667,6 +9033,11 @@ osx-release@^1.0.0:
dependencies:
dependencies:
minimist "^1.1.0"
minimist "^1.1.0"
p-cancelable@^0.4.0:
version "0.4.1"
resolved "https://registry.nlark.com/p-cancelable/download/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0"
integrity sha1-NfNj1n1SCByNlYXje8zrfgu8sqA=
p-each-series@^1.0.0:
p-each-series@^1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71"
...
@@ -8674,11 +9045,23 @@ p-each-series@^1.0.0:
...
@@ -8674,11 +9045,23 @@ p-each-series@^1.0.0:
dependencies:
dependencies:
p-reduce "^1.0.0"
p-reduce "^1.0.0"
p-event@^2.1.0:
version "2.3.1"
resolved "https://registry.nlark.com/p-event/download/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6"
integrity sha1-WWJ57xaassPgyuiMHPuwgHmZPvY=
dependencies:
p-timeout "^2.0.1"
p-finally@^1.0.0:
p-finally@^1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
p-is-promise@^1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-1.1.0.tgz?cache=0&sync_timestamp=1618557038207&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-is-promise%2Fdownload%2Fp-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
p-limit@^1.1.0:
p-limit@^1.1.0:
version "1.3.0"
version "1.3.0"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
...
@@ -8745,6 +9128,13 @@ p-retry@^3.0.1:
...
@@ -8745,6 +9128,13 @@ p-retry@^3.0.1:
dependencies:
dependencies:
retry "^0.12.0"
retry "^0.12.0"
p-timeout@^2.0.1:
version "2.0.1"
resolved "https://registry.nlark.com/p-timeout/download/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038"
integrity sha1-2N0ZeVldLcATnh/ka4tkbLPN8Dg=
dependencies:
p-finally "^1.0.0"
p-try@^1.0.0:
p-try@^1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
...
@@ -8979,6 +9369,11 @@ pbkdf2@^3.0.3:
...
@@ -8979,6 +9369,11 @@ pbkdf2@^3.0.3:
safe-buffer "^5.0.1"
safe-buffer "^5.0.1"
sha.js "^2.4.8"
sha.js "^2.4.8"
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.nlark.com/pend/download/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
performance-now@^2.1.0:
performance-now@^2.1.0:
version "2.1.0"
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
...
@@ -8989,9 +9384,9 @@ picomatch@^2.0.4, picomatch@^2.0.7:
...
@@ -8989,9 +9384,9 @@ picomatch@^2.0.4, picomatch@^2.0.7:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.1.tgz#21bac888b6ed8601f831ce7816e335bc779f0a4a"
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
integrity sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==
pify@^2.0.0:
pify@^2.0.0
, pify@^2.3.0
:
version "2.3.0"
version "2.3.0"
resolved "https://registry.
yarnpkg.com/pify/-
/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
resolved "https://registry.
npm.taobao.org/pify/download
/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
pify@^3.0.0:
pify@^3.0.0:
...
@@ -9776,6 +10171,11 @@ prepend-http@^1.0.0:
...
@@ -9776,6 +10171,11 @@ prepend-http@^1.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
prepend-http@^2.0.0:
version "2.0.0"
resolved "https://registry.nlark.com/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897"
integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=
pretty-bytes@^5.1.0:
pretty-bytes@^5.1.0:
version "5.3.0"
version "5.3.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
...
@@ -9987,6 +10387,15 @@ query-string@^4.1.0:
...
@@ -9987,6 +10387,15 @@ query-string@^4.1.0:
object-assign "^4.1.0"
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
strict-uri-encode "^1.0.0"
query-string@^5.0.1:
version "5.1.1"
resolved "https://registry.nlark.com/query-string/download/query-string-5.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fquery-string%2Fdownload%2Fquery-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb"
integrity sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s=
dependencies:
decode-uri-component "^0.2.0"
object-assign "^4.1.0"
strict-uri-encode "^1.0.0"
querystring-es3@^0.2.0:
querystring-es3@^0.2.0:
version "0.2.1"
version "0.2.1"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
...
@@ -10563,7 +10972,7 @@ read-pkg@^3.0.0:
...
@@ -10563,7 +10972,7 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
normalize-package-data "^2.3.2"
path-type "^3.0.0"
path-type "^3.0.0"
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.
3
, readable-stream@^2.3.6, readable-stream@~2.3.6:
"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.
0, readable-stream@^2.3.3, readable-stream@^2.3.5
, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.7"
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
...
@@ -10892,6 +11301,13 @@ resolve@~1.17.0:
...
@@ -10892,6 +11301,13 @@ resolve@~1.17.0:
dependencies:
dependencies:
path-parse "^1.0.6"
path-parse "^1.0.6"
responselike@1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/responselike/download/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=
dependencies:
lowercase-keys "^1.0.0"
restore-cursor@^3.1.0:
restore-cursor@^3.1.0:
version "3.1.0"
version "3.1.0"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
...
@@ -11111,6 +11527,13 @@ sdk-base@^2.0.1:
...
@@ -11111,6 +11527,13 @@ sdk-base@^2.0.1:
dependencies:
dependencies:
get-ready "~1.0.0"
get-ready "~1.0.0"
seek-bzip@^1.0.5:
version "1.0.6"
resolved "https://registry.npm.taobao.org/seek-bzip/download/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
integrity sha1-NcQXH1WmgJFrUqB4WezztYV/IcQ=
dependencies:
commander "^2.8.1"
select-hose@^2.0.0:
select-hose@^2.0.0:
version "2.0.0"
version "2.0.0"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
...
@@ -11425,6 +11848,13 @@ socks@^2.3.3:
...
@@ -11425,6 +11848,13 @@ socks@^2.3.3:
ip "^1.1.5"
ip "^1.1.5"
smart-buffer "^4.1.0"
smart-buffer "^4.1.0"
sort-keys-length@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/sort-keys-length/download/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188"
integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=
dependencies:
sort-keys "^1.0.0"
sort-keys@^1.0.0:
sort-keys@^1.0.0:
version "1.1.2"
version "1.1.2"
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
...
@@ -11432,6 +11862,13 @@ sort-keys@^1.0.0:
...
@@ -11432,6 +11862,13 @@ sort-keys@^1.0.0:
dependencies:
dependencies:
is-plain-obj "^1.0.0"
is-plain-obj "^1.0.0"
sort-keys@^2.0.0:
version "2.0.0"
resolved "https://registry.nlark.com/sort-keys/download/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
dependencies:
is-plain-obj "^1.0.0"
source-list-map@^2.0.0:
source-list-map@^2.0.0:
version "2.0.1"
version "2.0.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
...
@@ -11818,6 +12255,13 @@ strip-comments@^1.0.2:
...
@@ -11818,6 +12255,13 @@ strip-comments@^1.0.2:
babel-extract-comments "^1.0.0"
babel-extract-comments "^1.0.0"
babel-plugin-transform-object-rest-spread "^6.26.0"
babel-plugin-transform-object-rest-spread "^6.26.0"
strip-dirs@^2.0.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/strip-dirs/download/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5"
integrity sha1-SYdzYmT8NEzyD2w0rKnRPR1O1sU=
dependencies:
is-natural-number "^4.0.1"
strip-eof@^1.0.0:
strip-eof@^1.0.0:
version "1.0.0"
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
...
@@ -11835,6 +12279,13 @@ strip-json-comments@^3.0.1:
...
@@ -11835,6 +12279,13 @@ strip-json-comments@^3.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7"
integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==
strip-outer@^1.0.0:
version "1.0.1"
resolved "https://registry.npm.taobao.org/strip-outer/download/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631"
integrity sha1-sv0qv2YEudHmATBXGV34Nrip1jE=
dependencies:
escape-string-regexp "^1.0.2"
style-loader@0.23.1:
style-loader@0.23.1:
version "0.23.1"
version "0.23.1"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
...
@@ -11943,6 +12394,19 @@ tape@^4.5.1:
...
@@ -11943,6 +12394,19 @@ tape@^4.5.1:
string.prototype.trim "~1.2.1"
string.prototype.trim "~1.2.1"
through "~2.3.8"
through "~2.3.8"
tar-stream@^1.5.2:
version "1.6.2"
resolved "https://registry.npm.taobao.org/tar-stream/download/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
integrity sha1-jqVdqzeXIlPZqa+Q/c1VmuQ1xVU=
dependencies:
bl "^1.0.0"
buffer-alloc "^1.2.0"
end-of-stream "^1.0.0"
fs-constants "^1.0.0"
readable-stream "^2.3.0"
to-buffer "^1.1.1"
xtend "^4.0.0"
terser-webpack-plugin@2.3.8:
terser-webpack-plugin@2.3.8:
version "2.3.8"
version "2.3.8"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz#894764a19b0743f2f704e7c2a848c5283a696724"
...
@@ -12033,7 +12497,7 @@ through2@^2.0.0:
...
@@ -12033,7 +12497,7 @@ through2@^2.0.0:
readable-stream "~2.3.6"
readable-stream "~2.3.6"
xtend "~4.0.1"
xtend "~4.0.1"
through@^2.3.6, through@~2.3, through@~2.3.4, through@~2.3.8:
through@^2.3.6, through@
^2.3.8, through@
~2.3, through@~2.3.4, through@~2.3.8:
version "2.3.8"
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
...
@@ -12043,6 +12507,11 @@ thunky@^1.0.2:
...
@@ -12043,6 +12507,11 @@ thunky@^1.0.2:
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
timed-out@^4.0.1:
version "4.0.1"
resolved "https://registry.nlark.com/timed-out/download/timed-out-4.0.1.tgz?cache=0&sync_timestamp=1619073467606&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftimed-out%2Fdownload%2Ftimed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=
timers-browserify@^2.0.4:
timers-browserify@^2.0.4:
version "2.0.11"
version "2.0.11"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f"
...
@@ -12082,6 +12551,11 @@ to-arraybuffer@^1.0.0:
...
@@ -12082,6 +12551,11 @@ to-arraybuffer@^1.0.0:
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
to-buffer@^1.1.1:
version "1.1.1"
resolved "https://registry.npm.taobao.org/to-buffer/download/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
integrity sha1-STvUj2LXxD/N7TE6A9ytsuEhOoA=
to-fast-properties@^2.0.0:
to-fast-properties@^2.0.0:
version "2.0.0"
version "2.0.0"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
...
@@ -12151,6 +12625,13 @@ tr46@^1.0.1:
...
@@ -12151,6 +12625,13 @@ tr46@^1.0.1:
dependencies:
dependencies:
punycode "^2.1.0"
punycode "^2.1.0"
trim-repeated@^1.0.0:
version "1.0.0"
resolved "https://registry.nlark.com/trim-repeated/download/trim-repeated-1.0.0.tgz?cache=0&sync_timestamp=1619005347796&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftrim-repeated%2Fdownload%2Ftrim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21"
integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE=
dependencies:
escape-string-regexp "^1.0.2"
ts-pnp@1.1.6, ts-pnp@^1.1.6:
ts-pnp@1.1.6, ts-pnp@^1.1.6:
version "1.1.6"
version "1.1.6"
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a"
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.6.tgz#389a24396d425a0d3162e96d2b4638900fdc289a"
...
@@ -12260,6 +12741,14 @@ unbox-primitive@^1.0.0:
...
@@ -12260,6 +12741,14 @@ unbox-primitive@^1.0.0:
has-symbols "^1.0.2"
has-symbols "^1.0.2"
which-boxed-primitive "^1.0.2"
which-boxed-primitive "^1.0.2"
unbzip2-stream@^1.0.9:
version "1.4.3"
resolved "https://registry.nlark.com/unbzip2-stream/download/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
integrity sha1-sNoExDcTEd93HNwhXofyEwmRrOc=
dependencies:
buffer "^5.2.1"
through "^2.3.8"
underscore@^1.10.2:
underscore@^1.10.2:
version "1.10.2"
version "1.10.2"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf"
...
@@ -12390,6 +12879,13 @@ url-loader@2.3.0:
...
@@ -12390,6 +12879,13 @@ url-loader@2.3.0:
mime "^2.4.4"
mime "^2.4.4"
schema-utils "^2.5.0"
schema-utils "^2.5.0"
url-parse-lax@^3.0.0:
version "3.0.0"
resolved "https://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=
dependencies:
prepend-http "^2.0.0"
url-parse@^1.4.3:
url-parse@^1.4.3:
version "1.4.7"
version "1.4.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
...
@@ -12398,6 +12894,11 @@ url-parse@^1.4.3:
...
@@ -12398,6 +12894,11 @@ url-parse@^1.4.3:
querystringify "^2.1.1"
querystringify "^2.1.1"
requires-port "^1.0.0"
requires-port "^1.0.0"
url-to-options@^1.0.1:
version "1.0.1"
resolved "https://registry.npm.taobao.org/url-to-options/download/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=
url@^0.11.0:
url@^0.11.0:
version "0.11.0"
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
...
@@ -13189,3 +13690,11 @@ yargs@~3.10.0:
...
@@ -13189,3 +13690,11 @@ yargs@~3.10.0:
cliui "^2.1.0"
cliui "^2.1.0"
decamelize "^1.0.0"
decamelize "^1.0.0"
window-size "0.1.0"
window-size "0.1.0"
yauzl@^2.4.2:
version "2.10.0"
resolved "https://registry.nlark.com/yauzl/download/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment