@@ -9,13 +9,21 @@ | |||
export default { | |||
dev: { | |||
'/saasbase/': { | |||
target: 'http://192.168.1.19:5006', | |||
target: 'http://10.2.1.26:21995/saasbase/', | |||
changeOrigin: true, | |||
secure: false, //关闭证书验证 | |||
pathRewrite: { | |||
'/saasbase/': '', | |||
}, | |||
}, | |||
'/groupmeal/': { | |||
target: 'http://localhost:5298', | |||
changeOrigin: true, | |||
secure: false, //关闭证书验证 | |||
pathRewrite: { | |||
'/groupmeal/': '', | |||
}, | |||
}, | |||
// Nginx发布的时候需要配置 | |||
'/cos/':{ | |||
target: 'https://hbl-test-1305371387.cos.ap-chengdu.myqcloud.com', | |||
@@ -200,8 +200,10 @@ export default [ | |||
], | |||
}, | |||
{ | |||
path: '/', | |||
redirect: '/welcome', | |||
path: '/groupMeal/shop', | |||
icon: 'SettingOutlined', | |||
name: '场景管理', | |||
component: './groupMeal/shop', | |||
}, | |||
{ | |||
path: '/welcome', | |||
@@ -0,0 +1 @@ | |||
preview.pro.ant.design |
@@ -0,0 +1,62 @@ | |||
{ | |||
"/umi.css": "/umi.2d7db433.css", | |||
"/umi.js": "/umi.80b36a37.js", | |||
"/t__plugin-layout__Layout.css": "/t__plugin-layout__Layout.e1129705.chunk.css", | |||
"/t__plugin-layout__Layout.js": "/t__plugin-layout__Layout.bf4b85ae.async.js", | |||
"/p__user__login.css": "/p__user__login.2f84d6a8.chunk.css", | |||
"/p__user__login.js": "/p__user__login.db9e24bc.async.js", | |||
"/p__sys__menus.js": "/p__sys__menus.be044d83.async.js", | |||
"/p__sys__dictionary__dicttype.css": "/p__sys__dictionary__dicttype.f6838307.chunk.css", | |||
"/p__sys__dictionary__dicttype.js": "/p__sys__dictionary__dicttype.bb4276cb.async.js", | |||
"/p__company__account.css": "/p__company__account.f6838307.chunk.css", | |||
"/p__company__account.js": "/p__company__account.7b41312c.async.js", | |||
"/p__org__orgamange.css": "/p__org__orgamange.5d1001bb.chunk.css", | |||
"/p__org__orgamange.js": "/p__org__orgamange.7436883d.async.js", | |||
"/p__org__roles.js": "/p__org__roles.a26b9ddd.async.js", | |||
"/p__org__users.js": "/p__org__users.94c0a8ec.async.js", | |||
"/p__database__basic__batching.css": "/p__database__basic__batching.5b012b67.chunk.css", | |||
"/p__database__basic__batching.js": "/p__database__basic__batching.74003566.async.js", | |||
"/p__database__goods__goodstypemanage.css": "/p__database__goods__goodstypemanage.f6838307.chunk.css", | |||
"/p__database__goods__goodstypemanage.js": "/p__database__goods__goodstypemanage.62323f42.async.js", | |||
"/p__database__goods__goodsattribute.js": "/p__database__goods__goodsattribute.2acc51b0.async.js", | |||
"/p__database__goods__newgoods.css": "/p__database__goods__newgoods.f3ef09c5.chunk.css", | |||
"/p__database__goods__newgoods.js": "/p__database__goods__newgoods.465a016a.async.js", | |||
"/p__database__goods__goodsInfo.css": "/p__database__goods__goodsInfo.67f6136b.chunk.css", | |||
"/p__database__goods__goodsInfo.js": "/p__database__goods__goodsInfo.48aa7be8.async.js", | |||
"/p__device__deviceType.js": "/p__device__deviceType.d434da00.async.js", | |||
"/p__device__deviceInfo.js": "/p__device__deviceInfo.956c5bea.async.js", | |||
"/p__device__deviceVesion.css": "/p__device__deviceVesion.63cc2960.chunk.css", | |||
"/p__device__deviceVesion.js": "/p__device__deviceVesion.8dc74e4a.async.js", | |||
"/p__groupMeal__shop.js": "/p__groupMeal__shop.c1caa3bf.async.js", | |||
"/p__Welcome.css": "/p__Welcome.a394acf9.chunk.css", | |||
"/p__Welcome.js": "/p__Welcome.f5a65af4.async.js", | |||
"/p__404.css": "/p__404.b74445fb.chunk.css", | |||
"/p__404.js": "/p__404.78b89234.async.js", | |||
"/583.c7d21a56.async.js": "/583.c7d21a56.async.js", | |||
"/705.a0296ac4.chunk.css": "/705.a0296ac4.chunk.css", | |||
"/705.297b42f2.async.js": "/705.297b42f2.async.js", | |||
"/151.12e85281.async.js": "/151.12e85281.async.js", | |||
"/471.20949dc8.chunk.css": "/471.20949dc8.chunk.css", | |||
"/471.79ac93bb.async.js": "/471.79ac93bb.async.js", | |||
"/173.3fe077fe.async.js": "/173.3fe077fe.async.js", | |||
"/537.ff40990a.async.js": "/537.ff40990a.async.js", | |||
"/610.8de634a8.chunk.css": "/610.8de634a8.chunk.css", | |||
"/610.ca83f195.async.js": "/610.ca83f195.async.js", | |||
"/311.9854aebb.async.js": "/311.9854aebb.async.js", | |||
"/826.89599a09.async.js": "/826.89599a09.async.js", | |||
"/255.9ed9f795.async.js": "/255.9ed9f795.async.js", | |||
"/59.9d6df77e.async.js": "/59.9d6df77e.async.js", | |||
"/973.ad2a7a0e.async.js": "/973.ad2a7a0e.async.js", | |||
"/669.76091191.async.js": "/669.76091191.async.js", | |||
"/977.8c6992c5.chunk.css": "/977.8c6992c5.chunk.css", | |||
"/215.8b6b685d.async.js": "/215.8b6b685d.async.js", | |||
"/486.49ce1682.async.js": "/486.49ce1682.async.js", | |||
"/public/logo.png": "/logo.png", | |||
"/public/logo.svg": "/logo.svg", | |||
"/public/icons/icon-512x512.png": "/icons/icon-512x512.png", | |||
"/public/favicon.ico": "/favicon.ico", | |||
"/public/icons/icon-192x192.png": "/icons/icon-192x192.png", | |||
"/public/icons/icon-128x128.png": "/icons/icon-128x128.png", | |||
"/public/pro_icon.svg": "/pro_icon.svg", | |||
"/public/CNAME": "/CNAME" | |||
} |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1 @@ | |||
(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[571],{7594:function(u,_,t){"use strict";t.r(_);var P=t(57106),s=t(6129),d=t(57663),E=t(71577),e=t(67294),a=t(48971),n=t(85893),o=function(){return(0,n.jsx)(s.ZP,{status:"404",title:"404",subTitle:"Sorry, the page you visited does not exist.",extra:(0,n.jsx)(E.Z,{type:"primary",onClick:function(){return a.m8.push("/")},children:"Back Home"})})};_.default=o}}]); |
@@ -0,0 +1 @@ | |||
.ant-result{padding:48px 32px}.ant-result-success .ant-result-icon>.anticon{color:#52c41a}.ant-result-error .ant-result-icon>.anticon{color:#ff4d4f}.ant-result-info .ant-result-icon>.anticon{color:#fa541c}.ant-result-warning .ant-result-icon>.anticon{color:#faad14}.ant-result-image{width:250px;height:295px;margin:auto}.ant-result-icon{margin-bottom:24px;text-align:center}.ant-result-icon>.anticon{font-size:72px}.ant-result-title{color:rgba(0,0,0,.85);font-size:24px;line-height:1.8;text-align:center}.ant-result-subtitle{color:rgba(0,0,0,.45);font-size:14px;line-height:1.6;text-align:center}.ant-result-extra{margin:24px 0 0;text-align:center}.ant-result-extra>*{margin-right:8px}.ant-result-extra>:last-child{margin-right:0}.ant-result-content{margin-top:24px;padding:24px 40px;background-color:#fafafa}.ant-result-rtl{direction:rtl}.ant-result-rtl .ant-result-extra>*{margin-right:0;margin-left:8px}.ant-result-rtl .ant-result-extra>:last-child{margin-left:0} |
@@ -0,0 +1 @@ | |||
(self.webpackChunkant_design_pro=self.webpackChunkant_design_pro||[]).push([[185],{8668:function(s){s.exports={pre:"pre___3fTUI"}},41496:function(s,n,_){"use strict";_.r(n);var o=_(402),r=_(67294),t=_(28790),e=_(48971),l=_(8668),c=_.n(l),a=_(85893),P=function(E){var d=E.children;return _jsx("pre",{className:styles.pre,children:_jsx("code",{children:_jsx(_Typography.Text,{copyable:!0,children:d})})})};n.default=function(){var u=(0,e.YB)();return(0,a.jsx)(t.ZP,{})}},97435:function(s,n){"use strict";function _(o,r){for(var t=Object.assign({},o),e=0;e<r.length;e+=1){var l=r[e];delete t[l]}return t}n.Z=_}}]); |
@@ -0,0 +1 @@ | |||
.ant-pro-descriptions .ant-descriptions-view{overflow:visible!important;overflow:initial!important} |
@@ -0,0 +1 @@ | |||
.container___2XU-J{display:flex;flex-direction:column;height:100vh;overflow:auto;background:#f0f2f5}.lang___3UZBu{width:100%;height:40px;line-height:44px;text-align:right}.lang___3UZBu .ant-dropdown-trigger{margin-right:24px}.content___232he{display:flex;flex:1 1;flex-direction:row}@media (min-width:768px){.container___2XU-J{background-image:url(https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg);background-repeat:no-repeat;background-position:center 110px;background-size:100%}.content___232he{display:flex;flex-direction:row;justify-content:center;width:100%}}.top___2e5qd{display:flex;flex:2.5 1;flex-direction:column;justify-content:center;text-align:center;background-color:#009688}.header___1G_uO{position:relative;line-height:44px;text-align:center}.header___1G_uO a{text-decoration:none}.header___1G_uO>div{width:500px;margin:auto}.logo___2RIUt{width:500px;height:180px;margin-right:16px;vertical-align:top}.title___3xYCK{position:relative;top:2px;color:#009688;font-weight:600;font-size:33px;font-family:Avenir,"Helvetica Neue",Arial,Helvetica,sans-serif;text-align:center}.desc___1GQtf{width:590px;padding-left:150px;color:#fff;font-size:38px;text-align:center}@media screen and (max-width:780px){.top___2e5qd{display:none;text-align:center}}.main___oMoRI{display:flex;flex:1.3 1;flex-direction:column;justify-content:center;width:390px;padding:80px;background-color:#f6f8fb}@media screen and (max-width:576px){.main___oMoRI{width:95%;max-width:390px}.main___oMoRI .title___3xYCK{position:relative;top:2px;color:#009688;font-weight:600;font-size:30px;font-family:Avenir,"Helvetica Neue",Arial,Helvetica,sans-serif;text-align:center}}.main___oMoRI .ant-tabs-nav-list{margin:auto;font-size:16px}.main___oMoRI .icon___1dSHb{margin-left:16px;color:rgba(0,0,0,.2);font-size:24px;vertical-align:middle;cursor:pointer;transition:color .3s}.main___oMoRI .icon___1dSHb:hover{color:#fa541c}.main___oMoRI .other___3ljbI{margin-top:24px;line-height:22px;text-align:left}.main___oMoRI .other___3ljbI .register___1vN_i{float:right}.main___oMoRI .prefixIcon___57iuX{color:#fa541c;font-size:14px} |
@@ -0,0 +1,5 @@ | |||
<svg width="42" height="42" xmlns="http://www.w3.org/2000/svg"> | |||
<g> | |||
<path fill="#070707" d="m6.717392,13.773912l5.6,0c2.8,0 4.7,1.9 4.7,4.7c0,2.8 -2,4.7 -4.9,4.7l-2.5,0l0,4.3l-2.9,0l0,-13.7zm2.9,2.2l0,4.9l1.9,0c1.6,0 2.6,-0.9 2.6,-2.4c0,-1.6 -0.9,-2.4 -2.6,-2.4l-1.9,0l0,-0.1zm8.9,11.5l2.7,0l0,-5.7c0,-1.4 0.8,-2.3 2.2,-2.3c0.4,0 0.8,0.1 1,0.2l0,-2.4c-0.2,-0.1 -0.5,-0.1 -0.8,-0.1c-1.2,0 -2.1,0.7 -2.4,2l-0.1,0l0,-1.9l-2.7,0l0,10.2l0.1,0zm11.7,0.1c-3.1,0 -5,-2 -5,-5.3c0,-3.3 2,-5.3 5,-5.3s5,2 5,5.3c0,3.4 -1.9,5.3 -5,5.3zm0,-2.1c1.4,0 2.2,-1.1 2.2,-3.2c0,-2 -0.8,-3.2 -2.2,-3.2c-1.4,0 -2.2,1.2 -2.2,3.2c0,2.1 0.8,3.2 2.2,3.2z" class="st0" id="Ant-Design-Pro"/> | |||
</g> | |||
</svg> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1,226 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="UTF-8" /> | |||
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||
<meta | |||
name="keywords" | |||
content="antd,umi,umijs,ant design,Scaffolding, layout, Ant Design, project, Pro, admin, console, homepage, out-of-the-box, middle and back office, solution, component library" | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
An out-of-box UI solution for enterprise applications as a React boilerplate." | |||
/> | |||
<meta | |||
name="description" | |||
content=" | |||
Out-of-the-box mid-stage front-end/design solution." | |||
/> | |||
<meta | |||
name="viewport" | |||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" | |||
/> | |||
<title>Ant Design Pro</title> | |||
<link rel="icon" href="/favicon.ico" type="image/x-icon" /> | |||
<!-- <script src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=Rvf71uBzNi7rWo1bhCvzbmLTFbPihNur"></script> --> | |||
<link rel="stylesheet" href="/umi.2d7db433.css" /> | |||
<script> | |||
window.routerBase = "/"; | |||
</script> | |||
<script> | |||
//! umi version: 3.5.39 | |||
</script> | |||
</head> | |||
<body> | |||
<noscript>Out-of-the-box mid-stage front/design solution!</noscript> | |||
<div id="root"> | |||
<style> | |||
html, | |||
body, | |||
#root { | |||
height: 100%; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
#root { | |||
background-repeat: no-repeat; | |||
background-size: 100% auto; | |||
} | |||
.page-loading-warp { | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
padding: 98px; | |||
} | |||
.ant-spin { | |||
position: absolute; | |||
display: none; | |||
-webkit-box-sizing: border-box; | |||
box-sizing: border-box; | |||
margin: 0; | |||
padding: 0; | |||
color: rgba(0, 0, 0, 0.65); | |||
color: #1890ff; | |||
font-size: 14px; | |||
font-variant: tabular-nums; | |||
line-height: 1.5; | |||
text-align: center; | |||
list-style: none; | |||
opacity: 0; | |||
-webkit-transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: -webkit-transform 0.3s | |||
cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86), | |||
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86); | |||
-webkit-font-feature-settings: "tnum"; | |||
font-feature-settings: "tnum"; | |||
} | |||
.ant-spin-spinning { | |||
position: static; | |||
display: inline-block; | |||
opacity: 1; | |||
} | |||
.ant-spin-dot { | |||
position: relative; | |||
display: inline-block; | |||
width: 20px; | |||
height: 20px; | |||
font-size: 20px; | |||
} | |||
.ant-spin-dot-item { | |||
position: absolute; | |||
display: block; | |||
width: 9px; | |||
height: 9px; | |||
background-color: #1890ff; | |||
border-radius: 100%; | |||
-webkit-transform: scale(0.75); | |||
-ms-transform: scale(0.75); | |||
transform: scale(0.75); | |||
-webkit-transform-origin: 50% 50%; | |||
-ms-transform-origin: 50% 50%; | |||
transform-origin: 50% 50%; | |||
opacity: 0.3; | |||
-webkit-animation: antspinmove 1s infinite linear alternate; | |||
animation: antSpinMove 1s infinite linear alternate; | |||
} | |||
.ant-spin-dot-item:nth-child(1) { | |||
top: 0; | |||
left: 0; | |||
} | |||
.ant-spin-dot-item:nth-child(2) { | |||
top: 0; | |||
right: 0; | |||
-webkit-animation-delay: 0.4s; | |||
animation-delay: 0.4s; | |||
} | |||
.ant-spin-dot-item:nth-child(3) { | |||
right: 0; | |||
bottom: 0; | |||
-webkit-animation-delay: 0.8s; | |||
animation-delay: 0.8s; | |||
} | |||
.ant-spin-dot-item:nth-child(4) { | |||
bottom: 0; | |||
left: 0; | |||
-webkit-animation-delay: 1.2s; | |||
animation-delay: 1.2s; | |||
} | |||
.ant-spin-dot-spin { | |||
-webkit-transform: rotate(45deg); | |||
-ms-transform: rotate(45deg); | |||
transform: rotate(45deg); | |||
-webkit-animation: antrotate 1.2s infinite linear; | |||
animation: antRotate 1.2s infinite linear; | |||
} | |||
.ant-spin-lg .ant-spin-dot { | |||
width: 32px; | |||
height: 32px; | |||
font-size: 32px; | |||
} | |||
.ant-spin-lg .ant-spin-dot i { | |||
width: 14px; | |||
height: 14px; | |||
} | |||
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) { | |||
.ant-spin-blur { | |||
background: #fff; | |||
opacity: 0.5; | |||
} | |||
} | |||
@-webkit-keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@keyframes antSpinMove { | |||
to { | |||
opacity: 1; | |||
} | |||
} | |||
@-webkit-keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
@keyframes antRotate { | |||
to { | |||
-webkit-transform: rotate(405deg); | |||
transform: rotate(405deg); | |||
} | |||
} | |||
</style> | |||
<div | |||
style=" | |||
display: flex; | |||
flex-direction: column; | |||
align-items: center; | |||
justify-content: center; | |||
height: 100%; | |||
min-height: 420px; | |||
" | |||
> | |||
<img src="/pro_icon.svg" alt="logo" width="256" /> | |||
<div class="page-loading-warp"> | |||
<div class="ant-spin ant-spin-lg ant-spin-spinning"> | |||
<span class="ant-spin-dot ant-spin-dot-spin" | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
><i class="ant-spin-dot-item"></i><i class="ant-spin-dot-item"></i | |||
></span> | |||
</div> | |||
</div> | |||
<div | |||
style="display: flex; align-items: center; justify-content: center" | |||
> | |||
<img | |||
src="https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg" | |||
width="32" | |||
style="margin-right: 8px" | |||
/> | |||
Ant Design | |||
</div> | |||
</div> | |||
</div> | |||
<script src="/umi.80b36a37.js"></script> | |||
</body> | |||
</html> |
@@ -248,6 +248,12 @@ export async function getInitialState() { | |||
}, | |||
] | |||
}, | |||
{ | |||
path: '/groupMeal/shop', | |||
icon: 'SettingOutlined', | |||
name: '场景管理', | |||
component: './groupMeal/shop', | |||
} | |||
]; | |||
// api.queryMenus(); | |||
return data; | |||
@@ -0,0 +1,148 @@ | |||
import React, { useState, useRef } from 'react'; | |||
import { PlusOutlined } from '@ant-design/icons'; | |||
import { PageContainer } from '@ant-design/pro-layout'; | |||
import { Drawer, Row, Col, Modal, Form, Input, Button, InputNumber, TreeSelect, Popconfirm, message } from 'antd'; | |||
import ProTable from '@ant-design/pro-table'; | |||
import { page, add, del, update } from './service'; | |||
const PayTemplate = () => { | |||
const actionRef = useRef(); | |||
const [form] = Form.useForm(); | |||
const [drawerVisible, setDrawerVisible] = useState(false); | |||
const [currentRow, setCurrentRow] = useState({}); | |||
const columns = [ | |||
{ | |||
title: '主键', | |||
dataIndex: 'id', | |||
tip: '规则名称是唯一的key', | |||
hideInSearch: true, | |||
hideInTable: true, | |||
}, | |||
{ | |||
title: 'APPID', | |||
dataIndex: 'appId', | |||
valueType: 'textarea', | |||
hideInSearch: true, | |||
}, | |||
{ | |||
title: '操作', | |||
dataIndex: 'option', | |||
valueType: 'option', | |||
width: 300, | |||
render: (_, record) => [ | |||
<a | |||
key={record.id} | |||
onClick={async () => { | |||
form.setFieldsValue(record); | |||
setCurrentRow(record); | |||
setDrawerVisible(true); | |||
}} > | |||
修改 | |||
</a>, | |||
<Popconfirm | |||
title="确定要删除吗?" | |||
onConfirm={() => { | |||
var input = [record.id]; | |||
del(input).then((re) => { | |||
if (re.data) { | |||
message.success('删除成功'); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('删除失败'); | |||
} | |||
}); | |||
}} | |||
okText="确定" | |||
cancelText="取消" | |||
> | |||
<a key={record.id} > | |||
删除 | |||
</a> | |||
</Popconfirm> | |||
], | |||
}, | |||
]; | |||
return ( | |||
<PageContainer header={{ | |||
title: '', | |||
breadcrumb: {}, | |||
}}> | |||
<ProTable | |||
toolBarRender={() => { | |||
return <Button | |||
type="primary" | |||
key="primary" | |||
onClick={() => {setDrawerVisible(true) }} > | |||
<PlusOutlined /> 新建 | |||
</Button> | |||
}} | |||
headerTitle="" | |||
actionRef={actionRef} | |||
rowKey="id" | |||
search={false} | |||
request={async (params) => { | |||
var queryData = []; | |||
var total = 0; | |||
await page(JSON.stringify(params)).then((re) => { | |||
queryData = re.data.data; | |||
total = re.data.total; | |||
}); | |||
return { | |||
data: queryData, | |||
success: true, | |||
total: total, | |||
}; | |||
}} | |||
columns={columns} | |||
pagination={{ defaultPageSize: 10 }} | |||
/> | |||
{/* ------------------------ */} | |||
<Modal open={drawerVisible} onOk={() => { form.submit() }} onCancel={() => { setDrawerVisible(false) }}> | |||
<Form | |||
form={form} | |||
preserve={false} | |||
layout="horizontal" | |||
labelCol={{ span: 4 }} | |||
onFinish={async (value) => { | |||
if (value.id) { | |||
update(value).then((re) => { | |||
if (re.data) { | |||
message.success('修改成功'); | |||
setDrawerVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('修改失败'); | |||
} | |||
}); | |||
} else { | |||
add(value).then((re) => { | |||
if (re.data) { | |||
message.success('添加成功'); | |||
setDrawerVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('添加失败'); | |||
} | |||
}); | |||
} | |||
}} | |||
> | |||
<Form.Item name="id" hidden={true}> | |||
<Input /> | |||
</Form.Item> | |||
<br /> | |||
<Form.Item name="appId" label="APPID" rules={[{ required: true, max: 500 }]}> | |||
<Input placeholder="请输入appid" /> | |||
</Form.Item> | |||
</Form> | |||
</Modal> | |||
</PageContainer> | |||
); | |||
}; | |||
export default PayTemplate; |
@@ -0,0 +1,29 @@ | |||
import { request } from 'umi'; | |||
export function page(data) { | |||
return request(`/groupmeal/api/appid/getappidpage`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function add(data) { | |||
return request(`/groupmeal/api/appid/add`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function del(data) { | |||
return request(`/groupmeal/api/appid/delete`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function update(data) { | |||
return request(`/groupmeal/api/appid/update`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} |
@@ -0,0 +1,251 @@ | |||
import React, { useState, useRef } from 'react'; | |||
import { PlusOutlined } from '@ant-design/icons'; | |||
import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; | |||
import { Drawer, Row, Col, Modal, Form, Input, Button, InputNumber, TreeSelect, Popconfirm, message } from 'antd'; | |||
import ProTable from '@ant-design/pro-table'; | |||
import Field from '@ant-design/pro-field'; | |||
import { CopyOutlined } from '@ant-design/icons'; | |||
import { useIntl, FormattedMessage } from 'umi'; | |||
import { getPayTemplatePageList, add, deletepaytemplate, update } from './service'; | |||
const PayTemplate = () => { | |||
const actionRef = useRef(); | |||
const [currentRow, setCurrentRow] = useState({}); | |||
//drawer 显示控制 | |||
const [drawerVisible, setDrawerVisible] = useState(false); | |||
//请求详情 | |||
const requestPayTemplate = async (fields) => { | |||
var data = { | |||
name: fields.name, | |||
id: fields.id | |||
}; | |||
var list = []; | |||
fields.payTemplateOutDtoInfo.forEach(element => { | |||
if (element.payType == 1) { | |||
data.wxappId = element.appId; | |||
data.wxid = element.id; | |||
data.wxKey = element.key; | |||
data.wxpId = element.pId; | |||
data.wxpayType = 1; | |||
data.wxprivateKey = element.privateKey; | |||
data.wxpubLicKey = element.pubLicKey; | |||
} else { | |||
data.zfbappId = element.appId; | |||
data.zfbid = element.id; | |||
data.zfbKey = element.key; | |||
data.zfbpId = element.pId; | |||
data.zfbpayType = 2; | |||
data.zfbprivateKey = element.privateKey; | |||
data.zfbpubLicKey = element.pubLicKey; | |||
} | |||
}); | |||
return data; | |||
}; | |||
const columns = [ | |||
{ | |||
title: '主键', | |||
dataIndex: 'id', | |||
tip: '规则名称是唯一的key', | |||
hideInSearch: true, | |||
hideInTable: true, | |||
}, | |||
{ | |||
title: '名称', | |||
dataIndex: 'name', | |||
valueType: 'textarea', | |||
}, | |||
{ | |||
title: '操作', | |||
dataIndex: 'option', | |||
valueType: 'option', | |||
width: 300, | |||
render: (_, record) => [ | |||
<a | |||
key={record.id} | |||
onClick={async () => { | |||
var data = await requestPayTemplate(record); | |||
setCurrentRow(data); | |||
setDrawerVisible(true); | |||
}} > | |||
修改 | |||
</a>, | |||
<Popconfirm | |||
title="确定要删除此配置吗?" | |||
onConfirm={() =>{ | |||
var input = [record.id]; | |||
deletepaytemplate(input).then((re) => { | |||
if (re.data) { | |||
message.success('删除成功'); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('删除失败'); | |||
} | |||
}); | |||
}} | |||
okText="确定" | |||
cancelText="取消" | |||
> | |||
<a key={record.id} > | |||
删除 | |||
</a> | |||
</Popconfirm> | |||
], | |||
}, | |||
]; | |||
const intl = useIntl(); | |||
return ( | |||
<PageContainer header={{ | |||
title: '', | |||
breadcrumb: {}, | |||
}}> | |||
<ProTable | |||
toolBarRender={() => { | |||
return <Button | |||
type="primary" | |||
key="primary1" | |||
onClick={() => { | |||
setCurrentRow({}); | |||
setDrawerVisible(true); | |||
}} | |||
> | |||
<PlusOutlined /> 新建 | |||
</Button> | |||
}} | |||
headerTitle="支付配置" | |||
actionRef={actionRef} | |||
rowKey="id" | |||
search={{ | |||
labelWidth: 120, | |||
}} | |||
request={async (params) => { | |||
var queryData = []; | |||
var total = 0; | |||
await getPayTemplatePageList(JSON.stringify(params)).then((re) => { | |||
queryData = re.data.data; | |||
total = re.data.total; | |||
}); | |||
return { | |||
data: queryData, | |||
success: true, | |||
total: total, | |||
}; | |||
}} | |||
columns={columns} | |||
pagination={{ defaultPageSize: 10 }} | |||
/> | |||
{/* ------------------------ */} | |||
<Drawer | |||
title="支付配置" | |||
key="1" | |||
placement="right" | |||
size="large" | |||
width="900" | |||
onClose={() => { | |||
setDrawerVisible(false); | |||
}} | |||
visible={drawerVisible} | |||
destroyOnClose | |||
> | |||
<Form | |||
preserve={false} | |||
layout="horizontal" | |||
initialValues={currentRow} | |||
labelCol={{ span: 8 }} | |||
wrapperCol={{ span: 16 }} | |||
onFinish={async (value) => { | |||
if (value.id) { | |||
update(value).then((re) => { | |||
if (re.data) { | |||
message.success('修改成功'); | |||
setDrawerVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('修改失败'); | |||
} | |||
}); | |||
} else { | |||
add(value).then((re) => { | |||
if (re.data) { | |||
message.success('添加成功'); | |||
setDrawerVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('添加失败'); | |||
} | |||
}); | |||
} | |||
}} | |||
> | |||
<Form.Item name="id" hidden={true}> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item name="name" label="名称" rules={[{ required: true, max: 20 }]}> | |||
<Input placeholder="请输入名称" /> | |||
</Form.Item> | |||
<Row> | |||
<Col span={11} > | |||
<h3>微信</h3> | |||
<Form.Item name="wxid" hidden={true}> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item name="wxappId" label="AppId" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入appId" /> | |||
</Form.Item> | |||
<Form.Item name="wxpId" tooltip="微信的MCHid" label="MchId" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入MchId" /> | |||
</Form.Item> | |||
<Form.Item name="wxKey" tooltip="微信的aAppKey" label="AppKey" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入AppKey" /> | |||
</Form.Item> | |||
<Form.Item name="wxpubLicKey" tooltip="证书 " label="证书" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入证书" /> | |||
</Form.Item> | |||
<Form.Item name="wxprivateKey" tooltip="密码" label="密码" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入密码" /> | |||
</Form.Item> | |||
</Col> | |||
<Col span={2} ></Col> | |||
<Col span={11} > | |||
<h3>支付宝</h3> | |||
<Form.Item name="zfbid" hidden={true}> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item name="zfbappId" label="AppId" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入appId" /> | |||
</Form.Item> | |||
<Form.Item name="zfbpId" tooltip="支付宝的Pid" label="PId" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入PId" /> | |||
</Form.Item> | |||
<Form.Item name="zfbKey" tooltip="支付宝的pk" label="PK" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入PK" /> | |||
</Form.Item> | |||
<Form.Item name="zfbpubLicKey" tooltip="公钥 " label="公钥" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入公钥" /> | |||
</Form.Item> | |||
<Form.Item name="zfbprivateKey" tooltip="私钥" label="私钥" rules={[{ required: true, max: 3000 }]}> | |||
<Input placeholder="请输入私钥" /> | |||
</Form.Item> | |||
</Col> | |||
</Row> | |||
<Form.Item> | |||
<Button type="primary" htmlType="submit"> | |||
保存 | |||
</Button> | |||
</Form.Item> | |||
</Form> | |||
</Drawer> | |||
</PageContainer> | |||
); | |||
}; | |||
export default PayTemplate; |
@@ -0,0 +1,29 @@ | |||
import { request } from 'umi'; | |||
export function getPayTemplatePageList(data) { | |||
return request(`/groupmeal/api/paytemplate/getPayTemplatePageList`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function add(data) { | |||
return request(`/groupmeal/api/paytemplate/add`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function deletepaytemplate(data) { | |||
return request(`/groupmeal/api/paytemplate/delete`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} | |||
export function update(data) { | |||
return request(`/groupmeal/api/paytemplate/update`, { | |||
method: 'post', | |||
data: data, | |||
}); | |||
} |
@@ -0,0 +1,486 @@ | |||
import { PlusOutlined } from '@ant-design/icons'; | |||
import ProTable from '@ant-design/pro-table'; | |||
import { PageContainer } from '@ant-design/pro-layout'; | |||
import { Button, Card, Image, Select, message, Modal, Input, Upload, Popconfirm } from 'antd'; | |||
import React, { useRef, useState } from 'react'; | |||
import appletAPI from "../service"; | |||
import { useEffect } from 'react'; | |||
import styles from "./index.less"; | |||
import axios from 'axios'; | |||
const getBase64 = (file) => | |||
new Promise((resolve, reject) => { | |||
const reader = new FileReader(); | |||
reader.readAsDataURL(file); | |||
reader.onload = () => resolve(reader.result); | |||
reader.onerror = (error) => reject(error); | |||
}); | |||
const Material = () => { | |||
const actionRef = useRef(); | |||
const [selectedStore, setSelectedStore] = useState(''); | |||
const [storeList, setStoreList] = useState([]); | |||
const [isModalVisible, setIsModalVisible] = useState(false); | |||
const [currentImage, setCurrentImage] = useState({ | |||
id: '', | |||
pageId: '', | |||
materialName: '', | |||
materialCode: '', | |||
materialPath: [], | |||
materialType: 0 | |||
}); | |||
const [previewVisible, setPreviewVisible] = useState(false); | |||
const [previewImage, setPreviewImage] = useState(''); | |||
const [previewTitle, setPreviewTitle] = useState(''); | |||
const [fileList, setFileList] = useState([]); | |||
const [miniPageList, setMiniPageList] = useState([]); | |||
const [currentPage, setCurrentPage] = useState(1); | |||
const [pageSize, setPageSize] = useState(10); | |||
const [total, setTotal] = useState(0); | |||
const handleCancel = () => setPreviewVisible(false); | |||
const handlePreview = async (file) => { | |||
if (!file.url && !file.preview) { | |||
file.preview = await getBase64(file.originFileObj); | |||
} | |||
setPreviewImage(file.url || file.preview); | |||
setPreviewVisible(true); | |||
setPreviewTitle(file.name || file.url.substring(file.url.lastIndexOf('/') + 1)); | |||
}; | |||
const handleChange = ({ fileList: newFileList }) => { | |||
newFileList.forEach(item => { | |||
item.status = 'done' | |||
}); | |||
setFileList(newFileList) | |||
}; | |||
const columns = [ | |||
{ | |||
title: '素材名称', | |||
dataIndex: 'materialName', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '素材编码', | |||
dataIndex: 'materialCode', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '素材图片', | |||
dataIndex: 'materialPath', | |||
render: (_, record) => ( | |||
<Image | |||
style={{width: '50%', height: '50%'}} | |||
src={ JSON.parse(record.materialPath)[0]} | |||
fallback="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg=="> | |||
</Image> | |||
) | |||
}, | |||
{ | |||
title: '操作', | |||
valueType: 'option', | |||
key: 'option', | |||
render: (_, record) => [ | |||
<a onClick={() => onEditMaterial(record)}> | |||
编辑 | |||
</a>, | |||
<Popconfirm | |||
title="确定要删除此素材吗?" | |||
onConfirm={() => onDeleteMaterial(record)} | |||
okText="确定" | |||
cancelText="取消" | |||
> | |||
<a href="#">删除</a> | |||
</Popconfirm> | |||
] | |||
}, | |||
]; | |||
const uploadButton = ( | |||
<div> | |||
<PlusOutlined /> | |||
<div | |||
style={{ | |||
marginTop: 8, | |||
}} | |||
> | |||
Upload | |||
</div> | |||
</div> | |||
); | |||
/** | |||
* 获取店铺列表 | |||
*/ | |||
const onFetchStoreList = async () => { | |||
const response = await appletAPI.GetAllStore(); | |||
if (response.statusCode === 200) { | |||
setStoreList(response.data); | |||
setSelectedStore(response.data[0].id); | |||
} else { | |||
message.error(response.msg || '获取店铺列表失败'); | |||
} | |||
} | |||
const uploadProp = { | |||
name: 'file', | |||
showUploadList: true, | |||
multiple: false, | |||
accept: '.png, .jpg, .jpeg, .gif', | |||
// 这里需要指定文件上传的content-type | |||
headers: { | |||
'Content-Type': 'application/octet-stream', | |||
}, | |||
customRequest({ | |||
action, | |||
file, | |||
headers, | |||
onError, | |||
onProgress, | |||
withCredentials, | |||
}) { | |||
//覆盖action 上传之前获取上传地址 | |||
var index = file.name.lastIndexOf("."); | |||
var ext = file.name.substr(index + 1); | |||
let fileData = null; | |||
appletAPI.GetCosRequestURL({ directory: "applet", fileExtension: ext, method: "PUT" }).then((r) => { | |||
action = r.data.allUrl; | |||
const reader = new FileReader(); | |||
reader.readAsArrayBuffer(file); | |||
reader.onload = (e) => { | |||
fileData = e.target.result; | |||
axios.put(action, fileData, { | |||
withCredentials, | |||
headers, | |||
onUploadProgress: ({ total, loaded }) => { | |||
onProgress({ percent: Math.round(loaded / total * 100).toFixed(2) }, file); | |||
}, | |||
}).then(response => { | |||
if (response.status == 200 || response.statusText == 'OK') { | |||
const tempUploadImage = JSON.parse(JSON.stringify(currentImage)); | |||
tempUploadImage.materialPath.push(r.data.seeUrl); | |||
setCurrentImage(tempUploadImage); | |||
message.success('上传成功!'); | |||
} | |||
}).catch(onError); | |||
}; | |||
}); | |||
return { | |||
abort() { | |||
console.log('upload progress is aborted.'); | |||
}, | |||
}; | |||
}, | |||
}; | |||
/** | |||
* 添加、更新页面素材 | |||
*/ | |||
const onAddPageMaterial = async () => { | |||
if (!currentImage.pageId) { | |||
message.info('请选择所属页面'); | |||
return; | |||
} else if (!currentImage.materialName) { | |||
message.info('请填写素材名称'); | |||
return; | |||
} else if (!currentImage.materialCode) { | |||
message.info('请填写素材编码'); | |||
return; | |||
} else if (currentImage.materialPath.length === 0) { | |||
message.info('请选择至少上传一张素材图片'); | |||
return; | |||
} | |||
const jsonData = { | |||
pageId: currentImage.pageId, | |||
materialName: currentImage.materialName, | |||
materialCode: currentImage.materialCode, | |||
materialPath: JSON.stringify(currentImage.materialPath), | |||
materialType: currentImage?.materialType?.toString() | |||
} | |||
if (currentImage.id) { | |||
jsonData.id = currentImage.id; | |||
const response = await appletAPI.UpdateMiniMaterial(jsonData); | |||
if (response.statusCode === 200) { | |||
message.success('更新成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('更新失败') | |||
} | |||
} else { | |||
const response = await appletAPI.AddMinimaterial(jsonData); | |||
if (response.statusCode === 200) { | |||
message.success('添加成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('添加失败') | |||
} | |||
} | |||
} | |||
/** | |||
* 编辑素材 | |||
* @param {*} record | |||
*/ | |||
const onEditMaterial = (record) => { | |||
const materialPath = JSON.parse(record.materialPath); | |||
const material = { | |||
id: record.id, | |||
pageId: record.pageId, | |||
materialName: record.materialName, | |||
materialCode: record.materialCode, | |||
materialPath: materialPath | |||
} | |||
if (materialPath.length > 1) { | |||
material.materialType = "1"; | |||
} else { | |||
material.materialType = "0"; | |||
} | |||
const fileList = []; | |||
materialPath.forEach((item, index) => { | |||
fileList.push({ | |||
uid: index, | |||
name: item.split('/applet/')[1] || "图片.jpg", | |||
status: 'done', | |||
url: item, | |||
}); | |||
}); | |||
setFileList(fileList); | |||
setCurrentImage(material); | |||
setIsModalVisible(true); | |||
} | |||
/** | |||
* 删除素材 | |||
* @param {*} record | |||
*/ | |||
const onDeleteMaterial = async (record) => { | |||
const response = await appletAPI.DeleteMiniMaterial(record.id); | |||
if (response.statusCode === 200) { | |||
actionRef.current.reload(); | |||
message.success('删除成功'); | |||
} else { | |||
message.error(response.errors || '删除失败'); | |||
} | |||
} | |||
/** | |||
* 获取小程序页面 | |||
*/ | |||
const onFetchMiniPageList = async () => { | |||
const response = await appletAPI.MiniPageList({ | |||
current: 1, | |||
pageSize: 999, | |||
storeId: selectedStore | |||
}); | |||
if (response.statusCode === 200) { | |||
setMiniPageList(response.data.items); | |||
} else { | |||
message.error(response.errors || '获取页面列表失败') | |||
} | |||
} | |||
const onBeforeCreate = () => { | |||
setFileList([]); | |||
setCurrentImage({ | |||
pageId: '', | |||
materialName: '', | |||
materialCode: '', | |||
materialPath: [], | |||
materialType: "0" | |||
}); | |||
} | |||
useEffect(() => { | |||
onFetchStoreList(); | |||
}, []); | |||
useEffect(() => { | |||
if (!selectedStore) return; | |||
onFetchMiniPageList(); | |||
actionRef.current.reload(); | |||
}, [selectedStore]); | |||
return <PageContainer header={{ | |||
title: '', | |||
breadcrumb: {}, | |||
}}> | |||
<Card style={{ marginBottom: '10px' }}> | |||
<div className={styles.table_search_item}> | |||
<div> | |||
当前门店: | |||
</div> | |||
<Select style={{ width: 300 }} value={selectedStore} onChange={(value) => { | |||
setSelectedStore(value); | |||
}}> | |||
{ | |||
storeList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.name}</Option> | |||
}) | |||
} | |||
</Select> | |||
</div> | |||
</Card> | |||
<ProTable | |||
search={false} | |||
columns={columns} | |||
actionRef={actionRef} | |||
cardBordered | |||
editable={{ | |||
type: 'multiple', | |||
}} | |||
request={async () => { | |||
if (!selectedStore) return; | |||
const jsonData = { | |||
"current": currentPage, | |||
"pageSize": pageSize, | |||
"storeId": selectedStore | |||
} | |||
const response = await appletAPI.MinimaterialListByStore(jsonData); | |||
const pageList = []; | |||
response.data.forEach(item => { | |||
pageList.push(...item.list); | |||
}); | |||
return { | |||
data: pageList, | |||
success: true, | |||
total: 10, | |||
} | |||
}} | |||
columnsState={{ | |||
persistenceKey: 'pro-table-singe-demos', | |||
persistenceType: 'localStorage', | |||
onChange(value) { | |||
}, | |||
}} | |||
rowKey="id" | |||
options={{ | |||
setting: { | |||
listsHeight: 400, | |||
}, | |||
}} | |||
dateFormatter="string" | |||
headerTitle="图片管理" | |||
toolBarRender={() => [ | |||
<Button key="button" icon={<PlusOutlined />} type="primary" onClick={() => { setIsModalVisible(true); onBeforeCreate() }}> | |||
新建 | |||
</Button> | |||
]} | |||
/> | |||
<Modal title="编辑素材" visible={isModalVisible} footer={null} onOk={onAddPageMaterial} onCancel={() => setIsModalVisible(false)} bodyStyle={{ padding: '32px 40px 1px 48px',height: '465px'}}> | |||
<div className={styles.edit_image_card}> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
素材名称: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Input placeholder='请输入素材名称' value={currentImage.materialName} onChange={value => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialName = value.target.value; | |||
setCurrentImage(tempImg); | |||
}}></Input> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
素材编码: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Input placeholder='请输入素材编码' value={currentImage.materialCode} onChange={value => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialCode = value.target.value; | |||
setCurrentImage(tempImg); | |||
}}></Input> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
所属页面: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Select placeholder="请选择所在页面" style={{ width: '100%' }} value={currentImage.pageId} onChange={(value) => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.pageId = value; | |||
setCurrentImage(tempImg); | |||
}}> | |||
{ | |||
miniPageList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.pageName}</Option> | |||
}) | |||
} | |||
</Select> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
数量: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Select placeholder="请选择素材数量" style={{ width: '100%' }} value={currentImage.materialType} onChange={(value) => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialType = value; | |||
setCurrentImage(tempImg); | |||
}}> | |||
<Option value={"0"} >单张</Option> | |||
<Option value={"1"} >多张</Option> | |||
</Select> | |||
</div> | |||
</div> | |||
<Upload | |||
listType="picture-card" | |||
fileList={fileList} | |||
onPreview={handlePreview} | |||
onChange={handleChange} | |||
onRemove={(remove) => { | |||
const findIndex = fileList.findIndex(item => item.uid === remove.uid); | |||
if (findIndex > -1) { | |||
const tempUpload = JSON.parse(JSON.stringify(currentImage)); | |||
tempUpload.materialPath.splice(findIndex, 1); | |||
setCurrentImage(tempUpload); | |||
} | |||
}} | |||
{...uploadProp} | |||
> | |||
{ | |||
(() => { | |||
if (currentImage.materialType === "0") { | |||
if (fileList.length >= 1) { | |||
return null; | |||
} else { | |||
return uploadButton | |||
} | |||
} else { | |||
return <>{fileList.length >= 9 ? null : uploadButton}</> | |||
} | |||
})() | |||
} | |||
</Upload> | |||
<Button htmlType="button" style={{float:'right',left:10}} onClick={() => setIsModalVisible(false)}> | |||
取消 | |||
</Button> | |||
<Button type="primary" htmlType="submit" style={{float:'right'}} onClick={()=> onAddPageMaterial()}>保存</Button> | |||
</div> | |||
</Modal> | |||
<Modal visible={previewVisible} title={previewTitle} footer={null} onCancel={handleCancel}> | |||
<img | |||
alt="example" | |||
style={{ | |||
width: '100%', | |||
}} | |||
src={previewImage} | |||
/> | |||
</Modal> | |||
</PageContainer > | |||
} | |||
export default Material; |
@@ -0,0 +1,12 @@ | |||
.table_search_item { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.edit_image_item { | |||
margin-bottom: 10px; | |||
} | |||
.edit_image_prev { | |||
margin-bottom: 5px; | |||
} |
@@ -0,0 +1,486 @@ | |||
import { PlusOutlined } from '@ant-design/icons'; | |||
import ProTable from '@ant-design/pro-table'; | |||
import { PageContainer } from '@ant-design/pro-layout'; | |||
import { Button, Card, Image, Select, message, Modal, Input, Upload, Popconfirm } from 'antd'; | |||
import React, { useRef, useState } from 'react'; | |||
import appletAPI from "../service"; | |||
import { useEffect } from 'react'; | |||
import styles from "./index.less"; | |||
import axios from 'axios'; | |||
const getBase64 = (file) => | |||
new Promise((resolve, reject) => { | |||
const reader = new FileReader(); | |||
reader.readAsDataURL(file); | |||
reader.onload = () => resolve(reader.result); | |||
reader.onerror = (error) => reject(error); | |||
}); | |||
const Material = () => { | |||
const actionRef = useRef(); | |||
const [selectedStore, setSelectedStore] = useState(''); | |||
const [storeList, setStoreList] = useState([]); | |||
const [isModalVisible, setIsModalVisible] = useState(false); | |||
const [currentImage, setCurrentImage] = useState({ | |||
id: '', | |||
pageId: '', | |||
materialName: '', | |||
materialCode: '', | |||
materialPath: [], | |||
materialType: 0 | |||
}); | |||
const [previewVisible, setPreviewVisible] = useState(false); | |||
const [previewImage, setPreviewImage] = useState(''); | |||
const [previewTitle, setPreviewTitle] = useState(''); | |||
const [fileList, setFileList] = useState([]); | |||
const [miniPageList, setMiniPageList] = useState([]); | |||
const [currentPage, setCurrentPage] = useState(1); | |||
const [pageSize, setPageSize] = useState(10); | |||
const [total, setTotal] = useState(0); | |||
const handleCancel = () => setPreviewVisible(false); | |||
const handlePreview = async (file) => { | |||
if (!file.url && !file.preview) { | |||
file.preview = await getBase64(file.originFileObj); | |||
} | |||
setPreviewImage(file.url || file.preview); | |||
setPreviewVisible(true); | |||
setPreviewTitle(file.name || file.url.substring(file.url.lastIndexOf('/') + 1)); | |||
}; | |||
const handleChange = ({ fileList: newFileList }) => { | |||
newFileList.forEach(item => { | |||
item.status = 'done' | |||
}); | |||
setFileList(newFileList) | |||
}; | |||
const columns = [ | |||
{ | |||
title: '素材名称', | |||
dataIndex: 'materialName', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '素材编码', | |||
dataIndex: 'materialCode', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '素材图片', | |||
dataIndex: 'materialPath', | |||
render: (_, record) => ( | |||
<Image | |||
style={{width: '50%', height: '50%'}} | |||
src={JSON.parse(record.materialPath)[0]} | |||
fallback="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg=="> | |||
</Image> | |||
) | |||
}, | |||
{ | |||
title: '操作', | |||
valueType: 'option', | |||
key: 'option', | |||
render: (_, record) => [ | |||
<a onClick={() => onEditMaterial(record)}> | |||
编辑 | |||
</a>, | |||
<Popconfirm | |||
title="确定要删除此素材吗?" | |||
onConfirm={() => onDeleteMaterial(record)} | |||
okText="确定" | |||
cancelText="取消" | |||
> | |||
<a href="#">删除</a> | |||
</Popconfirm> | |||
] | |||
}, | |||
]; | |||
const uploadButton = ( | |||
<div> | |||
<PlusOutlined /> | |||
<div | |||
style={{ | |||
marginTop: 8, | |||
}} | |||
> | |||
Upload | |||
</div> | |||
</div> | |||
); | |||
/** | |||
* 获取店铺列表 | |||
*/ | |||
const onFetchStoreList = async () => { | |||
const response = await appletAPI.GetAllStore(); | |||
if (response.isSuccess) { | |||
setStoreList(response.data); | |||
setSelectedStore(response.data[0].id); | |||
} else { | |||
message.error(response.msg || '获取店铺列表失败'); | |||
} | |||
} | |||
const uploadProp = { | |||
name: 'file', | |||
showUploadList: true, | |||
multiple: false, | |||
accept: '.png, .jpg, .jpeg, .gif', | |||
// 这里需要指定文件上传的content-type | |||
headers: { | |||
'Content-Type': 'application/octet-stream', | |||
}, | |||
customRequest({ | |||
action, | |||
file, | |||
headers, | |||
onError, | |||
onProgress, | |||
withCredentials, | |||
}) { | |||
//覆盖action 上传之前获取上传地址 | |||
var index = file.name.lastIndexOf("."); | |||
var ext = file.name.substr(index + 1); | |||
let fileData = null; | |||
appletAPI.GetCosRequestURL({ directory: "applet", fileExtension: ext, method: "PUT" }).then((r) => { | |||
action = r.allUrl; | |||
const reader = new FileReader(); | |||
reader.readAsArrayBuffer(file); | |||
reader.onload = (e) => { | |||
fileData = e.target.result; | |||
axios.put(action, fileData, { | |||
withCredentials, | |||
headers, | |||
onUploadProgress: ({ total, loaded }) => { | |||
onProgress({ percent: Math.round(loaded / total * 100).toFixed(2) }, file); | |||
}, | |||
}).then(response => { | |||
if (response.status == 200 || response.statusText == 'OK') { | |||
const tempUploadImage = JSON.parse(JSON.stringify(currentImage)); | |||
tempUploadImage.materialPath.push(r.seeUrl); | |||
setCurrentImage(tempUploadImage); | |||
message.success('上传成功!'); | |||
} | |||
}).catch(onError); | |||
}; | |||
}); | |||
return { | |||
abort() { | |||
console.log('upload progress is aborted.'); | |||
}, | |||
}; | |||
}, | |||
}; | |||
/** | |||
* 添加、更新页面素材 | |||
*/ | |||
const onAddPageMaterial = async () => { | |||
if (!currentImage.pageId) { | |||
message.info('请选择所属页面'); | |||
return; | |||
} else if (!currentImage.materialName) { | |||
message.info('请填写素材名称'); | |||
return; | |||
} else if (!currentImage.materialCode) { | |||
message.info('请填写素材编码'); | |||
return; | |||
} else if (currentImage.materialPath.length === 0) { | |||
message.info('请选择至少上传一张素材图片'); | |||
return; | |||
} | |||
const jsonData = { | |||
pageId: currentImage.pageId, | |||
materialName: currentImage.materialName, | |||
materialCode: currentImage.materialCode, | |||
materialPath: JSON.stringify(currentImage.materialPath), | |||
materialType: currentImage.materialType | |||
} | |||
if (currentImage.id) { | |||
jsonData.id = currentImage.id; | |||
const response = await appletAPI.UpdateMiniMaterial(jsonData); | |||
if (response.statusCode === 200) { | |||
message.success('更新成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('更新失败') | |||
} | |||
} else { | |||
const response = await appletAPI.AddMinimaterial(jsonData); | |||
if (response.statusCode === 200) { | |||
message.success('添加成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error('添加失败') | |||
} | |||
} | |||
} | |||
/** | |||
* 编辑素材 | |||
* @param {*} record | |||
*/ | |||
const onEditMaterial = (record) => { | |||
const materialPath = JSON.parse(record.materialPath); | |||
const material = { | |||
id: record.id, | |||
pageId: record.pageId, | |||
materialName: record.materialName, | |||
materialCode: record.materialCode, | |||
materialPath: materialPath | |||
} | |||
if (materialPath.length > 1) { | |||
material.materialType = 1; | |||
} else { | |||
material.materialType = 0; | |||
} | |||
const fileList = []; | |||
materialPath.forEach((item, index) => { | |||
fileList.push({ | |||
uid: index, | |||
name: item.split('/applet/')[1] || "图片.jpg", | |||
status: 'done', | |||
url: item, | |||
}); | |||
}); | |||
setFileList(fileList); | |||
setCurrentImage(material); | |||
setIsModalVisible(true); | |||
} | |||
/** | |||
* 删除素材 | |||
* @param {*} record | |||
*/ | |||
const onDeleteMaterial = async (record) => { | |||
const response = await appletAPI.DeleteMiniMaterial(record.id); | |||
if (response.statusCode === 200) { | |||
actionRef.current.reload(); | |||
message.success('删除成功'); | |||
} else { | |||
message.error(response.errors || '删除失败'); | |||
} | |||
} | |||
/** | |||
* 获取小程序页面 | |||
*/ | |||
const onFetchMiniPageList = async () => { | |||
const response = await appletAPI.MiniPageList({ | |||
current: 1, | |||
pageSize: 999, | |||
storeId: selectedStore | |||
}); | |||
if (response.statusCode === 200) { | |||
setMiniPageList(response.data.items); | |||
} else { | |||
message.error(response.errors || '获取页面列表失败') | |||
} | |||
} | |||
const onBeforeCreate = () => { | |||
setFileList([]); | |||
setCurrentImage({ | |||
pageId: '', | |||
materialName: '', | |||
materialCode: '', | |||
materialPath: [], | |||
materialType: 0 | |||
}); | |||
} | |||
useEffect(() => { | |||
onFetchStoreList(); | |||
}, []); | |||
useEffect(() => { | |||
if (!selectedStore) return; | |||
onFetchMiniPageList(); | |||
actionRef.current.reload(); | |||
}, [selectedStore]); | |||
return <PageContainer> | |||
<Card style={{ marginBottom: '10px' }}> | |||
<div className={styles.table_search_item}> | |||
<div> | |||
当前门店: | |||
</div> | |||
<Select style={{ width: 300 }} value={selectedStore} onChange={(value) => { | |||
setSelectedStore(value); | |||
}}> | |||
{ | |||
storeList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.store_Name}</Option> | |||
}) | |||
} | |||
</Select> | |||
</div> | |||
</Card> | |||
<ProTable | |||
search={false} | |||
columns={columns} | |||
actionRef={actionRef} | |||
cardBordered | |||
editable={{ | |||
type: 'multiple', | |||
}} | |||
request={async () => { | |||
if (!selectedStore) return; | |||
const jsonData = { | |||
"current": currentPage, | |||
"pageSize": pageSize, | |||
"storeId": selectedStore | |||
} | |||
const response = await appletAPI.MinimaterialListByStore(jsonData); | |||
const pageList = []; | |||
response.data.forEach(item => { | |||
pageList.push(...item.list); | |||
}); | |||
return { | |||
data: pageList, | |||
success: true, | |||
total: 10, | |||
} | |||
}} | |||
columnsState={{ | |||
persistenceKey: 'pro-table-singe-demos', | |||
persistenceType: 'localStorage', | |||
onChange(value) { | |||
}, | |||
}} | |||
rowKey="id" | |||
options={{ | |||
setting: { | |||
listsHeight: 400, | |||
}, | |||
}} | |||
pagination={{ | |||
pageSize: 5, | |||
onChange: (page) => console.log(page), | |||
}} | |||
dateFormatter="string" | |||
headerTitle="图片管理" | |||
toolBarRender={() => [ | |||
<Button key="button" icon={<PlusOutlined />} type="primary" onClick={() => { setIsModalVisible(true); onBeforeCreate() }}> | |||
新建 | |||
</Button> | |||
]} | |||
/> | |||
<Modal title="编辑素材" visible={isModalVisible} footer={null} onOk={onAddPageMaterial} onCancel={() => setIsModalVisible(false)} bodyStyle={{ padding: '32px 40px 1px 48px',height: '465px'}}> | |||
<div className={styles.edit_image_card}> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
素材名称: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Input placeholder='请输入素材名称' value={currentImage.materialName} onChange={value => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialName = value.target.value; | |||
setCurrentImage(tempImg); | |||
}}></Input> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
素材编码: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Input placeholder='请输入素材编码' value={currentImage.materialCode} onChange={value => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialCode = value.target.value; | |||
setCurrentImage(tempImg); | |||
}}></Input> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
所属页面: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Select placeholder="请选择所在页面" style={{ width: '100%' }} value={currentImage.pageId} onChange={(value) => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.pageId = value; | |||
setCurrentImage(tempImg); | |||
}}> | |||
{ | |||
miniPageList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.pageName}</Option> | |||
}) | |||
} | |||
</Select> | |||
</div> | |||
</div> | |||
<div className={styles.edit_image_item}> | |||
<div className={styles.edit_image_prev}> | |||
数量: | |||
</div> | |||
<div className={styles.edit_image_suffix}> | |||
<Select placeholder="请选择素材数量" style={{ width: '100%' }} value={currentImage.materialType} onChange={(value) => { | |||
const tempImg = JSON.parse(JSON.stringify(currentImage)); | |||
tempImg.materialType = value; | |||
setCurrentImage(tempImg); | |||
}}> | |||
<Option value={0} key={0}>单张</Option> | |||
<Option value={1} key={1}>多张</Option> | |||
</Select> | |||
</div> | |||
</div> | |||
<Upload | |||
listType="picture-card" | |||
fileList={fileList} | |||
onPreview={handlePreview} | |||
onChange={handleChange} | |||
onRemove={(remove) => { | |||
const findIndex = fileList.findIndex(item => item.uid === remove.uid); | |||
if (findIndex > -1) { | |||
const tempUpload = JSON.parse(JSON.stringify(currentImage)); | |||
tempUpload.materialPath.splice(findIndex, 1); | |||
setCurrentImage(tempUpload); | |||
} | |||
}} | |||
{...uploadProp} | |||
> | |||
{ | |||
(() => { | |||
if (currentImage.materialType === 0) { | |||
if (fileList.length >= 1) { | |||
return null; | |||
} else { | |||
return uploadButton | |||
} | |||
} else { | |||
return <>{fileList.length >= 9 ? null : uploadButton}</> | |||
} | |||
})() | |||
} | |||
</Upload> | |||
<Button htmlType="button" style={{float:'right',left:10}} onClick={() => setIsModalVisible(false)}> | |||
取消 | |||
</Button> | |||
<Button type="primary" htmlType="submit" style={{float:'right'}} onClick={()=> onAddPageMaterial()}>保存</Button> | |||
</div> | |||
</Modal> | |||
<Modal visible={previewVisible} title={previewTitle} footer={null} onCancel={handleCancel}> | |||
<img | |||
alt="example" | |||
style={{ | |||
width: '100%', | |||
}} | |||
src={previewImage} | |||
/> | |||
</Modal> | |||
</PageContainer > | |||
} | |||
export default Material; |
@@ -0,0 +1,12 @@ | |||
.table_search_item { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.edit_image_item { | |||
margin-bottom: 10px; | |||
} | |||
.edit_image_prev { | |||
margin-bottom: 5px; | |||
} |
@@ -0,0 +1,246 @@ | |||
import ProTable from '@ant-design/pro-table'; | |||
import { PageContainer } from '@ant-design/pro-layout'; | |||
import { PlusOutlined } from '@ant-design/icons'; | |||
import { Button, Modal, Form, Input, Select, Card, message, Popconfirm } from 'antd'; | |||
import React, { useRef, useState, useEffect } from 'react'; | |||
import appletAPI from "../service"; | |||
import styles from "./index.less"; | |||
const pageManage = () => { | |||
const actionRef = useRef(); | |||
const [isModalVisible, setIsModalVisible] = useState(false); | |||
const [pageForm] = Form.useForm(); | |||
const [storeList, setStoreList] = useState([]); | |||
const [currentPage, setCurrentPage] = useState(1); | |||
const [pageSize, setPageSize] = useState(10); | |||
const [total, setTotal] = useState(0); | |||
const [selectedStore, setSelectedStore] = useState(''); | |||
const columns = [ | |||
{ | |||
title: '页面名称', | |||
dataIndex: 'pageName', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '页面路径', | |||
dataIndex: 'pageRoute', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '所属门店', | |||
dataIndex: 'storeId', | |||
ellipsis: true, | |||
}, | |||
{ | |||
title: '操作', | |||
valueType: 'option', | |||
key: 'option', | |||
render: (_, record) => [ | |||
<a onClick={() => { | |||
pageForm.setFieldsValue(record); | |||
setIsModalVisible(true); | |||
}}> | |||
编辑 | |||
</a>, | |||
<Popconfirm | |||
title="确定要删除此页面吗?" | |||
onConfirm={() => onDeletePage(record)} | |||
okText="确定" | |||
cancelText="取消" | |||
> | |||
<a href="#">删除</a> | |||
</Popconfirm> | |||
], | |||
} | |||
]; | |||
const onBeforeCreate = () => { | |||
setIsModalVisible(true); | |||
pageForm.resetFields(); | |||
} | |||
/** | |||
* 添加/修改页面信息 | |||
*/ | |||
const onFinishPage = async (values) => { | |||
if (values.id) { | |||
const response = await appletAPI.MiniPageUpdate(values); | |||
if (response.statusCode === 200) { | |||
message.success('修改成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error(response.errors); | |||
} | |||
} else { | |||
const response = await appletAPI.MiniPageAdd(values); | |||
if (response.statusCode === 200) { | |||
message.success('添加成功'); | |||
setIsModalVisible(false); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error(response.errors); | |||
} | |||
} | |||
} | |||
/** | |||
* 删除页面 | |||
* @param {*} record | |||
*/ | |||
const onDeletePage = async (record) => { | |||
const response = await appletAPI.MiniPageDelete(record.id); | |||
if (response.statusCode === 200) { | |||
message.success('删除成功'); | |||
actionRef.current.reload(); | |||
} else { | |||
message.error(response.errors); | |||
} | |||
} | |||
/** | |||
* 获取店铺列表 | |||
*/ | |||
const onFetchStoreList = async () => { | |||
const response = await appletAPI.GetAllStore(); | |||
if (response.statusCode==200) { | |||
setStoreList(response.data); | |||
setSelectedStore(response.data[0].id); | |||
} else { | |||
message.error(response.msg || '获取店铺列表失败'); | |||
} | |||
} | |||
useEffect(() => { | |||
onFetchStoreList(); | |||
}, []); | |||
useEffect(() => { | |||
actionRef.current.reload(); | |||
}, [selectedStore]); | |||
return <PageContainer> | |||
<Card style={{ marginBottom: '10px' }}> | |||
<div className={styles.table_search_item}> | |||
<div> | |||
归属场景: | |||
</div> | |||
<Select style={{ width: 300 }} value={selectedStore} onChange={(value) => { | |||
setSelectedStore(value); | |||
}}> | |||
{ | |||
storeList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.name}</Option> | |||
}) | |||
} | |||
</Select> | |||
</div> | |||
</Card> | |||
<ProTable | |||
columns={columns} | |||
actionRef={actionRef} | |||
cardBordered | |||
editable={{ | |||
type: 'multiple', | |||
}} | |||
request={async () => { | |||
if (!selectedStore) return; | |||
const jsonData = { | |||
"current": currentPage, | |||
"pageSize": pageSize, | |||
"storeId": selectedStore | |||
} | |||
const response = await appletAPI.MiniPageList(jsonData); | |||
return { | |||
data: response.data.items, | |||
success: true, | |||
total: response.data.totalCount, | |||
} | |||
}} | |||
rowKey="id" | |||
search={false} | |||
pagination={{ | |||
pageSize: 5, | |||
onChange: (page) => console.log(page), | |||
}} | |||
dateFormatter="string" | |||
headerTitle="页面管理" | |||
toolBarRender={() => [ | |||
<Button key="button" icon={<PlusOutlined />} type="primary" onClick={onBeforeCreate}> | |||
新建 | |||
</Button> | |||
]} | |||
/> | |||
<Modal title="编辑页面" footer={false} visible={isModalVisible} onOk={() => setIsModalVisible(false)} onCancel={() => setIsModalVisible(false)} bodyStyle={{ padding: '32px 40px 1px 48px' }}> | |||
<Form | |||
name="basic" | |||
form={pageForm} | |||
onFinish={onFinishPage} | |||
> | |||
<Form.Item | |||
name="id" | |||
hidden={true} | |||
> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item | |||
label="页面名称" | |||
name="pageName" | |||
rules={[ | |||
{ | |||
required: true, | |||
message: '请输入页面名称!', | |||
}, | |||
]} | |||
> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item | |||
label="页面路径" | |||
name="pageRoute" | |||
rules={[ | |||
{ | |||
required: true, | |||
message: '请输入页面路径!', | |||
}, | |||
]} | |||
> | |||
<Input /> | |||
</Form.Item> | |||
<Form.Item | |||
label="所属门店" | |||
name="storeId" | |||
rules={[ | |||
{ | |||
required: true, | |||
message: '请选择门店!', | |||
}, | |||
]} | |||
> | |||
<Select allowClear placeholder="请选择门店" style={{ width: '100%' }}> | |||
{ | |||
storeList.map(item => { | |||
return <Option value={item.id} key={item.id}>{item.store_Name}</Option> | |||
}) | |||
} | |||
</Select> | |||
</Form.Item> | |||
<Form.Item> | |||
<Button htmlType="button" style={{float:'right',left:10}} onClick={() => setIsModalVisible(false)}> | |||
取消 | |||
</Button> | |||
<Button type="primary" htmlType="submit" style={{float:'right'}} > | |||
保存 | |||
</Button> | |||
</Form.Item> | |||
</Form> | |||
</Modal> | |||
</PageContainer> | |||
} | |||
export default pageManage; |
@@ -0,0 +1,12 @@ | |||
.table_search_item { | |||
display: flex; | |||
align-items: center; | |||
} | |||
.edit_image_item { | |||
margin-bottom: 10px; | |||
} | |||
.edit_image_prev { | |||
margin-bottom: 5px; | |||
} |