V2.8.1
修复几处bug
This commit is contained in:
@@ -67,8 +67,7 @@ func (self *BaseController) Auth() {
|
|||||||
if userId > 0 {
|
if userId > 0 {
|
||||||
user, err := models.AdminGetById(userId)
|
user, err := models.AdminGetById(userId)
|
||||||
|
|
||||||
//if err == nil && password == libs.Md5([]byte(self.getClientIp()+"|"+user.Password+user.Salt)) {
|
if err == nil && password == libs.Md5([]byte(self.getClientIp()+"|"+user.Password+user.Salt)) {
|
||||||
if err == nil && password == libs.Md5([]byte(user.Password+user.Salt)){
|
|
||||||
self.userId = user.Id
|
self.userId = user.Id
|
||||||
self.loginName = user.LoginName
|
self.loginName = user.LoginName
|
||||||
self.userName = user.RealName
|
self.userName = user.RealName
|
||||||
@@ -78,7 +77,7 @@ func (self *BaseController) Auth() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isHasAuth := strings.Contains(self.allowUrl, self.controllerName+"/"+self.actionName)
|
isHasAuth := strings.Contains(self.allowUrl, self.controllerName+"/"+self.actionName)
|
||||||
noAuth := "ajaxsave/table/loginin/loginout/getnodes/start/apitask/apistart/apipause"
|
noAuth := "ajaxsave/table/loginin/loginout/getnodes/start/apitask/apistart/apipause"
|
||||||
isNoAuth := strings.Contains(noAuth, self.actionName)
|
isNoAuth := strings.Contains(noAuth, self.actionName)
|
||||||
|
|
||||||
if isHasAuth == false && isNoAuth == false {
|
if isHasAuth == false && isNoAuth == false {
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ func (self *LoginController) LoginIn() {
|
|||||||
user.LastIp = self.getClientIp()
|
user.LastIp = self.getClientIp()
|
||||||
user.LastLogin = time.Now().Unix()
|
user.LastLogin = time.Now().Unix()
|
||||||
user.Update()
|
user.Update()
|
||||||
authkey := libs.Md5([]byte(user.Password + user.Salt))
|
authkey := libs.Md5([]byte(self.getClientIp() + "|" + user.Password + user.Salt))
|
||||||
self.Ctx.SetCookie("auth", strconv.Itoa(user.Id)+"|"+authkey, 7*86400)
|
self.Ctx.SetCookie("auth", strconv.Itoa(user.Id)+"|"+authkey, 7*86400)
|
||||||
|
|
||||||
self.ajaxMsg("登录成功", MSG_OK)
|
self.ajaxMsg("登录成功", MSG_OK)
|
||||||
|
|||||||
27
jobs/job.go
27
jobs/job.go
@@ -222,16 +222,19 @@ func RemoteCommandJob(id int, serverId int, name string, command string, servers
|
|||||||
jobresult.OutMsg = ""
|
jobresult.OutMsg = ""
|
||||||
jobresult.ErrMsg = ""
|
jobresult.ErrMsg = ""
|
||||||
jobresult.IsTimeout = false
|
jobresult.IsTimeout = false
|
||||||
|
jobresult.IsOk = true
|
||||||
|
|
||||||
key, err := ioutil.ReadFile(servers.PrivateKeySrc)
|
key, err := ioutil.ReadFile(servers.PrivateKeySrc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("读取私钥失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Create the Signer for this private key.
|
// Create the Signer for this private key.
|
||||||
signer, err := ssh.ParsePrivateKey(key)
|
signer, err := ssh.ParsePrivateKey(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("创建签名失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
addr := fmt.Sprintf("%s:%d", servers.ServerIp, servers.Port)
|
addr := fmt.Sprintf("%s:%d", servers.ServerIp, servers.Port)
|
||||||
@@ -250,6 +253,7 @@ func RemoteCommandJob(id int, serverId int, name string, command string, servers
|
|||||||
client, err := ssh.Dial("tcp", addr, config)
|
client, err := ssh.Dial("tcp", addr, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,6 +262,7 @@ func RemoteCommandJob(id int, serverId int, name string, command string, servers
|
|||||||
session, err := client.NewSession()
|
session, err := client.NewSession()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
@@ -269,16 +274,16 @@ func RemoteCommandJob(id int, serverId int, name string, command string, servers
|
|||||||
var c bytes.Buffer
|
var c bytes.Buffer
|
||||||
session.Stdout = &b
|
session.Stdout = &b
|
||||||
session.Stderr = &c
|
session.Stderr = &c
|
||||||
|
jobresult.IsTimeout = false
|
||||||
//session.Output(command)
|
//session.Output(command)
|
||||||
if err := session.Run(command); err != nil {
|
if err := session.Run(command); err != nil {
|
||||||
|
jobresult.ErrMsg = c.String()
|
||||||
|
jobresult.OutMsg = b.String()
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
return
|
|
||||||
}
|
}
|
||||||
jobresult.OutMsg = b.String()
|
jobresult.OutMsg = b.String()
|
||||||
jobresult.ErrMsg = c.String()
|
jobresult.ErrMsg = c.String()
|
||||||
jobresult.IsOk = true
|
jobresult.IsOk = true
|
||||||
jobresult.IsTimeout = false
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
return job
|
return job
|
||||||
@@ -306,6 +311,7 @@ func RemoteCommandJobByPassword(id int, serverId int, name string, command strin
|
|||||||
jobresult.OutMsg = ""
|
jobresult.OutMsg = ""
|
||||||
jobresult.ErrMsg = ""
|
jobresult.ErrMsg = ""
|
||||||
jobresult.IsTimeout = false
|
jobresult.IsTimeout = false
|
||||||
|
jobresult.IsOk = true
|
||||||
|
|
||||||
// get auth method
|
// get auth method
|
||||||
auth = make([]ssh.AuthMethod, 0)
|
auth = make([]ssh.AuthMethod, 0)
|
||||||
@@ -325,6 +331,7 @@ func RemoteCommandJobByPassword(id int, serverId int, name string, command strin
|
|||||||
|
|
||||||
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
|
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("连接服务器失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -333,6 +340,7 @@ func RemoteCommandJobByPassword(id int, serverId int, name string, command strin
|
|||||||
// create session
|
// create session
|
||||||
if session, err = client.NewSession(); err != nil {
|
if session, err = client.NewSession(); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("连接服务器失败,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,12 +351,9 @@ func RemoteCommandJobByPassword(id int, serverId int, name string, command strin
|
|||||||
//session.Output(command)
|
//session.Output(command)
|
||||||
if err := session.Run(command); err != nil {
|
if err := session.Run(command); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
return
|
|
||||||
}
|
}
|
||||||
jobresult.OutMsg = b.String()
|
jobresult.OutMsg = b.String()
|
||||||
jobresult.ErrMsg = c.String()
|
jobresult.ErrMsg = c.String()
|
||||||
jobresult.IsOk = true
|
|
||||||
jobresult.IsTimeout = false
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -369,11 +374,13 @@ func RemoteCommandJobByTelnetPassword(id int, serverId int, name string, command
|
|||||||
jobresult.OutMsg = ""
|
jobresult.OutMsg = ""
|
||||||
jobresult.ErrMsg = ""
|
jobresult.ErrMsg = ""
|
||||||
jobresult.IsTimeout = false
|
jobresult.IsTimeout = false
|
||||||
|
jobresult.IsOk = true
|
||||||
|
|
||||||
addr := fmt.Sprintf("%s:%d", servers.ServerIp, servers.Port)
|
addr := fmt.Sprintf("%s:%d", servers.ServerIp, servers.Port)
|
||||||
conn, err := gote.DialTimeout("tcp", addr, timeout)
|
conn, err := gote.DialTimeout("tcp", addr, timeout)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败0,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -383,26 +390,31 @@ func RemoteCommandJobByTelnetPassword(id int, serverId int, name string, command
|
|||||||
|
|
||||||
if _, err = conn.Read(buf); err != nil {
|
if _, err = conn.Read(buf); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-1,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = conn.Write([]byte(servers.ServerAccount + "\r\n")); err != nil {
|
if _, err = conn.Write([]byte(servers.ServerAccount + "\r\n")); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-2,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = conn.Read(buf); err != nil {
|
if _, err = conn.Read(buf); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-3,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = conn.Write([]byte(servers.Password + "\r\n")); err != nil {
|
if _, err = conn.Write([]byte(servers.Password + "\r\n")); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-4,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, err = conn.Read(buf); err != nil {
|
if _, err = conn.Read(buf); err != nil {
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-5,%v", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,6 +431,7 @@ func RemoteCommandJobByTelnetPassword(id int, serverId int, name string, command
|
|||||||
for _, c := range commandArr {
|
for _, c := range commandArr {
|
||||||
_, err = conn.Write([]byte(c + "\r\n"))
|
_, err = conn.Write([]byte(c + "\r\n"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
jobresult.ErrMsg = fmt.Sprintf("服务器连接失败-6,%v", err.Error())
|
||||||
jobresult.IsOk = false
|
jobresult.IsOk = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -717,7 +730,7 @@ func (j *Job) Run() {
|
|||||||
content = strings.Replace(content, "{{TaskId}}", strconv.Itoa(j.Task.Id), -1)
|
content = strings.Replace(content, "{{TaskId}}", strconv.Itoa(j.Task.Id), -1)
|
||||||
content = strings.Replace(content, "{{ServerId}}", strconv.Itoa(j.ServerId), -1)
|
content = strings.Replace(content, "{{ServerId}}", strconv.Itoa(j.ServerId), -1)
|
||||||
content = strings.Replace(content, "{{TaskName}}", j.Task.TaskName, -1)
|
content = strings.Replace(content, "{{TaskName}}", j.Task.TaskName, -1)
|
||||||
content = strings.Replace(content, "{{ExecuteCommand}}", j.Task.Command, -1)
|
content = strings.Replace(content, "{{ExecuteCommand}}", strings.Replace(j.Task.Command, "\"", "\\\"", -1), -1)
|
||||||
content = strings.Replace(content, "{{ExecuteTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1)
|
content = strings.Replace(content, "{{ExecuteTime}}", beego.Date(time.Unix(log.CreateTime, 0), "Y-m-d H:i:s"), -1)
|
||||||
content = strings.Replace(content, "{{ProcessTime}}", strconv.FormatFloat(float64(log.ProcessTime)/1000, 'f', 6, 64), -1)
|
content = strings.Replace(content, "{{ProcessTime}}", strconv.FormatFloat(float64(log.ProcessTime)/1000, 'f', 6, 64), -1)
|
||||||
content = strings.Replace(content, "{{ExecuteStatus}}", TextStatus[status], -1)
|
content = strings.Replace(content, "{{ExecuteStatus}}", TextStatus[status], -1)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="realName" id="realName" autocomplete="off" placeholder="真实姓名" >
|
<input class="layui-input" name="realName" id="realName" autocomplete="off" placeholder="真实姓名" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -45,6 +45,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/admin/table'
|
,url: '/admin/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<a class="layui-btn" data-type="tabAdd" id="tabAdd" href="javascript:void(0)">新增</a>
|
<a class="layui-btn layui-btn-sm" data-type="tabAdd" id="tabAdd" href="javascript:void(0)">新增</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="code" id="code" autocomplete="off" placeholder="禁用命令" >
|
<input class="layui-input" name="code" id="code" autocomplete="off" placeholder="禁用命令" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/ban/table'
|
,url: '/ban/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
|
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/group/table'
|
,url: '/group/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="tplName" id="tplName" autocomplete="off" placeholder="模板名称">
|
<input class="layui-input" name="tplName" id="tplName" autocomplete="off" placeholder="模板名称">
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -41,6 +41,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
, url: '/notifytpl/table'
|
, url: '/notifytpl/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
, cols: [[
|
, cols: [[
|
||||||
{checkbox: true, fixed: true},
|
{checkbox: true, fixed: true},
|
||||||
{field: 'id', title: 'ID', align: 'center', sort: true, width: 150},
|
{field: 'id', title: 'ID', align: 'center', sort: true, width: 150},
|
||||||
|
|||||||
@@ -17,6 +17,18 @@
|
|||||||
.modal-hide{
|
.modal-hide{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*控制按钮和input大小*/
|
||||||
|
.layui-form-label {
|
||||||
|
padding: 5px 15px;
|
||||||
|
}
|
||||||
|
.layui-input, .layui-select, .layui-textarea {
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
|
.layui-form-select dl dd, .layui-form-select dl dt {
|
||||||
|
line-height: 30px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
<body>
|
||||||
<!-- 公共头部 start-->
|
<!-- 公共头部 start-->
|
||||||
|
|||||||
@@ -26,13 +26,14 @@
|
|||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">资源分组</label>
|
<label class="layui-form-label">资源分组</label>
|
||||||
<div class="layui-input-inline mw400 ">
|
<div class="layui-input-inline mw400 ">
|
||||||
<input type="checkbox" name="server_group_id" lay-filter="server_group_id" title="本地服务器组" value="0" lay-skin="primary" checked>
|
<input type="checkbox" name="server_group_id" lay-filter="server_group_id" title="本地服务器组" value="0" lay-skin="primary" {{range $ks,$vs:=$.server_group_ids}} {{if eq $vs 0}}checked {{end}}{{end}}>
|
||||||
{{range $k, $v := .serverGroup}}
|
{{range $k, $v := .serverGroup}}
|
||||||
<input type="checkbox" name="server_group_id" lay-filter="server_group_id" title="{{$v.GroupName}}" value="{{$v.GroupId}}" {{range $ks,$vs:=$.server_group_ids}} {{if eq $v.GroupId $vs}}checked{{end}}{{end}} lay-skin="primary">
|
<input type="checkbox" name="server_group_id" lay-filter="server_group_id" title="{{$v.GroupName}}" value="{{$v.GroupId}}" {{range $ks,$vs:=$.server_group_ids}} {{if eq $vs $v.GroupId}}checked {{end}}{{end}} lay-skin="primary">
|
||||||
{{end}}
|
{{end}}
|
||||||
<input type="hidden" name="server_group_ids" id="server_group_ids" value="{{.role.server_group_ids}}">
|
<input type="hidden" name="server_group_ids" id="server_group_ids" value="{{.role.server_group_ids}}">
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-mid layui-word-aux"></div>
|
<div class="layui-form-mid layui-word-aux"></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="roleName" id="roleName" autocomplete="off" placeholder="角色名称" >
|
<input class="layui-input" name="roleName" id="roleName" autocomplete="off" placeholder="角色名称" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/role/table'
|
,url: '/role/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -51,6 +51,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/server/table'
|
,url: '/server/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:80}
|
{field:'id', title: 'ID', align:'center',sort: true, width:80}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%">
|
||||||
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
|
<input class="layui-input" name="groupName" id="groupName" autocomplete="off" placeholder="分组名称" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/servergroup/table'
|
,url: '/servergroup/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
// {checkbox: true, fixed: true},
|
// {checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<div class="layui-btn-group">
|
<div class="layui-btn-group">
|
||||||
<a class="layui-btn" data-type="tabAdd" href="/task/add">新增任务</a>
|
<a class="layui-btn layui-btn-sm" data-type="tabAdd" href="/task/add">新增任务</a>
|
||||||
<button class="layui-btn batch" data-type="batchaudit" >审核通过</button>
|
<button class="layui-btn layui-btn-sm batch" data-type="batchaudit" >审核通过</button>
|
||||||
<button class="layui-btn layui-btn-danger batch" data-type="batchnopass" >审核不通过</button>
|
<button class="layui-btn layui-btn-sm layui-btn-danger batch" data-type="batchnopass" >审核不通过</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<input class="layui-input" name="taskName" id="taskName" autocomplete="off" placeholder="任务名称" >
|
<input class="layui-input" name="taskName" id="taskName" autocomplete="off" placeholder="任务名称" >
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload" id="reload">查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload" id="reload">查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
|
|
||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<div class="layui-btn-group">
|
<div class="layui-btn-group">
|
||||||
<button class="layui-btn" data-type="tabAdd" id="add">新增</button>
|
<button class="layui-btn layui-btn-sm" data-type="tabAdd" id="add">新增</button>
|
||||||
<button class="layui-btn batch" data-type="batchstart" >启动</button>
|
<button class="layui-btn layui-btn-sm batch" data-type="batchstart" >启动</button>
|
||||||
<button class="layui-btn layui-btn-danger batch" data-type="batchpause" >暂停</button>cron
|
<button class="layui-btn layui-btn-sm layui-btn-danger batch" data-type="batchpause" >暂停</button>cron
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text" style="text-align: right;">
|
<div class="layui-col-xs6 search_text" style="text-align: right;">
|
||||||
|
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
<div class="demoTable">
|
<div class="demoTable">
|
||||||
<div class="layui-inline" style="width: 40%">
|
<div class="layui-inline" style="width: 40%;">
|
||||||
<input class="layui-input" name="task_name" id="task_name" autocomplete="off" placeholder="任务名称" >
|
<input class="layui-input" name="task_name" id="task_name" autocomplete="off" placeholder="任务名称" >
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline pp-search" style="width: 20%;text-align: left;">
|
<div class="layui-inline pp-search" style="width: 20%;text-align: left;">
|
||||||
@@ -22,7 +23,7 @@
|
|||||||
{{end}}
|
{{end}}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<button class="layui-btn" data-type="reload" id="search"><i class="fa fa-search"></i>查询</button>
|
<button class="layui-btn layui-btn-sm" data-type="reload" id="search"><i class="fa fa-search"></i>查询</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -56,6 +57,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: '/task/table'
|
,url: '/task/table'
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
{checkbox: true, fixed: true},
|
{checkbox: true, fixed: true},
|
||||||
{field:'id', title: 'ID', align:'center', width:80,sort: true}
|
{field:'id', title: 'ID', align:'center', width:80,sort: true}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
<div class="layui-layout layui-layout-admin" style="padding-left: 20px;">
|
||||||
<div class="layui-row" style="margin-top: 20px;">
|
<div class="layui-row" style="margin-top: 20px;">
|
||||||
<div class="layui-col-xs6">
|
<div class="layui-col-xs6">
|
||||||
<button class="layui-btn layui-btn-danger" data-type="tabDel" id="tabDel">批量删除</button>
|
<button class="layui-btn layui-btn-sm layui-btn-danger" data-type="tabDel" id="tabDel">批量删除</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-col-xs6 search_text">
|
<div class="layui-col-xs6 search_text">
|
||||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||||
@@ -44,6 +44,7 @@
|
|||||||
table.render({
|
table.render({
|
||||||
elem: '#table_list'
|
elem: '#table_list'
|
||||||
,url: "/tasklog/table?task_id={{.task_id}}"
|
,url: "/tasklog/table?task_id={{.task_id}}"
|
||||||
|
,size: 'sm' //小尺寸的表格
|
||||||
,cols: [[
|
,cols: [[
|
||||||
{checkbox: true, fixed: true}
|
{checkbox: true, fixed: true}
|
||||||
// ,{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
// ,{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<label class="layui-form-label">是否修改</label>
|
<label class="layui-form-label">密码修改</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="1" title="是">
|
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="1" title="是">
|
||||||
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="2" title="否" checked>
|
<input type="radio" name="reset_pwd" lay-verify="reset_pwd" value="2" title="否" checked>
|
||||||
|
|||||||
Reference in New Issue
Block a user