This commit is contained in:
kenneth 2025-03-25 14:15:42 +08:00
parent 7dffc94035
commit da612380e0
845 changed files with 5330 additions and 5153 deletions

View File

@ -377,7 +377,8 @@ func convertToUITree(data []*db.SysMenu, parentID int32) []*dto.MenuUIDto {
Icon: item.Avatar,
Type: 1,
OpenType: "_iframe",
Href: item.Url,
// OpenType: "_component",
Href: item.Url,
}
root = append(root, temp)
} else {

View File

@ -3,6 +3,7 @@ package tpl
import (
"html/template"
"path/filepath"
"strings"
"management/internal/db/model/dto"
)
@ -18,9 +19,10 @@ func (r *render) btnFuncs() map[string]any {
var res string
for _, action := range actionNames {
for _, btn := range btns {
btn.Style = strings.ReplaceAll(btn.Style, "pear", "layui")
base := filepath.Base(btn.Url)
if base == action {
res += `<button type="button" class="pear-btn ` + btn.Style + `" lay-event="` + firstLower(action) + `" lay-on="` + firstLower(action) + `">`
res += `<button type="button" class="layui-btn ` + btn.Style + `" lay-event="` + firstLower(action) + `" lay-on="` + firstLower(action) + `">`
if len(btn.Avatar) > 0 {
res += `<i class="` + btn.Avatar + `"></i> `
}
@ -40,9 +42,10 @@ func (r *render) btnFuncs() map[string]any {
var res string
for _, action := range actionNames {
for _, btn := range btns {
btn.Style = strings.ReplaceAll(btn.Style, "pear", "layui")
base := filepath.Base(btn.Url)
if base == action {
res += `<button type="button" style="font-size:12px !important;" class="pear-btn ` + btn.Style + `" lay-event="` + firstLower(action) + `" lay-on="` + firstLower(action) + `">`
res += `<button type="button" style="font-size:12px !important;" class="layui-btn ` + btn.Style + `" lay-event="` + firstLower(action) + `" lay-on="` + firstLower(action) + `">`
if len(btn.Avatar) > 0 {
res += `<i class="` + btn.Avatar + `"></i> `
}
@ -69,9 +72,10 @@ func (r *render) btnFuncs() map[string]any {
var res string
for _, action := range actionNames {
for _, btn := range btns {
btn.Style = strings.ReplaceAll(btn.Style, "pear", "layui")
base := filepath.Base(btn.Url)
if base == action {
res += `<button type="submit" class="pear-btn ` + btn.Style + `" lay-submit lay-filter="` + firstLower(action) + `">`
res += `<button type="submit" class="layui-btn ` + btn.Style + `" lay-submit lay-filter="` + firstLower(action) + `">`
if len(btn.Avatar) > 0 {
res += `<i class="` + btn.Avatar + `"></i> `
}

Binary file not shown.

View File

@ -4,16 +4,16 @@ body,
height: 100%;
}
.pear-admin .layui-header,
.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;
top: 60px !important;
}
.pear-admin.banner-layout .layui-side .layui-logo {
@ -25,38 +25,15 @@ body,
}
.pear-admin.banner-layout .layui-side .layui-side-scroll {
height: 100%!important;
height: 100% !important;
}
.pear-admin.banner-layout .layui-side .layui-side-scroll {
height: 100%!important;
height: 100% !important;
}
.pear-admin .layui-header.dark-theme .layui-layout-control .layui-this *{
background-color: rgba(0,0,0,.1)!important;
}
.pear-admin.banner-layout .layui-header {
z-index: 99999;
width: 100%;
left: 0px;
}
.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.banner-layout .layui-header.dark-theme {
box-shadow: 2px 0 6px rgb(0 21 41 / 35%);
.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 {
@ -79,7 +56,6 @@ body,
left: 230px;
width: calc(100% - 230px);
background-color: white;
border-bottom: 1px solid whitesmoke;
}
.pear-admin .layui-layout-control {
@ -92,12 +68,13 @@ body,
}
.pear-admin .layui-logo {
width: 230px;
height: 59px;
line-height: 59px;
height: 60px;
line-height: 60px;
border-bottom: 1px solid rgba(0, 0, 0, .12);
box-sizing: border-box;
position: relative;
background-color: #28333E;
border-bottom: 1px solid rgba(0, 0, 0, .12);
width: 230px;
}
.pear-admin .layui-logo img {
@ -108,7 +85,7 @@ body,
.pear-admin .layui-logo .title {
font-size: 21px;
font-weight: 550;
color: #5FB878;
color: var(--global-primary-color);
position: relative;
top: 5px;
margin-left: 5px;
@ -143,9 +120,16 @@ body,
}
.pear-admin .layui-body {
left: 230px;
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 {
@ -154,8 +138,8 @@ body,
.pear-admin .layui-footer {
position: absolute;
display: flex;
justify-content: space-between;
display: flex;
justify-content: space-between;
left: 230px;
background: #fff;
border-top: 1px solid #F2F2F2;
@ -172,13 +156,62 @@ body,
display: none;
}
@media screen and (max-width: 768px) {
.pear-admin.banner-layout .layui-header .layui-logo {
display: none;
}
.pear-admin.banner-layout .layui-header .layui-layout-left {
left: 0px;
}
/** 通栏布局 */
.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;
}
/** 收缩布局 */
@ -215,18 +248,14 @@ body,
display: none;
}
.pear-mini .bottom-nav li {
width: 100% !important;
}
.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;
background-color: #5FB878;
}
.pear-admin .layui-header .layui-nav .layui-this:after {
@ -238,18 +267,18 @@ body,
}
.pear-collapsed-pe {
display: none;
width: 50px;
position: absolute;
z-index: 400000;
bottom: 30px;
right: 30px;
background-color: #5FB878 !important;
height: 50px;
line-height: 50px;
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: 50px;
box-shadow: 2px 0 6px rgba(0, 21, 41, .35);
border-radius: 4px;
line-height: 50px;
display: none;
height: 50px;
width: 50px;
}
.pear-collapsed-pe a {
@ -287,10 +316,6 @@ body,
padding-right: 10px;
}
.pear-mini .bottom-nav {
display: none;
}
.pear-mini .layui-side-scroll {
height: calc(100% - 62px);
}
@ -372,8 +397,8 @@ body,
}
.layer-anim-right {
-webkit-animation: am-horizontal-roll_show .6s ease-out;
animation: am-horizontal-roll_show .6s ease-out;
-webkit-animation: am-horizontal-roll_show .5s ease-out;
animation: am-horizontal-roll_show .5s ease-out;
}
@ -399,8 +424,8 @@ body,
color: whitesmoke;
}
.dark-theme.layui-header li>a{
color: whitesmoke!important;
.dark-theme.layui-header li>a {
color: whitesmoke !important;
}
.dark-theme.layui-header .layui-logo {
@ -454,9 +479,9 @@ body,
width: 100%;
height: 100%;
padding: 4px;
top: -5px;
left: -5px;
border: #5FB878 2px solid;
top: -6px;
left: -6px;
border: var(--global-primary-color) 2px solid;
opacity: 1;
border-radius: 4px;
}
@ -474,13 +499,7 @@ body,
-webkit-transition: all .3s;
opacity: 0;
}
@media screen and (max-width: 450px) {
.pearone-color .layui-form-item .layui-input-inline {
float: left !important;
width: 190px !important;
margin: 0 10px 0 0!important;
}
}
.select-color {
margin-bottom: 30px;
}
@ -496,77 +515,133 @@ body,
}
.select-color .select-color-content .select-color-item {
background-color: gray;
width: 30px;
height: 30px;
border-radius: 3px;
float: left;
margin-left: 20px;
width: 24px;
height: 24px;
color: white;
font-size: 18px;
text-align: center;
margin-left: 24px;
border-radius: 6px;
background-color: gray;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15);
line-height: 30px;
text-align: center;
line-height: 24px;
font-size: 12px;
float: left;
}
.message .layui-tab-title li:not(:last-child) {
border-right: 1px solid #eee;
}
/* 搜索面板 */
.menu-search-content .layui-input {
padding-left: 30px;
}
.menu-search-content {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.menu-search-input-wrapper {
/** 首屏加载 */
.loader-wrapper {
position: fixed;
width: 100%;
padding: 15px 15px;
height: 100%;
background-color: whitesmoke;
z-index: 9999999;
}
.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;
.loader {
width: 50px;
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;
margin: 30px auto 40px;
margin-top: 20%;
position: relative;
z-index: 999999;
background-color: whitesmoke;
}
.menu-search-list li:hover {
background-color: #5FB878;
color: white;
.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;
}
.menu-search-list li.this {
background-color: #5FB878;
color: white;
.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);
}
}

View File

@ -1,99 +1,218 @@
.layui-form {
width: 320px !important;
margin: auto !important;
margin-top: 160px !important;
}
.layui-form button {
width: 100% !important;
height: 44px !important;
line-height: 44px !important;
font-size: 16px !important;
background-color: #2d8cf0 !important;
font-weight: 550 !important;
}
.layui-form-checked[lay-skin=primary] i {
border-color: #2d8cf0 !important;
background-color: #2d8cf0 !important;
color: #fff !important;
}
.layui-tab-content {
margin-top: 15px !important;
padding-left: 0px !important;
padding-right: 0px !important;
}
.layui-form-item {
margin-top: 20px !important;
}
.layui-input {
height: 44px !important;
line-height: 44px !important;
padding-left: 15px !important;
border-radius: 3px !important;
}
.layui-input:focus {
box-shadow: 0px 0px 2px 1px #2d8cf0 !important;
}
.layui-form-danger:focus{
box-shadow: 0px 0px 2px 1px #f56c6c !important;
}
.logo {
width: 60px !important;
margin-top: 10px !important;
margin-bottom: 10px !important;
margin-left: 20px !important;
}
.title {
font-size: 30px !important;
font-weight: 550 !important;
margin-left: 20px !important;
color: #2d8cf0 !important;
display: inline-block !important;
height: 60px !important;
line-height: 60px !important;
margin-top: 10px !important;
position: absolute !important;
}
.desc {
width: 100% !important;
text-align: center !important;
color: gray !important;
height: 60px !important;
line-height: 60px !important;
}
body {
background-repeat:no-repeat;
background-color: whitesmoke;
background-size: 100%;
html,
body{
height: 100%;
}
.code {
margin-right: 13px;
margin: 0px !important;
border: #e6e6e6 1px solid;
display: inline-block!important;
}
.codeImage {
float: right;
height: 42px;
border: #e6e6e6 1px solid;
.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;
}
@media (max-width:768px){
body{
background-position:center;
.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%;}
}

View File

@ -1,39 +1,40 @@
.result {
.pear-result {
text-align: center;
}
.result .success svg {
.pear-result .success svg {
color: #32C682;
text-align: center;
margin-top: 40px;
}
.result .error svg {
.pear-result .error svg {
color: #f56c6c;
text-align: center;
margin-top: 40px;
}
.result .title {
.pear-result .title {
margin-top: 25px;
}
.result .desc {
.pear-result .description {
margin-top: 25px;
width: 60%;
margin-left: 20%;
color: rgba(0, 0, 0, .45);
}
.result .content {
.pear-result .content {
margin-top: 20px;
width: 80%;
border-radius: 10px;
border-radius: 4px;
background-color: whitesmoke;
height: 200px;
padding: 20px 32px;
margin-left: 10%;
margin-bottom: 30px;
text-align: left;
}
.result .action {
.pear-result .extra {
padding-top: 10px;
border-top: 1px whitesmoke solid;
margin-top: 25px;
}

View File

@ -1,14 +1,40 @@
@charset "UTF-8";
{{/* xm-select { border-color: var(--global-primary-color) !important; }
xm-select { border-color: var(--global-primary-color) !important; }
xm-select .xm-label .label-content .xm-label-block { background-color: var(--global-primary-color) !important; }
xm-select .xm-body .xm-option .xm-option-icon { border-color: var(--global-primary-color) !important; }
xm-select .xm-body .xm-option.selected .xm-option-icon { color: var(--global-primary-color) !important; } */}}
xm-select .xm-body .xm-option.selected .xm-option-icon { color: var(--global-primary-color) !important; }
.layui-table-box input[type="radio"]{
font-size: 16px !important;
}
.layui-table td, .layui-table th {
font-size: 13px !important;
}
.layui-input-sm {
height: 30px!important;
line-height: 30px!important;
}
.layui-input-xs {
height: 25px!important;
line-height: 25px!important;
}
.layui-form-item-sm {
height: 30px;
}
.layui-form-item-sm .layui-form-label {
padding: 4px 10px;
}
.layui-card-header-slipt {
border-bottom: 1px solid #eeeeee;
}
.btn-fixbar-box {
bottom: 0;
width: 100%;
@ -81,4 +107,72 @@ xm-select .xm-body .xm-option.selected .xm-option-icon { color: var(--global-pri
font-size: 14px;
color: #333;
margin-bottom: 2px;
}
}
.edit-box {
padding-bottom: 80px;
background: #fafafa;
}
.search-layer {
padding: 10px;
}
.search-layer-open .layui-layer-btn .layui-layer-btn0{
background-color: var(--global-primary-color);
}
.search-layer-open .layui-layer-btn .layui-layer-btn1{
background-color: transparent !important;
color: #5f5f5f !important;
}
.search-layer-open .layui-layer-btn .layui-layer-btn1:hover{
border: 1px solid var(--global-primary-color);
}
.layui-form-column {
padding: 10px 20px;
display: flex;
flex-direction: column;
}
.layui-form-column .tips {
font-size: 14px;
color: #333;
margin-bottom: 7px;
}
@mideia screen and (max-width: 640px) {
.layui-form-column {
padding: 0 !important;
}
}
.bg01 {
background-color: #f8f8f8;
}
.bg01 .layui-table-view {
background-color: #ffffff;
}
/* 设置滚动条整体样式 */
/*::-webkit-scrollbar {*/
/*width: 20px; /* 滚动条宽度 */
/*}*/
/* 设置滚动条滑块样式 */
/*::-webkit-scrollbar-thumb {*/
/*background-color: #888; /* 滑块颜色 */
/*border-radius: 5px; /* 滑块圆角 */
/*height: 20px;*/
/*}*/
/*::-webkit-scrollbar-thumb:hover {*/
/*background-color: #888; /* 滑块颜色 */
/*}*/
/* 设置滚动条轨道样式 */
/*::-webkit-scrollbar-track {
/*background-color: #f1f1f1; /* 轨道颜色 */
/*}*/

View File

@ -1,42 +1,312 @@
[
{
"id": "system",
"title": "系统管理",
"icon": "layui-icon layui-icon-set-fill",
"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": 604,
"title": "部门管理",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "/system/department/list"
},
{
"id": 601,
"title": "用户管理",
"id": "success",
"title": "成功页面",
"icon": "layui-icon layui-icon-face-smile",
"type": 1,
"openType": "_iframe",
"href": "/system/user/list"
"openType": "_component",
"href": "view/result/success.html"
},
{
"id": 602,
"title": "角色管理",
"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": "/system/role/list"
"href": "http://www.layui-vue.com"
},
{
"id": 603,
"title": "菜单管理",
"id": "c",
"title": "新建标签",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "/system/menu/list"
"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"
}
]
}
]
}
]
}

View File

@ -1,90 +1,102 @@
[{
"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": []
}
]
{
"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": []
}
]
}

View File

@ -1,132 +1,303 @@
{
"code": 0,
"msg": "...",
"count": 3,
"data": [{
"userId": "1",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级'管'理员",
"email": "854085'4@'qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "2",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就\"眠\"仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "3",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "4",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级管理员",
"email": "8540854@qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "5",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就眠仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "6",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "7",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级管理员",
"email": "8540854@qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "8",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就眠仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "9",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}]
}
"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"
}
]
}

View File

@ -1,24 +1,68 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="100%" height="100%" viewBox="0 0 1400 800">
<rect x="1300" y="400" rx="40" ry="40" width="300" height="300" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 1450 550" to="360 1450 550" repeatCount="indefinite"/>
</rect>
<path d="M 100 350 A 150 150 0 1 1 400 350 Q400 370 380 370 L 250 370 L 120 370 Q100 370 100 350" stroke="rgb(253, 214, 99)" fill="rgb(253, 214, 99)">
<animateMotion path="M 800 -200 L 800 -300 L 800 -200" dur="20s" begin="0s" repeatCount="indefinite"/>
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 210 530 ; -30 210 530 ; 0 210 530" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite"/>
</path>
<circle cx="200" cy="150" r="20" stroke="#1a73e8" fill="#1a73e8">
<animateMotion path="M 0 0 L 40 20 Z" dur="5s" repeatCount="indefinite"/>
</circle>
<!-- 三角形 -->
<path d="M 165 580 L 270 580 Q275 578 270 570 L 223 483 Q220 480 217 483 L 165 570 Q160 578 165 580" stroke="rgb(238, 103, 92)" fill="rgb(238, 103, 92)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 210 530" to="360 210 530" repeatCount="indefinite"/>
</path>
<rect x="400" y="600" rx="40" ry="40" width="100" height="100" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="-30 550 750" to="330 550 750" repeatCount="indefinite"/>
</rect>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 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>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 8.4 KiB

View File

Before

Width:  |  Height:  |  Size: 9.9 MiB

After

Width:  |  Height:  |  Size: 9.9 MiB

View File

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 197 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -16,7 +16,7 @@
line-height: 48px;
}
.pear-nav-tree .layui-nav-item>a .layui-nav-more {
.pear-nav-tree .layui-nav-item>a .layui-nav-more {
padding: 0px;
}
@ -24,7 +24,8 @@
width: 0px;
height: 0px;
}
.pear-side-scroll{
.pear-side-scroll {
width: 230px;
}
@ -33,7 +34,7 @@
.layui-nav-tree .layui-this,
.layui-nav-tree .layui-this>a,
.layui-nav-tree .layui-this>a:hover {
background-color: #5FB878;
background-color: var(--global-primary-color);
}
.pear-nav-tree .toast {
@ -100,7 +101,7 @@
font-size: 14px;
}
.pear-nav-control.pc li{
.pear-nav-control.pc li {
display: inline-block;
}
@ -112,15 +113,15 @@
background-color: whitesmoke;
}
.pear-nav-control.pc *{
color: darkslategray!important;
.pear-nav-control.pc * {
color: darkslategray !important;
}
.pear-nav-control.pc .layui-nav-bar{
display: none!important;
.pear-nav-control.pc .layui-nav-bar {
display: none !important;
}
.pear-nav-control .layui-nav-child{
.pear-nav-control .layui-nav-child {
border: 1px solid whitesmoke;
border-radius: 6px;
width: 150px;
@ -134,6 +135,7 @@
display: block !important;
background: transparent !important;
}
.pear-nav-tree .layui-nav-hover:before {
content: '';
position: absolute;
@ -147,66 +149,73 @@
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;
.dark-theme .layui-nav-tree {
background-color: #28333E !important;
}
.light-theme{
background-color: white!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 .layui-nav-child {
background-color: white !important;
}
.light-theme .pear-nav-tree a,
.light-theme .pear-nav-tree .layui-nav-more{
color: dimgray!important;
.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-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: #5FB878!important;
.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: #5FB878!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{
.light-theme .pear-nav-tree .layui-nav-bar {
display: none;
}
/** 下 拉 图 标 */
@ -247,6 +256,7 @@
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);
@ -264,4 +274,4 @@
content: '\e61a';
display: inline-block;
vertical-align: middle;
}
}

View File

@ -4,7 +4,7 @@
}
#nprogress .bar {
background: #29d;
background: var(--global-primary-color);
position: fixed;
z-index: 999999;
@ -22,7 +22,7 @@
right: 0px;
width: 100px;
height: 100%;
box-shadow: 0 0 10px #29d, 0 0 5px #29d;
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);
@ -45,8 +45,8 @@
box-sizing: border-box;
border: solid 2px transparent;
border-top-color: #29d;
border-left-color: #29d;
border-top-color: var(--global-primary-color);
border-left-color: var(--global-primary-color);
border-radius: 50%;
-webkit-animation: nprogress-spinner 400ms linear infinite;

View File

@ -1,30 +1,10 @@
@import url("../../layui/css/layui.css");
@import url("../font/iconfont.css");
@import url("module/dtree/font/dtreefont.css");
@import url("module/dtree/dtree.css");
@import url("module/iconPicker.css");
@import url("module/treetable.css");
@import url("module/nprogress.css");
@import url("module/message.css");
@import url("module/cropper.css");
@import url("module/loading.css");
@import url("module/topBar.css");
@import url("module/select.css");
@import url("module/layout.css");
@import url("module/notice.css");
@import url("module/button.css");
@import url("module/table.css");
@import url("module/frame.css");
@import url("module/layer.css");
@import url("module/toast.css");
@import url("module/messageCenter.css");
@import url("module/global.css");
@import url("module/menu.css");
@import url("module/form.css");
@import url("module/link.css");
@import url("module/code.css");
@import url("module/step.css");
@import url("module/card.css");
@import url("module/tab.css");
@import url("module/tag.css");
@import url("module/fullscreen.css");
@import url("module/popover.min.css");
@import url("module/menuSearch.css");
@import url("module/page.css");
@import url("module/tabPage.css");
@import url("module/toast.css");

File diff suppressed because it is too large Load Diff

View File

@ -1,53 +1,59 @@
layui.define(['jquery'], function(exports) {
layui.define(['jquery'], function (exports) {
"use strict";
/**
* @since Pear Admin 4.0
*
* Button component
* */
var MOD_NAME = 'button',
$ = layui.jquery;
var button = function(opt) {
var button = function (opt) {
this.option = opt;
};
/**
/**
* @since Pear Admin 4.0
*
* Button start loading
* */
button.prototype.load = function(opt) {
var option = {
button.prototype.load = function (opt) {
var options = {
elem: opt.elem,
time: opt.time ? opt.time : false,
done: opt.done ? opt.done : function(){}
done: opt.done ? opt.done : function () { }
}
var text = $(option.elem).html();
$(option.elem).html("<i class='layui-anim layui-anim-rotate layui-icon layui-anim-loop layui-icon-loading'/>");
$(option.elem).attr("disabled", "disabled");
var buttons = $(option.elem);
if (option.time != "" || option.time !=false) {
setTimeout(function() {
$(option.elem).attr("disabled", false);
buttons.html(text);
option.done();
}, option.time);
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);
}
option.text = text;
return new button(option);
options.text = text;
return new button(options);
}
/**
* @since Pear Admin 4.0
*
* Button stop loaded
* */
button.prototype.stop = function(success) {
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());
});

View File

@ -1,35 +1,39 @@
layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'menu', 'frame', 'theme', 'convert'],
function(exports) {
"use strict";
layui.define(['jquery', 'element'],
function (exports) {
var $ = layui.jquery;
var defer = $.Deferred();
var fullScreen = new function() {
var fullScreen = new function () {
this.func = null;
this.onFullchange = function(func){
this.onFullchange = function (func) {
this.func = func;
var evts = ['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange'];
for(var i=0;i<evts.length && func;i++) {
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("返回值");
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()) {
this.fullClose = function () {
if (this.isFullscreen()) {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.mozCancelFullScreen) {
@ -43,12 +47,14 @@ layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'tab', 'm
defer.resolve("返回值");
return defer.promise();
}
this.isFullscreen = function(){
this.isFullscreen = function () {
return document.fullscreenElement ||
document.msFullscreenElement ||
document.mozFullScreenElement ||
document.webkitFullscreenElement || false;
}
};
exports('fullscreen', fullScreen);
})

View File

@ -5,31 +5,34 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
$ = layui.jquery,
element = layui.element;
var pearMenu = function (opt) {
var menu = function (opt) {
this.option = opt;
};
pearMenu.prototype.render = function (opt) {
menu.prototype.render = function (opt) {
var option = {
elem: opt.elem,
async: opt.async,
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,
defaultMenu: opt.defaultMenu,
controlWidth: opt.controlWidth ? opt.controlWidth : "auto",
defaultMenu: opt.defaultMenu || 0,
accordion: opt.accordion,
height: opt.height,
theme: opt.theme,
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(){
option.done = function () {
if (option.control) {
rationalizeHeaderControlWidthAuto(option);
}
@ -49,18 +52,45 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
});
}
} else {
// 延时返回,和 javascript 执行时序关联
window.setTimeout(function () { renderMenu(option); }, 500);
}
// 处理高度
$("#" + opt.elem).height(option.height)
setTimeout(function () {
$("#" + opt.control + " .control").on("mousewheel DOMMouseScroll", function (event) {
return new pearMenu(option);
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);
}
pearMenu.prototype.click = function (clickEvent) {
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);
@ -70,7 +100,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
menuPath: dom.attr("menu-title"),
menuIcon: dom.attr("menu-icon"),
menuUrl: dom.attr("menu-url"),
openType: dom.attr("open-type")
menuType: dom.attr("menu-type"),
menuOpenType: dom.attr("menu-open-type")
};
var doms = hash(dom);
if (doms != null) {
@ -113,14 +144,14 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
return d;
}
pearMenu.prototype.skin = function (skin) {
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);
}
pearMenu.prototype.selectItem = function (pearId) {
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"
@ -183,7 +214,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
}
var activeMenus;
pearMenu.prototype.collapse = function (time) {
menu.prototype.collapse = function (time) {
var elem = this.option.elem;
var config = this.option;
if ($("#" + this.option.elem).is(".pear-nav-mini")) {
@ -197,12 +228,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
isHoverMenu(false, config);
var that = this;
$("#" + this.option.elem)
.promise()
.done(function () {
if (that.option.control) {
rationalizeHeaderControlWidth(that.option);
}
})
.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");
@ -212,13 +243,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
}, 400);
var that = this;
$("#" + this.option.elem)
.promise()
.done(function () {
isHoverMenu(true, config);
if (that.option.control) {
rationalizeHeaderControlWidth(that.option);
}
})
.promise()
.done(function () {
isHoverMenu(true, config);
if (that.option.control) {
rationalizeHeaderControlWidth(that.option);
}
})
}
}
@ -252,13 +283,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
}
}
element.init();
downShow(option);
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">'
'" 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) {
@ -278,7 +308,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
'" ' + 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-url="' + item.href + '" menu-id="' +
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>';
@ -296,8 +326,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
}
function createMenuAndControl(option) {
var control = '<div class="control"><ul class="layui-nav pear-nav-control pc layui-hide-xs" style="width: fit-content;">';
control+= '<li class="layui-nav-item tabdrop layui-hide" style="float:right !important;"><a href="javascript:;"><i class="layui-icon layui-icon-more layui-font-20"></i></a><dl class="layui-nav-child"></dl></li>';
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 + '">'
@ -349,7 +378,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
'</span></a>';
} else if (note.type == 1) {
// 创 建 菜 单 结 构
content += '<a ' + target + ' class="' + className + '" menu-type="' + note.type + '" menu-url="' + note.href +
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>';
@ -408,7 +437,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
'"><i class="' + note.icon + '"></i><span>' + note.title + '</span></a>';
} else if (note.type == 1) {
// 创 建 菜 单 结 构
content += '<a ' + target + ' class="' + className + '" menu-type="' + note.type + '" menu-url="' + note.href +
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>';
}
@ -425,48 +454,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
return content;
}
function downShow(option) {
$("body #" + option.elem).on("click", "a[menu-type='0']", function () {
if (!$("#" + option.elem).is(".pear-nav-mini")) {
var superEle = $(this).parent();
var ele = $(this).next('.layui-nav-child');
var heights = ele.children("dd").length * 48;
if ($(this).parent().is(".layui-nav-itemed")) {
if (option.accordion) {
var currentDom = $(this).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");
});
}
ele.height(0);
ele.animate({
height: heights + "px"
}, 240, function () {
ele.css({
height: "auto"
});
});
} else {
ele.animate({
height: "0px"
}, 240, function () {
ele.css({
height: "auto"
});
$(this).parent().removeClass("layui-nav-itemed");
});
}
}
})
}
/** 二 级 悬 浮 菜 单*/
function isHoverMenu(b, option) {
if (b) {
@ -525,68 +512,22 @@ layui.define(['table', 'jquery', 'element'], function (exports) {
rationalizeWidth = $headerControl.parent().innerWidth() - $headerControl.position().left;
}
$("#" + option.control + " .control").css({"width": rationalizeWidth});
var navobj = $("#" + option.control+' ul.pear-nav-control.pc');
var dropdown = $(".tabdrop", navobj);
var collection = 0;
var maxwidth = rationalizeWidth - 60;
var liwidth = 0;
//检查超过一行的标签页
$('.tabdrop').find('dd').each(function(){
var newLI = $('<li></li>').html($(this).html());
newLI.addClass('layui-nav-item');
newLI.attr('pear-href', $(this).attr('pear-href'));
newLI.attr('pear-title', $(this).attr('pear-title'));
newLI.attr('pear-id', $(this).attr('pear-id'));
navobj.append(newLI);
$(this).remove();
})
var litabs = navobj.find('>li').not('.tabdrop');
var totalwidth = 0;
litabs.each(function () {
totalwidth += $(this).outerWidth(true);
});
if (rationalizeWidth < totalwidth) {
litabs.each(function () {
liwidth += $(this).outerWidth(true);
if (liwidth > maxwidth) {
var newDD = $('<dd></dd>').html($(this).html());
newDD.attr('pear-href', $(this).attr('pear-href'));
newDD.attr('pear-title', $(this).attr('pear-title'));
newDD.attr('pear-id', $(this).attr('pear-id'));
dropdown.find('dl').append(newDD);
collection++;
$(this).remove();
}
});
if (collection > 0) {
dropdown.removeClass('layui-hide');
if (dropdown.find('.active').length === 1) {
dropdown.addClass('active');
} else {
dropdown.removeClass('active');
}
}
}else {
dropdown.addClass('layui-hide');
}
if (option.controlWidth && rationalizeWidth >= option.controlWidth) {
rationalizeWidth = option.controlWidth;
}
$("#" + option.control + " .control").css({ "width": rationalizeWidth, "transition": "width .15s" });
}
function rationalizeHeaderControlWidthAuto(option){
function rationalizeHeaderControlWidthAuto(option) {
$(window).on('resize', function () {
rationalizeHeaderControlWidth(option);
})
$(document).ready(function () {
rationalizeHeaderControlWidth(option);
setTimeout(() => {
rationalizeHeaderControlWidth(option);
}, 1000);
});
}
exports(MOD_NAME, new pearMenu());
})
exports(MOD_NAME, new menu());
})

View File

@ -1,11 +1,11 @@
layui.define(['jquery', 'element'], function(exports) {
layui.define(['jquery', 'element'], function (exports) {
"use strict";
var MOD_NAME = 'tab',
$ = layui.jquery,
element = layui.element;
var pearTab = function(opt) {
var pearTab = function (opt) {
this.option = opt;
};
@ -13,7 +13,7 @@ layui.define(['jquery', 'element'], function(exports) {
var tabDataCurrent = 0;
var contextTabDOM;
pearTab.prototype.render = function(opt) {
pearTab.prototype.render = function (opt) {
var option = {
elem: opt.elem,
@ -27,7 +27,7 @@ layui.define(['jquery', 'element'], function(exports) {
session: opt.session ? opt.session : false,
preload: opt.preload ? opt.preload : false,
closeEvent: opt.closeEvent,
success: opt.success ? opt.success : function(id) {}
success: opt.success ? opt.success : function (id) { }
}
if (option.session) {
@ -35,7 +35,7 @@ layui.define(['jquery', 'element'], function(exports) {
tabData = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
option.data = JSON.parse(sessionStorage.getItem(option.elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-data-current");
tabData.forEach(function(item, index) {
tabData.forEach(function (item, index) {
if (item.id == tabDataCurrent) {
option.index = index;
}
@ -48,10 +48,10 @@ layui.define(['jquery', 'element'], function(exports) {
var lastIndex;
var tab = createTab(option);
$("#" + option.elem).html(tab);
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-prev").click(function() {
$(".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() {
$(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-next").click(function () {
rollPage("right", option);
})
element.init();
@ -66,7 +66,7 @@ layui.define(['jquery', 'element'], function(exports) {
option.success(sessionStorage.getItem(option.elem + "-pear-tab-data-current"));
$("body .layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title").on("contextmenu", "li",
function(e) {
function (e) {
// 获取当前元素位置
var top = e.clientY;
var left = e.clientX;
@ -95,23 +95,23 @@ layui.define(['jquery', 'element'], function(exports) {
isOutAnim: false,
offset: [top, left],
content: menu, //iframe的url,
success: function(layero, index) {
success: function (layero, index) {
layer.close(lastIndex);
lastIndex = index;
menuEvent(option, index);
var timer;
$(layero).on('mouseout', function() {
timer = setTimeout(function() {
$(layero).on('mouseout', function () {
timer = setTimeout(function () {
layer.close(index);
}, 30)
});
$(layero).on('mouseover', function() {
$(layero).on('mouseover', function () {
clearTimeout(timer);
});
// 清除 item 右击
$(layero).on('contextmenu', function() {
$(layero).on('contextmenu', function () {
return false;
})
@ -124,10 +124,10 @@ layui.define(['jquery', 'element'], function(exports) {
return new pearTab(option);
}
pearTab.prototype.click = function(callback) {
pearTab.prototype.click = function (callback) {
var elem = this.option.elem;
var option = this.option;
element.on('tab(' + this.option.elem + ')', function(data) {
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-data-current", id);
if (!option.preload) {
@ -136,7 +136,7 @@ layui.define(['jquery', 'element'], function(exports) {
var iframeUrl = $iframe.attr("src");
if (!iframeUrl || iframeUrl === "about:blank") {
// 获取 url 并重载
tabData.forEach(function(item, index) {
tabData.forEach(function (item, index) {
if (item.id === id) {
iframeUrl = item.url;
}
@ -149,10 +149,10 @@ layui.define(['jquery', 'element'], function(exports) {
});
}
pearTab.prototype.positionTab = function() {
pearTab.prototype.positionTab = function () {
var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
var autoLeft = 0;
$tabTitle.children("li").each(function() {
$tabTitle.children("li").each(function () {
if ($(this).hasClass('layui-this')) {
return false;
} else {
@ -164,12 +164,12 @@ layui.define(['jquery', 'element'], function(exports) {
}, 200);
}
pearTab.prototype.clear = function() {
pearTab.prototype.clear = function () {
sessionStorage.removeItem(this.option.elem + "-pear-tab-data");
sessionStorage.removeItem(this.option.elem + "-pear-tab-data-current");
}
pearTab.prototype.addTab = function(opt) {
pearTab.prototype.addTab = function (opt) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@ -193,25 +193,25 @@ layui.define(['jquery', 'element'], function(exports) {
var index = 0;
// 根据过滤 fliter 标识, 重置选项卡标题
pearTab.prototype.changeTabTitleById = function(elem, id, title) {
pearTab.prototype.changeTabTitleById = function (elem, id, title) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id +
"'] .title");
currentTab.html(title);
}
// 根据过滤 filter 标识, 删除指定选项卡
pearTab.prototype.delTabByElem = function(elem, id, callback) {
pearTab.prototype.delTabByElem = function (elem, id, callback) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + "']");
if (currentTab.find("span").is(".able-close")) {
tabDelete(elem, id, callback);
}
}
// 根据过滤 filter 标识, 删除其他选项卡
pearTab.prototype.delOtherTabByElem = function(elem, callback) {
pearTab.prototype.delOtherTabByElem = function (elem, callback) {
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(i) {
$.each(tabtitle, function (i) {
if ($(this).attr("lay-id") != currentId) {
if ($(this).find("span").is(".able-close")) {
tabDelete(elem, $(this).attr("lay-id"), callback);
@ -221,18 +221,18 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 根据过滤 filter 标识, 删除全部选项卡
pearTab.prototype.delAllTabByElem = function(elem, callback) {
pearTab.prototype.delAllTabByElem = function (elem, callback) {
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(i) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(elem, $(this).attr("lay-id"), callback);
}
})
}
// 根据过滤 filter 标识, 删除当前选项卡
pearTab.prototype.delCurrentTabByElem = function(elem, callback) {
pearTab.prototype.delCurrentTabByElem = function (elem, callback) {
var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this");
if (currentTab.find("span").is(".able-close")) {
var currentId = currentTab.attr("lay-id");
@ -241,7 +241,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 通过过滤 filter 标识, 新增标签页
pearTab.prototype.addTabOnlyByElem = function(elem, opt, time) {
pearTab.prototype.addTabOnlyByElem = function (elem, opt, time) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@ -265,7 +265,7 @@ layui.define(['jquery', 'element'], function(exports) {
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
} else {
var isData = false;
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function() {
$.each($(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li[lay-id]"), function () {
if ($(this).attr("lay-id") == opt.id) {
isData = true;
}
@ -292,7 +292,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
/** 添 加 唯 一 选 项 卡 */
pearTab.prototype.addTabOnly = function(opt, time) {
pearTab.prototype.addTabOnly = function (opt, time) {
var title = '';
if (opt.close) {
title += '<span class="pear-tab-active"></span><span class="able-close title">' + opt.title +
@ -319,7 +319,7 @@ layui.define(['jquery', 'element'], function(exports) {
} else {
var isData = false;
$.each($(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-title li[lay-id]"),
function() {
function () {
if ($(this).attr("lay-id") == opt.id) {
isData = true;
}
@ -358,7 +358,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
// 刷 新 指 定 的 选 项 卡
pearTab.prototype.refresh = function(time) {
pearTab.prototype.refresh = function (time) {
// 刷 新 指 定 的 选 项 卡
var $iframe = $(".layui-tab[lay-filter='" + this.option.elem + "'] .layui-tab-content .layui-show")
.find("iframe");
@ -385,8 +385,8 @@ layui.define(['jquery', 'element'], function(exports) {
display: "block"
});
index++;
$iframe.on("load", function() {
pearLoad.fadeOut(1000, function() {
$iframe.on("load", function () {
pearLoad.fadeOut(1000, function () {
pearLoad.remove();
});
})
@ -402,12 +402,12 @@ layui.define(['jquery', 'element'], function(exports) {
if (!removeTab.hasClass("layui-this")) {
removeTab.remove();
var tabContent = $(".layui-tab[lay-filter='" + elem + "']").find("iframe[id='" + id + "']")
.parent();
.parent();
tabContent.remove();
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
tabData = tabData.filter(function(item) {
tabData = tabData.filter(function (item) {
return item.id != id;
})
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
@ -428,7 +428,7 @@ layui.define(['jquery', 'element'], function(exports) {
callback(currId);
tabData = JSON.parse(sessionStorage.getItem(elem + "-pear-tab-data"));
tabDataCurrent = sessionStorage.getItem(elem + "-pear-tab-data-current");
tabData = tabData.filter(function(item) {
tabData = tabData.filter(function (item) {
return item.id != id;
})
sessionStorage.setItem(elem + "-pear-tab-data", JSON.stringify(tabData));
@ -463,7 +463,7 @@ layui.define(['jquery', 'element'], function(exports) {
// 处 理 选 项 卡 头 部
var index = 0;
$.each(option.data, function(i, item) {
$.each(option.data, function (i, item) {
var TitleItem = '';
if (option.index == index) {
TitleItem += '<li lay-id="' + item.id +
@ -531,7 +531,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
function closeEvent(option) {
$(".layui-tab[lay-filter='" + option.elem + "']").on("click", ".layui-tab-close", function() {
$(".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);
})
@ -539,7 +539,7 @@ layui.define(['jquery', 'element'], function(exports) {
function menuEvent(option, index) {
$("#" + option.elem + "closeThis").click(function() {
$("#" + option.elem + "closeThis").click(function () {
var currentTab = contextTabDOM;
if (currentTab.find("span").is(".able-close")) {
@ -554,10 +554,10 @@ layui.define(['jquery', 'element'], function(exports) {
layer.close(index);
})
$("#" + option.elem + "closeOther").click(function() {
$("#" + 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) {
$.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,
@ -568,10 +568,10 @@ layui.define(['jquery', 'element'], function(exports) {
layer.close(index);
})
$("#" + option.elem + "closeAll").click(function() {
$("#" + option.elem + "closeAll").click(function () {
var currentId = contextTabDOM.attr("lay-id");
var tabtitle = $(".layui-tab[lay-filter='" + option.elem + "'] .layui-tab-title li");
$.each(tabtitle, function(i) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
}
@ -581,7 +581,7 @@ layui.define(['jquery', 'element'], function(exports) {
}
function toolEvent(option) {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeThis", function () {
var currentTab = $(".layui-tab[lay-filter='" + option.elem +
"'] .layui-tab-title .layui-this");
if (currentTab.find("span").is(".able-close")) {
@ -595,11 +595,11 @@ layui.define(['jquery', 'element'], function(exports) {
}
})
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeOther", function () {
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) {
$.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,
@ -609,11 +609,11 @@ layui.define(['jquery', 'element'], function(exports) {
})
})
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function() {
$("body .layui-tab[lay-filter='" + option.elem + "']").on("click", "#closeAll", function () {
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) {
$.each(tabtitle, function (i) {
if ($(this).find("span").is(".able-close")) {
tabDelete(option.elem, $(this).attr("lay-id"), option.closeEvent, option);
}
@ -626,10 +626,10 @@ layui.define(['jquery', 'element'], function(exports) {
var $tabTitle = $('#' + option.elem + ' .layui-tab-title');
var mouseScrollStep = 100
// 鼠标滚轮
$bodyTab.on("mousewheel DOMMouseScroll", function(e) {
$bodyTab.on("mousewheel DOMMouseScroll", function (e) {
e.originalEvent.preventDefault()
var delta = (e.originalEvent.wheelDelta && (e.originalEvent.wheelDelta > 0 ? "top" :
"down")) || // chrome & ie
"down")) || // chrome & ie
(e.originalEvent.detail && (e.originalEvent.detail > 0 ? "down" : "top")); // firefox
var scrollLeft = $tabTitle.scrollLeft();
@ -643,11 +643,11 @@ layui.define(['jquery', 'element'], function(exports) {
// 触摸移动
var touchX = 0;
$bodyTab.on("touchstart", function(e) {
$bodyTab.on("touchstart", function (e) {
var touch = e.originalEvent.targetTouches[0];
touchX = touch.pageX
})
$bodyTab.on("touchmove", function(e) {
$bodyTab.on("touchmove", function (e) {
var event = e.originalEvent;
if (event.targetTouches.length > 1) return;
event.preventDefault();

View File

@ -192,7 +192,12 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) {
var $tabTitle = $('.layui-tab[lay-filter=' + this.option.elem + '] .layui-tab-title');
var autoLeft = 0;
$tabTitle.children("li").each(function () {
var id = $(this).attr('lay-id');
if ($(this).hasClass('layui-this')) {
var isrc = $('.layui-tab-content .layui-show').find('iframe').attr('src');
if (isrc === '') {
$('.layui-tab-content .layui-show').find('iframe').attr('src', id);
}
return false;
} else {
autoLeft += $(this).outerWidth();
@ -511,10 +516,17 @@ layui.define(['jquery', 'element', 'dropdown'], function (exports) {
if (item.type === "_iframe") {
// console.log("itemid: ", item.id);
// console.log("itemurl: ", item.url);
tabDataCurrent = sessionStorage.getItem(option.elem + "-pear-tab-page-data-current");
// console.log("current: ", tabDataCurrent);
if (tabDataCurrent != item.url) {
item.url = '';
}
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',

View File

@ -3,49 +3,77 @@ window.rootPath = (function (src) {
? document.currentScript.src
: document.scripts[document.scripts.length - 1].src;
return src.substring(0, src.lastIndexOf("/") + 1);
// src = document.currentScript
// ? document.currentScript.src
// : null;
// if (!src) {
// var scriptsArray = [];
// if (document.scripts) {
// for (var i = 0; i < document.scripts.length; i++) {
// var item = document.scripts[i];
// if (!item.src) { continue; }
// // 只需要 pear 框架的脚本
// if (item.src.indexOf('/component/pear') === -1) { continue; }
// scriptsArray.push(item);
// }
// }
// if (scriptsArray.length) {
// src = scriptsArray[scriptsArray.length - 1].src;
// }
// }
// return src ? src.substring(0, src.lastIndexOf("/") + 1) : '';
})();
layui.config({
base: rootPath + "module/",
version: "3.40.0"
version: "4.0.3"
}).extend({
admin: "admin", // 框架布局组件
admin: "admin",
common: "common", // 公共方法封装
menu: "menu", // 数据菜单组件
frame: "frame", // 内容页面组件
tab: "tab", // 多选项卡组件
echarts: "echarts", // 数据图表组件
echartsTheme: "echartsTheme",// 数据图表主题
encrypt: "encrypt", // 数据加密组件
select: "select", // 下拉多选组件
drawer: "drawer", // 抽屉弹层组件
notice: "notice", // 消息提示组件
step:"step", // 分布表单组件
tag:"tag", // 多标签页组件
popup:"popup", // 弹层封装
treetable:"treetable", // 树状表格
dtree:"dtree", // 树结构
tinymce:"tinymce/tinymce", // 编辑器
area:"area", // 省市级联
count:"count", // 数字滚动
step: "step", // 分布表单组件
tag: "tag", // 多标签页组件
treetable: "treetable", // 树状表格
dtree: "dtree", // 树结构
tinymce: "tinymce/tinymce", // 编辑器
area: "area", // 省市级联
topBar: "topBar", // 置顶组件
button: "button", // 加载按钮
design: "design", // 表单设计
card: "card", // 数据卡片组件
loading: "loading", // 加载组件
cropper:"cropper", // 裁剪组件
convert:"convert", // 数据转换
yaml:"yaml", // yaml 解析组件
cropper: "cropper", // 裁剪组件
convert: "convert", // 数据转换
context: "context", // 上下文组件
http: "http", // 网络请求组件
theme: "theme", // 主题转换
message: "message", // 通知组件
toast: "toast", // 消息通知
iconPicker: "iconPicker", // 图标选择
nprogress: "nprogress", // 进度过渡
watermark:"watermark/watermark", //水印组件
fullscreen:"fullscreen", //全屏组件
popover:"popover/popover" //汽泡组件
}).use(['layer', 'theme'], function () {
layui.theme.changeTheme(window, false);
});
watermark: "watermark/watermark", //水印组件
popover: "popover/popover", //汽泡组件
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 () { });

View File

@ -0,0 +1 @@
<h1>Dashboard</h1>

View File

@ -86,4 +86,35 @@ function saveData(data, filename) {
aLink.click()
//没有清理的 DOM 元素引用
//document.body.removeChild(aLink)
}
function getCurrentYearStart() {
const currentDate = new Date();
return new Date(currentDate.getFullYear(), 0, 1, 0, 0, 0, 0);
}
function formatDate(date, format) {
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
return format
.replace('YYYY', year)
.replace('MM', month)
.replace('DD', day)
.replace('HH', hours)
.replace('mm', minutes)
.replace('ss', seconds);
}
function getCurrentMonthEnd() {
const currentDate = new Date();
const currentYear = currentDate.getFullYear();
const currentMonth = currentDate.getMonth();
const lastDayOfMonth = new Date(currentYear, currentMonth + 1, 0);
const lastDate = lastDayOfMonth.getDate();
return new Date(currentYear, currentMonth, lastDate, 23, 59, 59, 999);
}

View File

@ -0,0 +1,70 @@
{
"logo": {
"title": "Pear Admin",
"image": "/statics/admin/images/logo.png"
},
"menu": {
"data": "/system/menus",
"method": "GET",
"accordion": true,
"collapse": false,
"control": false,
"controlWidth": 500,
"select": "10",
"async": true
},
"tab": {
"enable": true,
"keepState": true,
"session": true,
"preload": false,
"max": "30",
"index": {
"id": "10",
"href": "",
"title": "首页"
}
},
"theme": {
"defaultColor": "2",
"defaultMenu": "dark-theme",
"defaultHeader": "light-theme",
"allowCustom": true,
"banner": false
},
"colors": [
{
"id": "1",
"color": "#2d8cf0",
"second": "#ecf5ff"
},
{
"id": "2",
"color": "#36b368",
"second": "#f0f9eb"
},
{
"id": "3",
"color": "#f6ad55",
"second": "#fdf6ec"
},
{
"id": "4",
"color": "#f56c6c",
"second": "#fef0f0"
},
{
"id": "5",
"color": "#3963bc",
"second": "#ecf5ff"
}
],
"other": {
"keepLoad": "1200",
"autoHead": false,
"footer": false
},
"header": {
"message": "/statics/admin/data/message.json"
}
}

View File

@ -4,16 +4,16 @@ body,
height: 100%;
}
.pear-admin .layui-header,
.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;
top: 60px!important;
}
.pear-admin.banner-layout .layui-side .layui-logo {
@ -25,15 +25,38 @@ body,
}
.pear-admin.banner-layout .layui-side .layui-side-scroll {
height: 100% !important;
height: 100%!important;
}
.pear-admin.banner-layout .layui-side .layui-side-scroll {
height: 100% !important;
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.dark-theme .layui-layout-control .layui-this *{
background-color: rgba(0,0,0,.1)!important;
}
.pear-admin.banner-layout .layui-header {
z-index: 99999;
width: 100%;
left: 0px;
}
.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.banner-layout .layui-header.dark-theme {
box-shadow: 2px 0 6px rgb(0 21 41 / 35%);
}
.pear-admin .layui-header .layui-logo {
@ -56,6 +79,7 @@ body,
left: 230px;
width: calc(100% - 230px);
background-color: white;
border-bottom: 1px solid whitesmoke;
}
.pear-admin .layui-layout-control {
@ -68,13 +92,12 @@ body,
}
.pear-admin .layui-logo {
height: 60px;
line-height: 60px;
border-bottom: 1px solid rgba(0, 0, 0, .12);
box-sizing: border-box;
width: 230px;
height: 59px;
line-height: 59px;
position: relative;
background-color: #28333E;
width: 230px;
border-bottom: 1px solid rgba(0, 0, 0, .12);
}
.pear-admin .layui-logo img {
@ -85,7 +108,7 @@ body,
.pear-admin .layui-logo .title {
font-size: 21px;
font-weight: 550;
color: var(--global-primary-color);
color: #5FB878;
position: relative;
top: 5px;
margin-left: 5px;
@ -120,16 +143,9 @@ body,
}
.pear-admin .layui-body {
left: 230px;
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 {
@ -138,8 +154,8 @@ body,
.pear-admin .layui-footer {
position: absolute;
display: flex;
justify-content: space-between;
display: flex;
justify-content: space-between;
left: 230px;
background: #fff;
border-top: 1px solid #F2F2F2;
@ -156,62 +172,13 @@ body,
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;
@media screen and (max-width: 768px) {
.pear-admin.banner-layout .layui-header .layui-logo {
display: none;
}
.pear-admin.banner-layout .layui-header .layui-layout-left {
left: 0px;
}
}
/** 收缩布局 */
@ -248,14 +215,18 @@ body,
display: none;
}
.pear-mini .bottom-nav li {
width: 100% !important;
}
.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;
background-color: #5FB878;
}
.pear-admin .layui-header .layui-nav .layui-this:after {
@ -267,18 +238,18 @@ body,
}
.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;
position: absolute;
z-index: 400000;
bottom: 30px;
right: 30px;
background-color: #5FB878 !important;
height: 50px;
line-height: 50px;
text-align: center;
border-radius: 50px;
box-shadow: 2px 0 6px rgba(0, 21, 41, .35);
}
.pear-collapsed-pe a {
@ -316,6 +287,10 @@ body,
padding-right: 10px;
}
.pear-mini .bottom-nav {
display: none;
}
.pear-mini .layui-side-scroll {
height: calc(100% - 62px);
}
@ -397,8 +372,8 @@ body,
}
.layer-anim-right {
-webkit-animation: am-horizontal-roll_show .5s ease-out;
animation: am-horizontal-roll_show .5s ease-out;
-webkit-animation: am-horizontal-roll_show .6s ease-out;
animation: am-horizontal-roll_show .6s ease-out;
}
@ -424,8 +399,8 @@ body,
color: whitesmoke;
}
.dark-theme.layui-header li>a {
color: whitesmoke !important;
.dark-theme.layui-header li>a{
color: whitesmoke!important;
}
.dark-theme.layui-header .layui-logo {
@ -479,9 +454,9 @@ body,
width: 100%;
height: 100%;
padding: 4px;
top: -6px;
left: -6px;
border: var(--global-primary-color) 2px solid;
top: -5px;
left: -5px;
border: #5FB878 2px solid;
opacity: 1;
border-radius: 4px;
}
@ -499,7 +474,13 @@ body,
-webkit-transition: all .3s;
opacity: 0;
}
@media screen and (max-width: 450px) {
.pearone-color .layui-form-item .layui-input-inline {
float: left !important;
width: 190px !important;
margin: 0 10px 0 0!important;
}
}
.select-color {
margin-bottom: 30px;
}
@ -515,133 +496,77 @@ body,
}
.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;
width: 30px;
height: 30px;
border-radius: 3px;
float: left;
margin-left: 20px;
color: white;
font-size: 18px;
text-align: center;
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .15);
line-height: 30px;
}
.message .layui-tab-title li:not(:last-child) {
border-right: 1px solid #eee;
}
/** 首屏加载 */
.loader-wrapper {
position: fixed;
/* 搜索面板 */
.menu-search-content .layui-input {
padding-left: 30px;
}
.menu-search-content {
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.menu-search-input-wrapper {
width: 100%;
height: 100%;
background-color: whitesmoke;
z-index: 9999999;
padding: 15px 15px;
}
.loader {
width: 50px;
height: 50px;
margin: 30px auto 40px;
margin-top: 20%;
.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;
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;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
height: 50px;
border-radius: 10px;
background-color: var(--global-primary-color);
position: absolute;
top: 0;
left: 0;
animation: loading .5s linear infinite;
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;
}
@-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);
}
.menu-search-list li:hover {
background-color: #5FB878;
color: white;
}
@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);
}
.menu-search-list li.this {
background-color: #5FB878;
color: white;
}
@-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);
}
}
/* 搜索面板结束 */

View File

@ -0,0 +1,99 @@
.layui-form {
width: 320px !important;
margin: auto !important;
margin-top: 160px !important;
}
.layui-form button {
width: 100% !important;
height: 44px !important;
line-height: 44px !important;
font-size: 16px !important;
background-color: #2d8cf0 !important;
font-weight: 550 !important;
}
.layui-form-checked[lay-skin=primary] i {
border-color: #2d8cf0 !important;
background-color: #2d8cf0 !important;
color: #fff !important;
}
.layui-tab-content {
margin-top: 15px !important;
padding-left: 0px !important;
padding-right: 0px !important;
}
.layui-form-item {
margin-top: 20px !important;
}
.layui-input {
height: 44px !important;
line-height: 44px !important;
padding-left: 15px !important;
border-radius: 3px !important;
}
.layui-input:focus {
box-shadow: 0px 0px 2px 1px #2d8cf0 !important;
}
.layui-form-danger:focus{
box-shadow: 0px 0px 2px 1px #f56c6c !important;
}
.logo {
width: 60px !important;
margin-top: 10px !important;
margin-bottom: 10px !important;
margin-left: 20px !important;
}
.title {
font-size: 30px !important;
font-weight: 550 !important;
margin-left: 20px !important;
color: #2d8cf0 !important;
display: inline-block !important;
height: 60px !important;
line-height: 60px !important;
margin-top: 10px !important;
position: absolute !important;
}
.desc {
width: 100% !important;
text-align: center !important;
color: gray !important;
height: 60px !important;
line-height: 60px !important;
}
body {
background-repeat:no-repeat;
background-color: whitesmoke;
background-size: 100%;
height: 100%;
}
.code {
margin-right: 13px;
margin: 0px !important;
border: #e6e6e6 1px solid;
display: inline-block!important;
}
.codeImage {
float: right;
height: 42px;
border: #e6e6e6 1px solid;
cursor: pointer;
}
@media (max-width:768px){
body{
background-position:center;
}
}

View File

@ -1,40 +1,39 @@
.pear-result {
.result {
text-align: center;
}
.pear-result .success svg {
.result .success svg {
color: #32C682;
text-align: center;
margin-top: 40px;
}
.pear-result .error svg {
.result .error svg {
color: #f56c6c;
text-align: center;
margin-top: 40px;
}
.pear-result .title {
.result .title {
margin-top: 25px;
}
.pear-result .description {
.result .desc {
margin-top: 25px;
width: 60%;
margin-left: 20%;
color: rgba(0, 0, 0, .45);
}
.pear-result .content {
.result .content {
margin-top: 20px;
width: 80%;
border-radius: 4px;
border-radius: 10px;
background-color: whitesmoke;
padding: 20px 32px;
height: 200px;
margin-left: 10%;
margin-bottom: 30px;
text-align: left;
}
.pear-result .extra {
.result .action {
padding-top: 10px;
border-top: 1px whitesmoke solid;
margin-top: 25px;
}

View File

@ -1,9 +1,9 @@
@charset "UTF-8";
xm-select { border-color: var(--global-primary-color) !important; }
{{/* xm-select { border-color: var(--global-primary-color) !important; }
xm-select .xm-label .label-content .xm-label-block { background-color: var(--global-primary-color) !important; }
xm-select .xm-body .xm-option .xm-option-icon { border-color: var(--global-primary-color) !important; }
xm-select .xm-body .xm-option.selected .xm-option-icon { color: var(--global-primary-color) !important; }
xm-select .xm-body .xm-option.selected .xm-option-icon { color: var(--global-primary-color) !important; } */}}
.layui-table-box input[type="radio"]{
font-size: 16px !important;

View File

@ -0,0 +1,43 @@
[
{
"id": "system",
"title": "系统管理",
"icon": "layui-icon layui-icon-set-fill",
"type": 0,
"href": "",
"children": [
{
"id": 604,
"title": "部门管理",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "/system/department/list"
},
{
"id": 601,
"title": "用户管理",
"icon": "layui-icon layui-icon-face-smile",
"type": 1,
"openType": "_iframe",
"href": "/system/user/list"
},
{
"id": 602,
"title": "角色管理",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "/system/role/list"
},
{
"id": 603,
"title": "菜单管理",
"icon": "layui-icon layui-icon-face-cry",
"type": 1,
"openType": "_iframe",
"href": "/system/menu/list"
}
]
}
]

View File

@ -0,0 +1,90 @@
[{
"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": []
}
]

View File

@ -0,0 +1,132 @@
{
"code": 0,
"msg": "...",
"count": 3,
"data": [{
"userId": "1",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级'管'理员",
"email": "854085'4@'qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "2",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就\"眠\"仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "3",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "4",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级管理员",
"email": "8540854@qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "5",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就眠仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "6",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "7",
"username": "admin",
"password": "$2a$10$1K7E1.IYCrsoZVCb6utOo.5jENtfOzhdKWhc49t2lk.UQd7Oam4FG",
"salt": null,
"status": null,
"realName": "超级管理员",
"email": "8540854@qq.com",
"avatar": null,
"sex": "1",
"phone": "15543526531",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "8",
"username": "854085467",
"password": null,
"salt": null,
"status": null,
"realName": "就眠仪式",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}, {
"userId": "9",
"username": "970796069",
"password": null,
"salt": null,
"status": null,
"realName": "王二麻子",
"email": null,
"avatar": null,
"sex": "1",
"phone": "1555324324234",
"enable": "1",
"login": "1",
"roleIds": null
}]
}

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 197 KiB

After

Width:  |  Height:  |  Size: 197 KiB

View File

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 74 KiB

View File

@ -0,0 +1,24 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" baseProfile="full" width="100%" height="100%" viewBox="0 0 1400 800">
<rect x="1300" y="400" rx="40" ry="40" width="300" height="300" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 1450 550" to="360 1450 550" repeatCount="indefinite"/>
</rect>
<path d="M 100 350 A 150 150 0 1 1 400 350 Q400 370 380 370 L 250 370 L 120 370 Q100 370 100 350" stroke="rgb(253, 214, 99)" fill="rgb(253, 214, 99)">
<animateMotion path="M 800 -200 L 800 -300 L 800 -200" dur="20s" begin="0s" repeatCount="indefinite"/>
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="30s" type="rotate" values="0 210 530 ; -30 210 530 ; 0 210 530" keyTimes="0 ; 0.5 ; 1" repeatCount="indefinite"/>
</path>
<circle cx="200" cy="150" r="20" stroke="#1a73e8" fill="#1a73e8">
<animateMotion path="M 0 0 L 40 20 Z" dur="5s" repeatCount="indefinite"/>
</circle>
<!-- 三角形 -->
<path d="M 165 580 L 270 580 Q275 578 270 570 L 223 483 Q220 480 217 483 L 165 570 Q160 578 165 580" stroke="rgb(238, 103, 92)" fill="rgb(238, 103, 92)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="0 210 530" to="360 210 530" repeatCount="indefinite"/>
</path>
<rect x="400" y="600" rx="40" ry="40" width="100" height="100" stroke="rgb(129, 201, 149)" fill="rgb(129, 201, 149)">
<animateTransform attributeType="XML" attributeName="transform" begin="0s" dur="35s" type="rotate" from="-30 550 750" to="330 550 750" repeatCount="indefinite"/>
</rect>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 296 KiB

After

Width:  |  Height:  |  Size: 296 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

File diff suppressed because one or more lines are too long

View File

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 322 KiB

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More