reset color;
add title bar;
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"User Manage": "User Manage",
|
"User Manage": "User Manage",
|
||||||
|
"frps multiuser": "frps multiuser",
|
||||||
"User": "User",
|
"User": "User",
|
||||||
"Token": "Token",
|
"Token": "Token",
|
||||||
"Notes": "Notes",
|
"Notes": "Notes",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"User Manage": "用户管理",
|
"User Manage": "用户管理",
|
||||||
|
"frps multiuser": "frps用户管理",
|
||||||
"User": "用户名(user)",
|
"User": "用户名(user)",
|
||||||
"Token": "凭证(meta_token)",
|
"Token": "凭证(meta_token)",
|
||||||
"Notes": "备注",
|
"Notes": "备注",
|
||||||
|
|||||||
@@ -1,8 +1,23 @@
|
|||||||
body {
|
html, body {
|
||||||
padding: 15px;
|
padding: 0;
|
||||||
word-break: break-all;
|
word-break: break-all;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
background-color: #58b7ff;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .title {
|
||||||
|
padding: 10px 15px;
|
||||||
|
line-height: 40px;
|
||||||
|
font-size: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
section {
|
||||||
|
padding: 15px 15px 0 15px;
|
||||||
|
}
|
||||||
|
|
||||||
#searchForm input {
|
#searchForm input {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
@@ -44,10 +59,132 @@ body {
|
|||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layui-btn-container{
|
.layui-btn-container {
|
||||||
height: 30px;
|
height: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layui-layer-btn > a[class^=layui-layer-btn]{
|
.layui-layer-btn > a[class^=layui-layer-btn] {
|
||||||
line-height: 28px;
|
line-height: 28px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.layui-table-page {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*以下重置用到的layui组件的颜色*/
|
||||||
|
|
||||||
|
.layui-btn {
|
||||||
|
background-color: #409eff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-layer-btn .layui-layer-btn0 {
|
||||||
|
background-color: #409eff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-btn-primary {
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-btn-primary:hover {
|
||||||
|
border-color: #79bbff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-input:focus,
|
||||||
|
.layui-textarea:focus {
|
||||||
|
border-color: #79bbff !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-form-danger + .layui-form-select .layui-input,
|
||||||
|
.layui-form-danger:focus {
|
||||||
|
border-color: #ff5722 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-laypage .layui-laypage-curr .layui-laypage-em {
|
||||||
|
background-color: #409eff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-laypage input:focus, .layui-laypage select:focus {
|
||||||
|
border-color: #79bbff !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-view .layui-table td[data-edit]:hover:after {
|
||||||
|
border-color: #79bbff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-form-checkbox[lay-skin=primary]:hover > i {
|
||||||
|
border-color: #79bbff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-form-checked[lay-skin=primary] > i {
|
||||||
|
background-color: #409eff;
|
||||||
|
border-color: #409eff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-checked {
|
||||||
|
background-color: #ecf5ff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-checked:hover {
|
||||||
|
background-color: #d9ecff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
header {
|
||||||
|
background-color: #395c74;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-btn {
|
||||||
|
background-color: #4f80a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-layer-btn .layui-layer-btn0 {
|
||||||
|
background-color: #4f80a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-btn-primary {
|
||||||
|
background-color: transparent;
|
||||||
|
border-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-btn-primary:hover {
|
||||||
|
border-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-input:focus,
|
||||||
|
.layui-textarea:focus {
|
||||||
|
border-color: #666 !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-laypage .layui-laypage-curr .layui-laypage-em {
|
||||||
|
background-color: #4f80a1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-laypage input:focus, .layui-laypage select:focus {
|
||||||
|
border-color: #666 !important;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-view .layui-table td[data-edit]:hover:after {
|
||||||
|
border-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-form-checkbox[lay-skin=primary]:hover > i {
|
||||||
|
border-color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-form-checked[lay-skin=primary] > i {
|
||||||
|
background-color: #4f80a1;
|
||||||
|
border-color: #4f80a1 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-checked {
|
||||||
|
background-color: rgba(255, 255, 255, .04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.layui-table-checked:hover {
|
||||||
|
background-color: rgba(255, 255, 255, .08);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,42 +18,48 @@
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<form class="layui-form layui-row layui-col-space16" id="searchForm" lay-filter="searchForm">
|
<header>
|
||||||
<div class="layui-col-md3">
|
<div class="title">${ .FrpsMultiuser }</div>
|
||||||
<div class="layui-input-wrap">
|
</header>
|
||||||
<div class="layui-input-prefix">
|
<section>
|
||||||
<i class="layui-icon layui-icon-username"></i>
|
<form class="layui-form layui-row layui-col-space16" id="searchForm" lay-filter="searchForm">
|
||||||
|
<div class="layui-col-md3">
|
||||||
|
<div class="layui-input-wrap">
|
||||||
|
<div class="layui-input-prefix">
|
||||||
|
<i class="layui-icon layui-icon-username"></i>
|
||||||
|
</div>
|
||||||
|
<input type="text" name="user" placeholder="${ .User }" class="layui-input" autocomplete="off"
|
||||||
|
lay-affix="clear">
|
||||||
</div>
|
</div>
|
||||||
<input type="text" name="user" placeholder="${ .User }" class="layui-input" autocomplete="off"
|
|
||||||
lay-affix="clear">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-col-md3">
|
||||||
<div class="layui-col-md3">
|
<div class="layui-input-wrap">
|
||||||
<div class="layui-input-wrap">
|
<div class="layui-input-prefix">
|
||||||
<div class="layui-input-prefix">
|
<i class="layui-icon layui-icon-vercode"></i>
|
||||||
<i class="layui-icon layui-icon-vercode"></i>
|
</div>
|
||||||
|
<input type="text" name="token" placeholder="${ .Token }" class="layui-input" autocomplete="off"
|
||||||
|
lay-affix="clear">
|
||||||
</div>
|
</div>
|
||||||
<input type="text" name="token" placeholder="${ .Token }" class="layui-input" autocomplete="off"
|
|
||||||
lay-affix="clear">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-col-md3">
|
||||||
<div class="layui-col-md3">
|
<div class="layui-input-wrap">
|
||||||
<div class="layui-input-wrap">
|
<div class="layui-input-prefix">
|
||||||
<div class="layui-input-prefix">
|
<i class="layui-icon layui-icon-note"></i>
|
||||||
<i class="layui-icon layui-icon-note"></i>
|
</div>
|
||||||
|
<input type="text" name="comment" placeholder="${ .Notes }" class="layui-input" autocomplete="off"
|
||||||
|
lay-affix="clear">
|
||||||
</div>
|
</div>
|
||||||
<input type="text" name="comment" placeholder="${ .Notes }" class="layui-input" autocomplete="off"
|
|
||||||
lay-affix="clear">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="layui-col-md3">
|
||||||
<div class="layui-col-md3">
|
<div class="layui-btn-container">
|
||||||
<div class="layui-btn-container">
|
<button class="layui-btn layui-btn-sm" id="searchBtn">${ .Search }</button>
|
||||||
<button class="layui-btn layui-btn-sm" id="searchBtn">${ .Search }</button>
|
<button class="layui-btn layui-btn-sm layui-btn-primary" type="reset" id="resetBtn">${ .Reset }</button>
|
||||||
<button class="layui-btn layui-btn-sm layui-btn-primary" type="reset" id="resetBtn">${ .Reset }</button>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</form>
|
||||||
</form>
|
<table id="tokenTable" lay-filter="tokenTable"></table>
|
||||||
<table id="tokenTable" lay-filter="tokenTable"></table>
|
</section>
|
||||||
|
|
||||||
<script type="text/html" id="toolbarTemplate">
|
<script type="text/html" id="toolbarTemplate">
|
||||||
<div class="layui-btn-container">
|
<div class="layui-btn-container">
|
||||||
<button class="layui-btn layui-btn-sm" lay-event="add">${ .NewUser }</button>
|
<button class="layui-btn layui-btn-sm" lay-event="add">${ .NewUser }</button>
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ func (c *HandleController) MakeManagerFunc() func(context *gin.Context) {
|
|||||||
return func(context *gin.Context) {
|
return func(context *gin.Context) {
|
||||||
context.HTML(http.StatusOK, "index.html", gin.H{
|
context.HTML(http.StatusOK, "index.html", gin.H{
|
||||||
"UserManage": ginI18n.MustGetMessage(context, "User Manage"),
|
"UserManage": ginI18n.MustGetMessage(context, "User Manage"),
|
||||||
|
"FrpsMultiuser": ginI18n.MustGetMessage(context, "frps multiuser"),
|
||||||
"User": ginI18n.MustGetMessage(context, "User"),
|
"User": ginI18n.MustGetMessage(context, "User"),
|
||||||
"Token": ginI18n.MustGetMessage(context, "Token"),
|
"Token": ginI18n.MustGetMessage(context, "Token"),
|
||||||
"Notes": ginI18n.MustGetMessage(context, "Notes"),
|
"Notes": ginI18n.MustGetMessage(context, "Notes"),
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 147 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 129 KiB After Width: | Height: | Size: 120 KiB |
|
Before Width: | Height: | Size: 331 KiB After Width: | Height: | Size: 236 KiB |
|
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 134 KiB |