Compare commits

...

9 Commits

Author SHA1 Message Date
邹景立
e88ecd84b0 Update index.html 2022-03-02 23:14:33 +08:00
邹景立
74401c736d Update index.html 2022-03-02 23:10:24 +08:00
邹景立
def5da4b39 Update demo.php 2022-03-02 23:07:49 +08:00
邹景立
d995553778 Update demo.php 2022-03-02 23:05:16 +08:00
邹景立
2a01a22bb0 修改系统任务管理 2022-03-02 22:58:38 +08:00
邹景立
07f7163d24 修改系统管理 2022-03-02 22:29:33 +08:00
邹景立
9c072d44c8 修改任务管理 2022-03-02 22:25:03 +08:00
Anyon
abac876111 修改表单样式 2022-03-02 15:57:52 +08:00
Anyon
64d5957499 Update admin.js 2022-03-02 15:21:04 +08:00
15 changed files with 121 additions and 146 deletions

View File

@ -98,15 +98,15 @@ class Queue extends Controller
{
if (AdminService::instance()->isSuper()) try {
$message = $this->app->console->call('xadmin:queue', ['status'])->fetch();
if (preg_match('/process.*?\d+.*?running/', $message, $attrs)) {
echo '<span class="color-green">' . $message . '</span>';
if (preg_match('/process.*?\d+.*?running/', $message)) {
echo "<span class='color-green pointer' data-tips-text='{$message}'>已启动</span>";
} else {
echo '<span class="color-red">' . $message . '</span>';
echo "<span class='color-red pointer' data-tips-text='{$message}'>未启动</span>";
}
} catch (Exception $exception) {
echo '<span class="color-red">' . $exception->getMessage() . '</span>';
echo "<span class='color-red pointer' data-tips-text='{$exception->getMessage()}'>异 常</span>";
} else {
echo '<span class="color-red">只有超级管理员才能操作!</span>';
echo "<span class='color-red pointer' data-tips-text='只有超级管理员才能操作!'>无权限</span>";
}
}
}

View File

@ -2,7 +2,7 @@
{block name="button"}
<!--{if auth("add")}-->
<button data-modal='{:url("add")}' data-title="添加权限" class='layui-btn layui-btn-sm layui-btn-primary'>添加权限</button>
<button data-modal='{:url("add")}' data-table-id="RoleData" class='layui-btn layui-btn-sm layui-btn-primary'>添加权限</button>
<!--{/if}-->
<!--{if auth("remove")}-->
@ -26,17 +26,17 @@
sort: {field: 'sort desc,id', type: 'desc'},
cols: [[
{checkbox: true, fixed: true},
{field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputTpl'},
{field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputRoleDataTpl'},
{field: 'title', title: '权限名称', align: 'center', minWidth: 140},
{field: 'desc', title: '权限描述', align: 'center', minWidth: 110, templet: '<div>{{d.desc||"-"}}</div>'},
{field: 'status', title: '权限状态', align: 'center', minWidth: 110, templet: '#StatusSwitchTpl'},
{field: 'status', title: '权限状态', align: 'center', minWidth: 110, templet: '#StatusSwitchRoleDataTpl'},
{field: 'create_at', title: '创建时间', align: 'center', minWidth: 170, sort: true},
{toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 210, fixed: 'right'},
{toolbar: '#ToolbarRoleDataTpl', title: '操作面板', align: 'center', minWidth: 210, fixed: 'right'},
]]
});
// 数据状态切换操作
layui.form.on('switch(StatusSwitch)', function (obj) {
layui.form.on('switch(StatusSwitchRoleData)', function (obj) {
$.form.load("{:url('state')}", {id: obj.value, status: obj.elem.checked > 0 ? 1 : 0}, 'post', function (ret) {
if (ret.code < 1) $.msg.error(ret.info, 3, function () {
$('#RoleData').trigger('reload'); // 操作异常时重载数据
@ -49,21 +49,21 @@
</script>
<!-- 列表排序权重模板 -->
<script type="text/html" id="SortInputTpl">
<input min="0" type="number" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
<script type="text/html" id="SortInputRoleDataTpl">
<input type="number" min="0" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
</script>
<!-- 数据状态切换模板 -->
<script type="text/html" id="StatusSwitchTpl">
<script type="text/html" id="StatusSwitchRoleDataTpl">
<!--{if auth("state")}-->
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitch" {{d.status>0?'checked':''}}>
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitchRoleData" {{d.status>0?'checked':''}}>
<!--{else}-->
{{d.status ? '<b class="color-green">已启用</b>' : '<b class="color-red">已禁用</b>'}}
<!--{/if}-->
</script>
<!-- 数据操作工具条模板 -->
<script type="text/html" id="toolbar">
<script type="text/html" id="ToolbarRoleDataTpl">
<!--{if auth('edit')}-->
<a class="layui-btn layui-btn-primary layui-btn-sm" data-title="编辑权限" data-modal='{:url("edit")}?id={{d.id}}'> </a>
<!--{/if}-->

View File

@ -42,6 +42,4 @@
<button class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
</div>
</form>
<script>layui.form.render()</script>
</fieldset>
</fieldset>

View File

@ -15,7 +15,6 @@
{/if}{/foreach}
</select>
<script>
layui.form.render();
(function (callable) {
layui.form.on('select(DataType)', callable);
callable({value: "{$vo.type|default=''}" || $('[lay-filter=DataType]').val()});

View File

@ -2,7 +2,7 @@
{block name="button"}
<!--{if auth("add")}-->
<button data-modal='{:url("add")}?type={$type|default=""}' data-title="添加数据" class='layui-btn layui-btn-sm layui-btn-primary'>添加数据</button>
<button data-modal='{:url("add")}?type={$type|default=""}' data-table-id="BaseData" data-title="添加数据" class='layui-btn layui-btn-sm layui-btn-primary'>添加数据</button>
<!--{/if}-->
<!--{if auth("remove")}-->

View File

@ -5,7 +5,7 @@
<button data-action='{:url("remove")}' data-rule="id#{id}" data-table-id="OplogData" data-confirm="确定要删除选中的日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
<!--{/if}-->
<!--{if auth("clear")}-->
<button data-load='{:url("clear")}' data-confirm="确定要清空所有日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>清空日志</button>
<button data-load='{:url("clear")}' data-table-id="OplogData" data-confirm="确定要清空所有日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>清空日志</button>
<!--{/if}-->
{/block}

View File

@ -1,6 +1,7 @@
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:sysuri()}" onsubmit="return false" method="get" autocomplete="off">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">操作账号</label>
<div class="layui-input-inline">
@ -14,12 +15,14 @@
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">操作节点</label>
<label class="layui-input-inline">
<input name="node" value="{$get.node|default=''}" placeholder="请输入操作内容" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">操作行为</label>
<div class="layui-input-inline">
@ -33,24 +36,28 @@
</select>
</div>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">操作描述</label>
<label class="layui-input-inline">
<input name="content" value="{$get.content|default=''}" placeholder="请输入操作内容" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">访问地址</label>
<label class="layui-input-inline">
<input name="geoip" value="{$get.geoip|default=''}" placeholder="请输入访问地址" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">操作时间</label>
<label class="layui-input-inline">
<input data-date-range name="create_at" value="{$get.create_at|default=''}" placeholder="请选择操作时间" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<button type="submit" class="layui-btn layui-btn-primary"><i class="layui-icon">&#xe615;</i> 搜 索</button>
<button type="button" data-form-export="{:url('index')}?type={$type|default=''}" class="layui-btn layui-btn-primary">
@ -61,7 +68,6 @@
</fieldset>
<script>
window.form.render();
require(['excel'], function (excel) {
excel.bind(function (data) {
data.forEach(function (item, index) {

View File

@ -3,148 +3,124 @@
{block name="button"}
<!--{if isset($super) and $super}-->
<a class="layui-btn layui-btn-sm layui-btn-primary" data-queue="{:url('admin/api.plugs/optimize')}">优化数据库</a>
<!--{if $iswin}-->
<button data-load='{:url("admin/api.queue/start")}' class='layui-btn layui-btn-sm layui-btn-primary'>开启后台服务</button>
<button data-load='{:url("admin/api.queue/stop")}' class='layui-btn layui-btn-sm layui-btn-primary'>关闭后台服务</button>
<!--{/if}-->
<!--{if isset($super) and $super and $iswin}-->
<button data-load='{:url("admin/api.queue/start")}' class='layui-btn layui-btn-sm layui-btn-primary'>开启服务</button>
<button data-load='{:url("admin/api.queue/stop")}' class='layui-btn layui-btn-sm layui-btn-primary'>关闭服务</button>
<!--{/if}-->
<!--{if auth("clean")}-->
<button data-queue='{:url("clean")}' class='layui-btn layui-btn-sm layui-btn-primary'>定时清理数据</button>
<button data-queue='{:url("clean")}' class='layui-btn layui-btn-sm layui-btn-primary'>定时清理</button>
<!--{/if}-->
<!--{if auth("remove")}-->
<button data-action='{:url("remove")}' data-rule="id#{id}" data-table-id="QueueData" data-confirm="确定批量删除记录吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除任务</button>
<button data-action='{:url("remove")}' data-rule="id#{id}" data-table-id="QueueData" data-confirm="确定批量删除记录吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
<!--{/if}-->
{/block}
{block name="content"}
<div class="think-box-notify">
<!--{if isset($super) and $super}-->
<b>服务状态:</b><b class="margin-right-5" data-queue-message><span class="color-desc">检查中</span></b>
<b data-tips-text="点击可复制【任务服务启动指令】" class="layui-icon pointer margin-right-20" data-copy="{$command|default=''}">&#xe60e;</b>
<script>$('[data-queue-message]').load('{:sysuri("admin/api.queue/status")}')</script>
<!--{/if}-->
<b>任务统计:</b>待处理 <b class="color-text">{$total.pre|default=0}</b> 个任务,处理中 <b class="color-blue">{$total.dos|default=0}</b> 个任务,已完成 <b class="color-green">{$total.oks|default=0}</b> 个任务,已失败 <b class="color-red">{$total.ers|default=0}</b> 个任务。
</div>
<div class="think-box-shadow">
<div class="layui-row layui-col-space20 portal-block-container notselect">
<div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
<div class="portal-block-item nowrap" style="background:linear-gradient(-125deg,#57bdbf,#2f9de2)">
<div class="font-w7 font-s16">等待处理</div>
<div>{$total.pre|default=0}</div>
<div>待处理的任务数量</div>
</div>
<i class="portal-block-icon layui-icon layui-icon-star"></i>
</div>
<div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
<div class="portal-block-item nowrap" style="background:linear-gradient(-125deg,#ff7d7d,#fb2c95)">
<div class="font-w7 font-s16">正在处理</div>
<div>{$total.dos|default=0}</div>
<div>处理中的任务数量</div>
</div>
<i class="portal-block-icon layui-icon layui-icon-log"></i>
</div>
<div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
<div class="portal-block-item nowrap" style="background:linear-gradient(-113deg,#c543d8,#925cc3)">
<div class="font-w7 font-s16">处理完成</div>
<div>{$total.oks|default=0}</div>
<div>处理完成的任务数量</div>
</div>
<i class="portal-block-icon layui-icon layui-icon-release"></i>
</div>
<div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
<div class="portal-block-item nowrap" style="background:linear-gradient(-141deg,#ecca1b,#f39526)">
<div class="font-w7 font-s16">处理失败</div>
<div>{$total.ers|default=0}</div>
<div>处理失败的任务数量</div>
</div>
<i class="portal-block-icon layui-icon layui-icon-engine"></i>
</div>
</div>
{include file='queue/index_search'}
<table id="QueueData" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
</div>
{/block}
{block name='script'}
<style>
#QueueData + div tbody .layui-table-cell {
height: 42px;
line-height: 22px;
}
#QueueData + div tbody .layui-table-cell .layui-btn {
margin-top: 8px;
}
#QueueData + div tbody .layui-table-cell.laytable-cell-checkbox {
line-height: 42px;
}
</style>
<script>
$(function () {
$('#QueueData').layTable({
even: true,
sort: {field: 'loops_time desc,code', type: 'desc'},
height: 'full',
even: true, sort: {field: 'loops_time desc,id', type: 'desc'},
cols: [[
{checkbox: true, fixed: 'left'},
{field: 'code', title: '任务编号', width: 140, sort: true},
{field: 'title', title: '任务名称', minWidth: 100},
{field: 'command', title: '任务指令', minWidth: 100},
{
field: 'exec_time', title: '计划时间', minWidth: 245, templet: function (d) {
d.exec_time = d.exec_time || 0, d.loops_time = d.loops_time || 0;
field: 'id', title: '任务名称', minWidth: 230, sort: true, templet: function (d) {
if (d.loops_time > 0) {
return d.exec_time + ' ( 每 <b class="color-blue">' + d.loops_time + '</b> 秒 ) ';
d.one = '<span class="layui-badge think-bg-blue">循</span>';
} else {
return d.exec_time + ' <span class="color-desc">( 单次任务 )</span> ';
d.one = '<span class="layui-badge think-bg-red">次</span>';
}
if (d.rscript === 1) {
d.two = '<span class="layui-badge layui-bg-green">复</span>';
} else {
d.two = '<span class="layui-badge think-bg-violet">单</span>';
}
return laytpl('{{d.one}}任务编号:<b>{{d.code}}</b><br>{{d.two}}任务名称:{{d.title}}').render(d);
}
},
{
field: 'exec_time', title: '任务计划', minWidth: 300, templet: function (d) {
d.html = '执行指令:' + d.command + '<br>计划执行:' + d.exec_time;
if (d.loops_time > 0) {
return d.html + ' ( 每 <b class="color-blue">' + d.loops_time + '</b> 秒 ) ';
} else {
return d.html + ' <span class="color-desc">( 单次任务 )</span> ';
}
}
},
{
field: 'loops_time', title: '执行时间', minWidth: 175, templet: function (d) {
field: 'loops_time', title: '执行状态', width: 400, templet: function (d) {
d.html = [
'<span class="layui-badge layui-badge-middle layui-bg-gray pull-left" style="width:2em">未知</span>',
'<span class="layui-badge layui-badge-middle layui-bg-black pull-left" style="width:2em">等待</span>',
'<span class="layui-badge layui-badge-middle layui-bg-blue pull-left" style="width:2em">执行</span>',
'<span class="layui-badge layui-badge-middle layui-bg-green pull-left" style="width:2em">完成</span>',
'<span class="layui-badge layui-badge-middle layui-bg-red pull-left" style="width:2em">失败</span>',
][d.status] || '';
d.html += '执行时间:';
d.enter_time = d.enter_time || '', d.outer_time = d.outer_time || '0.0000';
if (d.enter_time.length > 12) {
return d.enter_time.substr(12) + '<span class="color-desc"> ( 耗时 ' + d.outer_time + ' )</span>';
d.html += d.enter_time.substring(12) + '<span class="color-desc"> ( 耗时 ' + d.outer_time + ' )</span>';
d.html += ',已执行 <b>' + (d.attempts || 0) + '</b> 次';
} else {
return '<span class="color-desc">任务未执行</span>'
d.html += '<span class="color-desc">任务未执行</span>'
}
return d.html + '<br>执行结果:<span class="color-blue">' + (d.exec_desc || '<span class="color-desc">未获取到执行结果</span>') + '</span>';
}
},
{field: 'attempts', title: '执行次数', minWidth: 95, align: 'center', sort: true, templet: "<div>{{d.attempts||0}}</div>"},
{field: 'exec_desc', title: '执行结果', minWidth: 180},
{field: 'create_at', title: '创建时间', align: 'center', minWidth: 170},
{toolbar: '#toolbar', title: '操作面板', align: 'center', width: 260, fixed: 'right',}
{toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 200}
]]
});
});
</script>
<script type="text/html" id="toolbar">
{{# if(d.loops_time>0){ }}
<span class="layui-badge think-bg-blue"></span>
{{# }else{ }}
<span class="layui-badge think-bg-red"></span>
{{# } }}
{{# if(d.rscript===1){ }}
<span class="layui-badge layui-bg-green"></span>
<!--{if auth('redo')}-->
{{# if(d.status===4||d.status===3){ }}
<a class="layui-btn layui-btn-sm" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}"> </a>
{{# }else{ }}
<span class="layui-badge think-bg-violet"></span>
<a class="layui-btn layui-btn-sm layui-btn-disabled"> </a>
{{# } }}
{{# if(d.status===1){ }}
<span class="layui-badge layui-bg-black">等待处理</span>
<span class="layui-badge think-bg-gray"><i class="layui-icon font-s12">&#xe669;</i></span>
{{# }else if(d.status===2){ }}
<span class="layui-badge layui-bg-green">正在处理</span>
<!--{if auth('redo')}-->
<span class="layui-badge think-bg-gray"><i class="layui-icon font-s12">&#xe669;</i></span>
<!--{/if}-->
{{# }else if(d.status===3){ }}
<span class="layui-badge layui-bg-blue">处理完成</span>
<!--{if auth('redo')}-->
<a class="layui-badge layui-bg-green" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">
<i class="layui-icon font-s12">&#xe669;</i>
</a>
<!--{/if}-->
{{# }else if(d.status===4){ }}
<span class="layui-badge layui-bg-red">处理失败</span>
<!--{if auth('redo')}-->
<a class="layui-badge layui-bg-green" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">
<i class="layui-icon font-s12">&#xe669;</i>
</a>
<!--{/if}-->
{{# } }}
<!--{if auth('remove')}-->
<a class='layui-badge layui-bg-red' data-confirm="确定要删除该任务吗?" data-action='{:url("remove")}' data-value="id#{{d.id}}">
<i class="layui-icon font-s12">&#xe640;</i>
</a>
<a class='layui-btn layui-btn-sm layui-btn-danger' data-confirm="确定要删除该任务吗?" data-action='{:url("remove")}' data-value="id#{{d.id}}"> </a>
<!--{/if}-->
<a class='layui-badge layui-bg-orange margin-0' onclick="$.loadQueue('{{d.code}}',false,this)">
<i class="layui-icon font-s12">&#xe705;</i>
</a>
<a class='layui-btn layui-btn-sm layui-btn-normal' onclick="$.loadQueue('{{d.code}}',false,this)"> </a>
</script>
{/block}

View File

@ -1,16 +1,3 @@
<!--{if isset($super) and $super}-->
<fieldset class="margin-bottom-15">
<legend class="notselect">服务状态</legend>
<div class="layui-code border-0 margin-top-0">
<h4 class="color-desc notselect">后台服务主进程运行状态</h4>
<div data-queue-message>Checking task process running status ...</div>
<script>$('[data-queue-message]').load('{:sysuri("admin/api.queue/status")}')</script>
<h4 class="color-desc margin-top-10 notselect">配置定时任务来检查并启动进程(建议每分钟执行)</h4>
<div>{$command|default='--'}</div>
</div>
</fieldset>
<!--{/if}-->
<fieldset>
<legend>条件搜索</legend>
<form class="layui-form layui-form-pane form-search" action="{:sysuri()}" onsubmit="return false" method="get" autocomplete="off">
@ -57,14 +44,14 @@
</label>
</div>
<div class="layui-form-item layui-inline">
<div class="layui-form-item layui-inline layui-hide">
<label class="layui-form-label">执行时间</label>
<label class="layui-input-inline">
<input data-date-range name="enter_time" value="{$get.enter_time|default=''}" placeholder="请选择执行时间" class="layui-input">
</label>
</div>
<div class="layui-form-item layui-inline">
<div class="layui-form-item layui-inline layui-hide">
<label class="layui-form-label">创建时间</label>
<label class="layui-input-inline">
<input data-date-range name="create_at" value="{$get.create_at|default=''}" placeholder="请选择创建时间" class="layui-input">

View File

@ -54,9 +54,9 @@
{foreach ['1'=>'启用','0'=>'禁用'] as $k=>$v}
<label class="think-radio">
<!--{if (!isset($vo.status) and $k eq '1') or (isset($vo.status) and $vo.status eq $k)}-->
<input type="radio" checked name="status" value="{$k}"> {$v}
<input type="radio" checked name="status" value="{$k}" lay-ignore> {$v}
<!--{else}-->
<input type="radio" name="status" value="{$k}"> {$v}
<input type="radio" name="status" value="{$k}" lay-ignore> {$v}
<!--{/if}-->
</label>
{/foreach}
@ -69,9 +69,9 @@
{foreach $types as $k=>$v}
<label class="think-radio">
<!--{if (!isset($vo.type) and $k eq 'text') or (isset($vo.type) and$vo.type eq $k)}-->
<input name="type" checked type="radio" value="{$k}"> {$v}
<input name="type" checked type="radio" value="{$k}" lay-ignore> {$v}
<!--{else}-->
<input name="type" type="radio" value="{$k}"> {$v}
<input name="type" type="radio" value="{$k}" lay-ignore> {$v}
<!--{/if}-->
</label>
{/foreach}

View File

@ -55,9 +55,9 @@
{foreach ['1'=>'启用','0'=>'禁用'] as $k=>$v}
<label class="think-radio">
<!--{if (!isset($vo.status) and $k eq '1') or (isset($vo.status) and $vo.status eq $k)}-->
<input type="radio" checked name="status" value="{$k}"> {$v}
<input type="radio" checked name="status" value="{$k}" lay-ignore> {$v}
<!--{else}-->
<input type="radio" name="status" value="{$k}"> {$v}
<input type="radio" name="status" value="{$k}" lay-ignore> {$v}
<!--{/if}-->
</label>
{/foreach}
@ -70,9 +70,9 @@
{foreach $types as $k=>$v}
<label class="think-radio">
<!--{if (!isset($vo.type) and $k eq 'text') or (isset($vo.type) and$vo.type eq $k)}-->
<input name="type" checked type="radio" value="{$k}"> {$v}
<input name="type" checked type="radio" value="{$k}" lay-ignore> {$v}
<!--{else}-->
<input name="type" type="radio" value="{$k}"> {$v}
<input name="type" type="radio" value="{$k}" lay-ignore> {$v}
<!--{/if}-->
</label>
{/foreach}

View File

@ -977,11 +977,16 @@ $(function () {
/*! 注册 data-copy 事件行为 */
onEvent('click', '[data-copy]', function () {
(function (content, $textarea) {
$body.append($textarea.val(content)), $textarea.select();
document.execCommand('Copy') ? $.msg.tips('已复制到剪贴板!') : $.msg.tips('请使用鼠标操作复制!');
$textarea.remove();
})(this.dataset.copy, $('<textarea readonly style="position:fixed;top:-500px"></textarea>'));
var content = this.dataset.copy || this.innerText;
if (window.clipboardData) {
window.clipboardData.clearData('text');
window.clipboardData.setData('text', content);
return $.msg.tips('已复制到剪贴板!');
}
var $textarea = $('<textarea readonly style="position:fixed;top:-500px"></textarea>');
$textarea.appendTo($body).val(content).select();
$.msg.tips(document.execCommand('Copy') ? '已复制到剪贴板!' : '请使用鼠标操作复制!');
$textarea.remove();
});
/*! 异步任务状态监听与展示 */

View File

@ -203,7 +203,7 @@
.layui-form-select {
dl {
top: 32px;
top: 31px;
padding: 0;
border-width: 0;
box-shadow: @ShadowMaxOuter;
@ -521,6 +521,10 @@
box-shadow: @ShadowMaxOuter;
border-radius: @BoxBorderRadius;
> b {
font-size: 15px;
}
> .layui-card {
box-shadow: none;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long