添加项目文件。

This commit is contained in:
dell
2023-03-03 16:07:50 +08:00
parent 2c462551b6
commit 011039960e
585 changed files with 362460 additions and 0 deletions

View File

@ -0,0 +1,93 @@
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Index.cshtml";
}
<script>
layui.use(['jquery', 'form', 'common', 'commonTable', 'optimizeSelectOption'], function () {
var $ = layui.jquery,
form = layui.form,
common = layui.common,
commonTable = layui.commonTable;
var keyValue = $.request("keyValue");
wcLoading.close();
commonTable.rendertable({
elem: '#currentTableId',
url: '/SystemSecurity/OpenJobs/GetLogJson?keyValue=' + keyValue,
toolbar: false,
search: false,
page: false,
height: 'full-110',
cols: [[
{ field: 'F_JobName', title: '任务名称', width: 150, sort: true },
{ field: 'F_Description', title: '任务说明', minWwidth: 120, sort: true },
{
field: 'F_EnabledMark', title: '执行结果', width: 120, sort: true,
templet: function (d) {
if (d.F_EnabledMark == true) {
return "<span class='layui-btn layui-btn-normal layui-btn-xs'>成功</span>";
} else {
return "<span class='layui-btn layui-btn-warm layui-btn-xs'>失败</span>";
}
}
},
{
field: 'F_CreatorTime', title: '执行时间', width: 160, sort: true,
templet: function (d) {
if (d.F_CreatorTime) {
var time = new Date(d.F_CreatorTime);
return time.Format("yyyy-MM-dd hh:mm:ss");
}
return '';
}
}
]],
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
//执行搜索重载
commonTable.reloadtable({
elem: 'currentTableId',
page: false,
curr: 1,
where: { keyword: data.field.txt_keyword }
});
return false;
});
form.on('submit(data-delete-btn)', function (data) {
//执行搜索重载
common.deleteForm({
url: "/SystemSecurity/OpenJobs/DeleteLogForm",
param: { keyValue: keyValue },
success: function () {
common.reload('data-search-btn');
}
});
return false;
});
});
</script>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset">
@*<legend>搜索信息</legend>*@
<div>
<form class="layui-form layui-form-pane" action="">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">关键字:</label>
<div class="layui-input-inline">
<input type="text" id="txt_keyword" name="txt_keyword" autocomplete="off" class="layui-input" placeholder="">
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"><i class="layui-icon">&#xe615;</i> 搜 索</button>
<button type="submit" class="layui-btn layui-btn-danger" lay-submit lay-filter="data-delete-btn"><i class="layui-icon">&#xe640;</i> 清 除</button>
</div>
</div>
</form>
</div>
</fieldset>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
</div>
</div>

View File

@ -0,0 +1,257 @@
@{
ViewBag.Title = "Form";
Layout = "~/Views/Shared/_Form.cshtml";
}
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-form layuimini-form" lay-filter="adminform">
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">任务组名</label>
<div class="layui-input-block">
<input type="text" id="F_JobGroup" name="F_JobGroup" maxlength="50" lay-verify="required" class="layui-input">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">任务名称</label>
<div class="layui-input-block">
<input type="text" id="F_JobName" name="F_JobName" maxlength="50" value="" lay-verify="required" class="layui-input ">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label required">任务类型</label>
<div class="layui-input-block" id="F_JobType">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">文件名称</label>
<div class="layui-input-block">
<select id="F_FileName" name="F_FileName" lay-verify="required">
<option value="">==请选择==</option>
</select>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">请求地址</label>
<div class="layui-input-block">
<input type="text" id="F_RequestUrl" name="F_RequestUrl" value="" lay-verify="required" class="layui-input ">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">请求头</label>
<div class="layui-input-block">
<textarea id="F_RequestHeaders" name="F_RequestHeaders" autocomplete="off" class="layui-textarea" placeholder="JSON格式"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">请求参数</label>
<div class="layui-input-block">
<textarea id="F_RequestString" name="F_RequestString" autocomplete="off" class="layui-textarea" placeholder="JSON格式"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">执行数据库</label>
<div class="layui-input-block">
<select id="F_JobDBProvider" name="F_JobDBProvider">
<option value="">==请选择==</option>
</select>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">执行SQL</label>
<div class="layui-input-block">
<textarea id="F_JobSql" name="F_JobSql" value="" lay-verify="required" autocomplete="off" class="layui-textarea"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">Sql参数</label>
<div class="layui-input-block">
<textarea id="F_JobSqlParm" name="F_JobSqlParm" class="layui-textarea" autocomplete="off" placeholder="JSON格式"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label required">Cron表达式</label>
<div class="layui-input-block">
<input type="text" id="F_CronExpress" name="F_CronExpress" maxlength="50" lay-verify="required" value="" class="layui-input ">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">选项</label>
<div class="layui-input-block">
<input type="checkbox" name="F_DoItNow" id="F_DoItNow" checked="" value="true" title="立即执行">
</div>
</div>
<div class="layui-form-item layui-hide">
<label class="layui-form-label">是否记录日志</label>
<div class="layui-input-block">
<input type="checkbox" name="F_IsLog" id="F_IsLog" checked="" value="是" title="是">
</div>
</div>
<div class="layui-form-item layui-form-text layui-hide">
<label class="layui-form-label">备注</label>
<div class="layui-input-block">
<textarea id="F_Description" name="F_Description" class="layui-textarea" placeholder="请输入备注"></textarea>
</div>
</div>
<div class="layui-form-item layui-hide">
<button class="layui-btn site-demo-active" lay-submit id="submit" lay-filter="saveBtn">确认保存</button>
</div>
</div>
</div>
</div>
</body>
<script>
layui.use(['jquery', 'form', 'laydate', 'common', 'optimizeSelectOption', 'cron'], function () {
var form = layui.form,
$ = layui.$,
common = layui.common,
cron = layui.cron,
laydate = layui.laydate;
var keyValue = $.request("keyValue");
//权限字段
common.authorizeFields('adminform');
$(function () {
initControl();
if (!!keyValue) {
common.ajax({
url: "/SystemSecurity/OpenJobs/GetFormJson",
dataType: "json",
data: { keyValue: keyValue },
async: false,
success: function (data) {
common.val('adminform', data);
if(data.F_IsLog=='是')
{
$('#F_IsLog').attr("checked", 'checked');
}
changeJobType(data.F_JobType);
cron.render({
elem: "#F_CronExpress", // 绑定元素
value: data.F_CronExpress, // 默认值
done: function (cronStr) { // 点击确定,或运行时,触发,参数为 cron 表达式字符串
$("#F_CronExpress").val(cronStr);
},
});
}
});
}
else {
changeJobType(0);
cron.render({
elem: "#F_CronExpress", // 绑定元素
value: "0/20 * * * * ?", // 默认值
done: function (cronStr) { // 点击确定,或运行时,触发,参数为 cron 表达式字符串
$("#F_CronExpress").val(cronStr);
},
});
}
form.render();
});
wcLoading.close();
function initControl() {
$("#F_FileName").bindSelect({
url: "/SystemSecurity/OpenJobs/QueryLocalHandlers",
id: "Key",
text:"Description"
});
$("#F_JobDBProvider").bindSelect({
url: "/SystemSecurity/OpenJobs/GetDBListJson",
id:""
});
$("#F_JobType").bindRadio({
data: top.clients.dataItems["JobType"],
id: ""
});
}
form.on('radio(F_JobType)', function (data) {
changeJobType(data.value);
});
function changeJobType(value) {
if (value == "0") {
$('#F_FileName').parent().parent().removeClass('layui-hide');
$('#F_FileName').attr('lay-verify', 'required');
$('#F_RequestUrl').parent().parent().addClass('layui-hide');
$('#F_RequestUrl').removeAttr('lay-verify', 'required');
$('#F_RequestHeaders').parent().parent().addClass('layui-hide');
$('#F_RequestString').parent().parent().addClass('layui-hide');
$('#F_RequestUrl').val("");
$('#F_RequestHeaders').val("");
$('#F_RequestString').val("");
$('#F_JobDBProvider').parent().parent().addClass('layui-hide');
$('#F_JobDBProvider').removeAttr('lay-verify', 'required');
$('#F_JobSql').parent().parent().addClass('layui-hide');
$('#F_JobSql').removeAttr('lay-verify', 'required');
$('#F_JobSqlParm').parent().parent().addClass('layui-hide');
$('#F_JobDBProvider').val("");
$('#F_JobSql').val("");
$('#F_JobSqlParm').val("");
}
else if(value == "5")
{
$('#F_RequestUrl').parent().parent().addClass('layui-hide');
$('#F_RequestUrl').removeAttr('lay-verify', 'required');
$('#F_RequestHeaders').parent().parent().addClass('layui-hide');
$('#F_RequestString').parent().parent().addClass('layui-hide');
$('#F_RequestUrl').val("");
$('#F_RequestHeaders').val("");
$('#F_RequestString').val("");
$('#F_FileName').parent().parent().addClass('layui-hide');
$('#F_FileName').removeAttr('lay-verify');
$('#F_JobDBProvider').parent().parent().removeClass('layui-hide');
$('#F_JobDBProvider').attr('lay-verify', 'required');
$('#F_JobSql').parent().parent().removeClass('layui-hide');
$('#F_JobSql').attr('lay-verify', 'required');
$('#F_JobSqlParm').parent().parent().removeClass('layui-hide');
}
else {
$('#F_FileName').parent().parent().addClass('layui-hide');
$('#F_FileName').removeAttr('lay-verify');
$('#F_RequestUrl').parent().parent().removeClass('layui-hide');
$('#F_RequestUrl').attr('lay-verify', 'required');
$('#F_RequestHeaders').parent().parent().removeClass('layui-hide');
$('#F_RequestString').parent().parent().removeClass('layui-hide');
$('#F_FileName').val("");
$('#F_JobDBProvider').parent().parent().addClass('layui-hide');
$('#F_JobDBProvider').removeAttr('lay-verify', 'required');
$('#F_JobSql').parent().parent().addClass('layui-hide');
$('#F_JobSql').removeAttr('lay-verify', 'required');
$('#F_JobSqlParm').parent().parent().addClass('layui-hide');
$('#F_JobDBProvider').val("");
$('#F_JobSql').val("");
$('#F_JobSqlParm').val("");
}
form.render();
}
//select验证
form.verify({
required: function (value, item) {
var msg = "必填项不能为空";
value = $.trim(value);
var isEmpty = !value || value.length < 1;
// 当前验证元素是select且为空时,将页面定位至layui渲染的select处或自定义想定位的位置
if (item.tagName == 'SELECT' && isEmpty) {
$("html").animate({
scrollTop: $(item).siblings(".layui-form-select").offset().top - 74
}, 50);
}
if (isEmpty) {
return msg;
}
}
});
//监听提交
form.on('submit(saveBtn)', function (data) {
var postData = data.field;
if (!postData["F_EnabledMark"]) postData["F_EnabledMark"] = false;
if (!postData["F_IsLog"]) postData["F_IsLog"] = "否";
common.submitForm({
url: "/SystemSecurity/OpenJobs/SubmitForm?keyValue=" + keyValue,
param: postData,
success: function () {
common.parentreload("data-search-btn");
}
})
return false;
});
});
</script>

View File

@ -0,0 +1,320 @@
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Index.cshtml";
}
<script>
layui.use(['commonTable', 'form', 'table', 'common', 'optimizeSelectOption'], function () {
var commonTable = layui.commonTable,
form = layui.form,
table = layui.table,
common = layui.common;
wcLoading.close();
//权限控制(js是值传递)
currentTableBar.innerHTML = common.authorizeButtonNew(currentTableBar.innerHTML);
toolbarDemo.innerHTML = common.authorizeButtonNew(toolbarDemo.innerHTML);
commonTable.rendertable({
elem: '#currentTableId',
id: 'currentTableId',
url: '/SystemSecurity/OpenJobs/GetGridJson',
page: false,
cols: [[
{ type: "radio", width: 50, fixed: 'left' },
{ field: 'F_JobName', title: '名称', minWidth: 230, sort: true },
{ field: 'F_JobGroup', title: '组名', minWidth: 180, sort: true },
{ field: 'F_IsLog', title: '是否记录日志', width: 130, sort: true },
{
field: 'F_JobType', title: '类型', width: 100, sort: true,
templet: function (d) {
return top.clients.dataItems["JobType"][d.F_JobType] == undefined ? "" : top.clients.dataItems["JobType"][d.F_JobType];
}
},
{
field: 'F_EnabledMark', title: '任务状态', width: 110, sort: true,
templet: function (d) {
if (d.F_EnabledMark == true) {
return "<span class='layui-btn layui-btn-normal layui-btn-xs'>有效</span>";
} else {
return "<span class='layui-btn layui-btn-warm layui-btn-xs'>无效</span>";
}
}
},
{ field: 'F_LastRunTime', title: '最近执行时间', width: 160, sort: true },
{ field: 'NextValidTimeAfter', title: '下次执行时间', width: 160 },
{
field: 'F_LastRunMark', title: '最近执行状态', width: 130, sort: true,
templet: function (d) {
if (d.F_LastRunMark == true) {
return "<span class='layui-btn layui-btn-normal layui-btn-xs'>成功</span>";
} else {
return "<span class='layui-btn layui-btn-warm layui-btn-xs'>失败</span>";
}
}
},
{ field: 'F_LastRunErrTime', title: '上次发生错误时间', width: 160, sort: true },
{ field: 'F_LastRunErrMsg', title: '上次发生错误信息', width: 180, sort: true },
{ field: 'F_StarRunTime', title: '最近启动时间', width: 170, sort: true },
{ field: 'F_EndRunTime', title: '最近关闭时间', width: 170, sort: true },
{ field: 'F_FileName', title: '文件名', width: 180, sort: true ,hide:true},
{ field: 'F_RequestUrl', title: '请求地址', width: 180, sort: true ,hide:true},
{ field: 'F_RequestHeaders', title: '请求头', width: 180, sort: true ,hide:true },
{ field: 'F_RequestString', title: '请求参数', width: 180, sort: true ,hide:true},
{ field: 'F_JobDBProvider', title: '执行数据库', width: 180, sort: true ,hide:true},
{ field: 'F_JobSql', title: '执行SQL', width: 180, sort: true ,hide:true},
{ field: 'F_JobSqlParm', title: 'Sql参数', width: 180, sort: true ,hide:true },
{ field: 'F_CronExpress', title: 'CRON', width: 150 },
{ field: 'F_Description', title: '备注', width: 150, sort: true },
{ title: '操作', width: 300, toolbar: '#currentTableBar', align: "center", fixed: 'right' }
]]
});
// 监听搜索操作
form.on('submit(data-search-btn)', function (data) {
//执行搜索重载
commonTable.reloadtable({
elem: 'currentTableId',
page: false,
curr: 1,
where: { keyword: data.field.txt_keyword }
});
return false;
});
//行点击事件监听,控制按钮显示
var oneList = ["NF-edit", "NF-delete", "NF-disabled", "NF-enabled", "NF-edit", "NF-log", "NF-doNow"];//选择1条显示
commonTable.tableRowClick("radio", "currentTableFilter", "currentTableId", oneList);
/**
* toolbar监听事件
*/
table.on('toolbar(currentTableFilter)', function (obj) {
var data = table.checkStatus('currentTableId').data;
if (obj.event === 'add') { // 监听删除操作
common.modalOpen({
title: "添加任务",
url: "/SystemSecurity/OpenJobs/Form",
width: "750px",
height: "650px",
});
}
else if (obj.event === 'delete') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
common.deleteForm({
url: "/SystemSecurity/OpenJobs/DeleteForm",
param: { keyValue: data[0].F_Id },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'edit') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
common.modalOpen({
title: "修改任务",
url: "/SystemSecurity/OpenJobs/Form?keyValue=" + data[0].F_Id,
width: "750px",
height: "650px",
});
}
else if (obj.event === 'clear') {
common.submitPost({
prompt: "注:您确定要【清除所有任务计划】吗?",
url: "/SystemSecurity/OpenJobs/ClearScheduleJob",
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'doNow') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
common.submitPost({
prompt: "注:您确定要【执行】该项任务吗?",
url: "/SystemSecurity/OpenJobs/DoNow",
param: { keyValue: data[0].F_Id },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'disabled') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
if (data[0].F_EnabledMark != true) {
common.modalMsg("任务未启动,无法关闭!", "warning");
return false;
}
common.submitPost({
prompt: "注:您确定要【关闭】该项任务吗?",
url: "/SystemSecurity/OpenJobs/ChangeStatus",
param: { keyValue: data[0].F_Id, status: 0 },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'enabled') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
if (data[0].F_EnabledMark == true) {
common.modalMsg("任务已启动,无法启动!", "warning");
return false;
}
common.submitPost({
prompt: "注:您确定要【启动】该项任务吗?",
url: "/SystemSecurity/OpenJobs/ChangeStatus",
param: { keyValue: data[0].F_Id, status: 1 },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'log') {
if (data.length == 0) {
common.modalMsg("未选中数据", "warning");
return false;
}
common.modalOpen({
title: "任务日志",
url: "/SystemSecurity/OpenJobs/Details?keyValue=" + data[0].F_Id,
width: "700px",
height: "600px",
btn: []
});
}
else if (obj.event === 'TABLE_SEARCH') {
var _that = $("#searchField");
if (_that.hasClass("layui-hide")) {
_that.removeClass('layui-hide');
} else {
_that.addClass('layui-hide');
}
table.resize();
}
return false;
});
//toolrow监听事件
table.on('tool(currentTableFilter)', function (obj) {
if (obj.event === 'delete') {
common.deleteForm({
url: "/SystemSecurity/OpenJobs/DeleteForm",
param: { keyValue: obj.data.F_Id },
success: function () {
obj.del();
}
});
}
else if (obj.event === 'edit') {
common.modalOpen({
title: "修改任务",
url: "/SystemSecurity/OpenJobs/Form?keyValue=" + obj.data.F_Id,
width: "750px",
height: "650px",
});
}
else if (obj.event === 'doNow') {
common.submitPost({
prompt: "注:您确定要【执行】该项任务吗?",
url: "/SystemSecurity/OpenJobs/DoNow",
param: { keyValue: obj.data.F_Id },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'disabled') {
if (obj.data.F_EnabledMark != true) {
common.modalMsg("任务未启动,无法关闭!", "warning");
return false;
}
common.submitPost({
prompt: "注:您确定要【关闭】该项任务吗?",
url: "/SystemSecurity/OpenJobs/ChangeStatus",
param: { keyValue: obj.data.F_Id, status: 0 },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'enabled') {
if (obj.data.F_EnabledMark == true) {
common.modalMsg("任务已启动,无法启动!", "warning");
return false;
}
common.submitPost({
prompt: "注:您确定要【启动】该项任务吗?",
url: "/SystemSecurity/OpenJobs/ChangeStatus",
param: { keyValue: obj.data.F_Id, status: 1 },
success: function () {
common.reload('data-search-btn');
}
});
}
else if (obj.event === 'log') {
common.modalOpen({
title: "任务日志",
url: "/SystemSecurity/OpenJobs/Details?keyValue=" + obj.data.F_Id,
width: "700px",
height: "600px",
btn: []
});
}
return false;
});
});
</script>
<div class="layuimini-container">
<div class="layuimini-main">
<fieldset class="table-search-fieldset layui-hide" id="searchField">
@*<legend>搜索信息</legend>*@
<div>
<form class="layui-form layui-form-pane" action="">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">关键字:</label>
<div class="layui-input-inline">
<input type="text" id="txt_keyword" name="txt_keyword" autocomplete="off" class="layui-input" placeholder="">
</div>
</div>
<div class="layui-inline">
<button type="submit" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</div>
</form>
</div>
</fieldset>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container" id="toolbar">
<button id="NF-clear" name="NF-clear" authorize class="layui-btn layui-btn-sm" lay-event="clear"><i class="layui-icon">&#xe665;</i>清除任务计划</button>
<button id="NF-add" name="NF-add" authorize class="layui-btn layui-btn-sm" lay-event="add"><i class="layui-icon">&#xe654;</i>新增</button>
<button id="NF-edit" name="NF-edit" authorize class="layui-btn layui-btn-sm layui-btn-warm layui-hide" lay-event="edit"><i class="layui-icon">&#xe642;</i>修改</button>
<button id="NF-delete" name="NF-delete" authorize class="layui-btn layui-btn-sm layui-btn-danger layui-hide" lay-event="delete"> <i class="layui-icon">&#xe640;</i>删除</button>
<button id="NF-doNow" name="NF-doNow" authorize class="layui-btn layui-btn-sm layui-btn-normal layui-hide" lay-event="doNow"><i class="layui-icon">&#xe609;</i>执行</button>
<button id="NF-enabled" name="NF-enabled" authorize class="layui-btn layui-btn-sm layui-hide" lay-event="enabled"> <i class="fa fa-play-circle"></i>启动</button>
<button id="NF-disabled" name="NF-disabled" authorize class="layui-btn layui-btn-sm layui-btn-danger layui-hide" lay-event="disabled"><i class="fa fa-stop-circle"></i>关闭</button>
<button id="NF-log" name="NF-log" authorize class="layui-btn layui-btn-sm layui-btn-normal layui-hide" lay-event="log"><i class="layui-icon">&#xe702;</i>日志</button>
</div>
</script>
<script type="text/html" id="currentTableBar">
<a id="NF-edit" authorize class="layui-btn layui-btn-xs layui-btn-warm" lay-event="edit">修改</a>
<a id="NF-delete" authorize class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delete">删除</a>
<a id="NF-doNow" authorize class="layui-btn layui-btn-xs layui-btn-normal" lay-event="doNow">执行</a>
<a id="NF-enabled" authorize class="layui-btn layui-btn-xs" lay-event="enabled">启用</a>
<a id="NF-disabled" authorize class="layui-btn layui-btn-danger layui-btn-xs" lay-event="disabled">禁用</a>
<a id="NF-log" authorize class="layui-btn layui-btn-xs layui-btn-normal" lay-event="log">日志</a>
</script>
<table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table>
</div>
</div>