feat: 更换登录页面
@@ -19,74 +19,75 @@ func (c *LoginController) Prepare() {
|
||||
}
|
||||
|
||||
func (c *LoginController) Login() {
|
||||
|
||||
userID := c.GetString("userID")
|
||||
passWD := c.GetString("passwd")
|
||||
code := c.GetString("Code")
|
||||
totpCode := c.GetString("totpCode")
|
||||
|
||||
dataJSON := new(datas.KeyDataJSON)
|
||||
|
||||
valid := validation.Validation{}
|
||||
|
||||
if v := valid.Required(userID, "userID"); !v.Ok {
|
||||
dataJSON.Key = v.Error.Key
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Msg = "手机号不能为空!"
|
||||
} else if v := valid.Required(passWD, "passWD"); !v.Ok {
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Key = v.Error.Key
|
||||
dataJSON.Msg = "登录密码不能为空!"
|
||||
} else if v := valid.Length(code, common.VERIFY_CODE_LEN, "code"); !v.Ok {
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Key = v.Error.Key
|
||||
dataJSON.Msg = "验证码不正确!"
|
||||
}
|
||||
|
||||
userInfo := user.GetUserInfoByUserID(userID)
|
||||
|
||||
if userInfo.UserId == "" {
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Key = "userID"
|
||||
dataJSON.Msg = "用户不存在,请求联系管理员!"
|
||||
} else if userInfo.OtpSecret != "" && totpCode == "" {
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Key = "userID"
|
||||
dataJSON.Msg = "需要输入二次验证!"
|
||||
} else {
|
||||
// 如果验证失败
|
||||
if userInfo.OtpSecret != "" && !mfa.ValidCode(totpCode, userInfo.OtpSecret) {
|
||||
dataJSON.Key = "userID"
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Msg = "二次验证不正确,请输入二次验证!"
|
||||
c.Data["json"] = dataJSON
|
||||
_ = c.ServeJSON()
|
||||
return
|
||||
}
|
||||
|
||||
codeInterface := c.GetSession("verifyCode")
|
||||
if userInfo.Passwd != utils.GetMD5Upper(passWD) {
|
||||
dataJSON.Key = "passWD"
|
||||
dataJSON.Msg = "密码不正确!"
|
||||
dataJSON.Code = -1
|
||||
} else if codeInterface == nil {
|
||||
dataJSON.Key = "code"
|
||||
dataJSON.Msg = "验证码失效!"
|
||||
dataJSON.Code = -1
|
||||
} else if code != codeInterface.(string) {
|
||||
dataJSON.Key = "code"
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Msg = "验证码不正确!"
|
||||
} else if userInfo.Status == common.UNACTIVE {
|
||||
dataJSON.Key = common.UNACTIVE
|
||||
dataJSON.Msg = "用户已被冻结!"
|
||||
dataJSON.Code = -1
|
||||
} else if userInfo.Status == "del" {
|
||||
dataJSON.Key = "del"
|
||||
dataJSON.Code = -1
|
||||
dataJSON.Msg = "用户已被删除!"
|
||||
}
|
||||
}
|
||||
|
||||
go func() {
|
||||
userInfo.Ip = c.Ctx.Input.IP()
|
||||
user.UpdateUserInfoIP(userInfo)
|
||||
}()
|
||||
|
||||
if dataJSON.Key == "" {
|
||||
_ = c.SetSession("userID", userID)
|
||||
_ = c.DelSession("verifyCode")
|
||||
}
|
||||
|
||||
c.Data["json"] = dataJSON
|
||||
_ = c.ServeJSON()
|
||||
}
|
||||
@@ -113,7 +114,6 @@ func (c *LoginController) GetVerifyImg() {
|
||||
} else {
|
||||
_ = c.SetSession("verifyCode", verifyCode)
|
||||
}
|
||||
logs.Info("验证码:", verifyCode)
|
||||
if Image == nil {
|
||||
logs.Error("生成验证码失败!")
|
||||
} else {
|
||||
|
||||
647
static/admin/css/admin.css
Normal file
@@ -0,0 +1,647 @@
|
||||
html,
|
||||
body,
|
||||
.layui-layout {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pear-admin .layui-body,
|
||||
.pear-admin .layui-logo,
|
||||
.pear-admin .layui-side,
|
||||
.pear-admin .layui-header,
|
||||
.pear-admin .layui-header .layui-layout-left {
|
||||
transition: all .3s;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-side {
|
||||
top: 60px !important;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-side .layui-logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header .layui-logo {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-side .layui-side-scroll {
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-side .layui-side-scroll {
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header.dark-theme .layui-layout-control .layui-this * {
|
||||
background-color: rgba(0, 0, 0, .1) !important;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header .layui-logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-admin .layui-logo .title {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-layout-right .layui-nav-child {
|
||||
border: 1px solid whitesmoke;
|
||||
border-radius: 4px;
|
||||
width: auto;
|
||||
left: auto;
|
||||
right: -23px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header {
|
||||
left: 230px;
|
||||
width: calc(100% - 230px);
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.pear-admin .layui-layout-control {
|
||||
left: 140px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.pear-admin .layui-layout-control .layui-nav {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-logo {
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, .12);
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
background-color: #28333E;
|
||||
width: 230px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-logo img {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-logo .title {
|
||||
font-size: 21px;
|
||||
font-weight: 550;
|
||||
color: var(--global-primary-color);
|
||||
position: relative;
|
||||
top: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-logo .logo {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-admin .layui-side {
|
||||
top: 0px;
|
||||
width: 230px;
|
||||
box-shadow: 2px 0 6px rgba(0, 21, 41, .20);
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.pear-admin .layui-side-scroll::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-side-scroll {
|
||||
height: calc(100% - 60px) !important;
|
||||
background-color: #28333E;
|
||||
width: 247px;
|
||||
|
||||
}
|
||||
|
||||
.pear-admin .layui-header .layui-nav .layui-nav-item > a {
|
||||
color: black;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-body {
|
||||
bottom: 0px;
|
||||
padding-bottom: 0px;
|
||||
background-color: whitesmoke;
|
||||
height: calc(100% - 60px);
|
||||
overflow-y: auto;
|
||||
left: 230px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-body > div {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pear-admin .layui-layout-left {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-footer {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
left: 230px;
|
||||
background: #fff;
|
||||
border-top: 1px solid #F2F2F2;
|
||||
box-shadow: none;
|
||||
-webkit-transition: left .3s;
|
||||
transition: left .3s;
|
||||
overflow: hidden;
|
||||
color: #3c3c3cb3;
|
||||
font-weight: 300;
|
||||
font-size: 13.6px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-footer.close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/** 通栏布局 */
|
||||
|
||||
.pear-admin.banner-layout .layui-header {
|
||||
left: 0px;
|
||||
z-index: 99999;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header.light-theme {
|
||||
border-bottom: 1px solid whitesmoke;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header.auto-theme,
|
||||
.pear-admin.banner-layout .layui-header.dark-theme {
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, .1);
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header .layui-layout-left {
|
||||
left: 230px;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header .layui-logo .title {
|
||||
top: 2px;
|
||||
}
|
||||
|
||||
.pear-admin.banner-layout .layui-header .layui-layout-control {
|
||||
display: inline-block;
|
||||
left: 370px;
|
||||
}
|
||||
|
||||
/** 头部主题 */
|
||||
.pear-admin .auto-theme {
|
||||
background-color: var(--global-primary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.pear-admin .auto-theme .layui-logo {
|
||||
background-color: var(--global-primary-color);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.pear-admin .auto-theme .layui-logo .title {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.pear-admin .auto-theme .layui-nav * {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.pear-admin .auto-theme .layui-nav.pear-nav-control .layui-this * {
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
.pear-admin .auto-theme .layui-nav .layui-nav-child a {
|
||||
color: #5f5f5f !important;
|
||||
color: rgba(0, 0, 0, .8) !important;
|
||||
}
|
||||
|
||||
/** 收缩布局 */
|
||||
.pear-mini .layui-side .layui-logo .title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-mini .layui-side .layui-logo .logo {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pear-mini .layui-side {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-header {
|
||||
left: 60px;
|
||||
width: calc(100% - 60px);
|
||||
}
|
||||
|
||||
.pear-mini .layui-body {
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-side .layui-logo {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-footer {
|
||||
left: 60px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-nav-tree .layui-nav-item span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-mini .layui-side-scroll {
|
||||
height: calc(100% - 60px);
|
||||
}
|
||||
|
||||
.pear-admin .layui-header .layui-nav .layui-nav-bar {
|
||||
top: 0px !important;
|
||||
background-color: var(--global-primary-color);
|
||||
height: 2px !important;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header .layui-nav .layui-this:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header .layui-nav-more {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-collapsed-pe {
|
||||
right: 30px;
|
||||
bottom: 30px;
|
||||
z-index: 400000;
|
||||
position: absolute;
|
||||
background-color: var(--global-primary-color) !important;
|
||||
box-shadow: 2px 0 6px rgba(0, 21, 41, .20);
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
line-height: 50px;
|
||||
display: none;
|
||||
height: 50px;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.pear-collapsed-pe a {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
.layui-hide-sm {
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 769px) {
|
||||
.layui-hide-sm {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/** 新增兼容 */
|
||||
@media screen and (max-width: 768px) {
|
||||
.collapse {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.pear-collapsed-pe {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.layui-layout-control {
|
||||
left: 45px !important;
|
||||
}
|
||||
|
||||
.layui-layout-left {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-side-scroll {
|
||||
height: calc(100% - 62px);
|
||||
}
|
||||
|
||||
.pear-mini .layui-side {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-header {
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-mini .layui-body {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-footer {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.pear-mini .layui-logo {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-body {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.pear-admin .layui-header {
|
||||
left: 0px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-admin .pear-cover {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #1E1E1E;
|
||||
display: block;
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
opacity: 0;
|
||||
margin-top: -60px;
|
||||
}
|
||||
|
||||
.pear-mini .pear-cover {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes am-horizontal-roll_show {
|
||||
0% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateX(2000px);
|
||||
transform: translateX(2000px)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateX(0);
|
||||
transform: translateX(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes am-horizontal-roll_show {
|
||||
0% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateX(800px);
|
||||
-ms-transform: translateX(800px);
|
||||
transform: translateX(800px)
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 1;
|
||||
-webkit-transform: translateX(0);
|
||||
-ms-transform: translateX(0);
|
||||
transform: translateX(0)
|
||||
}
|
||||
}
|
||||
|
||||
.layer-anim-right {
|
||||
-webkit-animation: am-horizontal-roll_show .5s ease-out;
|
||||
animation: am-horizontal-roll_show .5s ease-out;
|
||||
|
||||
}
|
||||
|
||||
/** 侧边主题 (亮) */
|
||||
.light-theme.layui-side {
|
||||
box-shadow: 2px 0 8px 0 rgba(29, 35, 41, .05) !important;
|
||||
}
|
||||
|
||||
.light-theme.layui-side .layui-logo {
|
||||
background-color: white !important;
|
||||
color: black !important;
|
||||
border-bottom: 1px whitesmoke solid;
|
||||
}
|
||||
|
||||
.light-theme.layui-side .layui-side-scroll {
|
||||
background-color: white !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
.dark-theme.layui-header {
|
||||
border-bottom: none;
|
||||
background-color: #28333E;
|
||||
color: whitesmoke;
|
||||
}
|
||||
|
||||
.dark-theme.layui-header li > a {
|
||||
color: whitesmoke !important;
|
||||
}
|
||||
|
||||
.dark-theme.layui-header .layui-logo {
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/** 顶部主题 (白) */
|
||||
.light-theme.layui-header .layui-logo {
|
||||
background-color: white;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/** 主题面板 */
|
||||
.pearone-color .set-text {
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
}
|
||||
|
||||
.pearone-color .color-title {
|
||||
padding: 15px 0 0px 20px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.pearone-color .color-content {
|
||||
padding: 15px 10px 0 20px;
|
||||
}
|
||||
|
||||
.pearone-color .color-content ul {
|
||||
list-style: none;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.pearone-color .color-content ul li {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: 70px;
|
||||
height: 50px;
|
||||
margin: 0 20px 20px 0;
|
||||
padding: 2px 2px 2px 2px;
|
||||
background-color: #f2f2f2;
|
||||
cursor: pointer;
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.pearone-color .color-content li.layui-this:after,
|
||||
.pearone-color .color-content li:hover:after {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 4px;
|
||||
top: -6px;
|
||||
left: -6px;
|
||||
border: var(--global-primary-color) 2px solid;
|
||||
opacity: 1;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.pearone-color .color-content li:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
z-index: 20;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 1px;
|
||||
height: 0;
|
||||
border: 2px solid #F2F2F2;
|
||||
transition: all .3s;
|
||||
-webkit-transition: all .3s;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.select-color {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.select-color .select-color-title {
|
||||
padding: 15px 0 0px 20px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.select-color .select-color-content {
|
||||
padding: 20px 0 0px 0px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.select-color .select-color-content .select-color-item {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
color: white;
|
||||
margin-left: 24px;
|
||||
border-radius: 6px;
|
||||
background-color: gray;
|
||||
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15);
|
||||
text-align: center;
|
||||
line-height: 24px;
|
||||
font-size: 12px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.message .layui-tab-title li:not(:last-child) {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
|
||||
/** 首屏加载 */
|
||||
.loader-wrapper {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: whitesmoke;
|
||||
z-index: 9999999;
|
||||
}
|
||||
|
||||
.loader {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
margin: 30px auto 40px;
|
||||
margin-top: 20%;
|
||||
position: relative;
|
||||
z-index: 999999;
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
|
||||
.loader:before {
|
||||
content: "";
|
||||
width: 50px;
|
||||
height: 7px;
|
||||
border-radius: 50%;
|
||||
background: #000;
|
||||
opacity: 0.1;
|
||||
position: absolute;
|
||||
top: 59px;
|
||||
left: 0;
|
||||
animation: shadow .5s linear infinite;
|
||||
}
|
||||
|
||||
.loader:after {
|
||||
content: "";
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 10px;
|
||||
background-color: var(--global-primary-color);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
animation: loading .5s linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes loading {
|
||||
17% {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
25% {
|
||||
transform: translateY(9px) rotate(22.5deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: translateY(18px) scale(1, 0.9) rotate(45deg);
|
||||
border-bottom-right-radius: 40px;
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: translateY(9px) rotate(67.5deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0) rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes loading {
|
||||
17% {
|
||||
border-bottom-right-radius: 3px;
|
||||
}
|
||||
|
||||
25% {
|
||||
transform: translateY(9px) rotate(22.5deg);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: translateY(18px) scale(1, 0.9) rotate(45deg);
|
||||
border-bottom-right-radius: 40px;
|
||||
}
|
||||
|
||||
75% {
|
||||
transform: translateY(9px) rotate(67.5deg);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0) rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes shadow {
|
||||
|
||||
0%,
|
||||
100% {
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1.2, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes shadow {
|
||||
|
||||
0%,
|
||||
100% {
|
||||
transform: scale(1, 1);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1.2, 1);
|
||||
}
|
||||
}
|
||||
360
static/admin/css/admin.dark.css
Normal file
@@ -0,0 +1,360 @@
|
||||
/** loader */
|
||||
.pear-admin-dark .loader-wrapper,
|
||||
.pear-admin-dark .loader-wrapper .loader {
|
||||
background-color: #141414;
|
||||
}
|
||||
|
||||
/** layout */
|
||||
.pear-admin-dark .layui-layout {
|
||||
background-color: #141414;
|
||||
}
|
||||
|
||||
/** header */
|
||||
.pear-admin-dark .layui-header,
|
||||
.pear-admin-dark .layui-header .layui-logo {
|
||||
background-color: #141414 !important;
|
||||
box-shadow: none !important;
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header.auto-theme,
|
||||
.pear-admin-dark .layui-header.auto-theme .layui-logo {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header.auto-theme .layui-logo .title {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header {
|
||||
border: 1px solid rgba(0, 0, 0, .40) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header .layui-nav * {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header .layui-nav .layui-nav-child {
|
||||
box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important;
|
||||
background-color: #141414;
|
||||
border-color: #141414;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header .layui-nav .layui-nav-child dd > a:hover {
|
||||
background-color: #141414 !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-header .pear-nav-control .layui-this a {
|
||||
background-color: #0c0c0c !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .auto-theme .layui-logo .title {
|
||||
color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
/** side */
|
||||
.pear-admin-dark .layui-side {
|
||||
box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-logo {
|
||||
border-color: rgba(0, 0, 0, .30) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-side .layui-logo,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav-tree {
|
||||
background-color: #141414 !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav-tree .layui-nav-child {
|
||||
background-color: rgba(0, 0, 0, .3) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item a,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item a > .layui-nav-more {
|
||||
color: rgba(255, 255, 255, .7) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-child dd.layui-this a,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-itemed > a,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-itemed > a > .layui-nav-more,
|
||||
.pear-admin-dark .layui-side .layui-side-scroll .layui-nav .layui-nav-item > a:hover {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
/** body */
|
||||
.pear-admin-dark .layui-body,
|
||||
.pear-admin-dark .layui-body .pear-tab-page-loading,
|
||||
.pear-admin-dark .layui-body .pear-page-loading {
|
||||
background-color: #0a0a0a !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-tab-title,
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-tab-title li,
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-tab-control li {
|
||||
background-color: #141414 !important;
|
||||
border-color: rgba(0, 0, 0, .30) !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-tab-title li > span:first-child {
|
||||
background-color: #434343;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim {
|
||||
border-color: #141414;
|
||||
background-color: #141414 !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim a {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-nav-child.layui-anim a:hover {
|
||||
background-color: #0a0a0a;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-body .layui-tab .layui-tab-close:hover {
|
||||
border-radius: 50%;
|
||||
background-color: #0a0a0a !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .pear-tab-page-menu ul li {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-footer {
|
||||
background-color: #141414;
|
||||
border-top: 1px solid #141414;
|
||||
}
|
||||
|
||||
/** theme */
|
||||
.pear-admin-dark .set-text,
|
||||
.pear-admin-dark .select-color-title,
|
||||
.pear-admin-dark .color-title {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/** search */
|
||||
.pear-admin-dark .menu-search-no-data {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .menu-search-tips * {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .menu-search-tips kbd {
|
||||
border-color: rgba(0, 0, 0, .30) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .menu-search-list li {
|
||||
background-color: #141414;
|
||||
box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .menu-search-list li:hover {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
|
||||
/** message center */
|
||||
.pear-admin-dark .pear-message-center .layui-tab-title,
|
||||
.pear-admin-dark .pear-message-center .message-item {
|
||||
border-color: rgba(0, 0, 0, .30) !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/** button */
|
||||
.pear-admin-dark .layui-btn {
|
||||
color: #ffffff;
|
||||
border-color: #4C4D4F;
|
||||
}
|
||||
|
||||
/** layer */
|
||||
.pear-admin-dark .layui-layer {
|
||||
background-color: #141414;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-layer-msg {
|
||||
border-color: #141414;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-layer-msg .layui-layer-content {
|
||||
color: #E5EAF3;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-layer .layui-layer-setwin > span,
|
||||
.pear-admin-dark .layui-layer .layui-layer-title {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/** card */
|
||||
.pear-admin-dark .layui-card {
|
||||
background-color: #1d1e1f !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-card .layui-card-header {
|
||||
border-bottom-color: #414243;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-card .layui-card-body {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/** input */
|
||||
.pear-admin-dark .layui-input {
|
||||
background-color: transparent;
|
||||
color: #ffffff;
|
||||
border-color: rgba(0, 0, 0, .30) !important;
|
||||
}
|
||||
|
||||
/** switch */
|
||||
.pear-admin-dark .layui-form-switch {
|
||||
border-color: #484849;
|
||||
background-color: rgba(255, 255, 255, .08);
|
||||
}
|
||||
|
||||
/** table */
|
||||
.pear-admin-dark .layui-table {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-table tr:hover {
|
||||
background-color: #141414 !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-table td,
|
||||
.pear-admin-dark .layui-table th,
|
||||
.pear-admin-dark .layui-table-view,
|
||||
.pear-admin-dark .layui-table-page,
|
||||
.pear-admin-dark .layui-table-tool,
|
||||
.pear-admin-dark .layui-table-header {
|
||||
border-color: rgba(0, 0, 0, .40) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-table-tool-self > div {
|
||||
border-color: rgba(0, 0, 0, .40) !important;
|
||||
color: #ffffff !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-laypage select,
|
||||
.pear-admin-dark .layui-laypage button {
|
||||
border-color: rgba(0, 0, 0, .40) !important;
|
||||
color: #ffffff !important;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-laypage a,
|
||||
.pear-admin-dark .layui-laypage-spr,
|
||||
.pear-admin-dark .layui-laypage-skip,
|
||||
.pear-admin-dark .layui-laypage-count {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-laypage-limits option {
|
||||
background-color: #141414 !important;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/** panel */
|
||||
.pear-admin-dark .layui-panel {
|
||||
background-color: #1d1e1f !important;
|
||||
border-color: #1d1e1f !important;
|
||||
}
|
||||
|
||||
/** menu */
|
||||
.pear-admin-dark .layui-menu {
|
||||
background-color: #1d1e1f !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-menu .layui-menu-body-title,
|
||||
.pear-admin-dark .layui-menu .layui-menu-body-title:hover {
|
||||
color: #ffffff;
|
||||
background-color: #1d1e1f !important;
|
||||
}
|
||||
|
||||
/** timeline */
|
||||
.pear-admin-dark .layui-timeline-axis {
|
||||
background-color: rgb(29, 30, 31) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .layui-timeline-item:before {
|
||||
background-color: #414243 !important;
|
||||
}
|
||||
|
||||
|
||||
/** toast */
|
||||
.pear-admin-dark .iziToast {
|
||||
background-color: #1f1f1f !important;
|
||||
}
|
||||
|
||||
/** console */
|
||||
|
||||
.pear-admin-dark .deputy,
|
||||
.pear-admin-dark .shortcut-menu {
|
||||
background-color: #141414 !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .deputy:hover,
|
||||
.pear-admin-dark .shortcut-menu:hover {
|
||||
box-shadow: 0 3px 4px rgba(0, 0, 0, .6) !important;
|
||||
}
|
||||
|
||||
.pear-admin-dark .message-board li {
|
||||
border-bottom: 1px solid rgba(0, 0, 0, .40) !important;
|
||||
}
|
||||
|
||||
/** analysis */
|
||||
.pear-admin-dark .top-panel-number {
|
||||
color: #ffffff !important;
|
||||
border-color: #414243;
|
||||
}
|
||||
|
||||
|
||||
.pear-admin-dark .dynamic-status dd {
|
||||
border-color: #414243;
|
||||
}
|
||||
|
||||
/** success failure */
|
||||
.pear-admin-dark .pear-result .content {
|
||||
background-color: rgba(153, 153, 153, 0.12);
|
||||
color: #E5EAF3;
|
||||
}
|
||||
|
||||
.pear-admin-dark .pear-result .title {
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.pear-admin-dark .pear-result .description {
|
||||
color: #8D9095;
|
||||
}
|
||||
|
||||
/** 403 404 500*/
|
||||
.pear-admin-dark .pear-exception .title p {
|
||||
color: #E5EAF3 !important;
|
||||
}
|
||||
|
||||
/** scroll */
|
||||
.pear-admin-dark *::-webkit-scrollbar-thumb {
|
||||
background: #141414;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.pear-admin-dark *::-webkit-scrollbar-thumb:hover {
|
||||
background: #0a0a0a;
|
||||
}
|
||||
|
||||
/** profile */
|
||||
.pear-admin-dark .user-name,
|
||||
.pear-admin-dark .user-desc {
|
||||
color: whitesmoke;
|
||||
}
|
||||
|
||||
.pear-admin-dark .user-desc {
|
||||
border-top: 1px solid #141414;
|
||||
}
|
||||
65
static/admin/css/other/analysis.css
Normal file
@@ -0,0 +1,65 @@
|
||||
.top-panel {
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.top-panel > .layui-card-body {
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.top-panel-number {
|
||||
line-height: 60px;
|
||||
font-size: 29px;
|
||||
border-right: 1px solid #eceff9;
|
||||
}
|
||||
|
||||
.top-panel-tips {
|
||||
padding-left: 8px;
|
||||
padding-top: 16px;
|
||||
line-height: 30px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.top-panel-tips i {
|
||||
font-size: 33px;
|
||||
}
|
||||
|
||||
.top-panel-tips svg {
|
||||
margin-top: -12px;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.dynamic-status {
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
.dynamic-status dd {
|
||||
padding: 15px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
display: -webkit-flex;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.dynamic-status dd div.dynamic-status-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.dynamic-status dd div.dynamic-status-img a {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.dynamic-status dd div span {
|
||||
color: #BBB;
|
||||
}
|
||||
|
||||
.dynamic-status dd div a {
|
||||
color: #01AAED;
|
||||
}
|
||||
81
static/admin/css/other/console.css
Normal file
@@ -0,0 +1,81 @@
|
||||
|
||||
.shortcut-menu {
|
||||
width: 100%;
|
||||
height: 66px;
|
||||
background-color: #F8F8F8;
|
||||
display: inline-block;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.shortcut-menu i {
|
||||
font-size: 30px;
|
||||
height: 66px;
|
||||
line-height: 66px;
|
||||
}
|
||||
|
||||
.shortcut-menu:hover {
|
||||
box-shadow: 2px 0 8px 0 lightgray !important;
|
||||
}
|
||||
|
||||
.shortcut-menu-label {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.deputy {
|
||||
width: 100%;
|
||||
height: 90px;
|
||||
background-color: #F8F8F8;
|
||||
display: inline-block;
|
||||
border-radius: 5px;
|
||||
text-align: center;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.deputy:hover {
|
||||
box-shadow: 2px 0 8px 0 lightgray !important;
|
||||
}
|
||||
|
||||
.deputy .deputy-label {
|
||||
color: gray;
|
||||
margin-top: 14px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.deputy .deputy-count {
|
||||
margin-top: 12px;
|
||||
color: var(--global-primary-color);
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.message-board {
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
.message-board li {
|
||||
position: relative;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
}
|
||||
|
||||
.message-board li p {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.message-board li > span {
|
||||
color: #999;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.message-board .message-board-reply {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
bottom: 12px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
}
|
||||
28
static/admin/css/other/exception.css
Normal file
@@ -0,0 +1,28 @@
|
||||
.pear-exception {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
box-sizing: border-box;
|
||||
padding: 70px 40px
|
||||
}
|
||||
|
||||
.pear-exception .title {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.pear-exception .title p {
|
||||
color: rgb(0, 0, 0);
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.pear-exception .description {
|
||||
margin-top: 10px;
|
||||
color: #8D9095;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pear-exception .extra {
|
||||
margin: 30px;
|
||||
}
|
||||
227
static/admin/css/other/login.css
Normal file
@@ -0,0 +1,227 @@
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.login-page {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.layui-row {
|
||||
width: 1000px;
|
||||
height: 600px;
|
||||
box-shadow: 2px 0 6px rgba(0, 21, 41, .20);
|
||||
border: 3px solid whitesmoke;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
.login-bg {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
background-color: rgb(250, 250, 250);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-bottom-left-radius: 15px;
|
||||
border-top-left-radius: 15px;
|
||||
}
|
||||
|
||||
.login-bg-img {
|
||||
width: 90%;
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.login-form {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: #fff;
|
||||
border-bottom-right-radius: 15px;
|
||||
border-top-right-radius: 15px;
|
||||
}
|
||||
|
||||
.form-center {
|
||||
background: #fff;
|
||||
box-sizing: border-box;
|
||||
flex-flow: row wrap;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.form-center-box {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.top-log-title {
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.top-log {
|
||||
width: 50px;
|
||||
border-radius: 12px;
|
||||
margin-right: 20px;
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.top-log-title span {
|
||||
font-size: 32px;
|
||||
font-weight: 700;
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.top-desc {
|
||||
font-size: 14px;
|
||||
color: #808695;
|
||||
|
||||
}
|
||||
|
||||
.tab-log-method {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
padding: 20px 0px;
|
||||
}
|
||||
|
||||
.tab-log-method-item {
|
||||
flex: 1;
|
||||
box-sizing: border-box;
|
||||
padding: 5px 50px;
|
||||
text-align: right;
|
||||
color: #1f2225;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.tab-log-method-item:nth-child(2) {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.tab-log-method-item > span {
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
text-align: center;
|
||||
height: 30px;
|
||||
border-bottom: 2px solid transparent;
|
||||
}
|
||||
|
||||
.tab-log-method-item > span:hover {
|
||||
cursor: pointer;
|
||||
color: #16baaa;
|
||||
border-bottom: 2px solid #16baaa;
|
||||
}
|
||||
|
||||
.tab-log-verification {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.verification-text {
|
||||
flex: 2;
|
||||
box-sizing: border-box;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.verification-img {
|
||||
flex: 1;
|
||||
box-sizing: border-box;
|
||||
border: 1px solid #eeeeee;
|
||||
border-radius: 4px;
|
||||
height: 40px;
|
||||
overflow: hidden;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.remember-passsword {
|
||||
margin: 20px 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.remember-cehcked {
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.greenText {
|
||||
color: #16baaa;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
.login-btn {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.login-btn > .layui-btn {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.other-login {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
margin: 20px 0 0;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.other-login-methods {
|
||||
display: inline-block;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.layui-input {
|
||||
border-radius: 4px;
|
||||
line-height: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.layui-btn {
|
||||
border-radius: 4px;
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
@media (min-width: 992px) and (max-width: 1200px) {
|
||||
.layui-row {
|
||||
width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) and (max-width: 992px) {
|
||||
.layui-row {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.form-center {
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.layui-row {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.login-form {
|
||||
border-bottom-left-radius: 15px;
|
||||
border-top-left-radius: 15px;
|
||||
}
|
||||
|
||||
.form-center-box {
|
||||
width: 95%;
|
||||
}
|
||||
}
|
||||
77
static/admin/css/other/profile.css
Normal file
@@ -0,0 +1,77 @@
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.user-info {
|
||||
width: 110px;
|
||||
height: 110px;
|
||||
line-height: 110px;
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border-radius: 50%;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.user-name {
|
||||
padding-top: 20px;
|
||||
font-size: 20px !important;
|
||||
}
|
||||
|
||||
.user-home {
|
||||
padding-top: 8px;
|
||||
margin-top: 10px;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.user-desc {
|
||||
height: 45px;
|
||||
border-top: 1px whitesmoke solid;
|
||||
text-align: center;
|
||||
line-height: 45px;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.blog-title {
|
||||
padding-left: 13.5px;
|
||||
}
|
||||
|
||||
.blog-content {
|
||||
padding-left: 13px;
|
||||
font-size: 13px;
|
||||
color: dimgray;
|
||||
}
|
||||
|
||||
.layui-tab-title {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.message-board {
|
||||
padding: 0 10px 10px;
|
||||
}
|
||||
|
||||
.message-board li {
|
||||
position: relative;
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid #EEE;
|
||||
}
|
||||
|
||||
.message-board li p {
|
||||
padding-bottom: 10px;
|
||||
padding-top: 3px;
|
||||
}
|
||||
|
||||
.message-board li > span {
|
||||
color: #999;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.message-board .message-board-reply {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
bottom: 12px;
|
||||
height: 24px;
|
||||
line-height: 24px;
|
||||
}
|
||||
46
static/admin/css/other/result.css
Normal file
@@ -0,0 +1,46 @@
|
||||
.pear-result {
|
||||
text-align: center;
|
||||
|
||||
}
|
||||
|
||||
.pear-result .success svg {
|
||||
color: #32C682;
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
|
||||
}
|
||||
|
||||
.pear-result .error svg {
|
||||
color: #f56c6c;
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
|
||||
}
|
||||
|
||||
.pear-result .title {
|
||||
margin-top: 25px;
|
||||
|
||||
}
|
||||
|
||||
.pear-result .description {
|
||||
margin-top: 25px;
|
||||
width: 60%;
|
||||
margin-left: 20%;
|
||||
color: rgba(0, 0, 0, .45);
|
||||
}
|
||||
|
||||
.pear-result .content {
|
||||
margin-top: 20px;
|
||||
width: 80%;
|
||||
border-radius: 4px;
|
||||
background-color: whitesmoke;
|
||||
padding: 20px 32px;
|
||||
margin-left: 10%;
|
||||
margin-bottom: 30px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.pear-result .extra {
|
||||
padding-top: 10px;
|
||||
margin-top: 25px;
|
||||
}
|
||||
138
static/admin/css/reset.css
Normal file
@@ -0,0 +1,138 @@
|
||||
.layui-dropdown {
|
||||
border-radius: var(--global-border-radius);
|
||||
}
|
||||
|
||||
.layui-input {
|
||||
border-radius: var(--global-border-radius);
|
||||
}
|
||||
|
||||
.layui-form-onswitch {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.layui-form-onswitch {
|
||||
border-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-form-radio:hover > *,
|
||||
.layui-form-radioed > i,
|
||||
.layui-form-radioed {
|
||||
color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.layui-form-checked[lay-skin=primary] > i {
|
||||
border-color: var(--global-primary-color) !important;
|
||||
background-color: var(--global-primary-color);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.layui-form-checkbox[lay-skin=primary] > .layui-icon-indeterminate,
|
||||
.layui-form-checkbox[lay-skin=primary] > .layui-icon-indeterminate:hover {
|
||||
border-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-form-checkbox[lay-skin=primary] > .layui-icon-indeterminate:before {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-btn {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-btn.layui-btn-primary:hover {
|
||||
border: 1px solid var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-btn.layui-btn-normal {
|
||||
background-color: #1e9fff !important;
|
||||
}
|
||||
|
||||
.layui-btn.layui-btn-danger {
|
||||
background-color: #ff5722 !important;
|
||||
}
|
||||
|
||||
.layui-btn.layui-btn-warm {
|
||||
background-color: #ffb800 !important;
|
||||
}
|
||||
|
||||
.layui-btn.layui-btn-primary {
|
||||
background-color: transparent !important;
|
||||
color: #5f5f5f !important;
|
||||
}
|
||||
|
||||
.layui-card {
|
||||
border-radius: var(--global-border-radius);
|
||||
}
|
||||
|
||||
.layui-timeline-axis {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-table-checked {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.layui-input:focus, .layui-textarea:focus {
|
||||
border-color: var(--global-primary-color) !important;
|
||||
box-shadow: 0 0 0 3px rgb(from var(--global-primary-color) r g b / 8%);
|
||||
}
|
||||
|
||||
.layui-form-select dl dd.layui-this {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-input-wrap .layui-input:focus + .layui-input-split {
|
||||
border-color: var(--global-primary-color)
|
||||
}
|
||||
|
||||
.layui-form-checked:hover > div, .layui-form-checked > div {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-form-checked:hover > i, .layui-form-checked > i {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-laypage .layui-laypage-curr .layui-laypage-em {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-laypage input:active {
|
||||
border-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-laypage a:hover {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-laypage input:focus, .layui-laypage select:focus {
|
||||
border-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.layui-laydate .layui-this, .layui-laydate .layui-this > div {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.layui-laydate-header i:hover, .layui-laydate-header span:hover {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-laydate-footer span:hover {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-tab-brief > .layui-tab-title .layui-this {
|
||||
color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-tab-brief > .layui-tab-more li.layui-this:after, .layui-tab-brief > .layui-tab-title .layui-this:after {
|
||||
border-bottom: 2px solid var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-progress-bar {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.layui-form-checkbox[lay-skin=primary]:hover > i {
|
||||
border-color: var(--global-primary-color);
|
||||
}
|
||||
9
static/admin/css/variables.css
Normal file
@@ -0,0 +1,9 @@
|
||||
:root {
|
||||
|
||||
/* 主题颜色 */
|
||||
--global-primary-color: #16baaa;
|
||||
|
||||
/** 圆角度数 */
|
||||
--global-border-radius: 4px;
|
||||
|
||||
}
|
||||
313
static/admin/data/menu.json
Normal file
@@ -0,0 +1,313 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"title": "工作空间",
|
||||
"icon": "layui-icon layui-icon-console",
|
||||
"type": 0,
|
||||
"children": [
|
||||
{
|
||||
"id": "10",
|
||||
"title": "分析页",
|
||||
"icon": "layui-icon layui-icon-console",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/analysis/index.html"
|
||||
},
|
||||
{
|
||||
"id": "11",
|
||||
"title": "工作台",
|
||||
"icon": "layui-icon layui-icon-console",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/console/index.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"title": "列表页面",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"children": [
|
||||
{
|
||||
"id": 91,
|
||||
"title": "查询表格",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/listing/table.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "扩展组件",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"children": [
|
||||
{
|
||||
"id": 21,
|
||||
"title": "核心方法",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/component/admin.html"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"title": "高级栅格",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/component/grid.html"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"title": "消息提示",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/component/toast.html"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"title": "路由过渡",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/component/nprogress.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "result",
|
||||
"title": "结果页面",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"href": "",
|
||||
"children": [
|
||||
{
|
||||
"id": "success",
|
||||
"title": "成功页面",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "failure",
|
||||
"title": "失败页面",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/error.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "exception",
|
||||
"title": "异常页面",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"href": "",
|
||||
"children": [
|
||||
{
|
||||
"id": "403",
|
||||
"title": "403",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/exception/403.html"
|
||||
},
|
||||
{
|
||||
"id": "404",
|
||||
"title": "404",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/exception/404.html"
|
||||
},
|
||||
{
|
||||
"id": "500",
|
||||
"title": "500",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/exception/500.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "open",
|
||||
"title": "菜单模式",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"children": [
|
||||
{
|
||||
"id": "a",
|
||||
"title": "普通路由",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "b",
|
||||
"title": "嵌套网页",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_iframe",
|
||||
"href": "http://www.layui-vue.com"
|
||||
},
|
||||
{
|
||||
"id": "c",
|
||||
"title": "新建标签",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com"
|
||||
},
|
||||
{
|
||||
"id": "d",
|
||||
"title": "弹窗网页",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_layer",
|
||||
"href": "http://www.layui-vue.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "deep",
|
||||
"title": "深度测试",
|
||||
"icon": "layui-icon layui-icon-auz",
|
||||
"type": 0,
|
||||
"href": "",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-1",
|
||||
"title": "二级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 0,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-1-1",
|
||||
"title": "三级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 0,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-1-1-1",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "deep1-1-1-2",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "deep1-1-2",
|
||||
"title": "三级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 0,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-1-2-1",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "deep1-1-2-2",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "deep1-2",
|
||||
"title": "二级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 0,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-2-1",
|
||||
"title": "三级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 0,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-2-1-1",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "deep1-2-1-2",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "deep1-2-2",
|
||||
"title": "三级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 0,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com",
|
||||
"children": [
|
||||
{
|
||||
"id": "deep1-2-2-1",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-smile",
|
||||
"type": 1,
|
||||
"openType": "_component",
|
||||
"href": "view/result/success.html"
|
||||
},
|
||||
{
|
||||
"id": "deep1-2-2-2",
|
||||
"title": "四级菜单",
|
||||
"icon": "layui-icon layui-icon-face-cry",
|
||||
"type": 1,
|
||||
"openType": "_blank",
|
||||
"href": "http://www.layui-vue.com"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
102
static/admin/data/message.json
Normal file
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"code": 200,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"title": "通知",
|
||||
"children": [
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
|
||||
"title": "你收到了 14 份新周报",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png",
|
||||
"title": "曲妮妮 已通过第三轮面试",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png",
|
||||
"title": "可以区分多种通知类型",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png",
|
||||
"title": "左侧图标用于区分不同的类型",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
|
||||
"title": "内容不要超过两行字",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"title": "消息",
|
||||
"children": [
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
|
||||
"title": "你收到了 14 份新周报",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png",
|
||||
"title": "曲妮妮 已通过第三轮面试",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png",
|
||||
"title": "可以区分多种通知类型",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png",
|
||||
"title": "左侧图标用于区分不同的类型",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"avatar": "https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png",
|
||||
"title": "内容不要超过两行字",
|
||||
"context": "这是消息内容。",
|
||||
"form": "就眠仪式",
|
||||
"time": "刚刚"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"title": "代办",
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
||||
303
static/admin/data/table.json
Normal file
@@ -0,0 +1,303 @@
|
||||
{
|
||||
"code": 0,
|
||||
"msg": "",
|
||||
"count": 1000,
|
||||
"totalRow": {
|
||||
"era": {
|
||||
"tang": "2",
|
||||
"song": "2",
|
||||
"xian": "20"
|
||||
}
|
||||
},
|
||||
"data": [
|
||||
{
|
||||
"id": "10001",
|
||||
"username": "就眠儀式",
|
||||
"email": "test1@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10002",
|
||||
"username": "杜甫",
|
||||
"email": "test2@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "108",
|
||||
"joinTime": "2016-10-14",
|
||||
"LAY_CHECKED": true
|
||||
},
|
||||
{
|
||||
"id": "10003",
|
||||
"username": "就眠儀式",
|
||||
"email": "test3@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10004",
|
||||
"username": "就眠儀式",
|
||||
"email": "test4@email.com",
|
||||
"sex": "女",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10005",
|
||||
"username": "就眠儀式",
|
||||
"email": "test5@email.com",
|
||||
"sex": "女",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10006",
|
||||
"username": "就眠儀式",
|
||||
"email": "test6@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10007",
|
||||
"username": "就眠儀式",
|
||||
"email": "test7@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10008",
|
||||
"username": "就眠儀式",
|
||||
"email": "test8@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10009",
|
||||
"username": "就眠儀式",
|
||||
"email": "test9@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10010",
|
||||
"username": "就眠儀式",
|
||||
"email": "test10@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10011",
|
||||
"username": "就眠儀式",
|
||||
"email": "test11@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10012",
|
||||
"username": "就眠儀式",
|
||||
"email": "test12@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10013",
|
||||
"username": "就眠儀式",
|
||||
"email": "test13@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10014",
|
||||
"username": "就眠儀式",
|
||||
"email": "test14@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10015",
|
||||
"username": "就眠儀式",
|
||||
"email": "test15@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10016",
|
||||
"username": "就眠儀式",
|
||||
"email": "test16@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10017",
|
||||
"username": "就眠儀式",
|
||||
"email": "test17@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10018",
|
||||
"username": "就眠儀式",
|
||||
"email": "test18@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10019",
|
||||
"username": "就眠儀式",
|
||||
"email": "test19@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10020",
|
||||
"username": "就眠儀式",
|
||||
"email": "test20@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10021",
|
||||
"username": "就眠儀式",
|
||||
"email": "test21@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10022",
|
||||
"username": "就眠儀式",
|
||||
"email": "test22@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10023",
|
||||
"username": "就眠儀式",
|
||||
"email": "test23@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
},
|
||||
{
|
||||
"id": "10024",
|
||||
"username": "就眠儀式",
|
||||
"email": "test24@email.com",
|
||||
"sex": "男",
|
||||
"city": "浙江杭州",
|
||||
"sign": "花开堪折直须折,莫待无花空折枝.",
|
||||
"experience": "100",
|
||||
"ip": "192.168.0.8",
|
||||
"checkin": "106",
|
||||
"joinTime": "2016-10-14"
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
static/admin/images/avatar.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
115
static/admin/images/background.svg
Normal file
@@ -0,0 +1,115 @@
|
||||
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="1361px" height="609px"
|
||||
viewBox="0 0 1361 609" version="1.1">
|
||||
<!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>Group 21</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs/>
|
||||
<g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)">
|
||||
<g id="Group-21" transform="translate(77.000000, 73.000000)">
|
||||
<g id="Group-18" opacity="0.8"
|
||||
transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)">
|
||||
<ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479"
|
||||
ry="21.766008"/>
|
||||
<ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601"
|
||||
rx="5.2173913" ry="5.21330997"/>
|
||||
<path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z"
|
||||
id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"/>
|
||||
<path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6"
|
||||
stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7"
|
||||
stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-dasharray="1.405357899873153,2.108036953469981"/>
|
||||
<path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9"
|
||||
stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round"
|
||||
stroke-dasharray="1.405357899873153,2.108036953469981"/>
|
||||
<g id="Group-17"
|
||||
transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)"
|
||||
fill="#CFDAE6">
|
||||
<ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653"
|
||||
ry="9.12768076"/>
|
||||
<path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z"
|
||||
id="Oval-4"
|
||||
transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Group-14"
|
||||
transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)">
|
||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471"
|
||||
ry="29.1402439"/>
|
||||
<ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275"
|
||||
ry="21.5853659"/>
|
||||
<ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341"
|
||||
rx="23.7254902" ry="23.7439024"/>
|
||||
<ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137"
|
||||
ry="10.7926829"/>
|
||||
<path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z"
|
||||
id="Oval-2" fill="#BACAD9"/>
|
||||
<g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6">
|
||||
<ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"/>
|
||||
<path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z"
|
||||
id="Oval-2-Copy-2"
|
||||
transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "/>
|
||||
</g>
|
||||
<ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706"
|
||||
ry="1.61890244"/>
|
||||
<ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098"
|
||||
rx="1.61764706" ry="1.61890244"/>
|
||||
<ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488"
|
||||
rx="2.15686275" ry="2.15853659"/>
|
||||
<path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6"
|
||||
opacity="0.8"/>
|
||||
</g>
|
||||
<g id="Group-10" opacity="0.799999952"
|
||||
transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)">
|
||||
<ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32"
|
||||
rx="11.1864407" ry="11.2941176"/>
|
||||
<g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9">
|
||||
<ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627"
|
||||
ry="8.55614973"/>
|
||||
<path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z"
|
||||
id="Oval-7"/>
|
||||
</g>
|
||||
<path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6"
|
||||
stroke-width="0.941176471"/>
|
||||
<ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765"
|
||||
rx="3.26271186" ry="3.29411765"/>
|
||||
<ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017"
|
||||
ry="2.82352941"/>
|
||||
<path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6"
|
||||
stroke-width="0.941176471"/>
|
||||
</g>
|
||||
<g id="Group-19" opacity="0.33"
|
||||
transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)">
|
||||
<g id="Group-17"
|
||||
transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)"
|
||||
fill="#BACAD9">
|
||||
<circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"/>
|
||||
<path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z"
|
||||
id="Oval-4"
|
||||
transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "/>
|
||||
</g>
|
||||
<circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"/>
|
||||
<path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9"
|
||||
stroke-width="1.16666667"/>
|
||||
<path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9"
|
||||
stroke-width="1.16666667"/>
|
||||
<polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667"
|
||||
points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"/>
|
||||
<path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7"
|
||||
stroke-width="1.16666667" opacity="0.6"/>
|
||||
<path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9"
|
||||
stroke-width="1.16666667"/>
|
||||
<path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6"
|
||||
stroke-width="1.16666667"/>
|
||||
<circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"/>
|
||||
<circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"/>
|
||||
<circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"/>
|
||||
<circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333"
|
||||
r="5.83333333"/>
|
||||
<circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 9.6 KiB |
BIN
static/admin/images/banner.png
Normal file
|
After Width: | Height: | Size: 9.9 MiB |
BIN
static/admin/images/blog.jpg
Normal file
|
After Width: | Height: | Size: 197 KiB |
BIN
static/admin/images/captcha.gif
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
static/admin/images/logo.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
1
static/component/layui/css/layui.css
Normal file
BIN
static/component/layui/font/iconfont.eot
Normal file
790
static/component/layui/font/iconfont.svg
Normal file
|
After Width: | Height: | Size: 329 KiB |
BIN
static/component/layui/font/iconfont.ttf
Normal file
BIN
static/component/layui/font/iconfont.woff
Normal file
BIN
static/component/layui/font/iconfont.woff2
Normal file
1
static/component/layui/layui.js
Normal file
977
static/component/pear/css/module/global.css
Normal file
@@ -0,0 +1,977 @@
|
||||
.pear-container {
|
||||
padding: 10px;
|
||||
margin: 0px;
|
||||
box-sizing: border-box;
|
||||
background-color: transparent;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-track {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-thumb {
|
||||
background: #E6E6E6;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-thumb:hover {
|
||||
background: #E6E6E6;
|
||||
}
|
||||
|
||||
*::-webkit-scrollbar-corner {
|
||||
background: #f6f6f6;
|
||||
}
|
||||
|
||||
.pear-row::after,
|
||||
.pear-row::before {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.pear-col {
|
||||
float: left;
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
.pear-row * {
|
||||
box-sizing: border-box
|
||||
}
|
||||
|
||||
.pear-col-md1 {
|
||||
width: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-md2 {
|
||||
width: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-md3 {
|
||||
width: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-md4 {
|
||||
width: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-md5 {
|
||||
width: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-md6 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.pear-col-md7 {
|
||||
width: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-md8 {
|
||||
width: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-md9 {
|
||||
width: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-md10 {
|
||||
width: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-md11 {
|
||||
width: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-md12 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.pear-col-md13 {
|
||||
width: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-md14 {
|
||||
width: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-md15 {
|
||||
width: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-md16 {
|
||||
width: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-md17 {
|
||||
width: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-md18 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.pear-col-md19 {
|
||||
width: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-md20 {
|
||||
width: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-md21 {
|
||||
width: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-md22 {
|
||||
width: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-md23 {
|
||||
width: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-md24 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset1 {
|
||||
margin-left: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset2 {
|
||||
margin-left: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset3 {
|
||||
margin-left: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset4 {
|
||||
margin-left: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset5 {
|
||||
margin-left: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset6 {
|
||||
margin-left: 25%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset7 {
|
||||
margin-left: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset8 {
|
||||
margin-left: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset9 {
|
||||
margin-left: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset10 {
|
||||
margin-left: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset11 {
|
||||
margin-left: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset12 {
|
||||
margin-left: 50%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset13 {
|
||||
margin-left: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset14 {
|
||||
margin-left: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset15 {
|
||||
margin-left: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset16 {
|
||||
margin-left: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset17 {
|
||||
margin-left: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset18 {
|
||||
margin-left: 75%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset19 {
|
||||
margin-left: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset20 {
|
||||
margin-left: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset21 {
|
||||
margin-left: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset22 {
|
||||
margin-left: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset23 {
|
||||
margin-left: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-md-offset24 {
|
||||
margin-left: 100%;
|
||||
}
|
||||
|
||||
|
||||
@media all and (max-width: 768px) {
|
||||
.pear-col-xs1 {
|
||||
width: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs2 {
|
||||
width: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs3 {
|
||||
width: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs4 {
|
||||
width: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs5 {
|
||||
width: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs6 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.pear-col-xs7 {
|
||||
width: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs8 {
|
||||
width: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs9 {
|
||||
width: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs10 {
|
||||
width: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs11 {
|
||||
width: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs12 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.pear-col-xs13 {
|
||||
width: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs14 {
|
||||
width: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs15 {
|
||||
width: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs16 {
|
||||
width: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs17 {
|
||||
width: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs18 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.pear-col-xs19 {
|
||||
width: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs20 {
|
||||
width: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs21 {
|
||||
width: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs22 {
|
||||
width: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs23 {
|
||||
width: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs24 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset1 {
|
||||
margin-left: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset2 {
|
||||
margin-left: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset3 {
|
||||
margin-left: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset4 {
|
||||
margin-left: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset5 {
|
||||
margin-left: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset6 {
|
||||
margin-left: 25%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset7 {
|
||||
margin-left: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset8 {
|
||||
margin-left: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset9 {
|
||||
margin-left: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset10 {
|
||||
margin-left: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset11 {
|
||||
margin-left: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset12 {
|
||||
margin-left: 50%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset13 {
|
||||
margin-left: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset14 {
|
||||
margin-left: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset15 {
|
||||
margin-left: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset16 {
|
||||
margin-left: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset17 {
|
||||
margin-left: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset18 {
|
||||
margin-left: 75%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset19 {
|
||||
margin-left: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset20 {
|
||||
margin-left: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset21 {
|
||||
margin-left: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset22 {
|
||||
margin-left: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset23 {
|
||||
margin-left: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-xs-offset24 {
|
||||
margin-left: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 768px) and (max-width: 992px) {
|
||||
.pear-col-sm1 {
|
||||
width: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm2 {
|
||||
width: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm3 {
|
||||
width: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm4 {
|
||||
width: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm5 {
|
||||
width: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm6 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.pear-col-sm7 {
|
||||
width: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm8 {
|
||||
width: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm9 {
|
||||
width: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm10 {
|
||||
width: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm11 {
|
||||
width: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm12 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.pear-col-sm13 {
|
||||
width: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm14 {
|
||||
width: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm15 {
|
||||
width: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm16 {
|
||||
width: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm17 {
|
||||
width: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm18 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.pear-col-sm19 {
|
||||
width: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm20 {
|
||||
width: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm21 {
|
||||
width: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm22 {
|
||||
width: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm23 {
|
||||
width: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm24 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset1 {
|
||||
margin-left: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset2 {
|
||||
margin-left: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset3 {
|
||||
margin-left: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset4 {
|
||||
margin-left: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset5 {
|
||||
margin-left: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset6 {
|
||||
margin-left: 25%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset7 {
|
||||
margin-left: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset8 {
|
||||
margin-left: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset9 {
|
||||
margin-left: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset10 {
|
||||
margin-left: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset11 {
|
||||
margin-left: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset12 {
|
||||
margin-left: 50%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset13 {
|
||||
margin-left: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset14 {
|
||||
margin-left: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset15 {
|
||||
margin-left: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset16 {
|
||||
margin-left: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset17 {
|
||||
margin-left: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset18 {
|
||||
margin-left: 75%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset19 {
|
||||
margin-left: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset20 {
|
||||
margin-left: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset21 {
|
||||
margin-left: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset22 {
|
||||
margin-left: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset23 {
|
||||
margin-left: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-sm-offset24 {
|
||||
margin-left: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@media all and (min-width: 1200px) {
|
||||
.pear-col-lg1 {
|
||||
width: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg2 {
|
||||
width: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg3 {
|
||||
width: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg4 {
|
||||
width: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg5 {
|
||||
width: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg6 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.pear-col-lg7 {
|
||||
width: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg8 {
|
||||
width: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg9 {
|
||||
width: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg10 {
|
||||
width: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg11 {
|
||||
width: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg12 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.pear-col-lg13 {
|
||||
width: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg14 {
|
||||
width: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg15 {
|
||||
width: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg16 {
|
||||
width: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg17 {
|
||||
width: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg18 {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.pear-col-lg19 {
|
||||
width: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg20 {
|
||||
width: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg21 {
|
||||
width: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg22 {
|
||||
width: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg23 {
|
||||
width: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg24 {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset1 {
|
||||
margin-left: 4.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset2 {
|
||||
margin-left: 8.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset3 {
|
||||
margin-left: 12.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset4 {
|
||||
margin-left: 16.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset5 {
|
||||
margin-left: 20.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset6 {
|
||||
margin-left: 25%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset7 {
|
||||
margin-left: 29.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset8 {
|
||||
margin-left: 33.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset9 {
|
||||
margin-left: 37.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset10 {
|
||||
margin-left: 41.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset11 {
|
||||
margin-left: 45.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset12 {
|
||||
margin-left: 50%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset13 {
|
||||
margin-left: 54.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset14 {
|
||||
margin-left: 58.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset15 {
|
||||
margin-left: 62.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset16 {
|
||||
margin-left: 66.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset17 {
|
||||
margin-left: 70.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset18 {
|
||||
margin-left: 75%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset19 {
|
||||
margin-left: 79.16%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset20 {
|
||||
margin-left: 83.33%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset21 {
|
||||
margin-left: 87.5%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset22 {
|
||||
margin-left: 91.66%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset23 {
|
||||
margin-left: 95.83%;
|
||||
}
|
||||
|
||||
.pear-col-lg-offset24 {
|
||||
margin-left: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.pear-col-space1 {
|
||||
margin: -.5px
|
||||
}
|
||||
|
||||
.pear-col-space1 > * {
|
||||
padding: .5px
|
||||
}
|
||||
|
||||
.pear-col-space2 {
|
||||
margin: -1px
|
||||
}
|
||||
|
||||
.pear-col-space2 > * {
|
||||
padding: 1px
|
||||
}
|
||||
|
||||
.pear-col-space4 {
|
||||
margin: -2px
|
||||
}
|
||||
|
||||
.pear-col-space4 > * {
|
||||
padding: 2px
|
||||
}
|
||||
|
||||
.pear-col-space5 {
|
||||
margin: -2.5px
|
||||
}
|
||||
|
||||
.pear-col-space5 > * {
|
||||
padding: 2.5px
|
||||
}
|
||||
|
||||
.pear-col-space6 {
|
||||
margin: -3px
|
||||
}
|
||||
|
||||
.pear-col-space6 > * {
|
||||
padding: 3px
|
||||
}
|
||||
|
||||
.pear-col-space8 {
|
||||
margin: -4px
|
||||
}
|
||||
|
||||
.pear-col-space8 > * {
|
||||
padding: 4px
|
||||
}
|
||||
|
||||
.pear-col-space10 {
|
||||
margin: -5px
|
||||
}
|
||||
|
||||
.pear-col-space10 > * {
|
||||
padding: 5px
|
||||
}
|
||||
|
||||
.pear-col-space12 {
|
||||
margin: -6px
|
||||
}
|
||||
|
||||
.pear-col-space12 > * {
|
||||
padding: 6px
|
||||
}
|
||||
|
||||
.pear-col-space14 {
|
||||
margin: -7px
|
||||
}
|
||||
|
||||
.pear-col-space14 > * {
|
||||
padding: 7px
|
||||
}
|
||||
|
||||
.pear-col-space15 {
|
||||
margin: -7.5px
|
||||
}
|
||||
|
||||
.pear-col-space15 > * {
|
||||
padding: 7.5px
|
||||
}
|
||||
|
||||
.pear-col-space16 {
|
||||
margin: -8px
|
||||
}
|
||||
|
||||
.pear-col-space16 > * {
|
||||
padding: 8px
|
||||
}
|
||||
|
||||
.pear-col-space18 {
|
||||
margin: -9px
|
||||
}
|
||||
|
||||
.pear-col-space18 > * {
|
||||
padding: 9px
|
||||
}
|
||||
|
||||
.pear-col-space20 {
|
||||
margin: -10px
|
||||
}
|
||||
|
||||
.pear-col-space20 > * {
|
||||
padding: 10px
|
||||
}
|
||||
|
||||
.pear-col-space22 {
|
||||
margin: -11px
|
||||
}
|
||||
|
||||
.pear-col-space22 > * {
|
||||
padding: 11px
|
||||
}
|
||||
|
||||
.pear-col-space24 {
|
||||
margin: -12px
|
||||
}
|
||||
|
||||
.pear-col-space24 > * {
|
||||
padding: 12px
|
||||
}
|
||||
|
||||
.pear-col-space25 {
|
||||
margin: -12.5px
|
||||
}
|
||||
|
||||
.pear-col-space25 > * {
|
||||
padding: 12.5px
|
||||
}
|
||||
|
||||
.pear-col-space26 {
|
||||
margin: -13px
|
||||
}
|
||||
|
||||
.pear-col-space26 > * {
|
||||
padding: 13px
|
||||
}
|
||||
|
||||
.pear-col-space28 {
|
||||
margin: -14px
|
||||
}
|
||||
|
||||
.pear-col-space28 > * {
|
||||
padding: 14px
|
||||
}
|
||||
|
||||
.pear-col-space30 {
|
||||
margin: -15px
|
||||
}
|
||||
|
||||
.pear-col-space30 > * {
|
||||
padding: 15px
|
||||
}
|
||||
277
static/component/pear/css/module/menu.css
Normal file
@@ -0,0 +1,277 @@
|
||||
.pear-nav-tree {
|
||||
width: 230px !important;
|
||||
border-radius: 0px;
|
||||
background-color: #28333E;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item > a {
|
||||
height: 56px;
|
||||
line-height: 56px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item dd a {
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item > a .layui-nav-more {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.pear-side-scroll::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
height: 0px;
|
||||
}
|
||||
|
||||
.pear-side-scroll {
|
||||
width: 230px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-child dd.layui-this,
|
||||
.layui-nav-tree .layui-nav-child dd.layui-this a,
|
||||
.layui-nav-tree .layui-this,
|
||||
.layui-nav-tree .layui-this > a,
|
||||
.layui-nav-tree .layui-this > a:hover {
|
||||
background-color: var(--global-primary-color);
|
||||
}
|
||||
|
||||
.pear-nav-tree .toast {
|
||||
font-size: 14px;
|
||||
margin: 5px;
|
||||
margin-right: 8px;
|
||||
text-align: center;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
color: lightgray;
|
||||
}
|
||||
|
||||
|
||||
.pear-nav-tree .layui-nav-item a i {
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item a span {
|
||||
letter-spacing: 2px;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item a:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-more {
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-bar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item a .layui-badge-dot {
|
||||
float: right;
|
||||
right: 13px;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-item a .layui-badge {
|
||||
float: right;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
/** 实 现 菜 单 隐 藏 */
|
||||
.pear-nav-mini {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pear-nav-mini .layui-nav-item a span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-nav-mini .layui-nav-child {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-nav-mini .layui-nav-more {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc a {
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc .layui-nav-bar {
|
||||
top: 0px !important;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc .layui-this * {
|
||||
background-color: whitesmoke;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc * {
|
||||
color: darkslategray !important;
|
||||
}
|
||||
|
||||
.pear-nav-control.pc .layui-nav-bar {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.pear-nav-control .layui-nav-child {
|
||||
border: 1px solid whitesmoke;
|
||||
border-radius: 6px;
|
||||
width: 150px;
|
||||
}
|
||||
|
||||
/** 隐 藏 后 子 级 悬 浮 菜 单 */
|
||||
.pear-nav-tree .layui-nav-hover {
|
||||
position: fixed;
|
||||
min-width: 130px;
|
||||
padding: 4px;
|
||||
display: block !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-hover:before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 4px;
|
||||
left: 4px;
|
||||
bottom: 0;
|
||||
top: 0;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
background-color: #28333E;
|
||||
display: block;
|
||||
box-shadow: 0px 0px 3px lightgray;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-hover a span {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-hover a i {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-child dd a span {
|
||||
margin-left: 26px !important;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-child dd a i {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-nav-tree .layui-nav-hover dd a span {
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
.pear-nav-tree dl {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
/** 亮 样 式*/
|
||||
.dark-theme .layui-nav-tree {
|
||||
background-color: #28333E !important;
|
||||
}
|
||||
|
||||
.light-theme {
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree,
|
||||
.light-theme .pear-nav-tree .layui-nav-hover:before,
|
||||
.light-theme .pear-nav-tree .layui-nav-child {
|
||||
background-color: white !important;
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree a,
|
||||
.light-theme .pear-nav-tree .layui-nav-more {
|
||||
color: dimgray !important;
|
||||
border-top-color: dimgray;
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree .layui-nav-itemed > a > .layui-nav-more {
|
||||
border-top-color: white !important;
|
||||
border-bottom-color: dimgray !important;
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree .layui-this a,
|
||||
.light-theme .pear-nav-tree .layui-this {
|
||||
color: white !important;
|
||||
background-color: var(--global-primary-color) !important;
|
||||
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree .layui-this a:hover {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
|
||||
}
|
||||
|
||||
.light-theme .pear-nav-tree .layui-nav-bar {
|
||||
display: none;
|
||||
|
||||
}
|
||||
|
||||
/** 下 拉 图 标 */
|
||||
.pear-nav-tree.arrow .layui-nav-more {
|
||||
font-family: layui-icon !important;
|
||||
font-size: 10px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
overflow: hidden;
|
||||
width: auto;
|
||||
height: auto;
|
||||
line-height: normal;
|
||||
border: none;
|
||||
top: 23px;
|
||||
margin-right: 2px !important;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
transition: all .2s;
|
||||
-webkit-transition: all .2s;
|
||||
}
|
||||
|
||||
.pear-nav-tree.arrow .layui-nav-child .layui-nav-more {
|
||||
top: 17px;
|
||||
}
|
||||
|
||||
.pear-nav-tree.arrow .layui-nav-more:before {
|
||||
content: "\e61a";
|
||||
}
|
||||
|
||||
.pear-nav-tree.arrow .layui-nav-itemed > a > .layui-nav-more {
|
||||
transform: rotate(180deg);
|
||||
-ms-transform: rotate(180deg);
|
||||
-moz-transform: rotate(180deg);
|
||||
-webkit-transform: rotate(180deg);
|
||||
-o-transform: rotate(180deg);
|
||||
width: 12px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pear-nav-tree.arrow .layui-nav-child.layui-nav-hover > dd > a > .layui-nav-more {
|
||||
display: inline-block !important;
|
||||
transform: rotate(270deg);
|
||||
-ms-transform: rotate(270deg);
|
||||
-moz-transform: rotate(270deg);
|
||||
-webkit-transform: rotate(270deg);
|
||||
-o-transform: rotate(270deg);
|
||||
width: 12px;
|
||||
text-align: center;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
.pear-nav-tree.arrow .layui-nav-child.layui-nav-hover > a > .layui-nav-more:before,
|
||||
.pear-nav-tree.arrow .layui-nav-itemed > a > .layui-nav-more:before {
|
||||
content: '\e61a';
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
91
static/component/pear/css/module/menuSearch.css
Normal file
@@ -0,0 +1,91 @@
|
||||
/* 搜索面板 */
|
||||
.menu-search-content .layui-input {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.menu-search-content .layui-input:focus {
|
||||
border: 1px solid var(--global-primary-color) !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.menu-search-content {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.menu-search-input-wrapper {
|
||||
width: 100%;
|
||||
padding: 15px 15px;
|
||||
}
|
||||
|
||||
.menu-search-no-data {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
width: 100%;
|
||||
height: 122px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.menu-search-list {
|
||||
width: 100%;
|
||||
padding: 5px 15px;
|
||||
}
|
||||
|
||||
.menu-search-list li {
|
||||
position: relative;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
height: 50px;
|
||||
margin-bottom: 8px;
|
||||
padding: 0px 10px;
|
||||
color: currentColor;
|
||||
font-size: 14px;
|
||||
border-radius: 4px;
|
||||
box-shadow: 0 1px 3px #d4d9e1;
|
||||
cursor: pointer;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.menu-search-list li.this,
|
||||
.menu-search-list li:hover {
|
||||
background-color: var(--global-primary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.menu-search-tips {
|
||||
margin-bottom: 15px;
|
||||
padding: 0 15px;
|
||||
width: 100%
|
||||
}
|
||||
|
||||
.menu-search-tips > div {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.menu-search-tips .mr-1 {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.menu-search-tips .mr-5 {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.menu-search-tips .w-5 {
|
||||
width: 14px;
|
||||
}
|
||||
|
||||
.menu-search-tips kbd {
|
||||
line-height: 1.5;
|
||||
border: 1px solid #e5e7eb;
|
||||
font-size: 10px;
|
||||
text-align: center;
|
||||
padding: 2px 6px;
|
||||
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
|
||||
border-radius: 5px;
|
||||
}
|
||||
39
static/component/pear/css/module/messageCenter.css
Normal file
@@ -0,0 +1,39 @@
|
||||
.pear-message-center {
|
||||
width: 360px;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pear-message-center .layui-tab .layui-tab-title {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.pear-message-center .layui-tab .layui-tab-title .layui-this::after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-message-center .layui-tab .layui-tab-title li {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.pear-message-center .message-item img {
|
||||
margin-left: 8px;
|
||||
width: 33px !important;
|
||||
height: 33px !important;
|
||||
border-radius: 50px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.pear-message-center .message-item {
|
||||
height: 64px !important;
|
||||
line-height: 45px !important;
|
||||
padding-right: 20px;
|
||||
padding-left: 20px;
|
||||
border-bottom: 1px solid whitesmoke;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.pear-message-center .message-item .extra {
|
||||
float: right;
|
||||
right: 10px;
|
||||
}
|
||||
82
static/component/pear/css/module/nprogress.css
Normal file
@@ -0,0 +1,82 @@
|
||||
/* Make clicks pass-through */
|
||||
#nprogress {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
#nprogress .bar {
|
||||
background: var(--global-primary-color);
|
||||
|
||||
position: fixed;
|
||||
z-index: 999999;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
}
|
||||
|
||||
/* Fancy blur effect */
|
||||
#nprogress .peg {
|
||||
display: block;
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
width: 100px;
|
||||
height: 100%;
|
||||
box-shadow: 0 0 10px var(--global-primary-color), 0 0 5px var(--global-primary-color);
|
||||
opacity: 1.0;
|
||||
|
||||
-webkit-transform: rotate(3deg) translate(0px, -4px);
|
||||
-ms-transform: rotate(3deg) translate(0px, -4px);
|
||||
transform: rotate(3deg) translate(0px, -4px);
|
||||
}
|
||||
|
||||
/* Remove these to get rid of the spinner */
|
||||
#nprogress .spinner {
|
||||
display: block;
|
||||
position: fixed;
|
||||
z-index: 1031;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
}
|
||||
|
||||
#nprogress .spinner-icon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
box-sizing: border-box;
|
||||
|
||||
border: solid 2px transparent;
|
||||
border-top-color: var(--global-primary-color);
|
||||
border-left-color: var(--global-primary-color);
|
||||
border-radius: 50%;
|
||||
|
||||
-webkit-animation: nprogress-spinner 400ms linear infinite;
|
||||
animation: nprogress-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.nprogress-custom-parent #nprogress .spinner,
|
||||
.nprogress-custom-parent #nprogress .bar {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
@-webkit-keyframes nprogress-spinner {
|
||||
0% {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
-webkit-transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes nprogress-spinner {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
154
static/component/pear/css/module/page.css
Normal file
@@ -0,0 +1,154 @@
|
||||
.pear-page {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pear-page .dot {
|
||||
width: 5px;
|
||||
height: 24px;
|
||||
background-color: #5FB878;
|
||||
margin-top: 8px;
|
||||
margin-left: 15px;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pear-page .pear-page-title {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
background-color: white;
|
||||
border: whitesmoke 1px solid;
|
||||
}
|
||||
|
||||
.pear-page .pear-page-content,
|
||||
.pear-page .pear-page-content iframe {
|
||||
width: 100%;
|
||||
height: calc(100% - 0px) !important;
|
||||
}
|
||||
|
||||
.pear-page .pear-page-content iframe {
|
||||
height: calc(100% - 4px) !important;
|
||||
}
|
||||
|
||||
.pear-page-loading {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 100%;
|
||||
height: calc(100% - 0px) !important;
|
||||
background-color: #fff;
|
||||
top: 0px;
|
||||
z-index: 19;
|
||||
}
|
||||
|
||||
.pear-page-loading.close {
|
||||
animation: close 1s;
|
||||
-webkit-animation: close 1s;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.ball-loader {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
-webkit-transform: translate(-50%, -50%)
|
||||
}
|
||||
|
||||
.ball-loader > span,
|
||||
.signal-loader > span {
|
||||
background-color: #4aca85;
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(1),
|
||||
.ball-loader.sm > span:nth-child(1),
|
||||
.signal-loader > span:nth-child(1),
|
||||
.signal-loader.sm > span:nth-child(1) {
|
||||
-webkit-animation-delay: 0s;
|
||||
animation-delay: 0s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(2),
|
||||
.ball-loader.sm > span:nth-child(2),
|
||||
.signal-loader > span:nth-child(2),
|
||||
.signal-loader.sm > span:nth-child(2) {
|
||||
-webkit-animation-delay: .1s;
|
||||
animation-delay: .1s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(3),
|
||||
.ball-loader.sm > span:nth-child(3),
|
||||
.signal-loader > span:nth-child(3),
|
||||
.signal-loader.sm > span:nth-child(3) {
|
||||
-webkit-animation-delay: .15s;
|
||||
animation-delay: .15s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(4),
|
||||
.ball-loader.sm > span:nth-child(4),
|
||||
.signal-loader > span:nth-child(4),
|
||||
.signal-loader.sm > span:nth-child(4) {
|
||||
-webkit-animation-delay: .2s;
|
||||
animation-delay: .2s
|
||||
}
|
||||
|
||||
.ball-loader > span {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 0 3px;
|
||||
border-radius: 50%;
|
||||
transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
-webkit-transform: scale(0);
|
||||
animation: ball-load 1s ease-in-out infinite;
|
||||
-webkit-animation: 1s ball-load ease-in-out infinite
|
||||
}
|
||||
|
||||
@-webkit-keyframes ball-load {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1)
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ball-load {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1)
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes close {
|
||||
0% {
|
||||
opacity: 1;
|
||||
/*display: block;*/
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 0;
|
||||
/*display: none;*/
|
||||
}
|
||||
}
|
||||
315
static/component/pear/css/module/tabPage.css
Normal file
@@ -0,0 +1,315 @@
|
||||
.pear-tab-page {
|
||||
margin: 0px;
|
||||
overflow: hidden;
|
||||
height: 100% !important;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-content {
|
||||
height: calc(100% - 42px) !important;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-content .layui-tab-item {
|
||||
overflow-y: auto;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.pear-tab-page-menu {
|
||||
box-shadow: none;
|
||||
border-radius: 4px !important;
|
||||
overflow: hidden;
|
||||
box-shadow: 2px 0 6px rgba(0, 21, 41, .10);
|
||||
}
|
||||
|
||||
.pear-tab-page-menu .item {
|
||||
height: 20px;
|
||||
padding-left: 18px;
|
||||
padding-top: 7px;
|
||||
padding-bottom: 7px;
|
||||
color: #333;
|
||||
font-size: 13.5px;
|
||||
line-height: 20px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.pear-tab-page-menu .item:hover {
|
||||
background: var(--global-primary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-content {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title {
|
||||
border: none;
|
||||
border: 1px solid whitesmoke;
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title li {
|
||||
border-right: 1px solid whitesmoke;
|
||||
color: dimgray;
|
||||
font-size: 13.5px;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .layui-tab-bar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-nav-more {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .layui-this:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .pear-tab-page-active {
|
||||
display: inline-block;
|
||||
background-color: lightgray;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 30px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .layui-this .pear-tab-page-active {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .layui-tab-close:hover {
|
||||
background-color: white;
|
||||
line-height: 19px;
|
||||
color: gray;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .disable-close + .layui-tab-close {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page > .layui-tab-title .able-close + .layui-tab-close {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-close {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-control > li {
|
||||
position: absolute;
|
||||
top: 0px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
width: 40px;
|
||||
background-color: white;
|
||||
border-top: whitesmoke 1px solid;
|
||||
border-bottom: whitesmoke 1px solid;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-prev {
|
||||
left: 0px;
|
||||
border-right: whitesmoke 1px solid;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-next {
|
||||
right: 40px;
|
||||
border-left: 1px solid whitesmoke;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool {
|
||||
right: 0px;
|
||||
border-left: 1px solid whitesmoke;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-control .layui-tab-tool,
|
||||
.pear-tab-page .layui-tab-control .layui-tab-prev,
|
||||
.pear-tab-page .layui-tab-control .layui-tab-next {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-prev,
|
||||
.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-next {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-roll .layui-tab-control .layui-tab-next {
|
||||
right: 0px;
|
||||
border-right: 1px solid whitesmoke;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-roll .layui-tab-title {
|
||||
padding-left: 40px;
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-tool .layui-tab-control .layui-tab-tool {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-tool .layui-tab-title {
|
||||
padding-left: 0px;
|
||||
padding-right: 40px;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-rollTool > .layui-tab-title {
|
||||
padding-left: 40px;
|
||||
padding-right: 80px;
|
||||
}
|
||||
|
||||
.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-prev,
|
||||
.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-next,
|
||||
.pear-tab-page.layui-tab-rollTool .layui-tab-control .layui-tab-tool {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool .layui-nav {
|
||||
position: absolute;
|
||||
height: 43px !important;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
background: 0 0;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool .layui-nav-item {
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool .layui-nav-bar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool .layui-nav-child {
|
||||
left: auto;
|
||||
top: 45px;
|
||||
right: 3px;
|
||||
width: 120px;
|
||||
border: 1px solid whitesmoke;
|
||||
}
|
||||
|
||||
.pear-tab-page .layui-tab-tool .layui-this a {
|
||||
background-color: #009688;
|
||||
}
|
||||
|
||||
.pear-tab-page-loading {
|
||||
position: absolute;
|
||||
display: none;
|
||||
width: 100%;
|
||||
height: calc(100% - 42px);
|
||||
top: 42px;
|
||||
z-index: 19;
|
||||
background-color: #fff
|
||||
}
|
||||
|
||||
.pear-tab-page-loading.close {
|
||||
animation: close 1s;
|
||||
-webkit-animation: close 1s;
|
||||
animation-fill-mode: forwards;
|
||||
}
|
||||
|
||||
.ball-loader {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
-ms-transform: translate(-50%, -50%);
|
||||
-webkit-transform: translate(-50%, -50%)
|
||||
}
|
||||
|
||||
.ball-loader > span,
|
||||
.signal-loader > span {
|
||||
background-color: var(--global-primary-color) !important;
|
||||
display: inline-block
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(1),
|
||||
.ball-loader.sm > span:nth-child(1),
|
||||
.signal-loader > span:nth-child(1),
|
||||
.signal-loader.sm > span:nth-child(1) {
|
||||
-webkit-animation-delay: 0s;
|
||||
animation-delay: 0s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(2),
|
||||
.ball-loader.sm > span:nth-child(2),
|
||||
.signal-loader > span:nth-child(2),
|
||||
.signal-loader.sm > span:nth-child(2) {
|
||||
-webkit-animation-delay: .1s;
|
||||
animation-delay: .1s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(3),
|
||||
.ball-loader.sm > span:nth-child(3),
|
||||
.signal-loader > span:nth-child(3),
|
||||
.signal-loader.sm > span:nth-child(3) {
|
||||
-webkit-animation-delay: .15s;
|
||||
animation-delay: .15s
|
||||
}
|
||||
|
||||
.ball-loader > span:nth-child(4),
|
||||
.ball-loader.sm > span:nth-child(4),
|
||||
.signal-loader > span:nth-child(4),
|
||||
.signal-loader.sm > span:nth-child(4) {
|
||||
-webkit-animation-delay: .2s;
|
||||
animation-delay: .2s
|
||||
}
|
||||
|
||||
.ball-loader > span {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin: 0 3px;
|
||||
border-radius: 50%;
|
||||
transform: scale(0);
|
||||
-ms-transform: scale(0);
|
||||
-webkit-transform: scale(0);
|
||||
animation: ball-load 1s ease-in-out infinite;
|
||||
-webkit-animation: 1s ball-load ease-in-out infinite
|
||||
}
|
||||
|
||||
@-webkit-keyframes ball-load {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1)
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes ball-load {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: scale(1);
|
||||
-webkit-transform: scale(1)
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(0);
|
||||
-webkit-transform: scale(0)
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes close {
|
||||
0% {
|
||||
opacity: 1;
|
||||
/*display: block;*/
|
||||
}
|
||||
|
||||
100% {
|
||||
opacity: 0;
|
||||
/*display: none;*/
|
||||
}
|
||||
}
|
||||
1929
static/component/pear/css/module/toast.css
Normal file
10
static/component/pear/css/pear.css
Normal file
@@ -0,0 +1,10 @@
|
||||
@import url("../../layui/css/layui.css");
|
||||
@import url("../font/iconfont.css");
|
||||
@import url("module/nprogress.css");
|
||||
@import url("module/messageCenter.css");
|
||||
@import url("module/global.css");
|
||||
@import url("module/menu.css");
|
||||
@import url("module/menuSearch.css");
|
||||
@import url("module/page.css");
|
||||
@import url("module/tabPage.css");
|
||||
@import url("module/toast.css");
|
||||
579
static/component/pear/font/iconfont.css
Normal file
@@ -0,0 +1,579 @@
|
||||
@font-face {
|
||||
font-family: "pear-icon"; /* Project id 2654996 */
|
||||
src: url('iconfont.woff2?t=1625555217253') format('woff2'),
|
||||
url('iconfont.woff?t=1625555217253') format('woff'),
|
||||
url('iconfont.ttf?t=1625555217253') format('truetype');
|
||||
}
|
||||
|
||||
.pear-icon {
|
||||
font-family: "pear-icon" !important;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.pear-icon-load:before {
|
||||
content: "\e6f0";
|
||||
}
|
||||
|
||||
.pear-icon-download:before {
|
||||
content: "\e68d";
|
||||
}
|
||||
|
||||
.pear-icon-electronics:before {
|
||||
content: "\e68e";
|
||||
}
|
||||
|
||||
.pear-icon-drag:before {
|
||||
content: "\e68f";
|
||||
}
|
||||
|
||||
.pear-icon-elipsis:before {
|
||||
content: "\e690";
|
||||
}
|
||||
|
||||
.pear-icon-export:before {
|
||||
content: "\e691";
|
||||
}
|
||||
|
||||
.pear-icon-explain:before {
|
||||
content: "\e692";
|
||||
}
|
||||
|
||||
.pear-icon-edit:before {
|
||||
content: "\e693";
|
||||
}
|
||||
|
||||
.pear-icon-eye-close:before {
|
||||
content: "\e694";
|
||||
}
|
||||
|
||||
.pear-icon-email:before {
|
||||
content: "\e695";
|
||||
}
|
||||
|
||||
.pear-icon-error:before {
|
||||
content: "\e696";
|
||||
}
|
||||
|
||||
.pear-icon-favorite:before {
|
||||
content: "\e697";
|
||||
}
|
||||
|
||||
.pear-icon-file-common:before {
|
||||
content: "\e698";
|
||||
}
|
||||
|
||||
.pear-icon-file-delete:before {
|
||||
content: "\e699";
|
||||
}
|
||||
|
||||
.pear-icon-file-add:before {
|
||||
content: "\e69a";
|
||||
}
|
||||
|
||||
.pear-icon-film:before {
|
||||
content: "\e69b";
|
||||
}
|
||||
|
||||
.pear-icon-fabulous:before {
|
||||
content: "\e69c";
|
||||
}
|
||||
|
||||
.pear-icon-file:before {
|
||||
content: "\e69d";
|
||||
}
|
||||
|
||||
.pear-icon-folder-close:before {
|
||||
content: "\e69e";
|
||||
}
|
||||
|
||||
.pear-icon-filter:before {
|
||||
content: "\e69f";
|
||||
}
|
||||
|
||||
.pear-icon-good:before {
|
||||
content: "\e6a0";
|
||||
}
|
||||
|
||||
.pear-icon-hide:before {
|
||||
content: "\e6a1";
|
||||
}
|
||||
|
||||
.pear-icon-home:before {
|
||||
content: "\e6a2";
|
||||
}
|
||||
|
||||
.pear-icon-history:before {
|
||||
content: "\e6a3";
|
||||
}
|
||||
|
||||
.pear-icon-file-open:before {
|
||||
content: "\e6a4";
|
||||
}
|
||||
|
||||
.pear-icon-forward:before {
|
||||
content: "\e6a5";
|
||||
}
|
||||
|
||||
.pear-icon-import:before {
|
||||
content: "\e6a6";
|
||||
}
|
||||
|
||||
.pear-icon-image-text:before {
|
||||
content: "\e6a7";
|
||||
}
|
||||
|
||||
.pear-icon-keyboard-26:before {
|
||||
content: "\e6a8";
|
||||
}
|
||||
|
||||
.pear-icon-keyboard-9:before {
|
||||
content: "\e6a9";
|
||||
}
|
||||
|
||||
.pear-icon-link:before {
|
||||
content: "\e6aa";
|
||||
}
|
||||
|
||||
.pear-icon-layout:before {
|
||||
content: "\e6ab";
|
||||
}
|
||||
|
||||
.pear-icon-fullscreen-shrink:before {
|
||||
content: "\e6ac";
|
||||
}
|
||||
|
||||
.pear-icon-layers:before {
|
||||
content: "\e6ad";
|
||||
}
|
||||
|
||||
.pear-icon-lock:before {
|
||||
content: "\e6ae";
|
||||
}
|
||||
|
||||
.pear-icon-fullscreen-expand:before {
|
||||
content: "\e6af";
|
||||
}
|
||||
|
||||
.pear-icon-map:before {
|
||||
content: "\e6b0";
|
||||
}
|
||||
|
||||
.pear-icon-meh:before {
|
||||
content: "\e6b1";
|
||||
}
|
||||
|
||||
.pear-icon-menu:before {
|
||||
content: "\e6b2";
|
||||
}
|
||||
|
||||
.pear-icon-loading:before {
|
||||
content: "\e6b3";
|
||||
}
|
||||
|
||||
.pear-icon-help:before {
|
||||
content: "\e6b4";
|
||||
}
|
||||
|
||||
.pear-icon-minus-circle:before {
|
||||
content: "\e6b5";
|
||||
}
|
||||
|
||||
.pear-icon-modular:before {
|
||||
content: "\e6b6";
|
||||
}
|
||||
|
||||
.pear-icon-notification:before {
|
||||
content: "\e6b7";
|
||||
}
|
||||
|
||||
.pear-icon-mic:before {
|
||||
content: "\e6b8";
|
||||
}
|
||||
|
||||
.pear-icon-more:before {
|
||||
content: "\e6b9";
|
||||
}
|
||||
|
||||
.pear-icon-pad:before {
|
||||
content: "\e6ba";
|
||||
}
|
||||
|
||||
.pear-icon-operation:before {
|
||||
content: "\e6bb";
|
||||
}
|
||||
|
||||
.pear-icon-play:before {
|
||||
content: "\e6bc";
|
||||
}
|
||||
|
||||
.pear-icon-print:before {
|
||||
content: "\e6bd";
|
||||
}
|
||||
|
||||
.pear-icon-mobile-phone:before {
|
||||
content: "\e6be";
|
||||
}
|
||||
|
||||
.pear-icon-minus:before {
|
||||
content: "\e6bf";
|
||||
}
|
||||
|
||||
.pear-icon-navigation:before {
|
||||
content: "\e6c0";
|
||||
}
|
||||
|
||||
.pear-icon-pdf:before {
|
||||
content: "\e6c1";
|
||||
}
|
||||
|
||||
.pear-icon-prompt:before {
|
||||
content: "\e6c2";
|
||||
}
|
||||
|
||||
.pear-icon-move:before {
|
||||
content: "\e6c3";
|
||||
}
|
||||
|
||||
.pear-icon-refresh:before {
|
||||
content: "\e6c4";
|
||||
}
|
||||
|
||||
.pear-icon-run-up:before {
|
||||
content: "\e6c5";
|
||||
}
|
||||
|
||||
.pear-icon-picture:before {
|
||||
content: "\e6c6";
|
||||
}
|
||||
|
||||
.pear-icon-run-in:before {
|
||||
content: "\e6c7";
|
||||
}
|
||||
|
||||
.pear-icon-pin:before {
|
||||
content: "\e6c8";
|
||||
}
|
||||
|
||||
.pear-icon-save:before {
|
||||
content: "\e6c9";
|
||||
}
|
||||
|
||||
.pear-icon-search:before {
|
||||
content: "\e6ca";
|
||||
}
|
||||
|
||||
.pear-icon-share:before {
|
||||
content: "\e6cb";
|
||||
}
|
||||
|
||||
.pear-icon-scanning:before {
|
||||
content: "\e6cc";
|
||||
}
|
||||
|
||||
.pear-icon-security:before {
|
||||
content: "\e6cd";
|
||||
}
|
||||
|
||||
.pear-icon-sign-out:before {
|
||||
content: "\e6ce";
|
||||
}
|
||||
|
||||
.pear-icon-select:before {
|
||||
content: "\e6cf";
|
||||
}
|
||||
|
||||
.pear-icon-stop:before {
|
||||
content: "\e6d0";
|
||||
}
|
||||
|
||||
.pear-icon-success:before {
|
||||
content: "\e6d1";
|
||||
}
|
||||
|
||||
.pear-icon-smile:before {
|
||||
content: "\e6d2";
|
||||
}
|
||||
|
||||
.pear-icon-switch:before {
|
||||
content: "\e6d3";
|
||||
}
|
||||
|
||||
.pear-icon-setting:before {
|
||||
content: "\e6d4";
|
||||
}
|
||||
|
||||
.pear-icon-survey:before {
|
||||
content: "\e6d5";
|
||||
}
|
||||
|
||||
.pear-icon-task:before {
|
||||
content: "\e6d6";
|
||||
}
|
||||
|
||||
.pear-icon-skip:before {
|
||||
content: "\e6d7";
|
||||
}
|
||||
|
||||
.pear-icon-text:before {
|
||||
content: "\e6d8";
|
||||
}
|
||||
|
||||
.pear-icon-time:before {
|
||||
content: "\e6d9";
|
||||
}
|
||||
|
||||
.pear-icon-telephone-out:before {
|
||||
content: "\e6da";
|
||||
}
|
||||
|
||||
.pear-icon-toggle-left:before {
|
||||
content: "\e6db";
|
||||
}
|
||||
|
||||
.pear-icon-toggle-right:before {
|
||||
content: "\e6dc";
|
||||
}
|
||||
|
||||
.pear-icon-telephone:before {
|
||||
content: "\e6dd";
|
||||
}
|
||||
|
||||
.pear-icon-top:before {
|
||||
content: "\e6de";
|
||||
}
|
||||
|
||||
.pear-icon-unlock:before {
|
||||
content: "\e6df";
|
||||
}
|
||||
|
||||
.pear-icon-user:before {
|
||||
content: "\e6e0";
|
||||
}
|
||||
|
||||
.pear-icon-upload:before {
|
||||
content: "\e6e1";
|
||||
}
|
||||
|
||||
.pear-icon-work:before {
|
||||
content: "\e6e2";
|
||||
}
|
||||
|
||||
.pear-icon-training:before {
|
||||
content: "\e6e3";
|
||||
}
|
||||
|
||||
.pear-icon-warning:before {
|
||||
content: "\e6e4";
|
||||
}
|
||||
|
||||
.pear-icon-zoom-in:before {
|
||||
content: "\e6e5";
|
||||
}
|
||||
|
||||
.pear-icon-zoom-out:before {
|
||||
content: "\e6e6";
|
||||
}
|
||||
|
||||
.pear-icon-add-bold:before {
|
||||
content: "\e6e7";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-left-bold:before {
|
||||
content: "\e6e8";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-up-bold:before {
|
||||
content: "\e6e9";
|
||||
}
|
||||
|
||||
.pear-icon-close-bold:before {
|
||||
content: "\e6ea";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-down-bold:before {
|
||||
content: "\e6eb";
|
||||
}
|
||||
|
||||
.pear-icon-minus-bold:before {
|
||||
content: "\e6ec";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-right-bold:before {
|
||||
content: "\e6ed";
|
||||
}
|
||||
|
||||
.pear-icon-select-bold:before {
|
||||
content: "\e6ee";
|
||||
}
|
||||
|
||||
.pear-icon-3column:before {
|
||||
content: "\e663";
|
||||
}
|
||||
|
||||
.pear-icon-column-4:before {
|
||||
content: "\e664";
|
||||
}
|
||||
|
||||
.pear-icon-add:before {
|
||||
content: "\e665";
|
||||
}
|
||||
|
||||
.pear-icon-add-circle:before {
|
||||
content: "\e666";
|
||||
}
|
||||
|
||||
.pear-icon-adjust:before {
|
||||
content: "\e667";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-up-circle:before {
|
||||
content: "\e668";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-right-circle:before {
|
||||
content: "\e669";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-down:before {
|
||||
content: "\e66a";
|
||||
}
|
||||
|
||||
.pear-icon-ashbin:before {
|
||||
content: "\e66b";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-right:before {
|
||||
content: "\e66c";
|
||||
}
|
||||
|
||||
.pear-icon-browse:before {
|
||||
content: "\e66d";
|
||||
}
|
||||
|
||||
.pear-icon-bottom:before {
|
||||
content: "\e66e";
|
||||
}
|
||||
|
||||
.pear-icon-back:before {
|
||||
content: "\e66f";
|
||||
}
|
||||
|
||||
.pear-icon-bad:before {
|
||||
content: "\e670";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-double-left:before {
|
||||
content: "\e671";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-left-circle:before {
|
||||
content: "\e672";
|
||||
}
|
||||
|
||||
.pear-icon-arrow-double-right:before {
|
||||
content: "\e673";
|
||||
}
|
||||
|
||||
.pear-icon-caps-lock:before {
|
||||
content: "\e674";
|
||||
}
|
||||
|
||||
.pear-icon-camera:before {
|
||||
content: "\e675";
|
||||
}
|
||||
|
||||
.pear-icon-chart-bar:before {
|
||||
content: "\e676";
|
||||
}
|
||||
|
||||
.pear-icon-attachment:before {
|
||||
content: "\e677";
|
||||
}
|
||||
|
||||
.pear-icon-code:before {
|
||||
content: "\e678";
|
||||
}
|
||||
|
||||
.pear-icon-close:before {
|
||||
content: "\e679";
|
||||
}
|
||||
|
||||
.pear-icon-check-item:before {
|
||||
content: "\e67a";
|
||||
}
|
||||
|
||||
.pear-icon-calendar:before {
|
||||
content: "\e67b";
|
||||
}
|
||||
|
||||
.pear-icon-comment:before {
|
||||
content: "\e67c";
|
||||
}
|
||||
|
||||
.pear-icon-column-vertical:before {
|
||||
content: "\e67d";
|
||||
}
|
||||
|
||||
.pear-icon-column-horizontal:before {
|
||||
content: "\e67e";
|
||||
}
|
||||
|
||||
.pear-icon-complete:before {
|
||||
content: "\e67f";
|
||||
}
|
||||
|
||||
.pear-icon-chart-pie:before {
|
||||
content: "\e680";
|
||||
}
|
||||
|
||||
.pear-icon-cry:before {
|
||||
content: "\e681";
|
||||
}
|
||||
|
||||
.pear-icon-customer-service:before {
|
||||
content: "\e682";
|
||||
}
|
||||
|
||||
.pear-icon-delete:before {
|
||||
content: "\e683";
|
||||
}
|
||||
|
||||
.pear-icon-direction-down:before {
|
||||
content: "\e684";
|
||||
}
|
||||
|
||||
.pear-icon-copy:before {
|
||||
content: "\e685";
|
||||
}
|
||||
|
||||
.pear-icon-cut:before {
|
||||
content: "\e686";
|
||||
}
|
||||
|
||||
.pear-icon-data-view:before {
|
||||
content: "\e687";
|
||||
}
|
||||
|
||||
.pear-icon-direction-down-circle:before {
|
||||
content: "\e688";
|
||||
}
|
||||
|
||||
.pear-icon-direction-right:before {
|
||||
content: "\e689";
|
||||
}
|
||||
|
||||
.pear-icon-direction-up:before {
|
||||
content: "\e68a";
|
||||
}
|
||||
|
||||
.pear-icon-discount:before {
|
||||
content: "\e68b";
|
||||
}
|
||||
|
||||
.pear-icon-direction-left:before {
|
||||
content: "\e68c";
|
||||
}
|
||||
|
||||
1
static/component/pear/font/iconfont.js
Normal file
996
static/component/pear/font/iconfont.json
Normal file
@@ -0,0 +1,996 @@
|
||||
{
|
||||
"id": "2654996",
|
||||
"name": "pear-admin-layui",
|
||||
"font_family": "pear-icon",
|
||||
"css_prefix_text": "pear-icon-",
|
||||
"description": "",
|
||||
"glyphs": [
|
||||
{
|
||||
"icon_id": "22697089",
|
||||
"name": "加载",
|
||||
"font_class": "load",
|
||||
"unicode": "e6f0",
|
||||
"unicode_decimal": 59120
|
||||
},
|
||||
{
|
||||
"icon_id": "15838464",
|
||||
"name": "download",
|
||||
"font_class": "download",
|
||||
"unicode": "e68d",
|
||||
"unicode_decimal": 59021
|
||||
},
|
||||
{
|
||||
"icon_id": "15838465",
|
||||
"name": "electronics",
|
||||
"font_class": "electronics",
|
||||
"unicode": "e68e",
|
||||
"unicode_decimal": 59022
|
||||
},
|
||||
{
|
||||
"icon_id": "15838466",
|
||||
"name": "drag",
|
||||
"font_class": "drag",
|
||||
"unicode": "e68f",
|
||||
"unicode_decimal": 59023
|
||||
},
|
||||
{
|
||||
"icon_id": "15838467",
|
||||
"name": "elipsis",
|
||||
"font_class": "elipsis",
|
||||
"unicode": "e690",
|
||||
"unicode_decimal": 59024
|
||||
},
|
||||
{
|
||||
"icon_id": "15838468",
|
||||
"name": "export",
|
||||
"font_class": "export",
|
||||
"unicode": "e691",
|
||||
"unicode_decimal": 59025
|
||||
},
|
||||
{
|
||||
"icon_id": "15838469",
|
||||
"name": "explain",
|
||||
"font_class": "explain",
|
||||
"unicode": "e692",
|
||||
"unicode_decimal": 59026
|
||||
},
|
||||
{
|
||||
"icon_id": "15838470",
|
||||
"name": "edit",
|
||||
"font_class": "edit",
|
||||
"unicode": "e693",
|
||||
"unicode_decimal": 59027
|
||||
},
|
||||
{
|
||||
"icon_id": "15838471",
|
||||
"name": "eye-close",
|
||||
"font_class": "eye-close",
|
||||
"unicode": "e694",
|
||||
"unicode_decimal": 59028
|
||||
},
|
||||
{
|
||||
"icon_id": "15838472",
|
||||
"name": "email",
|
||||
"font_class": "email",
|
||||
"unicode": "e695",
|
||||
"unicode_decimal": 59029
|
||||
},
|
||||
{
|
||||
"icon_id": "15838473",
|
||||
"name": "error",
|
||||
"font_class": "error",
|
||||
"unicode": "e696",
|
||||
"unicode_decimal": 59030
|
||||
},
|
||||
{
|
||||
"icon_id": "15838474",
|
||||
"name": "favorite",
|
||||
"font_class": "favorite",
|
||||
"unicode": "e697",
|
||||
"unicode_decimal": 59031
|
||||
},
|
||||
{
|
||||
"icon_id": "15838475",
|
||||
"name": "file-common",
|
||||
"font_class": "file-common",
|
||||
"unicode": "e698",
|
||||
"unicode_decimal": 59032
|
||||
},
|
||||
{
|
||||
"icon_id": "15838476",
|
||||
"name": "file-delete",
|
||||
"font_class": "file-delete",
|
||||
"unicode": "e699",
|
||||
"unicode_decimal": 59033
|
||||
},
|
||||
{
|
||||
"icon_id": "15838477",
|
||||
"name": "file-add",
|
||||
"font_class": "file-add",
|
||||
"unicode": "e69a",
|
||||
"unicode_decimal": 59034
|
||||
},
|
||||
{
|
||||
"icon_id": "15838478",
|
||||
"name": "film",
|
||||
"font_class": "film",
|
||||
"unicode": "e69b",
|
||||
"unicode_decimal": 59035
|
||||
},
|
||||
{
|
||||
"icon_id": "15838479",
|
||||
"name": "fabulous",
|
||||
"font_class": "fabulous",
|
||||
"unicode": "e69c",
|
||||
"unicode_decimal": 59036
|
||||
},
|
||||
{
|
||||
"icon_id": "15838480",
|
||||
"name": "file",
|
||||
"font_class": "file",
|
||||
"unicode": "e69d",
|
||||
"unicode_decimal": 59037
|
||||
},
|
||||
{
|
||||
"icon_id": "15838481",
|
||||
"name": "folder-close",
|
||||
"font_class": "folder-close",
|
||||
"unicode": "e69e",
|
||||
"unicode_decimal": 59038
|
||||
},
|
||||
{
|
||||
"icon_id": "15838482",
|
||||
"name": "filter",
|
||||
"font_class": "filter",
|
||||
"unicode": "e69f",
|
||||
"unicode_decimal": 59039
|
||||
},
|
||||
{
|
||||
"icon_id": "15838483",
|
||||
"name": "good",
|
||||
"font_class": "good",
|
||||
"unicode": "e6a0",
|
||||
"unicode_decimal": 59040
|
||||
},
|
||||
{
|
||||
"icon_id": "15838484",
|
||||
"name": "hide",
|
||||
"font_class": "hide",
|
||||
"unicode": "e6a1",
|
||||
"unicode_decimal": 59041
|
||||
},
|
||||
{
|
||||
"icon_id": "15838485",
|
||||
"name": "home",
|
||||
"font_class": "home",
|
||||
"unicode": "e6a2",
|
||||
"unicode_decimal": 59042
|
||||
},
|
||||
{
|
||||
"icon_id": "15838486",
|
||||
"name": "history",
|
||||
"font_class": "history",
|
||||
"unicode": "e6a3",
|
||||
"unicode_decimal": 59043
|
||||
},
|
||||
{
|
||||
"icon_id": "15838487",
|
||||
"name": "file-open",
|
||||
"font_class": "file-open",
|
||||
"unicode": "e6a4",
|
||||
"unicode_decimal": 59044
|
||||
},
|
||||
{
|
||||
"icon_id": "15838488",
|
||||
"name": "forward",
|
||||
"font_class": "forward",
|
||||
"unicode": "e6a5",
|
||||
"unicode_decimal": 59045
|
||||
},
|
||||
{
|
||||
"icon_id": "15838489",
|
||||
"name": "import",
|
||||
"font_class": "import",
|
||||
"unicode": "e6a6",
|
||||
"unicode_decimal": 59046
|
||||
},
|
||||
{
|
||||
"icon_id": "15838490",
|
||||
"name": "image-text",
|
||||
"font_class": "image-text",
|
||||
"unicode": "e6a7",
|
||||
"unicode_decimal": 59047
|
||||
},
|
||||
{
|
||||
"icon_id": "15838491",
|
||||
"name": "keyboard-26",
|
||||
"font_class": "keyboard-26",
|
||||
"unicode": "e6a8",
|
||||
"unicode_decimal": 59048
|
||||
},
|
||||
{
|
||||
"icon_id": "15838492",
|
||||
"name": "keyboard-9",
|
||||
"font_class": "keyboard-9",
|
||||
"unicode": "e6a9",
|
||||
"unicode_decimal": 59049
|
||||
},
|
||||
{
|
||||
"icon_id": "15838493",
|
||||
"name": "link",
|
||||
"font_class": "link",
|
||||
"unicode": "e6aa",
|
||||
"unicode_decimal": 59050
|
||||
},
|
||||
{
|
||||
"icon_id": "15838494",
|
||||
"name": "layout",
|
||||
"font_class": "layout",
|
||||
"unicode": "e6ab",
|
||||
"unicode_decimal": 59051
|
||||
},
|
||||
{
|
||||
"icon_id": "15838495",
|
||||
"name": "fullscreen-shrink",
|
||||
"font_class": "fullscreen-shrink",
|
||||
"unicode": "e6ac",
|
||||
"unicode_decimal": 59052
|
||||
},
|
||||
{
|
||||
"icon_id": "15838496",
|
||||
"name": "layers",
|
||||
"font_class": "layers",
|
||||
"unicode": "e6ad",
|
||||
"unicode_decimal": 59053
|
||||
},
|
||||
{
|
||||
"icon_id": "15838497",
|
||||
"name": "lock",
|
||||
"font_class": "lock",
|
||||
"unicode": "e6ae",
|
||||
"unicode_decimal": 59054
|
||||
},
|
||||
{
|
||||
"icon_id": "15838498",
|
||||
"name": "fullscreen-expand",
|
||||
"font_class": "fullscreen-expand",
|
||||
"unicode": "e6af",
|
||||
"unicode_decimal": 59055
|
||||
},
|
||||
{
|
||||
"icon_id": "15838499",
|
||||
"name": "map",
|
||||
"font_class": "map",
|
||||
"unicode": "e6b0",
|
||||
"unicode_decimal": 59056
|
||||
},
|
||||
{
|
||||
"icon_id": "15838500",
|
||||
"name": "meh",
|
||||
"font_class": "meh",
|
||||
"unicode": "e6b1",
|
||||
"unicode_decimal": 59057
|
||||
},
|
||||
{
|
||||
"icon_id": "15838501",
|
||||
"name": "menu",
|
||||
"font_class": "menu",
|
||||
"unicode": "e6b2",
|
||||
"unicode_decimal": 59058
|
||||
},
|
||||
{
|
||||
"icon_id": "15838502",
|
||||
"name": "loading",
|
||||
"font_class": "loading",
|
||||
"unicode": "e6b3",
|
||||
"unicode_decimal": 59059
|
||||
},
|
||||
{
|
||||
"icon_id": "15838503",
|
||||
"name": "help",
|
||||
"font_class": "help",
|
||||
"unicode": "e6b4",
|
||||
"unicode_decimal": 59060
|
||||
},
|
||||
{
|
||||
"icon_id": "15838504",
|
||||
"name": "minus-circle",
|
||||
"font_class": "minus-circle",
|
||||
"unicode": "e6b5",
|
||||
"unicode_decimal": 59061
|
||||
},
|
||||
{
|
||||
"icon_id": "15838505",
|
||||
"name": "modular",
|
||||
"font_class": "modular",
|
||||
"unicode": "e6b6",
|
||||
"unicode_decimal": 59062
|
||||
},
|
||||
{
|
||||
"icon_id": "15838506",
|
||||
"name": "notification",
|
||||
"font_class": "notification",
|
||||
"unicode": "e6b7",
|
||||
"unicode_decimal": 59063
|
||||
},
|
||||
{
|
||||
"icon_id": "15838507",
|
||||
"name": "mic",
|
||||
"font_class": "mic",
|
||||
"unicode": "e6b8",
|
||||
"unicode_decimal": 59064
|
||||
},
|
||||
{
|
||||
"icon_id": "15838508",
|
||||
"name": "more",
|
||||
"font_class": "more",
|
||||
"unicode": "e6b9",
|
||||
"unicode_decimal": 59065
|
||||
},
|
||||
{
|
||||
"icon_id": "15838509",
|
||||
"name": "pad",
|
||||
"font_class": "pad",
|
||||
"unicode": "e6ba",
|
||||
"unicode_decimal": 59066
|
||||
},
|
||||
{
|
||||
"icon_id": "15838510",
|
||||
"name": "operation",
|
||||
"font_class": "operation",
|
||||
"unicode": "e6bb",
|
||||
"unicode_decimal": 59067
|
||||
},
|
||||
{
|
||||
"icon_id": "15838511",
|
||||
"name": "play",
|
||||
"font_class": "play",
|
||||
"unicode": "e6bc",
|
||||
"unicode_decimal": 59068
|
||||
},
|
||||
{
|
||||
"icon_id": "15838512",
|
||||
"name": "print",
|
||||
"font_class": "print",
|
||||
"unicode": "e6bd",
|
||||
"unicode_decimal": 59069
|
||||
},
|
||||
{
|
||||
"icon_id": "15838513",
|
||||
"name": "mobile-phone",
|
||||
"font_class": "mobile-phone",
|
||||
"unicode": "e6be",
|
||||
"unicode_decimal": 59070
|
||||
},
|
||||
{
|
||||
"icon_id": "15838514",
|
||||
"name": "minus",
|
||||
"font_class": "minus",
|
||||
"unicode": "e6bf",
|
||||
"unicode_decimal": 59071
|
||||
},
|
||||
{
|
||||
"icon_id": "15838515",
|
||||
"name": "navigation",
|
||||
"font_class": "navigation",
|
||||
"unicode": "e6c0",
|
||||
"unicode_decimal": 59072
|
||||
},
|
||||
{
|
||||
"icon_id": "15838516",
|
||||
"name": "pdf",
|
||||
"font_class": "pdf",
|
||||
"unicode": "e6c1",
|
||||
"unicode_decimal": 59073
|
||||
},
|
||||
{
|
||||
"icon_id": "15838517",
|
||||
"name": "prompt",
|
||||
"font_class": "prompt",
|
||||
"unicode": "e6c2",
|
||||
"unicode_decimal": 59074
|
||||
},
|
||||
{
|
||||
"icon_id": "15838518",
|
||||
"name": "move",
|
||||
"font_class": "move",
|
||||
"unicode": "e6c3",
|
||||
"unicode_decimal": 59075
|
||||
},
|
||||
{
|
||||
"icon_id": "15838519",
|
||||
"name": "refresh",
|
||||
"font_class": "refresh",
|
||||
"unicode": "e6c4",
|
||||
"unicode_decimal": 59076
|
||||
},
|
||||
{
|
||||
"icon_id": "15838520",
|
||||
"name": "run-up",
|
||||
"font_class": "run-up",
|
||||
"unicode": "e6c5",
|
||||
"unicode_decimal": 59077
|
||||
},
|
||||
{
|
||||
"icon_id": "15838521",
|
||||
"name": "picture",
|
||||
"font_class": "picture",
|
||||
"unicode": "e6c6",
|
||||
"unicode_decimal": 59078
|
||||
},
|
||||
{
|
||||
"icon_id": "15838522",
|
||||
"name": "run-in",
|
||||
"font_class": "run-in",
|
||||
"unicode": "e6c7",
|
||||
"unicode_decimal": 59079
|
||||
},
|
||||
{
|
||||
"icon_id": "15838523",
|
||||
"name": "pin",
|
||||
"font_class": "pin",
|
||||
"unicode": "e6c8",
|
||||
"unicode_decimal": 59080
|
||||
},
|
||||
{
|
||||
"icon_id": "15838524",
|
||||
"name": "save",
|
||||
"font_class": "save",
|
||||
"unicode": "e6c9",
|
||||
"unicode_decimal": 59081
|
||||
},
|
||||
{
|
||||
"icon_id": "15838525",
|
||||
"name": "search",
|
||||
"font_class": "search",
|
||||
"unicode": "e6ca",
|
||||
"unicode_decimal": 59082
|
||||
},
|
||||
{
|
||||
"icon_id": "15838526",
|
||||
"name": "share",
|
||||
"font_class": "share",
|
||||
"unicode": "e6cb",
|
||||
"unicode_decimal": 59083
|
||||
},
|
||||
{
|
||||
"icon_id": "15838527",
|
||||
"name": "scanning",
|
||||
"font_class": "scanning",
|
||||
"unicode": "e6cc",
|
||||
"unicode_decimal": 59084
|
||||
},
|
||||
{
|
||||
"icon_id": "15838528",
|
||||
"name": "security",
|
||||
"font_class": "security",
|
||||
"unicode": "e6cd",
|
||||
"unicode_decimal": 59085
|
||||
},
|
||||
{
|
||||
"icon_id": "15838529",
|
||||
"name": "sign-out",
|
||||
"font_class": "sign-out",
|
||||
"unicode": "e6ce",
|
||||
"unicode_decimal": 59086
|
||||
},
|
||||
{
|
||||
"icon_id": "15838530",
|
||||
"name": "select",
|
||||
"font_class": "select",
|
||||
"unicode": "e6cf",
|
||||
"unicode_decimal": 59087
|
||||
},
|
||||
{
|
||||
"icon_id": "15838531",
|
||||
"name": "stop",
|
||||
"font_class": "stop",
|
||||
"unicode": "e6d0",
|
||||
"unicode_decimal": 59088
|
||||
},
|
||||
{
|
||||
"icon_id": "15838532",
|
||||
"name": "success",
|
||||
"font_class": "success",
|
||||
"unicode": "e6d1",
|
||||
"unicode_decimal": 59089
|
||||
},
|
||||
{
|
||||
"icon_id": "15838533",
|
||||
"name": "smile",
|
||||
"font_class": "smile",
|
||||
"unicode": "e6d2",
|
||||
"unicode_decimal": 59090
|
||||
},
|
||||
{
|
||||
"icon_id": "15838534",
|
||||
"name": "switch",
|
||||
"font_class": "switch",
|
||||
"unicode": "e6d3",
|
||||
"unicode_decimal": 59091
|
||||
},
|
||||
{
|
||||
"icon_id": "15838535",
|
||||
"name": "setting",
|
||||
"font_class": "setting",
|
||||
"unicode": "e6d4",
|
||||
"unicode_decimal": 59092
|
||||
},
|
||||
{
|
||||
"icon_id": "15838536",
|
||||
"name": "survey",
|
||||
"font_class": "survey",
|
||||
"unicode": "e6d5",
|
||||
"unicode_decimal": 59093
|
||||
},
|
||||
{
|
||||
"icon_id": "15838537",
|
||||
"name": "task",
|
||||
"font_class": "task",
|
||||
"unicode": "e6d6",
|
||||
"unicode_decimal": 59094
|
||||
},
|
||||
{
|
||||
"icon_id": "15838538",
|
||||
"name": "skip",
|
||||
"font_class": "skip",
|
||||
"unicode": "e6d7",
|
||||
"unicode_decimal": 59095
|
||||
},
|
||||
{
|
||||
"icon_id": "15838539",
|
||||
"name": "text",
|
||||
"font_class": "text",
|
||||
"unicode": "e6d8",
|
||||
"unicode_decimal": 59096
|
||||
},
|
||||
{
|
||||
"icon_id": "15838540",
|
||||
"name": "time",
|
||||
"font_class": "time",
|
||||
"unicode": "e6d9",
|
||||
"unicode_decimal": 59097
|
||||
},
|
||||
{
|
||||
"icon_id": "15838541",
|
||||
"name": "telephone-out",
|
||||
"font_class": "telephone-out",
|
||||
"unicode": "e6da",
|
||||
"unicode_decimal": 59098
|
||||
},
|
||||
{
|
||||
"icon_id": "15838542",
|
||||
"name": "toggle-left",
|
||||
"font_class": "toggle-left",
|
||||
"unicode": "e6db",
|
||||
"unicode_decimal": 59099
|
||||
},
|
||||
{
|
||||
"icon_id": "15838543",
|
||||
"name": "toggle-right",
|
||||
"font_class": "toggle-right",
|
||||
"unicode": "e6dc",
|
||||
"unicode_decimal": 59100
|
||||
},
|
||||
{
|
||||
"icon_id": "15838544",
|
||||
"name": "telephone",
|
||||
"font_class": "telephone",
|
||||
"unicode": "e6dd",
|
||||
"unicode_decimal": 59101
|
||||
},
|
||||
{
|
||||
"icon_id": "15838545",
|
||||
"name": "top",
|
||||
"font_class": "top",
|
||||
"unicode": "e6de",
|
||||
"unicode_decimal": 59102
|
||||
},
|
||||
{
|
||||
"icon_id": "15838546",
|
||||
"name": "unlock",
|
||||
"font_class": "unlock",
|
||||
"unicode": "e6df",
|
||||
"unicode_decimal": 59103
|
||||
},
|
||||
{
|
||||
"icon_id": "15838547",
|
||||
"name": "user",
|
||||
"font_class": "user",
|
||||
"unicode": "e6e0",
|
||||
"unicode_decimal": 59104
|
||||
},
|
||||
{
|
||||
"icon_id": "15838548",
|
||||
"name": "upload",
|
||||
"font_class": "upload",
|
||||
"unicode": "e6e1",
|
||||
"unicode_decimal": 59105
|
||||
},
|
||||
{
|
||||
"icon_id": "15838549",
|
||||
"name": "work",
|
||||
"font_class": "work",
|
||||
"unicode": "e6e2",
|
||||
"unicode_decimal": 59106
|
||||
},
|
||||
{
|
||||
"icon_id": "15838550",
|
||||
"name": "training",
|
||||
"font_class": "training",
|
||||
"unicode": "e6e3",
|
||||
"unicode_decimal": 59107
|
||||
},
|
||||
{
|
||||
"icon_id": "15838551",
|
||||
"name": "warning",
|
||||
"font_class": "warning",
|
||||
"unicode": "e6e4",
|
||||
"unicode_decimal": 59108
|
||||
},
|
||||
{
|
||||
"icon_id": "15838552",
|
||||
"name": "zoom-in",
|
||||
"font_class": "zoom-in",
|
||||
"unicode": "e6e5",
|
||||
"unicode_decimal": 59109
|
||||
},
|
||||
{
|
||||
"icon_id": "15838554",
|
||||
"name": "zoom-out",
|
||||
"font_class": "zoom-out",
|
||||
"unicode": "e6e6",
|
||||
"unicode_decimal": 59110
|
||||
},
|
||||
{
|
||||
"icon_id": "15838560",
|
||||
"name": "add-bold",
|
||||
"font_class": "add-bold",
|
||||
"unicode": "e6e7",
|
||||
"unicode_decimal": 59111
|
||||
},
|
||||
{
|
||||
"icon_id": "15838561",
|
||||
"name": "arrow-left-bold",
|
||||
"font_class": "arrow-left-bold",
|
||||
"unicode": "e6e8",
|
||||
"unicode_decimal": 59112
|
||||
},
|
||||
{
|
||||
"icon_id": "15838562",
|
||||
"name": "arrow-up-bold",
|
||||
"font_class": "arrow-up-bold",
|
||||
"unicode": "e6e9",
|
||||
"unicode_decimal": 59113
|
||||
},
|
||||
{
|
||||
"icon_id": "15838563",
|
||||
"name": "close-bold",
|
||||
"font_class": "close-bold",
|
||||
"unicode": "e6ea",
|
||||
"unicode_decimal": 59114
|
||||
},
|
||||
{
|
||||
"icon_id": "15838564",
|
||||
"name": "arrow-down-bold",
|
||||
"font_class": "arrow-down-bold",
|
||||
"unicode": "e6eb",
|
||||
"unicode_decimal": 59115
|
||||
},
|
||||
{
|
||||
"icon_id": "15838565",
|
||||
"name": "minus-bold",
|
||||
"font_class": "minus-bold",
|
||||
"unicode": "e6ec",
|
||||
"unicode_decimal": 59116
|
||||
},
|
||||
{
|
||||
"icon_id": "15838566",
|
||||
"name": "arrow-right-bold",
|
||||
"font_class": "arrow-right-bold",
|
||||
"unicode": "e6ed",
|
||||
"unicode_decimal": 59117
|
||||
},
|
||||
{
|
||||
"icon_id": "15838567",
|
||||
"name": "select-bold",
|
||||
"font_class": "select-bold",
|
||||
"unicode": "e6ee",
|
||||
"unicode_decimal": 59118
|
||||
},
|
||||
{
|
||||
"icon_id": "15838406",
|
||||
"name": "column-3",
|
||||
"font_class": "3column",
|
||||
"unicode": "e663",
|
||||
"unicode_decimal": 58979
|
||||
},
|
||||
{
|
||||
"icon_id": "15838423",
|
||||
"name": "column-4",
|
||||
"font_class": "column-4",
|
||||
"unicode": "e664",
|
||||
"unicode_decimal": 58980
|
||||
},
|
||||
{
|
||||
"icon_id": "15838424",
|
||||
"name": "add",
|
||||
"font_class": "add",
|
||||
"unicode": "e665",
|
||||
"unicode_decimal": 58981
|
||||
},
|
||||
{
|
||||
"icon_id": "15838425",
|
||||
"name": "add-circle",
|
||||
"font_class": "add-circle",
|
||||
"unicode": "e666",
|
||||
"unicode_decimal": 58982
|
||||
},
|
||||
{
|
||||
"icon_id": "15838426",
|
||||
"name": "adjust",
|
||||
"font_class": "adjust",
|
||||
"unicode": "e667",
|
||||
"unicode_decimal": 58983
|
||||
},
|
||||
{
|
||||
"icon_id": "15838427",
|
||||
"name": "arrow-up-circle",
|
||||
"font_class": "arrow-up-circle",
|
||||
"unicode": "e668",
|
||||
"unicode_decimal": 58984
|
||||
},
|
||||
{
|
||||
"icon_id": "15838428",
|
||||
"name": "arrow-right-circle",
|
||||
"font_class": "arrow-right-circle",
|
||||
"unicode": "e669",
|
||||
"unicode_decimal": 58985
|
||||
},
|
||||
{
|
||||
"icon_id": "15838429",
|
||||
"name": "arrow-down",
|
||||
"font_class": "arrow-down",
|
||||
"unicode": "e66a",
|
||||
"unicode_decimal": 58986
|
||||
},
|
||||
{
|
||||
"icon_id": "15838430",
|
||||
"name": "ashbin",
|
||||
"font_class": "ashbin",
|
||||
"unicode": "e66b",
|
||||
"unicode_decimal": 58987
|
||||
},
|
||||
{
|
||||
"icon_id": "15838431",
|
||||
"name": "arrow-right",
|
||||
"font_class": "arrow-right",
|
||||
"unicode": "e66c",
|
||||
"unicode_decimal": 58988
|
||||
},
|
||||
{
|
||||
"icon_id": "15838432",
|
||||
"name": "browse",
|
||||
"font_class": "browse",
|
||||
"unicode": "e66d",
|
||||
"unicode_decimal": 58989
|
||||
},
|
||||
{
|
||||
"icon_id": "15838433",
|
||||
"name": "bottom",
|
||||
"font_class": "bottom",
|
||||
"unicode": "e66e",
|
||||
"unicode_decimal": 58990
|
||||
},
|
||||
{
|
||||
"icon_id": "15838434",
|
||||
"name": "back",
|
||||
"font_class": "back",
|
||||
"unicode": "e66f",
|
||||
"unicode_decimal": 58991
|
||||
},
|
||||
{
|
||||
"icon_id": "15838435",
|
||||
"name": "bad",
|
||||
"font_class": "bad",
|
||||
"unicode": "e670",
|
||||
"unicode_decimal": 58992
|
||||
},
|
||||
{
|
||||
"icon_id": "15838436",
|
||||
"name": "arrow-double-left",
|
||||
"font_class": "arrow-double-left",
|
||||
"unicode": "e671",
|
||||
"unicode_decimal": 58993
|
||||
},
|
||||
{
|
||||
"icon_id": "15838437",
|
||||
"name": "arrow-left-circle",
|
||||
"font_class": "arrow-left-circle",
|
||||
"unicode": "e672",
|
||||
"unicode_decimal": 58994
|
||||
},
|
||||
{
|
||||
"icon_id": "15838438",
|
||||
"name": "arrow-double-right",
|
||||
"font_class": "arrow-double-right",
|
||||
"unicode": "e673",
|
||||
"unicode_decimal": 58995
|
||||
},
|
||||
{
|
||||
"icon_id": "15838439",
|
||||
"name": "caps-lock",
|
||||
"font_class": "caps-lock",
|
||||
"unicode": "e674",
|
||||
"unicode_decimal": 58996
|
||||
},
|
||||
{
|
||||
"icon_id": "15838440",
|
||||
"name": "camera",
|
||||
"font_class": "camera",
|
||||
"unicode": "e675",
|
||||
"unicode_decimal": 58997
|
||||
},
|
||||
{
|
||||
"icon_id": "15838441",
|
||||
"name": "chart-bar",
|
||||
"font_class": "chart-bar",
|
||||
"unicode": "e676",
|
||||
"unicode_decimal": 58998
|
||||
},
|
||||
{
|
||||
"icon_id": "15838442",
|
||||
"name": "attachment",
|
||||
"font_class": "attachment",
|
||||
"unicode": "e677",
|
||||
"unicode_decimal": 58999
|
||||
},
|
||||
{
|
||||
"icon_id": "15838443",
|
||||
"name": "code",
|
||||
"font_class": "code",
|
||||
"unicode": "e678",
|
||||
"unicode_decimal": 59000
|
||||
},
|
||||
{
|
||||
"icon_id": "15838444",
|
||||
"name": "close",
|
||||
"font_class": "close",
|
||||
"unicode": "e679",
|
||||
"unicode_decimal": 59001
|
||||
},
|
||||
{
|
||||
"icon_id": "15838445",
|
||||
"name": "check-item",
|
||||
"font_class": "check-item",
|
||||
"unicode": "e67a",
|
||||
"unicode_decimal": 59002
|
||||
},
|
||||
{
|
||||
"icon_id": "15838446",
|
||||
"name": "calendar",
|
||||
"font_class": "calendar",
|
||||
"unicode": "e67b",
|
||||
"unicode_decimal": 59003
|
||||
},
|
||||
{
|
||||
"icon_id": "15838447",
|
||||
"name": "comment",
|
||||
"font_class": "comment",
|
||||
"unicode": "e67c",
|
||||
"unicode_decimal": 59004
|
||||
},
|
||||
{
|
||||
"icon_id": "15838448",
|
||||
"name": "column-vertical",
|
||||
"font_class": "column-vertical",
|
||||
"unicode": "e67d",
|
||||
"unicode_decimal": 59005
|
||||
},
|
||||
{
|
||||
"icon_id": "15838449",
|
||||
"name": "column-horizontal",
|
||||
"font_class": "column-horizontal",
|
||||
"unicode": "e67e",
|
||||
"unicode_decimal": 59006
|
||||
},
|
||||
{
|
||||
"icon_id": "15838450",
|
||||
"name": "complete",
|
||||
"font_class": "complete",
|
||||
"unicode": "e67f",
|
||||
"unicode_decimal": 59007
|
||||
},
|
||||
{
|
||||
"icon_id": "15838451",
|
||||
"name": "chart-pie",
|
||||
"font_class": "chart-pie",
|
||||
"unicode": "e680",
|
||||
"unicode_decimal": 59008
|
||||
},
|
||||
{
|
||||
"icon_id": "15838452",
|
||||
"name": "cry",
|
||||
"font_class": "cry",
|
||||
"unicode": "e681",
|
||||
"unicode_decimal": 59009
|
||||
},
|
||||
{
|
||||
"icon_id": "15838453",
|
||||
"name": "customer-service",
|
||||
"font_class": "customer-service",
|
||||
"unicode": "e682",
|
||||
"unicode_decimal": 59010
|
||||
},
|
||||
{
|
||||
"icon_id": "15838454",
|
||||
"name": "delete",
|
||||
"font_class": "delete",
|
||||
"unicode": "e683",
|
||||
"unicode_decimal": 59011
|
||||
},
|
||||
{
|
||||
"icon_id": "15838455",
|
||||
"name": "direction-down",
|
||||
"font_class": "direction-down",
|
||||
"unicode": "e684",
|
||||
"unicode_decimal": 59012
|
||||
},
|
||||
{
|
||||
"icon_id": "15838456",
|
||||
"name": "copy",
|
||||
"font_class": "copy",
|
||||
"unicode": "e685",
|
||||
"unicode_decimal": 59013
|
||||
},
|
||||
{
|
||||
"icon_id": "15838457",
|
||||
"name": "cut",
|
||||
"font_class": "cut",
|
||||
"unicode": "e686",
|
||||
"unicode_decimal": 59014
|
||||
},
|
||||
{
|
||||
"icon_id": "15838458",
|
||||
"name": "data-view",
|
||||
"font_class": "data-view",
|
||||
"unicode": "e687",
|
||||
"unicode_decimal": 59015
|
||||
},
|
||||
{
|
||||
"icon_id": "15838459",
|
||||
"name": "direction-down-circle",
|
||||
"font_class": "direction-down-circle",
|
||||
"unicode": "e688",
|
||||
"unicode_decimal": 59016
|
||||
},
|
||||
{
|
||||
"icon_id": "15838460",
|
||||
"name": "direction-right",
|
||||
"font_class": "direction-right",
|
||||
"unicode": "e689",
|
||||
"unicode_decimal": 59017
|
||||
},
|
||||
{
|
||||
"icon_id": "15838461",
|
||||
"name": "direction-up",
|
||||
"font_class": "direction-up",
|
||||
"unicode": "e68a",
|
||||
"unicode_decimal": 59018
|
||||
},
|
||||
{
|
||||
"icon_id": "15838462",
|
||||
"name": "discount",
|
||||
"font_class": "discount",
|
||||
"unicode": "e68b",
|
||||
"unicode_decimal": 59019
|
||||
},
|
||||
{
|
||||
"icon_id": "15838463",
|
||||
"name": "direction-left",
|
||||
"font_class": "direction-left",
|
||||
"unicode": "e68c",
|
||||
"unicode_decimal": 59020
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
static/component/pear/font/iconfont.ttf
Normal file
BIN
static/component/pear/font/iconfont.woff
Normal file
BIN
static/component/pear/font/iconfont.woff2
Normal file
890
static/component/pear/module/admin.js
Normal file
@@ -0,0 +1,890 @@
|
||||
layui.define(['jquery', 'tools', 'element', 'yaml', 'form', 'tabPage', 'menu', 'page', 'fullscreen', 'messageCenter', 'menuSearch'],
|
||||
function (exports) {
|
||||
"use strict";
|
||||
|
||||
var $ = layui.jquery,
|
||||
form = layui.form,
|
||||
yaml = layui.yaml,
|
||||
page = layui.page,
|
||||
menu = layui.menu,
|
||||
tabPage = layui.tabPage,
|
||||
messageCenter = layui.messageCenter,
|
||||
menuSearch = layui.menuSearch,
|
||||
fullscreen = layui.fullscreen,
|
||||
tools = layui.tools;
|
||||
|
||||
var configurationCache;
|
||||
|
||||
var logout = function () {
|
||||
};
|
||||
|
||||
var body = $('body');
|
||||
|
||||
var pearAdmin = new function () {
|
||||
|
||||
this.configuration = {};
|
||||
|
||||
this.configurationPath = "pear.config.yml";
|
||||
|
||||
this.instances = {};
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 获取 pear.config 实现 [ default ]
|
||||
*/
|
||||
this.configurationProvider = () => {
|
||||
return new Promise((resolve) => {
|
||||
if (this.configurationPath.indexOf("yml") == -1) {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: this.configurationPath,
|
||||
dataType: 'json',
|
||||
async: false,
|
||||
success: (result) => {
|
||||
resolve(result);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
resolve(yaml.load(this.configurationPath));
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 配置 pear.config 路径
|
||||
*/
|
||||
this.setConfigurationPath = (path) => {
|
||||
this.configurationPath = path;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 获取 pear.config 实现 [ implement ]
|
||||
*/
|
||||
this.setConfigurationProvider = (provider) => {
|
||||
this.configurationProvider = provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 获取 pear.config 配置
|
||||
*/
|
||||
this.getConfiguration = () => {
|
||||
return this.configuration;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Core Function.
|
||||
*
|
||||
* @param {*} options
|
||||
*/
|
||||
this.render = (options) => {
|
||||
if (options !== undefined) {
|
||||
pearAdmin.apply(options);
|
||||
} else {
|
||||
this.configurationProvider().then((result) => {
|
||||
pearAdmin.apply(result);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 启动构建
|
||||
*/
|
||||
this.apply = function (configuration) {
|
||||
configurationCache = configuration;
|
||||
pearAdmin.logoRender(configuration);
|
||||
pearAdmin.menuRender(configuration);
|
||||
pearAdmin.menuSearchRender(configuration);
|
||||
pearAdmin.bodyRender(configuration);
|
||||
pearAdmin.messageCenterRender(configuration);
|
||||
pearAdmin.themeRender(configuration);
|
||||
pearAdmin.keepLoad(configuration);
|
||||
window.PearAdmin = pearAdmin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 菜单搜索
|
||||
*/
|
||||
this.menuSearchRender = function (options) {
|
||||
menuSearch.render({
|
||||
elem: ".menuSearch",
|
||||
dataProvider: () => pearAdmin.instances.menu.cache(),
|
||||
select: (node) => {
|
||||
if (node.type == "1") {
|
||||
pearAdmin.instances.menu.selectItem(node.id);
|
||||
if (node.openType === "_layer") {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: data.title,
|
||||
content: data.url,
|
||||
area: ['80%', '80%'],
|
||||
maxmin: true
|
||||
})
|
||||
} else {
|
||||
if (isMuiltTab(options) === "true" ||
|
||||
isMuiltTab(options) === true) {
|
||||
pearAdmin.instances.tabPage.changePage({
|
||||
id: node.id,
|
||||
title: node.title,
|
||||
type: node.openType,
|
||||
url: node.url,
|
||||
close: true
|
||||
});
|
||||
} else {
|
||||
pearAdmin.instances.page.changePage({
|
||||
href: node.url,
|
||||
type: node.openType
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 消息中心
|
||||
*/
|
||||
this.messageCenterRender = function (options) {
|
||||
messageCenter.render({
|
||||
elem: '.message',
|
||||
url: options.header.message,
|
||||
height: '250px'
|
||||
});
|
||||
}
|
||||
|
||||
this.logoRender = function (param) {
|
||||
$(".layui-logo .logo").attr("src", param.logo.image);
|
||||
$(".layui-logo .title").html(param.logo.title);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 侧边菜单
|
||||
*/
|
||||
this.menuRender = function (param) {
|
||||
pearAdmin.instances.menu = menu.render({
|
||||
elem: 'side',
|
||||
async: param.menu.async,
|
||||
method: param.menu.method,
|
||||
control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false,
|
||||
controlWidth: param.menu.controlWidth,
|
||||
accordion: param.menu.accordion,
|
||||
data: param.menu.data,
|
||||
url: param.menu.data,
|
||||
parseData: false,
|
||||
defaultMenu: 0,
|
||||
change: function () {
|
||||
compatible();
|
||||
},
|
||||
done: function () {
|
||||
pearAdmin.instances.menu.isCollapse = param.menu.collapse;
|
||||
pearAdmin.instances.menu.selectItem(param.menu.select);
|
||||
if (param.menu.collapse) {
|
||||
if ($(window).width() >= 768) {
|
||||
collapse()
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 视图容器
|
||||
*/
|
||||
this.bodyRender = function (param) {
|
||||
|
||||
body.on("click", ".refresh", function () {
|
||||
pearAdmin.refresh();
|
||||
})
|
||||
|
||||
if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) {
|
||||
|
||||
pearAdmin.instances.tabPage = tabPage.render({
|
||||
elem: 'content',
|
||||
session: param.tab.session,
|
||||
index: 0,
|
||||
tabMax: param.tab.max,
|
||||
preload: param.tab.preload,
|
||||
closeEvent: function (id) {
|
||||
pearAdmin.instances.menu.selectItem(id);
|
||||
},
|
||||
data: [{
|
||||
id: param.tab.index.id,
|
||||
url: param.tab.index.href,
|
||||
title: param.tab.index.title,
|
||||
close: false
|
||||
}],
|
||||
success: function (id) {
|
||||
if (param.tab.session) {
|
||||
setTimeout(function () {
|
||||
pearAdmin.instances.menu.selectItem(id);
|
||||
pearAdmin.instances.tabPage.positionTab();
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
pearAdmin.instances.tabPage.click(function (id) {
|
||||
if (!param.tab.keepState) {
|
||||
pearAdmin.instances.tabPage.refresh(false);
|
||||
}
|
||||
pearAdmin.instances.tabPage.positionTab();
|
||||
pearAdmin.instances.menu.selectItem(id);
|
||||
})
|
||||
|
||||
pearAdmin.instances.menu.click(function (dom, data) {
|
||||
if (data.menuOpenType === "_layer") {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: data.menuTitle,
|
||||
content: data.menuUrl,
|
||||
area: ['80%', '80%'],
|
||||
maxmin: true
|
||||
})
|
||||
} else {
|
||||
pearAdmin.instances.tabPage.changePage({
|
||||
id: data.menuId,
|
||||
title: data.menuTitle,
|
||||
type: data.menuOpenType,
|
||||
url: data.menuUrl,
|
||||
close: true
|
||||
});
|
||||
}
|
||||
compatible();
|
||||
})
|
||||
|
||||
} else {
|
||||
|
||||
pearAdmin.instances.page = page.render({
|
||||
elem: 'content',
|
||||
title: '首页',
|
||||
url: param.tab.index.href
|
||||
});
|
||||
|
||||
pearAdmin.instances.menu.click(function (dom, data) {
|
||||
if (data.menuOpenType === "_layer") {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: data.menuTitle,
|
||||
content: data.menuUrl,
|
||||
area: ['80%', '80%'],
|
||||
maxmin: true
|
||||
})
|
||||
} else {
|
||||
pearAdmin.instances.page.changePage({href: data.menuUrl, type: data.menuOpenType});
|
||||
}
|
||||
compatible()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
this.keepLoad = function (param) {
|
||||
compatible()
|
||||
setTimeout(function () {
|
||||
$(".loader-wrapper").fadeOut(200);
|
||||
}, param.other.keepLoad)
|
||||
}
|
||||
|
||||
/***
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 切换主题色
|
||||
*/
|
||||
this.changeTheme = function () {
|
||||
const variableKey = "--global-primary-color";
|
||||
const variableVal = localStorage.getItem("theme-color-color");
|
||||
document.documentElement.style.setProperty(variableKey, variableVal);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 主题配置
|
||||
*/
|
||||
this.themeRender = function (option) {
|
||||
if (option.theme.allowCustom === false) {
|
||||
$(".setting").remove();
|
||||
}
|
||||
var colorId = localStorage.getItem("theme-color");
|
||||
var currentColor = getColorById(colorId);
|
||||
localStorage.setItem("theme-color", currentColor.id);
|
||||
localStorage.setItem("theme-color-color", currentColor.color);
|
||||
localStorage.setItem("theme-color-second", currentColor.second);
|
||||
pearAdmin.changeTheme();
|
||||
|
||||
var menu = localStorage.getItem("theme-menu");
|
||||
if (menu === null) {
|
||||
menu = option.theme.defaultMenu;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
menu = option.theme.defaultMenu;
|
||||
}
|
||||
}
|
||||
|
||||
var header = localStorage.getItem("theme-header");
|
||||
if (header === null) {
|
||||
header = option.theme.defaultHeader;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
header = option.theme.defaultHeader;
|
||||
}
|
||||
}
|
||||
|
||||
var banner = localStorage.getItem("theme-banner");
|
||||
if (banner === null) {
|
||||
banner = option.theme.banner;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
banner = option.theme.banner;
|
||||
}
|
||||
}
|
||||
|
||||
var autoHead = localStorage.getItem("auto-head");
|
||||
if (autoHead === null) {
|
||||
autoHead = option.other.autoHead;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
autoHead = option.other.autoHead;
|
||||
}
|
||||
}
|
||||
|
||||
var muiltTab = localStorage.getItem("muilt-tab");
|
||||
if (muiltTab === null) {
|
||||
muiltTab = option.tab.enable;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
muiltTab = option.tab.enable;
|
||||
}
|
||||
}
|
||||
|
||||
var control = localStorage.getItem("control");
|
||||
if (control === null) {
|
||||
control = option.menu.control;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
control = option.menu.control;
|
||||
}
|
||||
}
|
||||
|
||||
var footer = localStorage.getItem("footer");
|
||||
if (footer === null) {
|
||||
footer = option.other.footer;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
footer = option.other.footer;
|
||||
}
|
||||
}
|
||||
|
||||
var dark = localStorage.getItem("dark");
|
||||
if (dark === null) {
|
||||
dark = option.theme.dark;
|
||||
} else {
|
||||
if (option.theme.allowCustom === false) {
|
||||
dark = option.theme.dark;
|
||||
}
|
||||
}
|
||||
|
||||
localStorage.setItem("muilt-tab", muiltTab);
|
||||
localStorage.setItem("theme-banner", banner);
|
||||
localStorage.setItem("theme-menu", menu);
|
||||
localStorage.setItem("footer", footer);
|
||||
localStorage.setItem("control", control);
|
||||
localStorage.setItem("theme-header", header);
|
||||
localStorage.setItem("auto-head", autoHead);
|
||||
localStorage.setItem("dark", dark);
|
||||
this.menuSkin(menu);
|
||||
this.headerSkin(header);
|
||||
this.bannerSkin(banner);
|
||||
this.switchTheme(dark);
|
||||
this.footer(footer);
|
||||
}
|
||||
|
||||
this.footer = function (footer) {
|
||||
var bodyDOM = $(".pear-admin .layui-body");
|
||||
var footerDOM = $(".pear-admin .layui-footer");
|
||||
if (footer === true || footer === "true") {
|
||||
footerDOM.removeClass("close");
|
||||
bodyDOM.css("height", "calc(100% - 105px)");
|
||||
} else {
|
||||
footerDOM.addClass("close");
|
||||
bodyDOM.css("height", "calc(100% - 60px)");
|
||||
}
|
||||
}
|
||||
|
||||
this.bannerSkin = function (theme) {
|
||||
var pearAdmin = $(".pear-admin");
|
||||
pearAdmin.removeClass("banner-layout");
|
||||
if (theme === true || theme === "true") {
|
||||
pearAdmin.addClass("banner-layout");
|
||||
}
|
||||
}
|
||||
|
||||
this.switchTheme = function (checked) {
|
||||
var $pearAdmin = $(".pear-admin");
|
||||
$pearAdmin.removeClass("pear-admin-dark");
|
||||
if (checked === true || checked === "true") {
|
||||
$pearAdmin.addClass("pear-admin-dark");
|
||||
}
|
||||
}
|
||||
|
||||
this.menuSkin = function (theme) {
|
||||
var pearAdmin = $(".pear-admin .layui-side");
|
||||
pearAdmin.removeClass("light-theme");
|
||||
pearAdmin.removeClass("dark-theme");
|
||||
pearAdmin.addClass(theme);
|
||||
}
|
||||
|
||||
this.headerSkin = function (theme) {
|
||||
var pearAdmin = $(".pear-admin .layui-header");
|
||||
pearAdmin.removeClass("dark-theme");
|
||||
pearAdmin.removeClass("light-theme");
|
||||
pearAdmin.removeClass("auto-theme");
|
||||
pearAdmin.addClass(theme);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置注销逻辑
|
||||
*
|
||||
* @param callback 实现
|
||||
*/
|
||||
this.logout = function (callback) {
|
||||
if (callback != undefined) {
|
||||
logout = callback;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0.3
|
||||
*
|
||||
* 刷新当前页面
|
||||
*/
|
||||
this.refresh = function () {
|
||||
var refreshBtn = $(".refresh a");
|
||||
refreshBtn.addClass("layui-anim layui-anim-rotate layui-anim-loop layui-icon-loading");
|
||||
refreshBtn.removeClass("layui-icon-refresh-1");
|
||||
if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) pearAdmin.instances.tabPage.refresh(true);
|
||||
else pearAdmin.instances.page.refresh(true);
|
||||
setTimeout(function () {
|
||||
refreshBtn.removeClass("layui-anim layui-anim-rotate layui-anim-loop layui-icon-loading");
|
||||
refreshBtn.addClass("layui-icon-refresh-1");
|
||||
}, 600)
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0.3
|
||||
*
|
||||
* 切换内容页面
|
||||
*
|
||||
* PS: tabPages 模式下,如果页面不存在则新增,反则仅做切换。
|
||||
*/
|
||||
this.changePage = function (data) {
|
||||
if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) {
|
||||
pearAdmin.instances.tabPage.changePage({
|
||||
id: data.id,
|
||||
title: data.title,
|
||||
url: data.url,
|
||||
type: data.type,
|
||||
close: true
|
||||
});
|
||||
} else {
|
||||
pearAdmin.instances.page.changePage({href: data.url, type: data.type});
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 菜单折叠
|
||||
*/
|
||||
function collapse() {
|
||||
pearAdmin.instances.menu.collapse();
|
||||
var admin = $(".pear-admin");
|
||||
var left = $(".layui-icon-spread-left")
|
||||
var right = $(".layui-icon-shrink-right")
|
||||
if (admin.is(".pear-mini")) {
|
||||
left.addClass("layui-icon-shrink-right")
|
||||
left.removeClass("layui-icon-spread-left")
|
||||
admin.removeClass("pear-mini");
|
||||
pearAdmin.instances.menu.isCollapse = false;
|
||||
} else {
|
||||
right.addClass("layui-icon-spread-left")
|
||||
right.removeClass("layui-icon-shrink-right")
|
||||
admin.addClass("pear-mini");
|
||||
pearAdmin.instances.menu.isCollapse = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 使用 admin.logout(Function) 实现注销
|
||||
*
|
||||
* Promise<boolean> 作为返回值类型时,泛型内容为 true 时视为注销成功,则清除 pearAdmin.instances.tabPage 缓存
|
||||
*
|
||||
* 否则视为注销失败,不做任何处置。
|
||||
*/
|
||||
body.on("click", ".logout", function () {
|
||||
var promise = logout();
|
||||
if (promise != undefined) {
|
||||
promise.then((asyncResult) => {
|
||||
if (asyncResult) {
|
||||
if (pearAdmin.instances.tabPage != undefined) {
|
||||
pearAdmin.instances.tabPage.clear();
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
if (pearAdmin.instances.tabPage != undefined) {
|
||||
pearAdmin.instances.tabPage.clear();
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
body.on("click", ".collapse,.pear-cover", function () {
|
||||
collapse();
|
||||
});
|
||||
|
||||
body.on("click", ".fullScreen", function () {
|
||||
if ($(this).hasClass("layui-icon-screen-restore")) {
|
||||
fullscreen.fullClose().then(function () {
|
||||
$(".fullScreen").eq(0).removeClass("layui-icon-screen-restore");
|
||||
});
|
||||
} else {
|
||||
fullscreen.fullScreen().then(function () {
|
||||
$(".fullScreen").eq(0).addClass("layui-icon-screen-restore");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
body.on("click", '[user-menu-id]', function () {
|
||||
if (isMuiltTab(configurationCache) === "true" || isMuiltTab(configurationCache) === true) {
|
||||
pearAdmin.instances.tabPage.changePage({
|
||||
id: $(this).attr("user-menu-id"),
|
||||
title: $(this).attr("user-menu-title"),
|
||||
url: $(this).attr("user-menu-url"),
|
||||
close: true
|
||||
}, 300);
|
||||
} else {
|
||||
pearAdmin.instances.page.changePage({
|
||||
href: $(this).attr("user-menu-url"),
|
||||
type: "_component"
|
||||
}, true);
|
||||
}
|
||||
});
|
||||
|
||||
body.on("click", ".setting", function () {
|
||||
|
||||
var menuItem =
|
||||
'<li class="layui-this" data-select-bgcolor="dark-theme" >' +
|
||||
'<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 12px; background: white;"></span></div>' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>' +
|
||||
'</a>' +
|
||||
'</li>';
|
||||
|
||||
menuItem +=
|
||||
'<li data-select-bgcolor="light-theme" >' +
|
||||
'<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: white;"></span><span style="display:block; width: 80%; float: left; height: 12px; background: white;"></span></div>' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: white;"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>' +
|
||||
'</a>' +
|
||||
'</li>';
|
||||
|
||||
var menuHtml =
|
||||
'<div class="pearone-color">\n' +
|
||||
'<div class="color-title">菜单风格</div>\n' +
|
||||
'<div class="color-content">\n' +
|
||||
'<ul>\n' + menuItem + '</ul>\n' +
|
||||
'</div>\n' +
|
||||
'</div>';
|
||||
|
||||
var headItem =
|
||||
'<li class="layui-this" data-select-header="light-theme" >' +
|
||||
'<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 12px; background: white;"></span></div>' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>' +
|
||||
'</a>' +
|
||||
'</li>';
|
||||
|
||||
headItem +=
|
||||
'<li data-select-header="dark-theme" >' +
|
||||
'<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 12px; background: #28333E;"></span></div>' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>' +
|
||||
'</a>' +
|
||||
'</li>';
|
||||
|
||||
headItem +=
|
||||
'<li data-select-header="auto-theme" >' +
|
||||
'<a href="javascript:;" data-skin="skin-blue" style="" class="clearfix full-opacity-hover">' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 12px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 12px; background: var(--global-primary-color);" ></span></div>' +
|
||||
'<div><span style="display:block; width: 20%; float: left; height: 40px; background: #28333E;"></span><span style="display:block; width: 80%; float: left; height: 40px; background: #f4f5f7;"></span></div>' +
|
||||
'</a>' +
|
||||
'</li>';
|
||||
|
||||
var headHtml =
|
||||
'<div class="pearone-color">\n' +
|
||||
'<div class="color-title">顶栏风格</div>\n' +
|
||||
'<div class="color-content">\n' +
|
||||
'<ul>\n' + headItem + '</ul>\n' +
|
||||
'</div>\n' +
|
||||
'</div>';
|
||||
|
||||
var moreItem =
|
||||
'<div class="layui-form-item"><div class="layui-input-inline" style="width:200px;"><input type="checkbox" name="control" lay-filter="control" lay-skin="switch"></div><span class="set-text">菜单分割</span></div>';
|
||||
|
||||
moreItem +=
|
||||
'<div class="layui-form-item"><div class="layui-input-inline" style="width:200px;"><input type="checkbox" name="muilt-tab" lay-filter="muilt-tab" lay-skin="switch"></div><span class="set-text">多选项卡</span></div>';
|
||||
|
||||
moreItem +=
|
||||
'<div class="layui-form-item"><div class="layui-input-inline" style="width:200px;"><input type="checkbox" name="banner" lay-filter="banner" lay-skin="switch"></div><span class="set-text">通栏布局</span></div>';
|
||||
|
||||
moreItem +=
|
||||
'<div class="layui-form-item"><div class="layui-input-inline" style="width:200px;"><input type="checkbox" name="footer" lay-filter="footer" lay-skin="switch"></div><span class="set-text">开启页脚</span></div>';
|
||||
|
||||
moreItem +=
|
||||
'<div class="layui-form-item"><div class="layui-input-inline" style="width:200px;"><input type="checkbox" name="dark" lay-filter="dark" lay-skin="switch"></div><span class="set-text">夜间模式</span></div>';
|
||||
|
||||
var moreHtml = '<br><div class="pearone-color">\n' +
|
||||
'<div class="color-title">更多设置</div>\n' +
|
||||
'<div class="color-content">\n' +
|
||||
'<form class="layui-form">\n' + moreItem + '</form>\n' +
|
||||
'</div>\n' +
|
||||
'</div>';
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
offset: 'r',
|
||||
area: ['320px', '100%'],
|
||||
title: false,
|
||||
shade: 0.1,
|
||||
closeBtn: 0,
|
||||
shadeClose: false,
|
||||
anim: -1,
|
||||
skin: 'layer-anim-right',
|
||||
move: false,
|
||||
content: menuHtml + headHtml + buildColorHtml() + moreHtml,
|
||||
success: function (layero, index) {
|
||||
|
||||
form.render();
|
||||
|
||||
var color = localStorage.getItem("theme-color");
|
||||
var menu = localStorage.getItem("theme-menu");
|
||||
var header = localStorage.getItem("theme-header");
|
||||
|
||||
if (color !== "null") {
|
||||
$(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok");
|
||||
$("*[color-id='" + color + "']").addClass("layui-icon").addClass("layui-icon-ok");
|
||||
}
|
||||
|
||||
if (menu !== "null") {
|
||||
$("*[data-select-bgcolor]").removeClass("layui-this");
|
||||
$("[data-select-bgcolor='" + menu + "']").addClass("layui-this");
|
||||
}
|
||||
|
||||
if (header !== "null") {
|
||||
$("*[data-select-header]").removeClass("layui-this");
|
||||
$("[data-select-header='" + header + "']").addClass("layui-this");
|
||||
}
|
||||
|
||||
$('#layui-layer-shade' + index).click(function () {
|
||||
var $layero = $('#layui-layer' + index);
|
||||
$layero.animate({
|
||||
left: $layero.offset().left + $layero.width()
|
||||
}, 200, function () {
|
||||
layer.close(index);
|
||||
});
|
||||
})
|
||||
|
||||
form.on('switch(control)', function (data) {
|
||||
localStorage.setItem("control", this.checked);
|
||||
window.location.reload();
|
||||
})
|
||||
|
||||
form.on('switch(muilt-tab)', function (data) {
|
||||
localStorage.setItem("muilt-tab", this.checked);
|
||||
window.location.reload();
|
||||
})
|
||||
|
||||
form.on('switch(auto-head)', function (data) {
|
||||
localStorage.setItem("auto-head", this.checked);
|
||||
pearAdmin.changeTheme();
|
||||
})
|
||||
|
||||
form.on('switch(banner)', function (data) {
|
||||
localStorage.setItem("theme-banner", this.checked);
|
||||
pearAdmin.bannerSkin(this.checked);
|
||||
})
|
||||
|
||||
form.on('switch(footer)', function (data) {
|
||||
localStorage.setItem("footer", this.checked);
|
||||
pearAdmin.footer(this.checked);
|
||||
})
|
||||
|
||||
form.on('switch(dark)', function (data) {
|
||||
localStorage.setItem("dark", this.checked);
|
||||
pearAdmin.switchTheme(this.checked);
|
||||
})
|
||||
|
||||
if (localStorage.getItem('theme-banner') === 'true') {
|
||||
$('input[name="banner"]').attr('checked', 'checked')
|
||||
} else {
|
||||
$('input[name="banner"]').removeAttr('checked')
|
||||
}
|
||||
|
||||
if (localStorage.getItem('control') === 'true') {
|
||||
$('input[name="control"]').attr('checked', 'checked')
|
||||
} else {
|
||||
$('input[name="control"]').removeAttr('checked')
|
||||
}
|
||||
|
||||
if (localStorage.getItem('muilt-tab') === 'true') {
|
||||
$('input[name="muilt-tab"]').attr('checked', 'checked')
|
||||
} else {
|
||||
$('input[name="muilt-tab"]').removeAttr('checked')
|
||||
}
|
||||
|
||||
if (localStorage.getItem('footer') === 'true') {
|
||||
$('input[name="footer"]').attr('checked', 'checked')
|
||||
} else {
|
||||
$('input[name="footer"]').removeAttr('checked')
|
||||
}
|
||||
|
||||
if (localStorage.getItem('dark') === 'true') {
|
||||
$('input[name="dark"]').attr('checked', 'checked')
|
||||
} else {
|
||||
$('input[name="dark"]').removeAttr('checked')
|
||||
}
|
||||
|
||||
form.render('checkbox');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
body.on('click', '[data-select-bgcolor]', function () {
|
||||
var theme = $(this).attr('data-select-bgcolor');
|
||||
$('[data-select-bgcolor]').removeClass("layui-this");
|
||||
$(this).addClass("layui-this");
|
||||
localStorage.setItem("theme-menu", theme);
|
||||
pearAdmin.menuSkin(theme);
|
||||
});
|
||||
|
||||
body.on('click', '[data-select-header]', function () {
|
||||
var headerColor = $(this).attr('data-select-header');
|
||||
$('[data-select-header]').removeClass("layui-this");
|
||||
$(this).addClass("layui-this");
|
||||
localStorage.setItem("theme-header", headerColor);
|
||||
if (headerColor == "auto-theme") {
|
||||
localStorage.setItem("auto-head", true);
|
||||
pearAdmin.changeTheme();
|
||||
} else {
|
||||
localStorage.setItem("auto-head", false);
|
||||
pearAdmin.changeTheme();
|
||||
}
|
||||
pearAdmin.headerSkin(headerColor);
|
||||
});
|
||||
|
||||
body.on('click', '.select-color-item', function () {
|
||||
$(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok");
|
||||
$(this).addClass("layui-icon").addClass("layui-icon-ok");
|
||||
var colorId = $(".select-color-item.layui-icon-ok").attr("color-id");
|
||||
var currentColor = getColorById(colorId);
|
||||
localStorage.setItem("theme-color", currentColor.id);
|
||||
localStorage.setItem("theme-color-color", currentColor.color);
|
||||
localStorage.setItem("theme-color-second", currentColor.second);
|
||||
pearAdmin.changeTheme();
|
||||
});
|
||||
|
||||
function getColorById(id) {
|
||||
var color;
|
||||
var flag = false;
|
||||
$.each(configurationCache.colors, function (i, value) {
|
||||
if (value.id === id) {
|
||||
color = value;
|
||||
flag = true;
|
||||
}
|
||||
})
|
||||
if (flag === false || configurationCache.theme.allowCustom === false) {
|
||||
$.each(configurationCache.colors, function (i, value) {
|
||||
if (value.id === configurationCache.theme.defaultColor) {
|
||||
color = value;
|
||||
}
|
||||
})
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
function buildColorHtml() {
|
||||
var colors = "";
|
||||
$.each(configurationCache.colors, function (i, value) {
|
||||
colors += "<span class='select-color-item' color-id='" + value.id + "' style='background-color:" + value.color +
|
||||
";'></span>";
|
||||
})
|
||||
return "<div class='select-color'><div class='select-color-title'>主题颜色</div><div class='select-color-content'>" +
|
||||
colors + "</div></div>"
|
||||
}
|
||||
|
||||
function compatible() {
|
||||
if ($(window).width() <= 768) {
|
||||
collapse()
|
||||
}
|
||||
}
|
||||
|
||||
function isControl(option) {
|
||||
if (option.theme.allowCustom) {
|
||||
if (localStorage.getItem("control") != null) {
|
||||
return localStorage.getItem("control")
|
||||
} else {
|
||||
return option.menu.control
|
||||
}
|
||||
} else {
|
||||
return option.menu.control
|
||||
}
|
||||
}
|
||||
|
||||
function isMuiltTab(option) {
|
||||
if (option.theme.allowCustom) {
|
||||
if (localStorage.getItem("muilt-tab") != null) {
|
||||
return localStorage.getItem("muilt-tab")
|
||||
} else {
|
||||
return option.tab.enable
|
||||
}
|
||||
} else {
|
||||
return option.tab.enable
|
||||
}
|
||||
}
|
||||
|
||||
window.onresize = function () {
|
||||
if (!fullscreen.isFullscreen()) {
|
||||
$(".fullScreen").eq(0).removeClass("layui-icon-screen-restore");
|
||||
}
|
||||
}
|
||||
|
||||
$(window).on('resize', tools.debounce(function () {
|
||||
if (pearAdmin.instances.menu && !pearAdmin.instances.menu.isCollapse && $(window).width() <= 768) {
|
||||
collapse();
|
||||
}
|
||||
}, 50));
|
||||
|
||||
exports('admin', pearAdmin);
|
||||
})
|
||||
60
static/component/pear/module/button.js
Normal file
@@ -0,0 +1,60 @@
|
||||
layui.define(['jquery'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Button component
|
||||
* */
|
||||
var MOD_NAME = 'button',
|
||||
$ = layui.jquery;
|
||||
|
||||
var button = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Button start loading
|
||||
* */
|
||||
button.prototype.load = function (opt) {
|
||||
|
||||
var options = {
|
||||
elem: opt.elem,
|
||||
time: opt.time ? opt.time : false,
|
||||
done: opt.done ? opt.done : function () {
|
||||
}
|
||||
}
|
||||
|
||||
var text = $(options.elem).html();
|
||||
|
||||
$(options.elem).html("<i class='layui-anim layui-anim-rotate layui-icon layui-anim-loop layui-icon-loading'/>");
|
||||
$(options.elem).attr("disabled", "disabled");
|
||||
|
||||
var $button = $(options.elem);
|
||||
|
||||
if (options.time != "" || options.time != false) {
|
||||
setTimeout(function () {
|
||||
$button.attr("disabled", false);
|
||||
$button.html(text);
|
||||
options.done();
|
||||
}, options.time);
|
||||
}
|
||||
options.text = text;
|
||||
return new button(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Button stop loaded
|
||||
* */
|
||||
button.prototype.stop = function (success) {
|
||||
$(this.option.elem).attr("disabled", false);
|
||||
$(this.option.elem).html(this.option.text);
|
||||
success && success();
|
||||
}
|
||||
|
||||
exports(MOD_NAME, new button());
|
||||
});
|
||||
38
static/component/pear/module/extends/count.js
Normal file
@@ -0,0 +1,38 @@
|
||||
layui.define(['jquery', 'element'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'count',
|
||||
$ = layui.jquery,
|
||||
element = layui.element;
|
||||
|
||||
var count = new function () {
|
||||
|
||||
this.up = function (targetEle, options) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
var $this = document.getElementById(targetEle),
|
||||
time = options.time,
|
||||
finalNum = options.num,
|
||||
regulator = options.regulator,
|
||||
step = finalNum / (time / regulator),
|
||||
count = 0.00,
|
||||
initial = 0;
|
||||
|
||||
var timer = setInterval(function () {
|
||||
count = count + step;
|
||||
if (count >= finalNum) {
|
||||
clearInterval(timer);
|
||||
count = finalNum;
|
||||
}
|
||||
var t = count.toFixed(options.bit ? options.bit : 0);
|
||||
;
|
||||
if (t == initial) return;
|
||||
initial = t;
|
||||
$this.innerHTML = initial;
|
||||
}, 30);
|
||||
}
|
||||
|
||||
}
|
||||
exports(MOD_NAME, count);
|
||||
});
|
||||
96008
static/component/pear/module/extends/echarts.js
Normal file
450
static/component/pear/module/extends/echartsTheme.js
Normal file
@@ -0,0 +1,450 @@
|
||||
layui.define(function (exports) {
|
||||
exports('echartsTheme',
|
||||
{
|
||||
"color": [
|
||||
"#3fb1e3",
|
||||
"#6be6c1",
|
||||
"#626c91",
|
||||
"#a0a7e6",
|
||||
"#c4ebad",
|
||||
"#96dee8"
|
||||
],
|
||||
"backgroundColor": "rgba(252,252,252,0)",
|
||||
"textStyle": {},
|
||||
"title": {
|
||||
"textStyle": {
|
||||
"color": "#666666"
|
||||
},
|
||||
"subtextStyle": {
|
||||
"color": "#999999"
|
||||
}
|
||||
},
|
||||
"line": {
|
||||
"itemStyle": {
|
||||
"borderWidth": "3"
|
||||
},
|
||||
"lineStyle": {
|
||||
"width": "4"
|
||||
},
|
||||
"symbolSize": "10",
|
||||
"symbol": "emptyCircle",
|
||||
"smooth": true
|
||||
},
|
||||
"radar": {
|
||||
"itemStyle": {
|
||||
"borderWidth": "3"
|
||||
},
|
||||
"lineStyle": {
|
||||
"width": "4"
|
||||
},
|
||||
"symbolSize": "10",
|
||||
"symbol": "emptyCircle",
|
||||
"smooth": true
|
||||
},
|
||||
"bar": {
|
||||
"itemStyle": {
|
||||
"barBorderWidth": 0,
|
||||
"barBorderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"barBorderWidth": 0,
|
||||
"barBorderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"pie": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"scatter": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"boxplot": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"parallel": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"sankey": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"funnel": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"gauge": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"candlestick": {
|
||||
"itemStyle": {
|
||||
"color": "#e6a0d2",
|
||||
"color0": "transparent",
|
||||
"borderColor": "#e6a0d2",
|
||||
"borderColor0": "#3fb1e3",
|
||||
"borderWidth": "2"
|
||||
}
|
||||
},
|
||||
"graph": {
|
||||
"itemStyle": {
|
||||
"borderWidth": 0,
|
||||
"borderColor": "#ccc"
|
||||
},
|
||||
"lineStyle": {
|
||||
"width": "1",
|
||||
"color": "#cccccc"
|
||||
},
|
||||
"symbolSize": "10",
|
||||
"symbol": "emptyCircle",
|
||||
"smooth": true,
|
||||
"color": [
|
||||
"#3fb1e3",
|
||||
"#6be6c1",
|
||||
"#626c91",
|
||||
"#a0a7e6",
|
||||
"#c4ebad",
|
||||
"#96dee8"
|
||||
],
|
||||
"label": {
|
||||
"color": "#ffffff"
|
||||
}
|
||||
},
|
||||
"map": {
|
||||
"itemStyle": {
|
||||
"areaColor": "#eeeeee",
|
||||
"borderColor": "#aaaaaa",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"label": {
|
||||
"color": "#ffffff"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"areaColor": "rgba(63,177,227,0.25)",
|
||||
"borderColor": "#3fb1e3",
|
||||
"borderWidth": 1
|
||||
},
|
||||
"label": {
|
||||
"color": "rgb(63,177,227)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"geo": {
|
||||
"itemStyle": {
|
||||
"areaColor": "#eeeeee",
|
||||
"borderColor": "#aaaaaa",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"label": {
|
||||
"color": "#ffffff"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"areaColor": "rgba(63,177,227,0.25)",
|
||||
"borderColor": "#3fb1e3",
|
||||
"borderWidth": 1
|
||||
},
|
||||
"label": {
|
||||
"color": "rgb(63,177,227)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"categoryAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
|
||||
"color": "#999999"
|
||||
|
||||
},
|
||||
"splitLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": false,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"valueAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"color": "#999999"
|
||||
|
||||
},
|
||||
"splitLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": false,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"logAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
"color": "#999999"
|
||||
|
||||
},
|
||||
"splitLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": false,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeAxis": {
|
||||
"axisLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": "#cccccc"
|
||||
}
|
||||
},
|
||||
"axisTick": {
|
||||
"show": false,
|
||||
"lineStyle": {
|
||||
"color": "#333"
|
||||
}
|
||||
},
|
||||
"axisLabel": {
|
||||
"show": true,
|
||||
|
||||
"color": "#999999"
|
||||
|
||||
},
|
||||
"splitLine": {
|
||||
"show": true,
|
||||
"lineStyle": {
|
||||
"color": [
|
||||
"#eeeeee"
|
||||
]
|
||||
}
|
||||
},
|
||||
"splitArea": {
|
||||
"show": false,
|
||||
"areaStyle": {
|
||||
"color": [
|
||||
"rgba(250,250,250,0.05)",
|
||||
"rgba(200,200,200,0.02)"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"toolbox": {
|
||||
"iconStyle": {
|
||||
"borderColor": "#999999"
|
||||
},
|
||||
"emphasis": {
|
||||
"iconStyle": {
|
||||
"borderColor": "#666666"
|
||||
}
|
||||
}
|
||||
},
|
||||
"legend": {
|
||||
"textStyle": {
|
||||
"color": "#999999"
|
||||
}
|
||||
},
|
||||
"tooltip": {
|
||||
"axisPointer": {
|
||||
"lineStyle": {
|
||||
"color": "#cccccc",
|
||||
"width": 1
|
||||
},
|
||||
"crossStyle": {
|
||||
"color": "#cccccc",
|
||||
"width": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"timeline": {
|
||||
"lineStyle": {
|
||||
"color": "#626c91",
|
||||
"width": 1
|
||||
},
|
||||
"itemStyle": {
|
||||
"color": "#626c91",
|
||||
"borderWidth": 1
|
||||
|
||||
},
|
||||
"controlStyle": {
|
||||
"color": "#626c91",
|
||||
"borderColor": "#626c91",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"checkpointStyle": {
|
||||
"color": "#3fb1e3",
|
||||
"borderColor": "rgba(63,177,227,0.15)"
|
||||
},
|
||||
"label": {
|
||||
"color": "#626c91"
|
||||
},
|
||||
"emphasis": {
|
||||
"itemStyle": {
|
||||
"color": "#626c91"
|
||||
},
|
||||
"controlStyle": {
|
||||
"color": "#626c91",
|
||||
"borderColor": "#626c91",
|
||||
"borderWidth": 0.5
|
||||
},
|
||||
"label": {
|
||||
"color": "#626c91"
|
||||
}
|
||||
}
|
||||
},
|
||||
"visualMap": {
|
||||
"color": [
|
||||
"#2a99c9",
|
||||
"#afe8ff"
|
||||
]
|
||||
},
|
||||
"dataZoom": {
|
||||
"backgroundColor": "rgba(255,255,255,0)",
|
||||
"dataBackgroundColor": "rgba(222,222,222,1)",
|
||||
"fillerColor": "rgba(114,230,212,0.25)",
|
||||
"handleColor": "#cccccc",
|
||||
"handleSize": "100%",
|
||||
"textStyle": {
|
||||
"color": "#999999"
|
||||
}
|
||||
},
|
||||
"markPoint": {
|
||||
"label": {
|
||||
"color": "#ffffff"
|
||||
},
|
||||
"emphasis": {
|
||||
"label": {
|
||||
"color": "#ffffff"
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
508
static/component/pear/module/extends/nprogress.js
Normal file
@@ -0,0 +1,508 @@
|
||||
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress
|
||||
* @license MIT */
|
||||
|
||||
;(function (root, factory) {
|
||||
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define(factory);
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = factory();
|
||||
} else {
|
||||
root.NProgress = factory();
|
||||
}
|
||||
|
||||
})(this, function () {
|
||||
var NProgress = {};
|
||||
|
||||
NProgress.version = '0.2.0';
|
||||
|
||||
var Settings = NProgress.settings = {
|
||||
minimum: 0.08,
|
||||
easing: 'linear',
|
||||
positionUsing: '',
|
||||
speed: 200,
|
||||
trickle: true,
|
||||
trickleSpeed: 200,
|
||||
showSpinner: true,
|
||||
barSelector: '[role="bar"]',
|
||||
spinnerSelector: '[role="spinner"]',
|
||||
parent: 'body',
|
||||
template: '<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
|
||||
};
|
||||
|
||||
/**
|
||||
* Updates configuration.
|
||||
*
|
||||
* NProgress.configure({
|
||||
* minimum: 0.1
|
||||
* });
|
||||
*/
|
||||
NProgress.configure = function (options) {
|
||||
var key, value;
|
||||
for (key in options) {
|
||||
value = options[key];
|
||||
if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;
|
||||
}
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Last number.
|
||||
*/
|
||||
|
||||
NProgress.status = null;
|
||||
|
||||
/**
|
||||
* Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.
|
||||
*
|
||||
* NProgress.set(0.4);
|
||||
* NProgress.set(1.0);
|
||||
*/
|
||||
|
||||
NProgress.set = function (n) {
|
||||
var started = NProgress.isStarted();
|
||||
|
||||
n = clamp(n, Settings.minimum, 1);
|
||||
NProgress.status = (n === 1 ? null : n);
|
||||
|
||||
var progress = NProgress.render(!started),
|
||||
bar = progress.querySelector(Settings.barSelector),
|
||||
speed = Settings.speed,
|
||||
ease = Settings.easing;
|
||||
|
||||
progress.offsetWidth; /* Repaint */
|
||||
|
||||
queue(function (next) {
|
||||
// Set positionUsing if it hasn't already been set
|
||||
if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();
|
||||
|
||||
// Add transition
|
||||
css(bar, barPositionCSS(n, speed, ease));
|
||||
|
||||
if (n === 1) {
|
||||
// Fade out
|
||||
css(progress, {
|
||||
transition: 'none',
|
||||
opacity: 1
|
||||
});
|
||||
progress.offsetWidth; /* Repaint */
|
||||
|
||||
setTimeout(function () {
|
||||
css(progress, {
|
||||
transition: 'all ' + speed + 'ms linear',
|
||||
opacity: 0
|
||||
});
|
||||
setTimeout(function () {
|
||||
NProgress.remove();
|
||||
next();
|
||||
}, speed);
|
||||
}, speed);
|
||||
} else {
|
||||
setTimeout(next, speed);
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
NProgress.isStarted = function () {
|
||||
return typeof NProgress.status === 'number';
|
||||
};
|
||||
|
||||
/**
|
||||
* Shows the progress bar.
|
||||
* This is the same as setting the status to 0%, except that it doesn't go backwards.
|
||||
*
|
||||
* NProgress.start();
|
||||
*
|
||||
*/
|
||||
NProgress.start = function () {
|
||||
if (!NProgress.status) NProgress.set(0);
|
||||
|
||||
var work = function () {
|
||||
setTimeout(function () {
|
||||
if (!NProgress.status) return;
|
||||
NProgress.trickle();
|
||||
work();
|
||||
}, Settings.trickleSpeed);
|
||||
};
|
||||
|
||||
if (Settings.trickle) work();
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Hides the progress bar.
|
||||
* This is the *sort of* the same as setting the status to 100%, with the
|
||||
* difference being `done()` makes some placebo effect of some realistic motion.
|
||||
*
|
||||
* NProgress.done();
|
||||
*
|
||||
* If `true` is passed, it will show the progress bar even if its hidden.
|
||||
*
|
||||
* NProgress.done(true);
|
||||
*/
|
||||
|
||||
NProgress.done = function (force) {
|
||||
if (!force && !NProgress.status) return this;
|
||||
|
||||
return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);
|
||||
};
|
||||
|
||||
/**
|
||||
* Increments by a random amount.
|
||||
*/
|
||||
|
||||
NProgress.inc = function (amount) {
|
||||
var n = NProgress.status;
|
||||
|
||||
if (!n) {
|
||||
return NProgress.start();
|
||||
} else if (n > 1) {
|
||||
return;
|
||||
} else {
|
||||
if (typeof amount !== 'number') {
|
||||
if (n >= 0 && n < 0.2) {
|
||||
amount = 0.1;
|
||||
} else if (n >= 0.2 && n < 0.5) {
|
||||
amount = 0.04;
|
||||
} else if (n >= 0.5 && n < 0.8) {
|
||||
amount = 0.02;
|
||||
} else if (n >= 0.8 && n < 0.99) {
|
||||
amount = 0.005;
|
||||
} else {
|
||||
amount = 0;
|
||||
}
|
||||
}
|
||||
|
||||
n = clamp(n + amount, 0, 0.994);
|
||||
return NProgress.set(n);
|
||||
}
|
||||
};
|
||||
|
||||
NProgress.trickle = function () {
|
||||
return NProgress.inc();
|
||||
};
|
||||
|
||||
/**
|
||||
* Waits for all supplied jQuery promises and
|
||||
* increases the progress as the promises resolve.
|
||||
*
|
||||
* @param $promise jQUery Promise
|
||||
*/
|
||||
(function () {
|
||||
var initial = 0, current = 0;
|
||||
|
||||
NProgress.promise = function ($promise) {
|
||||
if (!$promise || $promise.state() === "resolved") {
|
||||
return this;
|
||||
}
|
||||
|
||||
if (current === 0) {
|
||||
NProgress.start();
|
||||
}
|
||||
|
||||
initial++;
|
||||
current++;
|
||||
|
||||
$promise.always(function () {
|
||||
current--;
|
||||
if (current === 0) {
|
||||
initial = 0;
|
||||
NProgress.done();
|
||||
} else {
|
||||
NProgress.set((initial - current) / initial);
|
||||
}
|
||||
});
|
||||
|
||||
return this;
|
||||
};
|
||||
|
||||
})();
|
||||
|
||||
/**
|
||||
* (Internal) renders the progress bar markup based on the `template`
|
||||
* setting.
|
||||
*/
|
||||
|
||||
NProgress.render = function (fromStart) {
|
||||
if (NProgress.isRendered()) return document.getElementById('nprogress');
|
||||
|
||||
addClass(document.documentElement, 'nprogress-busy');
|
||||
|
||||
var progress = document.createElement('div');
|
||||
progress.id = 'nprogress';
|
||||
progress.innerHTML = Settings.template;
|
||||
|
||||
|
||||
var bar = progress.querySelector(Settings.barSelector),
|
||||
perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),
|
||||
parent = isDOM(Settings.parent)
|
||||
? Settings.parent
|
||||
: document.querySelector(Settings.parent),
|
||||
spinner
|
||||
|
||||
css(bar, {
|
||||
transition: 'all 0 linear',
|
||||
transform: 'translate3d(' + perc + '%,0,0)'
|
||||
});
|
||||
|
||||
if (!Settings.showSpinner) {
|
||||
spinner = progress.querySelector(Settings.spinnerSelector);
|
||||
spinner && removeElement(spinner);
|
||||
}
|
||||
|
||||
if (parent != document.body) {
|
||||
addClass(parent, 'nprogress-custom-parent');
|
||||
}
|
||||
|
||||
parent.appendChild(progress);
|
||||
return progress;
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes the element. Opposite of render().
|
||||
*/
|
||||
|
||||
NProgress.remove = function () {
|
||||
removeClass(document.documentElement, 'nprogress-busy');
|
||||
var parent = isDOM(Settings.parent)
|
||||
? Settings.parent
|
||||
: document.querySelector(Settings.parent)
|
||||
removeClass(parent, 'nprogress-custom-parent')
|
||||
var progress = document.getElementById('nprogress');
|
||||
progress && removeElement(progress);
|
||||
};
|
||||
|
||||
/**
|
||||
* Checks if the progress bar is rendered.
|
||||
*/
|
||||
|
||||
NProgress.isRendered = function () {
|
||||
return !!document.getElementById('nprogress');
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine which positioning CSS rule to use.
|
||||
*/
|
||||
|
||||
NProgress.getPositioningCSS = function () {
|
||||
// Sniff on document.body.style
|
||||
var bodyStyle = document.body.style;
|
||||
|
||||
// Sniff prefixes
|
||||
var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :
|
||||
('MozTransform' in bodyStyle) ? 'Moz' :
|
||||
('msTransform' in bodyStyle) ? 'ms' :
|
||||
('OTransform' in bodyStyle) ? 'O' : '';
|
||||
|
||||
if (vendorPrefix + 'Perspective' in bodyStyle) {
|
||||
// Modern browsers with 3D support, e.g. Webkit, IE10
|
||||
return 'translate3d';
|
||||
} else if (vendorPrefix + 'Transform' in bodyStyle) {
|
||||
// Browsers without 3D support, e.g. IE9
|
||||
return 'translate';
|
||||
} else {
|
||||
// Browsers without translate() support, e.g. IE7-8
|
||||
return 'margin';
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Helpers
|
||||
*/
|
||||
|
||||
function isDOM(obj) {
|
||||
if (typeof HTMLElement === 'object') {
|
||||
return obj instanceof HTMLElement
|
||||
}
|
||||
return (
|
||||
obj &&
|
||||
typeof obj === 'object' &&
|
||||
obj.nodeType === 1 &&
|
||||
typeof obj.nodeName === 'string'
|
||||
)
|
||||
}
|
||||
|
||||
function clamp(n, min, max) {
|
||||
if (n < min) return min;
|
||||
if (n > max) return max;
|
||||
return n;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) converts a percentage (`0..1`) to a bar translateX
|
||||
* percentage (`-100%..0%`).
|
||||
*/
|
||||
|
||||
function toBarPerc(n) {
|
||||
return (-1 + n) * 100;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* (Internal) returns the correct CSS for changing the bar's
|
||||
* position given an n percentage, and speed and ease from Settings
|
||||
*/
|
||||
|
||||
function barPositionCSS(n, speed, ease) {
|
||||
var barCSS;
|
||||
|
||||
if (Settings.positionUsing === 'translate3d') {
|
||||
barCSS = {transform: 'translate3d(' + toBarPerc(n) + '%,0,0)'};
|
||||
} else if (Settings.positionUsing === 'translate') {
|
||||
barCSS = {transform: 'translate(' + toBarPerc(n) + '%,0)'};
|
||||
} else {
|
||||
barCSS = {'margin-left': toBarPerc(n) + '%'};
|
||||
}
|
||||
|
||||
barCSS.transition = 'all ' + speed + 'ms ' + ease;
|
||||
|
||||
return barCSS;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) Queues a function to be executed.
|
||||
*/
|
||||
|
||||
var queue = (function () {
|
||||
var pending = [];
|
||||
|
||||
function next() {
|
||||
var fn = pending.shift();
|
||||
if (fn) {
|
||||
fn(next);
|
||||
}
|
||||
}
|
||||
|
||||
return function (fn) {
|
||||
pending.push(fn);
|
||||
if (pending.length == 1) next();
|
||||
};
|
||||
})();
|
||||
|
||||
/**
|
||||
* (Internal) Applies css properties to an element, similar to the jQuery
|
||||
* css method.
|
||||
*
|
||||
* While this helper does assist with vendor prefixed property names, it
|
||||
* does not perform any manipulation of values prior to setting styles.
|
||||
*/
|
||||
|
||||
var css = (function () {
|
||||
var cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'],
|
||||
cssProps = {};
|
||||
|
||||
function camelCase(string) {
|
||||
return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function (match, letter) {
|
||||
return letter.toUpperCase();
|
||||
});
|
||||
}
|
||||
|
||||
function getVendorProp(name) {
|
||||
var style = document.body.style;
|
||||
if (name in style) return name;
|
||||
|
||||
var i = cssPrefixes.length,
|
||||
capName = name.charAt(0).toUpperCase() + name.slice(1),
|
||||
vendorName;
|
||||
while (i--) {
|
||||
vendorName = cssPrefixes[i] + capName;
|
||||
if (vendorName in style) return vendorName;
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
function getStyleProp(name) {
|
||||
name = camelCase(name);
|
||||
return cssProps[name] || (cssProps[name] = getVendorProp(name));
|
||||
}
|
||||
|
||||
function applyCss(element, prop, value) {
|
||||
prop = getStyleProp(prop);
|
||||
element.style[prop] = value;
|
||||
}
|
||||
|
||||
return function (element, properties) {
|
||||
var args = arguments,
|
||||
prop,
|
||||
value;
|
||||
|
||||
if (args.length == 2) {
|
||||
for (prop in properties) {
|
||||
value = properties[prop];
|
||||
if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);
|
||||
}
|
||||
} else {
|
||||
applyCss(element, args[1], args[2]);
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
/**
|
||||
* (Internal) Determines if an element or space separated list of class names contains a class name.
|
||||
*/
|
||||
|
||||
function hasClass(element, name) {
|
||||
var list = typeof element == 'string' ? element : classList(element);
|
||||
return list.indexOf(' ' + name + ' ') >= 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) Adds a class to an element.
|
||||
*/
|
||||
|
||||
function addClass(element, name) {
|
||||
var oldList = classList(element),
|
||||
newList = oldList + name;
|
||||
|
||||
if (hasClass(oldList, name)) return;
|
||||
|
||||
// Trim the opening space.
|
||||
element.className = newList.substring(1);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) Removes a class from an element.
|
||||
*/
|
||||
|
||||
function removeClass(element, name) {
|
||||
var oldList = classList(element),
|
||||
newList;
|
||||
|
||||
if (!hasClass(element, name)) return;
|
||||
|
||||
// Replace the class name.
|
||||
newList = oldList.replace(' ' + name + ' ', ' ');
|
||||
|
||||
// Trim the opening and closing spaces.
|
||||
element.className = newList.substring(1, newList.length - 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) Gets a space separated list of the class names on the element.
|
||||
* The list is wrapped with a single space on each end to facilitate finding
|
||||
* matches within the list.
|
||||
*/
|
||||
|
||||
function classList(element) {
|
||||
return (' ' + (element && element.className || '') + ' ').replace(/\s+/gi, ' ');
|
||||
}
|
||||
|
||||
/**
|
||||
* (Internal) Removes an element from the DOM.
|
||||
*/
|
||||
|
||||
function removeElement(element) {
|
||||
element && element.parentNode && element.parentNode.removeChild(element);
|
||||
}
|
||||
|
||||
return NProgress;
|
||||
});
|
||||
|
||||
layui.define([], function (exports) {
|
||||
exports('nprogress', NProgress);
|
||||
});
|
||||
47
static/component/pear/module/extends/popup.js
Normal file
@@ -0,0 +1,47 @@
|
||||
layui.define(['layer'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'popup',
|
||||
layer = layui.layer;
|
||||
|
||||
var popup = new function () {
|
||||
|
||||
this.success = function (msg) {
|
||||
layer.msg(msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
})
|
||||
},
|
||||
this.failure = function (msg) {
|
||||
layer.msg(msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
})
|
||||
},
|
||||
this.warning = function (msg) {
|
||||
layer.msg(msg, {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
})
|
||||
},
|
||||
this.success = function (msg, callback) {
|
||||
layer.msg(msg, {
|
||||
icon: 1,
|
||||
time: 1000
|
||||
}, callback);
|
||||
},
|
||||
this.failure = function (msg, callback) {
|
||||
layer.msg(msg, {
|
||||
icon: 2,
|
||||
time: 1000
|
||||
}, callback);
|
||||
},
|
||||
this.warming = function (msg, callback) {
|
||||
layer.msg(msg, {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
}, callback);
|
||||
}
|
||||
};
|
||||
exports(MOD_NAME, popup);
|
||||
})
|
||||
1249
static/component/pear/module/extends/toast.js
Normal file
2072
static/component/pear/module/extends/yaml.js
Normal file
60
static/component/pear/module/fullscreen.js
Normal file
@@ -0,0 +1,60 @@
|
||||
layui.define(['jquery', 'element'],
|
||||
function (exports) {
|
||||
|
||||
var $ = layui.jquery;
|
||||
var defer = $.Deferred();
|
||||
var fullScreen = new function () {
|
||||
|
||||
this.func = null;
|
||||
|
||||
this.onFullchange = function (func) {
|
||||
this.func = func;
|
||||
var evts = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];
|
||||
for (var i = 0; i < evts.length && func; i++) {
|
||||
window.addEventListener(evts[i], this.func);
|
||||
}
|
||||
}
|
||||
|
||||
this.fullScreen = function (dom) {
|
||||
var docElm = dom && document.querySelector(dom) || document.documentElement;
|
||||
if (docElm.requestFullscreen) {
|
||||
docElm.requestFullscreen();
|
||||
} else if (docElm.mozRequestFullScreen) {
|
||||
docElm.mozRequestFullScreen();
|
||||
} else if (docElm.webkitRequestFullScreen) {
|
||||
docElm.webkitRequestFullScreen();
|
||||
} else if (docElm.msRequestFullscreen) {
|
||||
docElm.msRequestFullscreen();
|
||||
} else {
|
||||
defer.reject("");
|
||||
}
|
||||
defer.resolve("返回值");
|
||||
return defer.promise();
|
||||
}
|
||||
|
||||
this.fullClose = function () {
|
||||
if (this.isFullscreen()) {
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.mozCancelFullScreen) {
|
||||
document.mozCancelFullScreen();
|
||||
} else if (document.webkitCancelFullScreen) {
|
||||
document.webkitCancelFullScreen();
|
||||
} else if (document.msExitFullscreen) {
|
||||
document.msExitFullscreen();
|
||||
}
|
||||
}
|
||||
defer.resolve("返回值");
|
||||
return defer.promise();
|
||||
}
|
||||
|
||||
this.isFullscreen = function () {
|
||||
return document.fullscreenElement ||
|
||||
document.msFullscreenElement ||
|
||||
document.mozFullScreenElement ||
|
||||
document.webkitFullscreenElement || false;
|
||||
}
|
||||
};
|
||||
|
||||
exports('fullscreen', fullScreen);
|
||||
})
|
||||
537
static/component/pear/module/menu.js
Normal file
@@ -0,0 +1,537 @@
|
||||
layui.define(['table', 'jquery', 'element'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'menu',
|
||||
$ = layui.jquery,
|
||||
element = layui.element;
|
||||
|
||||
var menu = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
menu.prototype.render = function (opt) {
|
||||
|
||||
var option = {
|
||||
elem: opt.elem,
|
||||
async: opt.async || true,
|
||||
parseData: opt.parseData,
|
||||
url: opt.url,
|
||||
method: opt.method ? opt.method : "GET",
|
||||
defaultOpen: opt.defaultOpen,
|
||||
defaultSelect: opt.defaultSelect,
|
||||
control: opt.control,
|
||||
controlWidth: opt.controlWidth ? opt.controlWidth : "auto",
|
||||
defaultMenu: opt.defaultMenu || 0,
|
||||
accordion: opt.accordion,
|
||||
height: opt.height || "100%",
|
||||
theme: opt.theme || "dark-theme",
|
||||
data: opt.data ? opt.data : [],
|
||||
change: opt.change ? opt.change : function () {
|
||||
},
|
||||
done: opt.done ? opt.done : function () {
|
||||
}
|
||||
}
|
||||
|
||||
var tempDone = option.done;
|
||||
|
||||
option.done = function () {
|
||||
if (option.control) {
|
||||
rationalizeHeaderControlWidthAuto(option);
|
||||
}
|
||||
tempDone();
|
||||
}
|
||||
|
||||
if (option.async) {
|
||||
if (option.method === "GET") {
|
||||
getData(option.url).then(function (data) {
|
||||
option.data = data;
|
||||
renderMenu(option);
|
||||
});
|
||||
} else {
|
||||
postData(option.url).then(function (data) {
|
||||
option.data = data;
|
||||
renderMenu(option);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
window.setTimeout(function () {
|
||||
renderMenu(option);
|
||||
}, 500);
|
||||
}
|
||||
|
||||
$("#" + opt.elem).height(option.height)
|
||||
|
||||
setTimeout(function () {
|
||||
$("#" + opt.control + " .control").on("mousewheel DOMMouseScroll", function (event) {
|
||||
|
||||
var delta = (event.originalEvent.wheelDelta && (event.originalEvent.wheelDelta > 0 ? 1 : -1)) || // chrome & ie
|
||||
(event.originalEvent.detail && (event.originalEvent.detail > 0 ? -1 : 1)); // firefox
|
||||
|
||||
if (delta > 0) {
|
||||
for (var num = 1; num < 20; num++) {
|
||||
setTimeout(function () {
|
||||
if ($("#" + opt.control + " .control ul").css('left').replace("px", "") < 0) {
|
||||
$("#" + opt.control + " .control ul").css("left", "+=2px");
|
||||
}
|
||||
}, 10)
|
||||
}
|
||||
} else if (delta < 0) {
|
||||
if (((Number)($("#" + opt.control + " .control ul").css("left").replace("px", "")) + ($("#" + opt.control + " .control ul").width() - $("#" + opt.control + " .control").width())) > 0) {
|
||||
for (var num = 1; num < 20; num++) {
|
||||
setTimeout(function () {
|
||||
$("#" + opt.control + " .control ul").css("left", "-=2px");
|
||||
}, 10)
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}, 1000)
|
||||
|
||||
return new menu(option);
|
||||
}
|
||||
|
||||
menu.prototype.cache = function () {
|
||||
return this.option.data;
|
||||
}
|
||||
|
||||
menu.prototype.click = function (clickEvent) {
|
||||
var _this = this;
|
||||
$("body").on("click", "#" + _this.option.elem + " .site-demo-active", function () {
|
||||
var dom = $(this);
|
||||
var data = {
|
||||
menuId: dom.attr("menu-id"),
|
||||
menuTitle: dom.attr("menu-title"),
|
||||
menuPath: dom.attr("menu-title"),
|
||||
menuIcon: dom.attr("menu-icon"),
|
||||
menuUrl: dom.attr("menu-url"),
|
||||
menuType: dom.attr("menu-type"),
|
||||
menuOpenType: dom.attr("menu-open-type")
|
||||
};
|
||||
var doms = hash(dom);
|
||||
if (doms != null) {
|
||||
if (doms.text() != '') {
|
||||
data['menuPath'] = doms.find("span").text() + " / " + data['menuPath'];
|
||||
}
|
||||
}
|
||||
if (doms != null) {
|
||||
var domss = hash(doms);
|
||||
if (domss != null) {
|
||||
if (domss.text() != '') {
|
||||
data['menuPath'] = domss.find("span").text() + " / " + data['menuPath'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if (domss != null) {
|
||||
var domsss = hash(domss);
|
||||
if (domsss != null) {
|
||||
if (domsss.text() != '') {
|
||||
data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath'];
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($("#" + _this.option.elem).is(".pear-nav-mini")) {
|
||||
if (_this.option.accordion) {
|
||||
activeMenus = $(this).parent().parent().parent().children("a");
|
||||
} else {
|
||||
activeMenus.push($(this).parent().parent().parent().children("a"));
|
||||
}
|
||||
}
|
||||
clickEvent(dom, data);
|
||||
})
|
||||
}
|
||||
|
||||
function hash(dom) {
|
||||
var d = dom.parent().parent().prev();
|
||||
if (d.prop("tagName") === "UL") {
|
||||
return null;
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
menu.prototype.skin = function (skin) {
|
||||
var menu = $(".pear-nav-tree[lay-filter='" + this.option.elem + "']").parent();
|
||||
menu.removeClass("dark-theme");
|
||||
menu.removeClass("light-theme");
|
||||
menu.addClass(skin);
|
||||
}
|
||||
|
||||
menu.prototype.selectItem = function (pearId) {
|
||||
if (this.option.control != false) {
|
||||
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".layui-side-scroll ").find("ul").css({
|
||||
display: "none"
|
||||
});
|
||||
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".layui-side-scroll ").find(".layui-this").removeClass(
|
||||
"layui-this");
|
||||
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents("ul").css({
|
||||
display: "block"
|
||||
});
|
||||
var controlId = $("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents("ul").attr("pear-id");
|
||||
if (controlId != undefined) {
|
||||
$("#" + this.option.control).find(".layui-this").removeClass("layui-this");
|
||||
$("#" + this.option.control).find("[pear-id='" + controlId + "']").addClass("layui-this");
|
||||
}
|
||||
}
|
||||
|
||||
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents(".pear-nav-tree").find(".layui-this").removeClass(
|
||||
"layui-this");
|
||||
if (!$("#" + this.option.elem).is(".pear-nav-mini")) {
|
||||
var openEle = null;
|
||||
var openEleHeight = 0;
|
||||
$($("#" + this.option.elem + " a[menu-id='" + pearId + "']").parents('.layui-nav-child').get().reverse()).each(function () {
|
||||
if (!$(this).parent().is('.layui-nav-itemed')) {
|
||||
if (openEleHeight == 0) {
|
||||
openEle = $(this);
|
||||
} else {
|
||||
$(this).parent().addClass('layui-nav-itemed');
|
||||
$(this).css({
|
||||
height: 'auto',
|
||||
});
|
||||
}
|
||||
openEleHeight += $(this).children("dd").length * 48;
|
||||
}
|
||||
});
|
||||
if (this.option.accordion) {
|
||||
if (openEleHeight > 0) {
|
||||
var currentDom = openEle.parent().siblings('.layui-nav-itemed').children(".layui-nav-child");
|
||||
currentDom.animate({
|
||||
height: "0px"
|
||||
}, 240, function () {
|
||||
currentDom.css({
|
||||
height: "auto"
|
||||
});
|
||||
$(this).parent().removeClass("layui-nav-itemed");
|
||||
$(this).find('.layui-nav-itemed').removeClass("layui-nav-itemed");
|
||||
});
|
||||
}
|
||||
}
|
||||
if (openEleHeight > 0) {
|
||||
openEle.parent().addClass("layui-nav-itemed");
|
||||
openEle.height(0);
|
||||
openEle.animate({
|
||||
height: openEleHeight + "px"
|
||||
}, 240, function () {
|
||||
$(this).css({height: 'auto'});
|
||||
});
|
||||
}
|
||||
}
|
||||
$("#" + this.option.elem + " a[menu-id='" + pearId + "']").parent().addClass("layui-this");
|
||||
}
|
||||
|
||||
var activeMenus;
|
||||
menu.prototype.collapse = function (time) {
|
||||
var elem = this.option.elem;
|
||||
var config = this.option;
|
||||
if ($("#" + this.option.elem).is(".pear-nav-mini")) {
|
||||
$.each(activeMenus, function (i, item) {
|
||||
$("#" + elem + " a[menu-id='" + $(this).attr("menu-id") + "']").parent().addClass("layui-nav-itemed");
|
||||
})
|
||||
$("#" + this.option.elem).removeClass("pear-nav-mini");
|
||||
$("#" + this.option.elem).animate({
|
||||
width: "220px"
|
||||
}, 180);
|
||||
isHoverMenu(false, config);
|
||||
var that = this;
|
||||
$("#" + this.option.elem)
|
||||
.promise()
|
||||
.done(function () {
|
||||
if (that.option.control) {
|
||||
rationalizeHeaderControlWidth(that.option);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
activeMenus = $("#" + this.option.elem).find(".layui-nav-itemed>a");
|
||||
$("#" + this.option.elem).find(".layui-nav-itemed").removeClass("layui-nav-itemed");
|
||||
$("#" + this.option.elem).addClass("pear-nav-mini");
|
||||
$("#" + this.option.elem).animate({
|
||||
width: "60px"
|
||||
}, 400);
|
||||
var that = this;
|
||||
$("#" + this.option.elem)
|
||||
.promise()
|
||||
.done(function () {
|
||||
isHoverMenu(true, config);
|
||||
if (that.option.control) {
|
||||
rationalizeHeaderControlWidth(that.option);
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function getData(url) {
|
||||
var defer = $.Deferred();
|
||||
var symbol = url.indexOf('?') !== -1 ? '&' : '?';
|
||||
$.get(url + symbol + "fresh=" + Math.random(), function (result) {
|
||||
defer.resolve(result)
|
||||
});
|
||||
return defer.promise();
|
||||
}
|
||||
|
||||
function postData(url) {
|
||||
var defer = $.Deferred();
|
||||
var symbol = url.indexOf('?') !== -1 ? '&' : '?';
|
||||
$.post(url + symbol + "fresh=" + Math.random(), function (result) {
|
||||
defer.resolve(result)
|
||||
}, "json");
|
||||
return defer.promise();
|
||||
}
|
||||
|
||||
function renderMenu(option) {
|
||||
if (option.parseData != false) {
|
||||
option.parseData(option.data);
|
||||
}
|
||||
if (option.data.length > 0) {
|
||||
if (option.control != false) {
|
||||
createMenuAndControl(option);
|
||||
} else {
|
||||
createMenu(option);
|
||||
}
|
||||
}
|
||||
element.init();
|
||||
option.done();
|
||||
}
|
||||
|
||||
function createMenu(option) {
|
||||
var menuHtml = '<div style="height:100%!important;" class="pear-side-scroll layui-side-scroll ' + option.theme + '"><ul lay-filter="' + option.elem +
|
||||
'" class="layui-nav arrow pear-menu layui-nav-tree pear-nav-tree" ' + (option.accordion ? "lay-accordion" : "") + '>'
|
||||
$.each(option.data, function (i, item) {
|
||||
var content = '<li class="layui-nav-item" >';
|
||||
if (i == option.defaultOpen) {
|
||||
content = '<li class="layui-nav-item layui-nav-itemed" >';
|
||||
}
|
||||
var href = "javascript:;";
|
||||
var target = "";
|
||||
var className = "site-demo-active"
|
||||
if (item.openType == "_blank" && item.type == 1) {
|
||||
href = item.href;
|
||||
target = "target='_blank'";
|
||||
className = "";
|
||||
}
|
||||
if (item.type == 0) {
|
||||
// 创 建 目 录 结 构
|
||||
content += '<a href="javascript:;" menu-type="' + item.type + '" menu-id="' + item.id + '" href="' + href +
|
||||
'" ' + target + '><i class="' + item.icon + '"></i><span>' + item.title +
|
||||
'</span></a>';
|
||||
} else if (item.type == 1) {
|
||||
content += '<a class="' + className + '" menu-type="' + item.type + '" menu-open-type="' + item.openType + '" menu-url="' + item.href + '" menu-id="' +
|
||||
item.id +
|
||||
'" menu-title="' + item.title + '" href="' + href + '" ' + target + '><i class="' + item.icon +
|
||||
'"></i><span>' + item.title + '</span></a>';
|
||||
}
|
||||
// 调 用 递 归 方 法 加 载 无 限 层 级 的 子 菜 单
|
||||
content += loadchild(item);
|
||||
// 结 束 一 个 根 菜 单 项
|
||||
content += '</li>';
|
||||
menuHtml += content;
|
||||
});
|
||||
// 结 束 菜 单 结 构 的 初 始 化
|
||||
menuHtml += "</ul></div>";
|
||||
// 将 菜 单 拼 接 到 初 始 化 容 器 中
|
||||
$("#" + option.elem).html(menuHtml);
|
||||
}
|
||||
|
||||
function createMenuAndControl(option) {
|
||||
var control = '<div style="width: ' + option.controlWidth + 'px;white-space: nowrap;overflow-x: scroll;overflow: hidden;" class="control"><ul class="layui-nav pear-nav-control pc layui-hide-xs" style="width: fit-content;">';
|
||||
var controlPe = '<ul class="layui-nav pear-nav-control layui-hide-sm">';
|
||||
// 声 明 头 部
|
||||
var menu = '<div class="layui-side-scroll ' + option.theme + '">'
|
||||
// 开 启 同 步 操 作
|
||||
var index = 0;
|
||||
var controlItemPe = '<dl class="layui-nav-child">';
|
||||
$.each(option.data, function (i, item) {
|
||||
var menuItem = '';
|
||||
var controlItem = '';
|
||||
if (i === option.defaultMenu) {
|
||||
controlItem = '<li pear-href="' + item.href + '" pear-title="' + item.title + '" pear-id="' + item.id +
|
||||
'" class="layui-this layui-nav-item"><a href="#">' + item.title + '</a></li>';
|
||||
menuItem = '<ul pear-id="' + item.id + '" lay-filter="' + option.elem +
|
||||
'" class="layui-nav arrow layui-nav-tree pear-nav-tree">';
|
||||
|
||||
controlPe += '<li class="layui-nav-item"><a class="pe-title" href="javascript:;" >' + item.title + '</a>';
|
||||
|
||||
controlItemPe += '<dd pear-href="' + item.href + '" pear-title="' + item.title + '" pear-id="' + item.id +
|
||||
'"><a href="javascript:void(0);">' + item.title + '</a></dd>';
|
||||
} else {
|
||||
|
||||
controlItem = '<li pear-href="' + item.href + '" pear-title="' + item.title + '" pear-id="' + item.id +
|
||||
'" class="layui-nav-item"><a href="#">' + item.title + '</a></li>';
|
||||
|
||||
menuItem = '<ul style="display:none" pear-id="' + item.id + '" lay-filter="' + option.elem +
|
||||
'" class="layui-nav arrow layui-nav-tree pear-nav-tree">';
|
||||
|
||||
controlItemPe += '<dd pear-href="' + item.href + '" pear-title="' + item.title + '" pear-id="' + item.id +
|
||||
'"><a href="javascript:void(0);">' + item.title + '</a></dd>';
|
||||
|
||||
}
|
||||
index++;
|
||||
$.each(item.children, function (i, note) {
|
||||
// 创 建 每 一 个 菜 单 项
|
||||
var content = '<li class="layui-nav-item" >';
|
||||
var href = "javascript:;";
|
||||
var target = "";
|
||||
var className = "site-demo-active";
|
||||
if (note.openType == "_blank" && note.type == 1) {
|
||||
href = note.href;
|
||||
target = "target='_blank'";
|
||||
className = "";
|
||||
}
|
||||
// 判 断 菜 单 类 型 0 是 不可跳转的目录 1 是 可 点 击 跳 转 的 菜 单
|
||||
if (note.type == 0) {
|
||||
// 创 建 目 录 结 构
|
||||
content += '<a href="' + href + '" ' + target + ' menu-type="' + note.type + '" menu-id="' + note.id +
|
||||
'" ><i class="' + note.icon + '"></i><span>' + note.title +
|
||||
'</span></a>';
|
||||
} else if (note.type == 1) {
|
||||
// 创 建 菜 单 结 构
|
||||
content += '<a ' + target + ' class="' + className + '" menu-open-type="' + note.openType + '" menu-type="' + note.type + '" menu-url="' + note.href +
|
||||
'" menu-id="' + note.id +
|
||||
'" menu-title="' + note.title + '" href="' + href + '"><i class="' + note.icon +
|
||||
'"></i><span>' + note.title + '</span></a>';
|
||||
}
|
||||
content += loadchild(note);
|
||||
content += '</li>';
|
||||
menuItem += content;
|
||||
})
|
||||
menu += menuItem + '</ul>';
|
||||
control += controlItem;
|
||||
})
|
||||
controlItemPe += "</li></dl></ul>"
|
||||
controlPe += controlItemPe;
|
||||
$("#" + option.control).html(control + "</div>");
|
||||
$("#" + option.control).append(controlPe);
|
||||
$("#" + option.elem).html(menu);
|
||||
$("#" + option.control + " .pear-nav-control").on("click", "[pear-id]", function () {
|
||||
$("#" + option.elem).find(".pear-nav-tree").css({
|
||||
display: 'none'
|
||||
});
|
||||
$("#" + option.elem).find(".pear-nav-tree[pear-id='" + $(this).attr("pear-id") + "']").css({
|
||||
display: 'block'
|
||||
});
|
||||
$("#" + option.control).find(".pe-title").html($(this).attr("pear-title"));
|
||||
$("#" + option.control).find("")
|
||||
option.change($(this).attr("pear-id"), $(this).attr("pear-title"), $(this).attr("pear-href"))
|
||||
})
|
||||
}
|
||||
|
||||
/** 加载子菜单 (递归)*/
|
||||
function loadchild(obj) {
|
||||
// 判 单 是 否 是 菜 单, 如 果 是 菜 单 直 接 返 回
|
||||
if (obj.type == 1) {
|
||||
return "";
|
||||
}
|
||||
// 创 建 子 菜 单 结 构
|
||||
var content = '<dl class="layui-nav-child">';
|
||||
// 如 果 嵌 套 不 等 于 空
|
||||
if (obj.children != null && obj.children.length > 0) {
|
||||
// 遍 历 子 项 目
|
||||
$.each(obj.children, function (i, note) {
|
||||
// 创 建 子 项 结 构
|
||||
content += '<dd>';
|
||||
var href = "javascript:;";
|
||||
var target = "";
|
||||
var className = "site-demo-active";
|
||||
if (note.openType == "_blank" && note.type == 1) {
|
||||
href = note.href;
|
||||
target = "target='_blank'";
|
||||
className = "";
|
||||
}
|
||||
// 判 断 子 项 类 型
|
||||
if (note.type == 0) {
|
||||
// 创 建 目 录 结 构
|
||||
content += '<a ' + target + ' href="' + href + '" menu-type="' + note.type + '" menu-id="' + note.id +
|
||||
'"><i class="' + note.icon + '"></i><span>' + note.title + '</span></a>';
|
||||
} else if (note.type == 1) {
|
||||
// 创 建 菜 单 结 构
|
||||
content += '<a ' + target + ' class="' + className + '" menu-open-type="' + note.openType + '" menu-type="' + note.type + '" menu-url="' + note.href +
|
||||
'" menu-id="' + note.id + '" menu-title="' + note.title + '" menu-icon="' + note.icon + '" href="' + href +
|
||||
'" ><i class="' + note.icon + '"></i><span>' + note.title + '</span></a>';
|
||||
}
|
||||
// 加 载 子 项 目 录
|
||||
content += loadchild(note);
|
||||
// 结 束 当 前 子 菜 单
|
||||
content += '</dd>';
|
||||
});
|
||||
// 封 装
|
||||
} else {
|
||||
content += '<dd style="background-color: transparent!important;"><a style="background-color: transparent!important;margin-left: 26px">目录为空</a></dd>';
|
||||
}
|
||||
content += '</dl>';
|
||||
return content;
|
||||
}
|
||||
|
||||
/** 二 级 悬 浮 菜 单*/
|
||||
function isHoverMenu(b, option) {
|
||||
if (b) {
|
||||
var navItem = "#" + option.elem + ".pear-nav-mini .layui-nav-item";
|
||||
var navChildDl = navItem + " .layui-nav-child>dl";
|
||||
var navChildDd = navItem + " .layui-nav-child>dd";
|
||||
|
||||
$(navItem + "," + navChildDd).mouseenter(function () {
|
||||
var _this = $(this);
|
||||
_this.siblings().find(".layui-nav-child")
|
||||
.removeClass("layui-nav-hover").css({
|
||||
left: 0,
|
||||
top: 0
|
||||
});
|
||||
_this.children(".layui-nav-child").addClass("layui-nav-hover");
|
||||
var height = $(window).height();
|
||||
var topLength = _this.offset().top;
|
||||
var thisHeight = _this.children(".layui-nav-child").height();
|
||||
if ((thisHeight + topLength) > height) {
|
||||
topLength = height - thisHeight - 10;
|
||||
}
|
||||
var left = _this.offset().left + 60;
|
||||
if (!_this.hasClass("layui-nav-item")) {
|
||||
left = _this.offset().left + _this.width();
|
||||
}
|
||||
_this.children(".layui-nav-child").offset({
|
||||
top: topLength,
|
||||
left: left
|
||||
});
|
||||
});
|
||||
|
||||
$(navItem + "," + navChildDl).mouseleave(function () {
|
||||
var _this = $(this);
|
||||
_this.closest('.layui-nav-item')
|
||||
.find(".layui-nav-child")
|
||||
.removeClass("layui-nav-hover")
|
||||
.css({
|
||||
left: 0,
|
||||
top: 0
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
$("#" + option.elem + " .layui-nav-item").off('mouseenter').unbind('mouseleave');
|
||||
$("#" + option.elem + " dd").off('mouseenter').unbind('mouseleave');
|
||||
}
|
||||
}
|
||||
|
||||
function rationalizeHeaderControlWidth(option) {
|
||||
var $headerControl = $("#" + option.control);
|
||||
var $nextEl = $headerControl.next();
|
||||
var rationalizeWidth;
|
||||
if ($nextEl.length) {
|
||||
rationalizeWidth = $nextEl.position().left - $headerControl.position().left;
|
||||
} else {
|
||||
rationalizeWidth = $headerControl.parent().innerWidth() - $headerControl.position().left;
|
||||
}
|
||||
|
||||
if (option.controlWidth && rationalizeWidth >= option.controlWidth) {
|
||||
rationalizeWidth = option.controlWidth;
|
||||
}
|
||||
$("#" + option.control + " .control").css({"width": rationalizeWidth, "transition": "width .15s"});
|
||||
}
|
||||
|
||||
function rationalizeHeaderControlWidthAuto(option) {
|
||||
$(window).on('resize', function () {
|
||||
rationalizeHeaderControlWidth(option);
|
||||
})
|
||||
$(document).ready(function () {
|
||||
setTimeout(() => {
|
||||
rationalizeHeaderControlWidth(option);
|
||||
}, 1000);
|
||||
});
|
||||
}
|
||||
|
||||
exports(MOD_NAME, new menu());
|
||||
})
|
||||
233
static/component/pear/module/menuSearch.js
Normal file
@@ -0,0 +1,233 @@
|
||||
layui.define(['jquery', 'tools'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Button component
|
||||
* */
|
||||
var MOD_NAME = 'menuSearch',
|
||||
tools = layui.tools,
|
||||
$ = layui.jquery;
|
||||
|
||||
var menuSearch = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Button start loading
|
||||
* */
|
||||
menuSearch.prototype.render = function (opt) {
|
||||
|
||||
var options = {
|
||||
select: opt.select,
|
||||
elem: opt.elem,
|
||||
dataProvider: opt.dataProvider,
|
||||
}
|
||||
|
||||
$('body').on("click", options.elem, function () {
|
||||
|
||||
var _html = [
|
||||
`<div class="menu-search-content">
|
||||
<div class="layui-form menu-search-input-wrapper">
|
||||
<div class=" layui-input-wrap layui-input-wrap-prefix">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-search"></i>
|
||||
</div>
|
||||
<input type="text" name="menuSearch" value="" placeholder="搜索菜单" autocomplete="off" class="layui-input" lay-affix="clear">
|
||||
</div>
|
||||
</div>
|
||||
<div class="menu-search-no-data">暂 无 信 息</div>
|
||||
<ul class="menu-search-list">
|
||||
</ul>
|
||||
<div class="menu-search-tips">
|
||||
<div>
|
||||
<span class="mr-1">选择</span><kbd class="mr-1 w-5"> ↑ </kbd><kbd class="mr-5 w-5"> ↓ </kbd>
|
||||
<span class="mr-1">确定</span><kbd class="mr-5"> Enter </kbd><span class="mr-1">关闭</span><kbd class="mr-1"> Esc </kbd>
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
].join('');
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
offset: "10%",
|
||||
area: ['600px'],
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
shadeClose: true,
|
||||
anim: 0,
|
||||
move: false,
|
||||
content: _html,
|
||||
success: function (layero, layeridx) {
|
||||
|
||||
var $layer = layero;
|
||||
var $content = $(layero).children('.layui-layer-content');
|
||||
var $input = $(".menu-search-input-wrapper input");
|
||||
var $noData = $(".menu-search-no-data");
|
||||
var $list = $(".menu-search-list");
|
||||
var menuData = options.dataProvider();
|
||||
|
||||
$layer.css("border-radius", "6px");
|
||||
$input.off("focus").focus();
|
||||
|
||||
// 搜索输入事件
|
||||
$input.off("input").on("input", tools.debounce(function () {
|
||||
var keywords = $input.val().trim();
|
||||
var filteredMenus = filterHandle(menuData, keywords);
|
||||
|
||||
if (filteredMenus.length) {
|
||||
var tiledMenus = tiledHandle(filteredMenus);
|
||||
var listHtml = createList(tiledMenus);
|
||||
$noData.css("display", "none");
|
||||
$list.html("").append(listHtml).children(":first").addClass("this")
|
||||
} else {
|
||||
$list.html("");
|
||||
$noData.css("display", "flex");
|
||||
}
|
||||
var currentHeight = $(".menu-search-content").outerHeight()
|
||||
$layer.css("height", currentHeight);
|
||||
$content.css("height", currentHeight);
|
||||
}, 500)
|
||||
)
|
||||
|
||||
// 列表点击事件
|
||||
$list.off("click").on("click", "li", function () {
|
||||
var id = $(this).attr("smenu-id");
|
||||
var title = $(this).attr("smenu-title");
|
||||
var url = $(this).attr("smenu-url");
|
||||
var type = $(this).attr("smenu-type");
|
||||
var openType = $(this).attr("smenu-open-type");
|
||||
|
||||
options.select({id, title, url, type, openType});
|
||||
|
||||
layer.close(layeridx);
|
||||
})
|
||||
|
||||
$list.off('mouseenter').on("mouseenter", "li", function () {
|
||||
$(".menu-search-list li.this").removeClass("this");
|
||||
$(this).addClass("this");
|
||||
}).off("mouseleave").on("mouseleave", "li", function () {
|
||||
$(this).removeClass("this");
|
||||
})
|
||||
|
||||
// 监听键盘事件
|
||||
$('.menu-search-content').off("keydown").keydown(function (e) {
|
||||
if (e.keyCode === 13 || e.keyCode === 32) {
|
||||
e.preventDefault();
|
||||
var that = $(".menu-search-list li.this");
|
||||
var id = that.attr("smenu-id");
|
||||
var title = that.attr("smenu-title");
|
||||
var url = that.attr("smenu-url");
|
||||
var type = that.attr("smenu-type");
|
||||
var openType = that.attr("smenu-open-type");
|
||||
|
||||
options.select({id, title, url, type, openType});
|
||||
|
||||
layer.close(layeridx);
|
||||
} else if (e.keyCode === 38) {
|
||||
e.preventDefault();
|
||||
var prevEl = $(".menu-search-list li.this").prev();
|
||||
$(".menu-search-list li.this").removeClass("this");
|
||||
if (prevEl.length !== 0) {
|
||||
prevEl.addClass("this");
|
||||
} else {
|
||||
$list.children().last().addClass("this");
|
||||
}
|
||||
} else if (e.keyCode === 40) {
|
||||
e.preventDefault();
|
||||
var nextEl = $(".menu-search-list li.this").next();
|
||||
$(".menu-search-list li.this").removeClass("this");
|
||||
if (nextEl.length !== 0) {
|
||||
nextEl.addClass("this");
|
||||
} else {
|
||||
$list.children().first().addClass("this");
|
||||
}
|
||||
} else if (e.keyCode === 27) {
|
||||
e.preventDefault();
|
||||
layer.close(layeridx);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
return new menuSearch(options);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 创建结果列表
|
||||
*/
|
||||
var createList = function (data) {
|
||||
var listHtml = '';
|
||||
$.each(data, function (index, item) {
|
||||
listHtml += `<li smenu-open-type="${item.info.openType}" smenu-id="${item.info.id}" smenu-icon="'${item.info.icon}" smenu-url="${item.info.href}" smenu-title="${item.info.title}" smenu-type="${item.info.type}">
|
||||
<span><i style="margin-right:10px" class="${item.info.icon}"></i>${item.path}</span>
|
||||
<i class="layui-icon layui-icon-right"></i>
|
||||
</li>`
|
||||
})
|
||||
return listHtml;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* Tree 转 path 列表
|
||||
*/
|
||||
var tiledHandle = function (data) {
|
||||
var tiledMenus = [];
|
||||
var treeTiled = function (data, content) {
|
||||
var path = "";
|
||||
var separator = " / ";
|
||||
if (!content) content = "";
|
||||
$.each(data, function (index, item) {
|
||||
if (item.children && item.children.length) {
|
||||
path += content + item.title + separator;
|
||||
var childPath = treeTiled(item.children, path);
|
||||
path += childPath;
|
||||
if (!childPath) path = ""; // 重置路径
|
||||
} else {
|
||||
path += content + item.title
|
||||
tiledMenus.push({path: path, info: item});
|
||||
path = ""; //重置路径
|
||||
}
|
||||
})
|
||||
return path;
|
||||
};
|
||||
treeTiled(data);
|
||||
|
||||
return tiledMenus;
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 查询匹配算法
|
||||
*/
|
||||
var filterHandle = function (filterData, val) {
|
||||
if (!val) return [];
|
||||
var filteredMenus = [];
|
||||
filterData = $.extend(true, {}, filterData);
|
||||
$.each(filterData, function (index, item) {
|
||||
if (item.children && item.children.length) {
|
||||
var children = filterHandle(item.children, val)
|
||||
var obj = $.extend({}, item, {children: children});
|
||||
if (children && children.length) {
|
||||
filteredMenus.push(obj);
|
||||
} else if (item.title.indexOf(val) >= 0) {
|
||||
item.children = []; // 父级匹配但子级不匹配,就去除子级
|
||||
filteredMenus.push($.extend({}, item));
|
||||
}
|
||||
} else if (item.title.indexOf(val) >= 0) {
|
||||
filteredMenus.push(item);
|
||||
}
|
||||
})
|
||||
return filteredMenus;
|
||||
}
|
||||
|
||||
exports(MOD_NAME, new menuSearch());
|
||||
});
|
||||
85
static/component/pear/module/messageCenter.js
Normal file
@@ -0,0 +1,85 @@
|
||||
layui.define(['table', 'jquery', 'element', 'dropdown'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'messageCenter',
|
||||
$ = layui.jquery,
|
||||
dropdown = layui.dropdown;
|
||||
|
||||
var message = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
message.prototype.render = function (opt) {
|
||||
var option = {
|
||||
elem: opt.elem,
|
||||
url: opt.url ? opt.url : false,
|
||||
height: opt.height,
|
||||
data: opt.data
|
||||
}
|
||||
if (option.url != false) {
|
||||
$.get(option.url, function (result) {
|
||||
const {code, success, data} = result;
|
||||
$(`${opt.elem}`).append(`<li class="layui-nav-item" lay-unselect="">
|
||||
<a href="#" class="notice layui-icon layui-icon-notice"></a>
|
||||
</li>`);
|
||||
if (code == 200 || success) {
|
||||
option.data = data;
|
||||
dropdown.render({
|
||||
elem: option.elem,
|
||||
align: "center",
|
||||
content: createHtml(option),
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
return new message(option);
|
||||
}
|
||||
|
||||
message.prototype.click = function (callback) {
|
||||
$("*[notice-id]").click(function (event) {
|
||||
event.preventDefault();
|
||||
var id = $(this).attr("notice-id");
|
||||
var title = $(this).attr("notice-title");
|
||||
var context = $(this).attr("notice-context");
|
||||
var form = $(this).attr("notice-form");
|
||||
callback(id, title, context, form);
|
||||
})
|
||||
}
|
||||
|
||||
function createHtml(option) {
|
||||
|
||||
var count = 0;
|
||||
var notice = '<div class="pear-message-center"><div class="layui-tab layui-tab-brief">'
|
||||
var noticeTitle = '<ul class="layui-tab-title">';
|
||||
var noticeContent = '<div class="layui-tab-content" style="height:' + option.height + ';overflow-x: hidden;padding:0px;">';
|
||||
|
||||
$.each(option.data, function (i, item) {
|
||||
|
||||
noticeTitle += `<li class="${i === 0 ? 'layui-this' : ''}">${item.title}</li>`;
|
||||
noticeContent += '<div class="layui-tab-item layui-show">';
|
||||
|
||||
|
||||
$.each(item.children, function (i, note) {
|
||||
count++;
|
||||
noticeContent += '<div class="message-item" notice-form="' + note.form + '" notice-context="' + note.context +
|
||||
'" notice-title="' + note.title + '" notice-id="' + note.id + '">';
|
||||
|
||||
noticeContent += '<img src="' + note.avatar + '"/><div style="display:inline-block;">' + note.title + '</div>' +
|
||||
'<div class="extra">' + note.time + '</div>' +
|
||||
'</div>';
|
||||
})
|
||||
|
||||
noticeContent += '</div>';
|
||||
})
|
||||
|
||||
noticeTitle += '</ul>';
|
||||
noticeContent += '</div>';
|
||||
notice += noticeTitle;
|
||||
notice += noticeContent;
|
||||
notice += "</div></div>"
|
||||
|
||||
return notice;
|
||||
}
|
||||
|
||||
exports(MOD_NAME, new message());
|
||||
})
|
||||
119
static/component/pear/module/page.js
Normal file
@@ -0,0 +1,119 @@
|
||||
layui.define(['jquery', 'element'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var $ = layui.jquery;
|
||||
var element = layui.element;
|
||||
|
||||
var page = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 创建 Page 页面
|
||||
*/
|
||||
page.prototype.render = function (opt) {
|
||||
var option = {
|
||||
elem: opt.elem,
|
||||
url: opt.url,
|
||||
width: opt.width || "100%",
|
||||
height: opt.height || "100%",
|
||||
title: opt.title
|
||||
}
|
||||
renderContent(option);
|
||||
return new page(option);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 切换 Page 页面
|
||||
*/
|
||||
page.prototype.changePage = function (options) {
|
||||
const $frame = $(`#${this.option.elem} .pear-page-content`);
|
||||
if (options.type === "_iframe") {
|
||||
$frame.html(`<iframe src='${options.href}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
|
||||
} else {
|
||||
$.ajax({
|
||||
url: options.href,
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
$frame.html(data)
|
||||
},
|
||||
error: function (xhr) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
$frame.attr("type", options.type);
|
||||
$frame.attr("href", options.href);
|
||||
}
|
||||
|
||||
page.prototype.refresh = function (loading) {
|
||||
var $frameLoad = $(`#${this.option.elem} .pear-page-loading`);
|
||||
var $frame = $(`#${this.option.elem} .pear-page-content`);
|
||||
if (loading) {
|
||||
$frameLoad.css({
|
||||
display: 'block'
|
||||
});
|
||||
}
|
||||
if ($frame.attr("type") === "_iframe") {
|
||||
$frame.html(`<iframe src='${$frame.attr("href")}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
|
||||
const $contentFrame = $frame.find("iframe");
|
||||
$contentFrame.on("load", () => {
|
||||
$frameLoad.fadeOut(1000);
|
||||
})
|
||||
} else {
|
||||
$.ajax({
|
||||
type: 'get',
|
||||
url: $frame.attr("href"),
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
$frame.html(data)
|
||||
$frameLoad.fadeOut(1000);
|
||||
element.init();
|
||||
},
|
||||
error: function (xhr) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function renderContent(option) {
|
||||
$("#" + option.elem).html(`
|
||||
<div class='pear-page'>
|
||||
<div class='pear-page-content' type='${option.type}' href='${option.url}'></div>
|
||||
<div class="pear-page-loading">
|
||||
<div class="ball-loader">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>`);
|
||||
|
||||
var $frame = $("#" + option.elem).find(".pear-page-content");
|
||||
|
||||
if (option.type === "_iframe") {
|
||||
$frame.html(`<iframe src='${option.url}' scrolling='auto' frameborder='0' allowfullscreen='true'></iframe>`);
|
||||
} else {
|
||||
$.ajax({
|
||||
url: option.url,
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
$frame.html(data);
|
||||
},
|
||||
error: function (xhr) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
exports('page', new page());
|
||||
});
|
||||
661
static/component/pear/module/tabPage.js
Normal file
@@ -0,0 +1,661 @@
|
||||
layui.define(['jquery', 'element', 'dropdown'], function (exports) {
|
||||
"use strict";
|
||||
|
||||
var MOD_NAME = 'tabPage',
|
||||
$ = layui.jquery,
|
||||
dropdown = layui.dropdown,
|
||||
element = layui.element;
|
||||
|
||||
var tabPage = function (opt) {
|
||||
this.option = opt;
|
||||
};
|
||||
|
||||
var tabData = new Array();
|
||||
var tabDataCurrent = 0;
|
||||
var contextTabDOM;
|
||||
|
||||
tabPage.prototype.render = function (opt) {
|
||||
|
||||
var option = {
|
||||
elem: opt.elem,
|
||||
data: opt.data,
|
||||
index: opt.index,
|
||||
tool: opt.tool || true,
|
||||
roll: opt.roll || true,
|
||||
success: opt.success ? opt.success : function (id) {
|
||||
},
|
||||
session: opt.session ? opt.session : false,
|
||||
preload: opt.preload ? opt.preload : false,
|
||||
height: opt.height || "100%",
|
||||
width: opt.width || "100%",
|
||||
closeEvent: opt.closeEvent,
|
||||
tabMax: opt.tabMax,
|
||||
}
|
||||
|
||||
if (option.session) {
|
||||
if (sessionStorage.getItem(option.elem + "-pear-tab-page-data") != null) {
|
||||
tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data"));
|
||||
option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-page-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-page-data-current");
|
||||
tabData.forEach(function (item, index) {
|
||||
if (item.id == tabDataCurrent) {
|
||||
option.index = index;
|
||||
}
|
||||
})
|
||||
} else {
|
||||
tabData = opt.data;
|
||||
}
|
||||
}
|
||||
|
||||
var lastIndex;
|
||||
var tab = createTab(option);
|
||||
$("#" + option.elem).html(tab);
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function () {
|
||||
rollPage("left", option);
|
||||
})
|
||||
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () {
|
||||
rollPage("right", option);
|
||||
})
|
||||
element.init();
|
||||
|
||||
$("#" + option.elem).width(opt.width);
|
||||
$("#" + option.elem).height(opt.height);
|
||||
$("#" + option.elem).css({
|
||||
position: "relative"
|
||||
});
|
||||
|
||||
closeEvent(option);
|
||||
|
||||
option.success(sessionStorage.getItem(option.elem + "-pear-tab-page-data-current"));
|
||||
|
||||
dropdown.render({
|
||||
elem: `#${option.elem} .layui-tab-control > .layui-icon-down`,
|
||||
trigger: 'hover',
|
||||
data: [{
|
||||
title: '关 闭 当 前',
|
||||
id: 1
|
||||
}, {
|
||||
title: '关 闭 其 他',
|
||||
id: 2
|
||||
}, {
|
||||
title: '关 闭 全 部',
|
||||
id: 3
|
||||
}],
|
||||
click: function (obj) {
|
||||
|
||||
const id = obj.id;
|
||||
|
||||
if (id === 1) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
var currentId = currentTab.attr("lay-id");
|
||||
tabDelete(option.elem, currentId, option.closeEvent, option);
|
||||
} else {
|
||||
layer.msg("当前页面不允许关闭", {
|
||||
icon: 3,
|
||||
time: 1000
|
||||
})
|
||||
}
|
||||
} else if (id === 2) {
|
||||
var currentId = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this").attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
|
||||
option);
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
var currentId = $(".layui-tab[lay-filter='" + option.elem +
|
||||
"'] .layui-tab-title .layui-this").attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
$("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li",
|
||||
function (e) {
|
||||
var top = e.clientY;
|
||||
var left = e.clientX;
|
||||
var menuWidth = 100;
|
||||
var menu = `<ul>
|
||||
<li class='item' id='${option.elem}closeThis'>关闭当前</li>
|
||||
<li class='item' id='${option.elem}closeOther'>关闭其他</li>
|
||||
<li class='item' id='${option.elem}closeAll'>关闭所有</li>
|
||||
</ul>`;
|
||||
|
||||
contextTabDOM = $(this);
|
||||
var isOutsideBounds = (left + menuWidth) > $(window).width();
|
||||
if (isOutsideBounds) {
|
||||
left = $(window).width() - menuWidth;
|
||||
}
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: false,
|
||||
shade: false,
|
||||
skin: 'pear-tab-page-menu',
|
||||
closeBtn: false,
|
||||
area: [menuWidth + 'px', '108px'],
|
||||
fixed: true,
|
||||
anim: false,
|
||||
isOutAnim: false,
|
||||
offset: [top, left],
|
||||
content: menu,
|
||||
success: function (layero, index) {
|
||||
layer.close(lastIndex);
|
||||
lastIndex = index;
|
||||
menuEvent(option, index);
|
||||
var timer;
|
||||
$(layero).on('mouseout', function () {
|
||||
timer = setTimeout(function () {
|
||||
layer.close(index);
|
||||
}, 30)
|
||||
});
|
||||
|
||||
$(layero).on('mouseover', function () {
|
||||
clearTimeout(timer);
|
||||
});
|
||||
|
||||
$(layero).on('contextmenu', function () {
|
||||
return false;
|
||||
})
|
||||
}
|
||||
});
|
||||
return false;
|
||||
})
|
||||
|
||||
mousewheelAndTouchmoveHandler(option)
|
||||
return new tabPage(option);
|
||||
}
|
||||
|
||||
tabPage.prototype.click = function (callback) {
|
||||
var option = this.option;
|
||||
var elem = this.option.elem;
|
||||
element.on('tab(' + this.option.elem + ')', function (data) {
|
||||
var id = $("#" + elem + " .layui-tab-title .layui-this").attr("lay-id");
|
||||
sessionStorage.setItem(option.elem + "-pear-tab-page-data-current", id);
|
||||
callback(id);
|
||||
});
|
||||
}
|
||||
|
||||
tabPage.prototype.positionTab = function () {
|
||||
var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
|
||||
var autoLeft = 0;
|
||||
$tabTitle.children("li").each(function () {
|
||||
if ($(this).hasClass('layui-this')) {
|
||||
return false;
|
||||
} else {
|
||||
autoLeft += $(this).outerWidth();
|
||||
}
|
||||
});
|
||||
$tabTitle.animate({
|
||||
scrollLeft: autoLeft - $tabTitle.width() / 3
|
||||
}, 200);
|
||||
}
|
||||
|
||||
tabPage.prototype.clear = function () {
|
||||
sessionStorage.removeItem(this.option.elem + "-pear-tab-page-data");
|
||||
sessionStorage.removeItem(this.option.elem + "-pear-tab-page-data-current");
|
||||
}
|
||||
|
||||
tabPage.prototype.changeTabTitleById = function (id, title) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title [lay-id='" + id + "'] .title");
|
||||
currentTab.html(title);
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 删除指定选项卡
|
||||
*
|
||||
* @param id 编号
|
||||
*/
|
||||
tabPage.prototype.removeTab = function (id) {
|
||||
var elem = this.option.elem;
|
||||
if (id != undefined) {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
tabDelete(elem, id, () => {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function () {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(elem, $(this).attr("lay-id"), () => {
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 删除其他选项卡
|
||||
*/
|
||||
tabPage.prototype.removeOtherTab = function () {
|
||||
var elem = this.option.elem;
|
||||
var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function () {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(elem, $(this).attr("lay-id"), () => {
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 删除选中选项卡
|
||||
*/
|
||||
tabPage.prototype.removeCurrentTab = function () {
|
||||
var currentTab = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title .layui-this");
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
var currentId = currentTab.attr("lay-id");
|
||||
tabDelete(this.option.elem, currentId, () => {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*
|
||||
* 切换选项卡
|
||||
*
|
||||
* @param opt 内容
|
||||
*/
|
||||
tabPage.prototype.changePage = function (opt) {
|
||||
|
||||
var title = `<span class="pear-tab-page-active"></span>
|
||||
<span class="${opt.close ? 'able-close' : 'disable-close'} title">${opt.title}</span>
|
||||
<i class="layui-icon layui-unselect layui-tab-close">ဆ</i>`;
|
||||
|
||||
if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]").length <=
|
||||
0) {
|
||||
|
||||
var that = this;
|
||||
|
||||
if (opt.type === "_iframe") {
|
||||
|
||||
element.tabAdd(this.option.elem, {
|
||||
id: opt.id,
|
||||
title: title,
|
||||
content: `<iframe id="${opt.id}" type="${opt.type}" data-frameid="${opt.id}" scrolling="auto" frameborder="0" src="${opt.url}" style="width:100%;height:100%;" allowfullscreen="true"></iframe>`
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
$.ajax({
|
||||
url: opt.url,
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
element.tabAdd(that.option.elem, {
|
||||
id: opt.id,
|
||||
title: title,
|
||||
content: `<div id="${opt.id}" type="${opt.type}" data-frameid="${opt.id}" src="${opt.url}">${data}</div>`,
|
||||
});
|
||||
},
|
||||
error: function (xhr, textstatus, thrown) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
tabData.push(opt);
|
||||
sessionStorage.setItem(that.option.elem + "-pear-tab-page-data", JSON.stringify(tabData));
|
||||
sessionStorage.setItem(that.option.elem + "-pear-tab-page-data-current", opt.id);
|
||||
|
||||
} else {
|
||||
|
||||
var isData = false;
|
||||
$.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"),
|
||||
function () {
|
||||
if ($(this).attr("lay-id") == opt.id) {
|
||||
isData = true;
|
||||
}
|
||||
})
|
||||
|
||||
if (isData == false) {
|
||||
|
||||
if (this.option.tabMax != false) {
|
||||
if ($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]")
|
||||
.length >= this.option.tabMax) {
|
||||
layer.msg("最多打开" + this.option.tabMax + "个标签页", {
|
||||
icon: 2,
|
||||
time: 1000,
|
||||
shift: 6
|
||||
});
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var that = this;
|
||||
if (opt.type === "_iframe") {
|
||||
element.tabAdd(this.option.elem, {
|
||||
id: opt.id,
|
||||
title: title,
|
||||
content: `<iframe id="${opt.id}" type="${opt.type}" data-frameid="${opt.id}" scrolling="auto" frameborder="0" src="${opt.url}" style="width:100%;height:100%;" allowfullscreen="true"></iframe>`
|
||||
});
|
||||
} else {
|
||||
$.ajax({
|
||||
url: opt.url,
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
element.tabAdd(that.option.elem, {
|
||||
id: opt.id,
|
||||
title: title,
|
||||
content: `<div id="${opt.id}" type="${opt.type}" data-frameid="${opt.id}" src="${opt.url}">${data}</div>`,
|
||||
});
|
||||
},
|
||||
error: function (xhr, textstatus, thrown) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
tabData.push(opt);
|
||||
sessionStorage.setItem(that.option.elem + "-pear-tab-page-data", JSON.stringify(tabData));
|
||||
sessionStorage.setItem(that.option.elem + "-pear-tab-page-data-current", opt.id);
|
||||
}
|
||||
}
|
||||
element.tabChange(this.option.elem, opt.id);
|
||||
sessionStorage.setItem(this.option.elem + "-pear-tab-page-data-current", opt.id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 刷新当前选型卡
|
||||
*
|
||||
* @param time 动画时长
|
||||
*/
|
||||
tabPage.prototype.refresh = function (time) {
|
||||
|
||||
var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show > *");
|
||||
var $iframeLoad;
|
||||
|
||||
if (time != false && time != 0) {
|
||||
$iframeLoad = $("#" + this.option.elem).find(".pear-tab-page-loading");
|
||||
$iframeLoad.css({
|
||||
display: "block"
|
||||
});
|
||||
}
|
||||
|
||||
if ($iframe.attr("type") === "_iframe") {
|
||||
$iframe.attr("src", $iframe.attr("src"));
|
||||
$iframe.on("load", function () {
|
||||
$iframeLoad.fadeOut(1000, function () {
|
||||
$iframeLoad.css({
|
||||
display: "none"
|
||||
});
|
||||
});
|
||||
})
|
||||
} else {
|
||||
$.ajax({
|
||||
url: $iframe.attr("src"),
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
success: function (data) {
|
||||
$iframe.html(data);
|
||||
if ($iframeLoad != undefined) {
|
||||
$iframeLoad.fadeOut(1000, function () {
|
||||
$iframeLoad.css({
|
||||
display: "none"
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function (xhr) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function tabDelete(elem, id, callback) {
|
||||
var tabTitle = $(".layui-tab[lay-filter='" + elem + "']").find(".layui-tab-title");
|
||||
var removeTab = tabTitle.find("li[lay-id='" + id + "']");
|
||||
var nextNode = removeTab.next("li");
|
||||
if (!removeTab.hasClass("layui-this")) {
|
||||
removeTab.remove();
|
||||
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("*[id='" + id + "']")
|
||||
.parent();
|
||||
tabContent.remove();
|
||||
|
||||
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-page-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-page-data-current");
|
||||
tabData = tabData.filter(function (item) {
|
||||
return item.id != id;
|
||||
})
|
||||
sessionStorage.setItem(elem + "-pear-tab-page-data", JSON.stringify(tabData));
|
||||
return false;
|
||||
}
|
||||
|
||||
var currId;
|
||||
if (nextNode.length) {
|
||||
nextNode.addClass("layui-this");
|
||||
currId = nextNode.attr("lay-id");
|
||||
$("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
|
||||
} else {
|
||||
var prevNode = removeTab.prev("li");
|
||||
prevNode.addClass("layui-this");
|
||||
currId = prevNode.attr("lay-id");
|
||||
$("#" + elem + " [id='" + currId + "']").parent().addClass("layui-show");
|
||||
}
|
||||
callback(currId);
|
||||
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-page-data"));
|
||||
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-page-data-current");
|
||||
tabData = tabData.filter(function (item) {
|
||||
return item.id != id;
|
||||
})
|
||||
sessionStorage.setItem(elem + "-pear-tab-page-data", JSON.stringify(tabData));
|
||||
sessionStorage.setItem(elem + "-pear-tab-page-data-current", currId);
|
||||
removeTab.remove();
|
||||
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("*[id='" + id + "']").parent();
|
||||
tabContent.remove();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since Pear Admin 4.0
|
||||
*/
|
||||
function createTab(option) {
|
||||
|
||||
var type = "";
|
||||
if (option.roll == true) {
|
||||
type = "layui-tab-roll";
|
||||
}
|
||||
if (option.tool != false) {
|
||||
type = "layui-tab-tool";
|
||||
}
|
||||
if (option.roll == true && option.tool != false) {
|
||||
type = "layui-tab-rollTool";
|
||||
}
|
||||
var tab = '<div class="pear-tab-page ' + type + ' layui-tab" lay-filter="' + option.elem +
|
||||
'" lay-allowClose="true">';
|
||||
|
||||
var headers = '<ul class="layui-tab-title">';
|
||||
var content = '<div class="layui-tab-content">';
|
||||
var loading = '<div class="pear-tab-page-loading"><div class="ball-loader"><span></span><span></span><span></span><span></span></div></div>'
|
||||
var control = `<div class="layui-tab-control">
|
||||
<li class="layui-tab-prev layui-icon layui-icon-left"></li>
|
||||
<li class="layui-tab-next layui-icon layui-icon-right"></li>
|
||||
<li class="layui-tab-tool layui-icon layui-icon-down"></li>
|
||||
</div>`;
|
||||
|
||||
// 处 理 选 项 卡 头 部
|
||||
var index = 0;
|
||||
|
||||
$.each(option.data, function (i, item) {
|
||||
|
||||
var titleItem = `<li lay-id="${item.id}" class="${option.index == index ? 'layui-this' : ''}">
|
||||
<span class="pear-tab-page-active"></span>
|
||||
<span class="${item.close ? 'able-close' : 'disable-close'} title">
|
||||
${item.title}
|
||||
</span>
|
||||
<i class="layui-icon layui-unselect layui-tab-close">ဆ</i></li>
|
||||
</li>`;
|
||||
|
||||
headers += titleItem;
|
||||
|
||||
if (item.type === "_iframe") {
|
||||
|
||||
content += `<div class="${option.index == index ? 'layui-show' : ''} layui-tab-item"><iframe id="${item.id}" type="${item.type}" data-frameid="${item.id}" scrolling="auto" frameborder="0" src="${item.url}" style="width:100%;height:100%;" allowfullscreen="true"></iframe></div>`
|
||||
|
||||
} else {
|
||||
|
||||
$.ajax({
|
||||
url: item.url,
|
||||
type: 'get',
|
||||
dataType: 'html',
|
||||
async: false,
|
||||
success: function (data) {
|
||||
content += `<div class="${option.index == index ? 'layui-show' : ''} layui-tab-item"><div id="${item.id}" type="${item.type}" data-frameid="${item.id}" src="${item.url}">${data}</div></div>`;
|
||||
},
|
||||
error: function (xhr) {
|
||||
return layer.msg('Status:' + xhr.status + ',' + xhr.statusText + ',请稍后再试!');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
index++;
|
||||
});
|
||||
|
||||
headers += '</ul>';
|
||||
content += '</div>';
|
||||
|
||||
tab += headers;
|
||||
tab += control;
|
||||
tab += content;
|
||||
tab += loading;
|
||||
tab += '</div>';
|
||||
tab += ''
|
||||
return tab;
|
||||
}
|
||||
|
||||
function rollPage(d, option) {
|
||||
var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
|
||||
var left = $tabTitle.scrollLeft();
|
||||
if ('left' === d) {
|
||||
$tabTitle.animate({
|
||||
scrollLeft: left - 450
|
||||
}, 200);
|
||||
} else {
|
||||
$tabTitle.animate({
|
||||
scrollLeft: left + 450
|
||||
}, 200);
|
||||
}
|
||||
}
|
||||
|
||||
function closeEvent(option) {
|
||||
$(".layui-tab[lay-filter='" + option.elem + "']")
|
||||
.on("click", ".layui-tab-close", function () {
|
||||
var layid = $(this).parent().attr("lay-id");
|
||||
tabDelete(option.elem, layid, option.closeEvent, option);
|
||||
})
|
||||
.on("mousedown", ".layui-tab-title li", function (e) {
|
||||
if (e.buttons === 4 && $(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function menuEvent(option, index) {
|
||||
|
||||
$("#" + option.elem + "closeThis").click(function () {
|
||||
var currentTab = contextTabDOM;
|
||||
|
||||
if (currentTab.find("span").is(".able-close")) {
|
||||
var currentId = currentTab.attr("lay-id");
|
||||
tabDelete(option.elem, currentId, option.closeEvent, option);
|
||||
} else {
|
||||
layer.msg("当前页面不允许关闭", {
|
||||
icon: 3,
|
||||
time: 800
|
||||
})
|
||||
}
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
$("#" + option.elem + "closeOther").click(function () {
|
||||
var currentId = contextTabDOM.attr("lay-id");
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).attr("lay-id") != currentId) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent,
|
||||
option);
|
||||
}
|
||||
}
|
||||
})
|
||||
layer.close(index);
|
||||
})
|
||||
|
||||
$("#" + option.elem + "closeAll").click(function () {
|
||||
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
|
||||
$.each(tabtitle, function (i) {
|
||||
if ($(this).find("span").is(".able-close")) {
|
||||
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
|
||||
}
|
||||
})
|
||||
layer.close(index);
|
||||
})
|
||||
}
|
||||
|
||||
function mousewheelAndTouchmoveHandler(option) {
|
||||
var $bodyTab = $("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title")
|
||||
var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
|
||||
var mouseScrollStep = 100
|
||||
// 鼠标滚轮
|
||||
$bodyTab.on("mousewheel DOMMouseScroll", function (e) {
|
||||
e.originalEvent.preventDefault()
|
||||
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? "top" :
|
||||
"down")) || // chrome & ie
|
||||
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? "down" : "top")); // firefox
|
||||
var scrollLeft = $tabTitle.scrollLeft();
|
||||
|
||||
if (delta === "top") {
|
||||
scrollLeft -= mouseScrollStep
|
||||
} else if (delta === "down") {
|
||||
scrollLeft += mouseScrollStep
|
||||
}
|
||||
$tabTitle.scrollLeft(scrollLeft)
|
||||
});
|
||||
|
||||
// 触摸移动
|
||||
var touchX = 0;
|
||||
$bodyTab.on("touchstart", function (e) {
|
||||
var touch = e.originalEvent.targetTouches[0];
|
||||
touchX = touch.pageX
|
||||
})
|
||||
|
||||
$bodyTab.on("touchmove", function (e) {
|
||||
var event = e.originalEvent;
|
||||
if (event.targetTouches.length > 1) return;
|
||||
event.preventDefault();
|
||||
var touch = event.targetTouches[0];
|
||||
var distanceX = touchX - touch.pageX
|
||||
var scrollLeft = $tabTitle.scrollLeft();
|
||||
touchX = touch.pageX
|
||||
$tabTitle.scrollLeft(scrollLeft += distanceX)
|
||||
});
|
||||
}
|
||||
|
||||
exports(MOD_NAME, new tabPage());
|
||||
})
|
||||
40
static/component/pear/module/tools.js
Normal file
@@ -0,0 +1,40 @@
|
||||
layui.define(['jquery', 'element'],
|
||||
function (exports) {
|
||||
|
||||
var $ = layui.jquery;
|
||||
var tools = new function () {
|
||||
|
||||
/**
|
||||
* @since 防抖算法
|
||||
*
|
||||
* @param fn 要执行的方法
|
||||
* @param time 防抖时间参数
|
||||
*/
|
||||
this.debounce = function (fn, time) {
|
||||
var timer = null
|
||||
return function () {
|
||||
var arguments = arguments[0]
|
||||
if (timer) {
|
||||
clearTimeout(timer)
|
||||
}
|
||||
timer = setTimeout(function () {
|
||||
fn(arguments)
|
||||
}, time)
|
||||
}
|
||||
}
|
||||
|
||||
// image 转 base64
|
||||
this.imageToBase64 = function (img) {
|
||||
var canvas = document.createElement("canvas");
|
||||
canvas.width = img.width;
|
||||
canvas.height = img.height;
|
||||
var ctx = canvas.getContext("2d");
|
||||
ctx.drawImage(img, 0, 0, img.width, img.height);
|
||||
var ext = img.src.substring(img.src.lastIndexOf(".") + 1).toLowerCase();
|
||||
var dataURL = canvas.toDataURL("image/" + ext);
|
||||
return dataURL;
|
||||
}
|
||||
};
|
||||
|
||||
exports('tools', tools);
|
||||
})
|
||||
29
static/component/pear/pear.js
Normal file
@@ -0,0 +1,29 @@
|
||||
window.rootPath = (function (src) {
|
||||
src = document.currentScript
|
||||
? document.currentScript.src
|
||||
: document.scripts[document.scripts.length - 1].src;
|
||||
return src.substring(0, src.lastIndexOf("/") + 1);
|
||||
})();
|
||||
|
||||
layui.config({
|
||||
base: rootPath + "module/",
|
||||
version: "4.0.3"
|
||||
}).extend({
|
||||
admin: "admin",
|
||||
page: "page",
|
||||
tabPage: "tabPage",
|
||||
menu: "menu",
|
||||
fullscreen: "fullscreen",
|
||||
messageCenter: "messageCenter",
|
||||
menuSearch: "menuSearch",
|
||||
button: "button",
|
||||
tools: "tools",
|
||||
popup: "extends/popup",
|
||||
count: "extends/count",
|
||||
toast: "extends/toast",
|
||||
nprogress: "extends/nprogress",
|
||||
echarts: "extends/echarts",
|
||||
echartsTheme: "extends/echartsTheme",
|
||||
yaml: "extends/yaml"
|
||||
}).use([], function () {
|
||||
});
|
||||
256
views/login.html
@@ -1,132 +1,162 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if lt IE 7]>
|
||||
<html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
|
||||
<!--[if IE 7]>
|
||||
<html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
|
||||
<!--[if IE 8]>
|
||||
<html class="lt-ie9" lang="en"> <![endif]-->
|
||||
<!--[if gt IE 8]><!-->
|
||||
<html lang="en">
|
||||
<!--<![endif]-->
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>管理后台系统</title>
|
||||
<link rel="stylesheet" href="../static/css/login.css">
|
||||
<script src="../static/js/jquery.min.js"></script>
|
||||
<script src="../static/js/filter.js"></script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../static/js/html5.js"></script><![endif]-->
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport">
|
||||
<title>登录</title>
|
||||
<link href="../static/component/pear/css/pear.css" rel="stylesheet"/>
|
||||
<link href="../static/admin/css/other/login.css" rel="stylesheet"/>
|
||||
<link href="../static/admin/css/variables.css" rel="stylesheet"/>
|
||||
<script>if (window.self !== window.top) {
|
||||
top.location.reload();
|
||||
}</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<section class="container">
|
||||
<div class="login">
|
||||
<h1>管理员登录</h1>
|
||||
|
||||
<p>
|
||||
<input type="text" name="login" class="userID" value="" placeholder="注册手机号">
|
||||
</p>
|
||||
<div class="userIDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
<p><input type="password" name="password" class="passwd" value="" placeholder="密码"></p>
|
||||
<p><input type="text" name="totp" class="totp" value="" placeholder="二次验证(如果设置了就需要填写)"></p>
|
||||
<div class="passwdDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
<div class="verify">
|
||||
<div class="left_f">
|
||||
<input type="text" class="verifyText" placeholder="验证码">
|
||||
<div class="CodeDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
</div>
|
||||
<div class="right_f">
|
||||
<img class="verifyImg" src="" ALT="">
|
||||
<div class="login-page" style="background-image: url(../static/admin/images/background.svg)">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-sm6 login-bg layui-hide-xs">
|
||||
<img alt="" class="login-bg-img" src="../static/admin/images/banner.png"/>
|
||||
</div>
|
||||
<div class="layui-col-sm6 layui-col-xs12 login-form">
|
||||
<div class="layui-form">
|
||||
<div class="form-center">
|
||||
<div class="form-center-box">
|
||||
<div class="top-log-title">
|
||||
<!-- <img class="top-log" src="http://www.layui-vue.com/assets/logo.685dda16.jpg" alt=""/>-->
|
||||
<span>卡密核销结算平台</span>
|
||||
</div>
|
||||
<!-- <div class="top-desc">-->
|
||||
<!-- 以 超 乎 想 象 的 速 度 构 建 内 部 工 具-->
|
||||
<!-- </div>-->
|
||||
<div style="margin-top: 30px;">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-username"></i>
|
||||
</div>
|
||||
<input autocomplete="off" class="layui-input" lay-verify="required" name="username"
|
||||
placeholder="账户">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-password"></i>
|
||||
</div>
|
||||
<input autocomplete="off" class="layui-input" lay-affix="eye"
|
||||
lay-verify="required|confirmPassword" name="password" placeholder="密码"
|
||||
type="password" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-snowflake"></i>
|
||||
</div>
|
||||
<input autocomplete="off" class="layui-input" lay-affix="eye"
|
||||
name="totpCode" placeholder="二次验证" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-log-verification">
|
||||
<div class="verification-text">
|
||||
<div class="layui-input-wrap">
|
||||
<div class="layui-input-prefix">
|
||||
<i class="layui-icon layui-icon-auz"></i>
|
||||
</div>
|
||||
<input autocomplete="off" class="layui-input" lay-verify="required" name="code"
|
||||
placeholder="验证码" value="">
|
||||
</div>
|
||||
</div>
|
||||
<img alt="" class="verification-img" id="captchaImage" src=""/>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="remember-passsword">
|
||||
<div class="remember-cehcked">
|
||||
<input lay-skin="primary" name="remember" title="记住密码" type="checkbox">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="login-btn">
|
||||
<button class="layui-btn login" lay-filter="login" lay-submit type="button">登 录
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="remember_me">
|
||||
<label>
|
||||
<input type="checkbox" name="remember_me" id="remember_me">
|
||||
记住密码
|
||||
</label>
|
||||
</div>
|
||||
<div class="submit"><input type="submit" id="login" name="commit" value="登录"></div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<!-- 资 源 引 入 -->
|
||||
<script src="../static/component/layui/layui.js"></script>
|
||||
<script src="../static/component/pear/pear.js"></script>
|
||||
<script>
|
||||
//页面展示自动加载验证码
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
//注册用户点击验证,更换验证码图片
|
||||
var flushCode = function () {
|
||||
let verifyImg = $(".verifyImg");
|
||||
verifyImg.click(function () {
|
||||
verifyImg.attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
});
|
||||
}
|
||||
layui.use(['form', 'button', 'popup'], function () {
|
||||
const form = layui.form;
|
||||
const button = layui.button;
|
||||
const popup = layui.popup,
|
||||
$ = layui.jquery,
|
||||
layer = layui.layer;
|
||||
//得到图形验证码和id
|
||||
document.getElementById("captchaImage").src = "/getVerifyImg?rand=" + new Date().getTime()
|
||||
|
||||
flushCode();
|
||||
//点击登录按钮,进行用户登录操作
|
||||
$("#login").click(function () {
|
||||
login();
|
||||
});
|
||||
|
||||
function login() {
|
||||
let userID = $.trim($(".userID").val());
|
||||
let passwd = $.trim($(".passwd").val());
|
||||
let Code = $(".verifyText").val();
|
||||
let totp = $(".totp").val();
|
||||
|
||||
Code = $.trim(Code);
|
||||
if (userID.length <= 0) {
|
||||
$(".userIDERROR").text("").append("* 登录手机号不能为空!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
}
|
||||
if (passwd.length <= 0) {
|
||||
$(".passwdDERROR").text("").append("* 密码不能为空!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
function referCaptchaImage() {
|
||||
document.getElementById("captchaImage").src = "/getVerifyImg?rand=" + new Date().getTime()
|
||||
}
|
||||
|
||||
if (Code.length < 4) {
|
||||
$(".CodeDERROR").text("").append("* 验证码不正确!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
// 读取缓存
|
||||
const loginInfo = localStorage.getItem("loginInfo");
|
||||
if (loginInfo !== "" && loginInfo !== null) {
|
||||
const loginInfoObj = JSON.parse(loginInfo);
|
||||
$("input[name='username']").val(loginInfoObj.username);
|
||||
$("input[name='password']").val(loginInfoObj.password);
|
||||
$("input[name='remember']").prop("checked", true);
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: "/login",
|
||||
data: {
|
||||
userID: userID,
|
||||
passwd: passwd,
|
||||
Code: Code,
|
||||
totpCode: totp,
|
||||
},
|
||||
success: function (data) {
|
||||
if (data.Key === "userID") {
|
||||
$(".userIDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "passWD") {
|
||||
$(".passwdDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "code") {
|
||||
$(".CodeDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "unactive" || data.Key === "del") {
|
||||
alert(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
$("#captchaImage").click(function () {
|
||||
referCaptchaImage();
|
||||
})
|
||||
setInterval(function () {
|
||||
referCaptchaImage()
|
||||
}, 180 * 1000);
|
||||
// 登 录 提 交
|
||||
form.on('submit(login)', function (data) {
|
||||
const loader = layer.load();
|
||||
const btn = button.load({elem: '.login'});
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/login",
|
||||
dataType: 'json',
|
||||
data: {
|
||||
userID: data.field.username,
|
||||
passwd: data.field.password,
|
||||
Code: data.field.code,
|
||||
totpCode: data.field.totpCode,
|
||||
},
|
||||
dataType: "JSON",
|
||||
success: function (result) {
|
||||
console.log(result)
|
||||
if (result.Code === 0) {
|
||||
layer.close(loader);
|
||||
btn.stop();
|
||||
if (data.field.remember) {
|
||||
// 加密保存登录信息到 localStorage
|
||||
localStorage.setItem("loginInfo", JSON.stringify(data.field));
|
||||
} else {
|
||||
localStorage.removeItem("loginInfo");
|
||||
}
|
||||
window.parent.location = "/index.html";
|
||||
} else {
|
||||
layer.close(loader);
|
||||
btn.stop();
|
||||
referCaptchaImage();
|
||||
layer.msg(result.Msg);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//登录成功,跳转到管理界面主页
|
||||
if (data.Key.length <= 0) {
|
||||
window.parent.location = "/index.html";
|
||||
} else {
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("系统异常,请求稍后再尝试!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
129
views/login_bak.html
Normal file
@@ -0,0 +1,129 @@
|
||||
<!DOCTYPE html>
|
||||
<!--[if lt IE 7]>
|
||||
<html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
|
||||
<!--[if IE 7]>
|
||||
<html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
|
||||
<!--[if IE 8]>
|
||||
<html class="lt-ie9" lang="en"> <![endif]-->
|
||||
<!--[if gt IE 8]><!-->
|
||||
<html lang="en">
|
||||
<!--<![endif]-->
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
<title>管理后台系统</title>
|
||||
<link href="../static/css/login.css" rel="stylesheet">
|
||||
<script src="../static/js/jquery.min.js"></script>
|
||||
<script src="../static/js/filter.js"></script>
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../static/js/html5.js"></script><![endif]-->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<section class="container">
|
||||
<div class="login">
|
||||
<h1>管理员登录</h1>
|
||||
|
||||
<p>
|
||||
<input class="userID" name="login" placeholder="注册手机号" type="text" value="">
|
||||
</p>
|
||||
<div class="userIDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
<p><input class="passwd" name="password" placeholder="密码" type="password" value=""></p>
|
||||
<p><input class="totp" name="totp" placeholder="二次验证(如果设置了就需要填写)" type="text" value=""></p>
|
||||
<div class="passwdDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
<div class="verify">
|
||||
<div class="left_f">
|
||||
<input class="verifyText" placeholder="验证码" type="text">
|
||||
<div class="CodeDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
|
||||
</div>
|
||||
<div class="right_f">
|
||||
<img ALT="" class="verifyImg" src="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="remember_me">
|
||||
<label>
|
||||
<input id="remember_me" name="remember_me" type="checkbox">
|
||||
记住密码
|
||||
</label>
|
||||
</div>
|
||||
<div class="submit"><input id="login" name="commit" type="submit" value="登录"></div>
|
||||
</div>
|
||||
</section>
|
||||
<script>
|
||||
//页面展示自动加载验证码
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
//注册用户点击验证,更换验证码图片
|
||||
var flushCode = function () {
|
||||
let verifyImg = $(".verifyImg");
|
||||
verifyImg.click(function () {
|
||||
verifyImg.attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
});
|
||||
}
|
||||
flushCode();
|
||||
//点击登录按钮,进行用户登录操作
|
||||
$("#login").click(function () {
|
||||
login();
|
||||
});
|
||||
|
||||
function login() {
|
||||
let userID = $.trim($(".userID").val());
|
||||
let passwd = $.trim($(".passwd").val());
|
||||
let Code = $(".verifyText").val();
|
||||
let totp = $(".totp").val();
|
||||
|
||||
Code = $.trim(Code);
|
||||
if (userID.length <= 0) {
|
||||
$(".userIDERROR").text("").append("* 登录手机号不能为空!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
}
|
||||
if (passwd.length <= 0) {
|
||||
$(".passwdDERROR").text("").append("* 密码不能为空!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
}
|
||||
if (Code.length < 4) {
|
||||
$(".CodeDERROR").text("").append("* 验证码不正确!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
return;
|
||||
}
|
||||
$.ajax({
|
||||
url: "/login",
|
||||
data: {
|
||||
userID: userID,
|
||||
passwd: passwd,
|
||||
Code: Code,
|
||||
totpCode: totp,
|
||||
},
|
||||
success: function (data) {
|
||||
if (data.Key === "userID") {
|
||||
$(".userIDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "passWD") {
|
||||
$(".passwdDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "code") {
|
||||
$(".CodeDERROR").text("").append(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
} else if (data.Key === "unactive" || data.Key === "del") {
|
||||
alert(data.Msg);
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
}
|
||||
//登录成功,跳转到管理界面主页
|
||||
if (data.Key.length <= 0) {
|
||||
window.parent.location = "/index.html";
|
||||
} else {
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
}
|
||||
},
|
||||
error: function (e) {
|
||||
alert("系统异常,请求稍后再尝试!");
|
||||
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||