Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LFFZC
xxl-job
提交
00cd63c4
X
xxl-job
项目概览
LFFZC
/
xxl-job
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
xxl-job
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
00cd63c4
编写于
5月 08, 2017
作者:
X
xueli.xue
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
日志清理功能
上级
882d7a43
变更
17
展开全部
隐藏空白更改
内联
并排
Showing
17 changed file
with
205 addition
and
13 deletion
+205
-13
README.md
README.md
+3
-3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
...n/java/com/xxl/job/admin/controller/JobLogController.java
+33
-0
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
...in/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
+2
-0
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
...ain/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
+10
-0
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
...min/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
+32
-0
xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl
.../src/main/webapp/WEB-INF/template/common/common.macro.ftl
+3
-0
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
.../src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
+64
-6
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
+52
-4
xxl-job-admin/src/main/webapp/static/plugins/layer/layer.js
xxl-job-admin/src/main/webapp/static/plugins/layer/layer.js
+2
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/mobile/layer.js
...dmin/src/main/webapp/static/plugins/layer/mobile/layer.js
+2
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/mobile/need/layer.css
...rc/main/webapp/static/plugins/layer/mobile/need/layer.css
+1
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/icon-ext.png
...ain/webapp/static/plugins/layer/skin/default/icon-ext.png
+0
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/icon.png
...rc/main/webapp/static/plugins/layer/skin/default/icon.png
+0
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/layer.css
...c/main/webapp/static/plugins/layer/skin/default/layer.css
+1
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-0.gif
...in/webapp/static/plugins/layer/skin/default/loading-0.gif
+0
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-1.gif
...in/webapp/static/plugins/layer/skin/default/loading-1.gif
+0
-0
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-2.gif
...in/webapp/static/plugins/layer/skin/default/loading-2.gif
+0
-0
未找到文件。
README.md
浏览文件 @
00cd63c4
...
...
@@ -813,15 +813,15 @@ Tips: 历史版本(V1.3.x)目前已经Release至稳定版本, 进入维护阶段
-
3、执行器,server启动、销毁和注册逻辑调整;
-
4、JettyServer关闭逻辑优化,修复执行器无法正常关闭导致端口占用和频繁打印c3p0日志的问题;
-
5、JobHandler中开启子线程时,支持子线程输出执行日志并通过Rolling查看。
-
6、任务日志清理功能;
#### TODO LIST
-
1、任务并行触发处理规则:单机串行队列(默认)、单机并行、串行忽略、单机覆盖;
-
2、任务权限管理;
-
3、调度失败重试机制;
-
4、执行器与数据库解耦,只需配置调度中心集群地址即可(与当前通过JDBC注册自动发现方式,相冲突,待考虑);
-
5、任务日志定期清理功能,支持设置日志上限;
-
6、任务分片:一个任务被拆分成N个独立的任务单元,然后由分布式部署的执行器分别执行某一个或几个分片单元;
-
7、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;
-
5、任务分片:一个任务被拆分成N个独立的任务单元,然后由分布式部署的执行器分别执行某一个或几个分片单元;
-
6、任务分片路由:分片采用一致性Hash算法计算出尽量稳定的分片顺序,即使注册机器存在波动也不会引起分批分片顺序大的波动;
## 七、其他
...
...
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
浏览文件 @
00cd63c4
...
...
@@ -167,4 +167,37 @@ public class JobLogController {
return
new
ReturnT
<
String
>(
500
,
runResult
.
getMsg
());
}
}
@RequestMapping
(
"/clearLog"
)
@ResponseBody
public
ReturnT
<
String
>
clearLog
(
int
jobGroup
,
int
jobId
,
int
type
){
Date
clearBeforeTime
=
null
;
int
clearBeforeNum
=
0
;
if
(
type
==
1
)
{
clearBeforeTime
=
DateUtils
.
addMonths
(
new
Date
(),
-
1
);
// 清理一个月之前日志数据
}
else
if
(
type
==
2
)
{
clearBeforeTime
=
DateUtils
.
addMonths
(
new
Date
(),
-
3
);
// 清理三个月之前日志数据
}
else
if
(
type
==
3
)
{
clearBeforeTime
=
DateUtils
.
addMonths
(
new
Date
(),
-
6
);
// 清理六个月之前日志数据
}
else
if
(
type
==
4
)
{
clearBeforeTime
=
DateUtils
.
addYears
(
new
Date
(),
-
1
);
// 清理一年之前日志数据
}
else
if
(
type
==
5
)
{
clearBeforeNum
=
1000
;
// 清理一千条以前日志数据
}
else
if
(
type
==
6
)
{
clearBeforeNum
=
10000
;
// 清理一万条以前日志数据
}
else
if
(
type
==
7
)
{
clearBeforeNum
=
30000
;
// 清理三万条以前日志数据
}
else
if
(
type
==
8
)
{
clearBeforeNum
=
100000
;
// 清理十万条以前日志数据
}
else
if
(
type
==
9
)
{
clearBeforeNum
=
0
;
// 清理所用日志数据
}
else
{
return
new
ReturnT
<
String
>(
ReturnT
.
FAIL_CODE
,
"清理类型参数异常"
);
}
xxlJobLogDao
.
clearLog
(
jobGroup
,
jobId
,
clearBeforeTime
,
clearBeforeNum
);
return
ReturnT
.
SUCCESS
;
}
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobLogDao.java
浏览文件 @
00cd63c4
...
...
@@ -29,4 +29,6 @@ public interface IXxlJobLogDao {
public
List
<
Map
<
String
,
Object
>>
triggerCountByDay
(
Date
from
,
Date
to
,
int
handleCode
);
public
int
clearLog
(
int
jobGroup
,
int
jobId
,
Date
clearBeforeTime
,
int
clearBeforeNum
);
}
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobLogDaoImpl.java
浏览文件 @
00cd63c4
...
...
@@ -92,4 +92,14 @@ public class XxlJobLogDaoImpl implements IXxlJobLogDao {
return
sqlSessionTemplate
.
selectList
(
"XxlJobLogMapper.triggerCountByDay"
,
params
);
}
@Override
public
int
clearLog
(
int
jobGroup
,
int
jobId
,
Date
clearBeforeTime
,
int
clearBeforeNum
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<
String
,
Object
>();
params
.
put
(
"jobGroup"
,
jobGroup
);
params
.
put
(
"jobId"
,
jobId
);
params
.
put
(
"clearBeforeTime"
,
clearBeforeTime
);
params
.
put
(
"clearBeforeNum"
,
clearBeforeNum
);
return
sqlSessionTemplate
.
delete
(
"XxlJobLogMapper.clearLog"
,
params
);
}
}
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml
浏览文件 @
00cd63c4
...
...
@@ -147,5 +147,37 @@
</if>
GROUP BY triggerDay;
</select>
<delete
id=
"clearLog"
parameterType=
"java.util.Map"
>
delete from XXL_JOB_QRTZ_TRIGGER_LOG
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup gt 0"
>
AND job_group = #{jobGroup}
</if>
<if
test=
"jobId gt 0"
>
AND job_id = #{jobId}
</if>
<if
test=
"clearBeforeTime != null"
>
AND trigger_time
<![CDATA[ <= ]]>
#{clearBeforeTime}
</if>
<if
test=
"clearBeforeNum gt 0"
>
AND id NOT in(
SELECT id FROM(
SELECT id FROM XXL_JOB_QRTZ_TRIGGER_LOG AS t
<trim
prefix=
"WHERE"
prefixOverrides=
"AND | OR"
>
<if
test=
"jobGroup gt 0"
>
AND t.job_group = #{jobGroup}
</if>
<if
test=
"jobId gt 0"
>
AND t.job_id = #{jobId}
</if>
</trim>
ORDER BY t.trigger_time desc
LIMIT 0, #{clearBeforeNum}
) t1
)
</if>
</trim>
</delete>
</mapper>
\ No newline at end of file
xxl-job-admin/src/main/webapp/WEB-INF/template/common/common.macro.ftl
浏览文件 @
00cd63c4
...
...
@@ -45,6 +45,9 @@
<#-- jquery cookie -->
<script src="${request.contextPath}/static/plugins/jquery/jquery.cookie.js"></script>
<#-- layer -->
<script src="${request.contextPath}/static/plugins/layer/layer.js"></script>
<#-- common -->
<script src="${request.contextPath}/static/js/xxl.alert.1.js"></script>
<script src="${request.contextPath}/static/js/common.1.js"></script>
...
...
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl
浏览文件 @
00cd63c4
...
...
@@ -36,7 +36,7 @@
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
执行器
</span>
<select
class=
"form-control"
id=
"jobGroup"
paramVal=
"<#if jobInfo?exists>${jobInfo.jobGroup}</#if>"
>
<option
value=
"0"
>
请选择
</option>
<option
value=
"0"
>
全部
</option>
<
#list
JobGroupList
as
group
>
<option
value=
"${group.id}"
>
${group.title}
</option>
</
#
list>
...
...
@@ -47,7 +47,7 @@
<div
class=
"input-group"
>
<span
class=
"input-group-addon"
>
任务
</span>
<select
class=
"form-control"
id=
"jobId"
paramVal=
"<#if jobInfo?exists>${jobInfo.id}</#if>"
>
<option
value=
"0"
>
请选择
</option>
<option
value=
"0"
>
全部
</option>
</select>
</div>
</div>
...
...
@@ -59,10 +59,13 @@
<input
type=
"text"
class=
"form-control"
id=
"filterTime"
readonly
>
</div>
</div>
<div
class=
"col-xs-2"
>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
搜索
</button>
<div
class=
"col-xs-1"
>
<button
class=
"btn btn-block btn-info"
id=
"searchBtn"
>
搜索
</button>
</div>
<div
class=
"col-xs-1"
>
<button
class=
"btn btn-block btn-nomal"
id=
"clearLog"
>
清理
</button>
</div>
</div>
...
...
@@ -102,6 +105,61 @@
<
@
netCommon.commonFooter
/>
</div>
<!-- 日志清理.模态框 -->
<div
class=
"modal fade"
id=
"clearLogModal"
tabindex=
"-1"
role=
"dialog"
aria-hidden=
"true"
>
<div
class=
"modal-dialog"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<h4
class=
"modal-title"
>
日志清理
</h4>
</div>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal form"
role=
"form"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
"
>
执行器:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"text"
class=
"form-control jobGroupText"
readonly
>
<input
type=
"hidden"
name=
"jobGroup"
>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
"
>
任务:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"text"
class=
"form-control jobIdText"
readonly
>
<input
type=
"hidden"
name=
"jobId"
>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
"
>
清理类型:
</label>
<div
class=
"col-sm-9"
>
<select
class=
"form-control"
name=
"type"
>
<option
value=
"1"
>
清理一个月之前日志数据
</option>
<option
value=
"2"
>
清理三个月之前日志数据
</option>
<option
value=
"3"
>
清理六个月之前日志数据
</option>
<option
value=
"4"
>
清理一年之前日志数据
</option>
<option
value=
"5"
>
清理一千条以前日志数据
</option>
<option
value=
"6"
>
清理一万条以前日志数据
</option>
<option
value=
"7"
>
清理三万条以前日志数据
</option>
<option
value=
"8"
>
清理十万条以前日志数据
</option>
<option
value=
"9"
>
清理所用日志数据
</option>
</select>
</div>
</div>
<hr>
<div
class=
"form-group"
>
<div
class=
"col-sm-offset-3 col-sm-6"
>
<button
type=
"button"
class=
"btn btn-primary ok"
>
保存
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<
@
netCommon.commonScript
/>
<!-- DataTables -->
<script
src=
"${request.contextPath}/static/adminlte/plugins/datatables/jquery.dataTables.min.js"
></script>
...
...
xxl-job-admin/src/main/webapp/static/js/joblog.index.1.js
浏览文件 @
00cd63c4
...
...
@@ -11,7 +11,7 @@ $(function() {
dataType
:
"
json
"
,
success
:
function
(
data
){
if
(
data
.
code
==
200
)
{
$
(
"
#jobId
"
).
html
(
'
<option value="0" >
请选择
</option>
'
);
$
(
"
#jobId
"
).
html
(
'
<option value="0" >
全部
</option>
'
);
$
.
each
(
data
.
content
,
function
(
n
,
value
)
{
$
(
"
#jobId
"
).
append
(
'
<option value="
'
+
value
.
id
+
'
" >
'
+
value
.
jobDesc
+
'
</option>
'
);
});
...
...
@@ -153,7 +153,7 @@ $(function() {
if
(
row
.
triggerCode
==
200
){
var
temp
=
'
<a href="javascript:;" class="logDetail" _id="
'
+
row
.
id
+
'
">执行日志</a>
'
;
if
(
row
.
handleCode
==
0
){
temp
+=
'
<br><a href="javascript:;" class="logKill" _id="
'
+
row
.
id
+
'
">终止任务</a>
'
;
temp
+=
'
<br><a href="javascript:;" class="logKill" _id="
'
+
row
.
id
+
'
"
style="color: red;"
>终止任务</a>
'
;
}
return
temp
;
}
...
...
@@ -228,7 +228,10 @@ $(function() {
});
*/
});
/**
* 终止任务
*/
$
(
'
#joblog_list
'
).
on
(
'
click
'
,
'
.logKill
'
,
function
(){
var
_id
=
$
(
this
).
attr
(
'
_id
'
);
ComConfirm
.
show
(
"
确认主动终止任务?
"
,
function
(){
...
...
@@ -248,5 +251,50 @@ $(function() {
});
});
});
/**
* 清理任务Log
*/
$
(
'
#clearLog
'
).
on
(
'
click
'
,
function
(){
var
jobGroup
=
$
(
'
#jobGroup
'
).
val
();
var
jobId
=
$
(
'
#jobId
'
).
val
();
var
jobGroupText
=
$
(
"
#jobGroup
"
).
find
(
"
option:selected
"
).
text
();
var
jobIdText
=
$
(
"
#jobId
"
).
find
(
"
option:selected
"
).
text
();
$
(
'
#clearLogModal input[name=jobGroup]
'
).
val
(
jobGroup
);
$
(
'
#clearLogModal input[name=jobId]
'
).
val
(
jobId
);
$
(
'
#clearLogModal .jobGroupText
'
).
val
(
jobGroupText
);
$
(
'
#clearLogModal .jobIdText
'
).
val
(
jobIdText
);
$
(
'
#clearLogModal
'
).
modal
(
'
show
'
);
});
$
(
"
#clearLogModal .ok
"
).
on
(
'
click
'
,
function
(){
$
.
post
(
base_url
+
"
/joblog/clearLog
"
,
$
(
"
#clearLogModal .form
"
).
serialize
(),
function
(
data
,
status
)
{
if
(
data
.
code
==
"
200
"
)
{
$
(
'
#clearLogModal
'
).
modal
(
'
hide
'
);
layer
.
open
({
title
:
'
系统提示
'
,
content
:
'
日志清理成功
'
,
icon
:
'
1
'
,
end
:
function
(
layero
,
index
){
logTable
.
fnDraw
();
}
});
}
else
{
layer
.
open
({
title
:
'
系统提示
'
,
content
:
(
data
.
msg
||
"
日志清理失败
"
),
icon
:
'
2
'
});
}
});
});
$
(
"
#clearLogModal
"
).
on
(
'
hide.bs.modal
'
,
function
()
{
$
(
"
#clearLogModal .form
"
)[
0
].
reset
();
});
});
xxl-job-admin/src/main/webapp/static/plugins/layer/layer.js
0 → 100755
浏览文件 @
00cd63c4
此差异已折叠。
点击以展开。
xxl-job-admin/src/main/webapp/static/plugins/layer/mobile/layer.js
0 → 100755
浏览文件 @
00cd63c4
/*! layer mobile-v2.0.0 Web弹层组件 MIT License http://layer.layui.com/mobile By 贤心 */
;
!
function
(
e
){
"
use strict
"
;
var
t
=
document
,
n
=
"
querySelectorAll
"
,
i
=
"
getElementsByClassName
"
,
a
=
function
(
e
){
return
t
[
n
](
e
)},
s
=
{
type
:
0
,
shade
:
!
0
,
shadeClose
:
!
0
,
fixed
:
!
0
,
anim
:
"
scale
"
},
l
=
{
extend
:
function
(
e
){
var
t
=
JSON
.
parse
(
JSON
.
stringify
(
s
));
for
(
var
n
in
e
)
t
[
n
]
=
e
[
n
];
return
t
},
timer
:{},
end
:{}};
l
.
touch
=
function
(
e
,
t
){
e
.
addEventListener
(
"
click
"
,
function
(
e
){
t
.
call
(
this
,
e
)},
!
1
)};
var
r
=
0
,
o
=
[
"
layui-m-layer
"
],
c
=
function
(
e
){
var
t
=
this
;
t
.
config
=
l
.
extend
(
e
),
t
.
view
()};
c
.
prototype
.
view
=
function
(){
var
e
=
this
,
n
=
e
.
config
,
s
=
t
.
createElement
(
"
div
"
);
e
.
id
=
s
.
id
=
o
[
0
]
+
r
,
s
.
setAttribute
(
"
class
"
,
o
[
0
]
+
"
"
+
o
[
0
]
+
(
n
.
type
||
0
)),
s
.
setAttribute
(
"
index
"
,
r
);
var
l
=
function
(){
var
e
=
"
object
"
==
typeof
n
.
title
;
return
n
.
title
?
'
<h3 style="
'
+
(
e
?
n
.
title
[
1
]:
""
)
+
'
">
'
+
(
e
?
n
.
title
[
0
]:
n
.
title
)
+
"
</h3>
"
:
""
}(),
c
=
function
(){
"
string
"
==
typeof
n
.
btn
&&
(
n
.
btn
=
[
n
.
btn
]);
var
e
,
t
=
(
n
.
btn
||
[]).
length
;
return
0
!==
t
&&
n
.
btn
?(
e
=
'
<span yes type="1">
'
+
n
.
btn
[
0
]
+
"
</span>
"
,
2
===
t
&&
(
e
=
'
<span no type="0">
'
+
n
.
btn
[
1
]
+
"
</span>
"
+
e
),
'
<div class="layui-m-layerbtn">
'
+
e
+
"
</div>
"
):
""
}();
if
(
n
.
fixed
||
(
n
.
top
=
n
.
hasOwnProperty
(
"
top
"
)?
n
.
top
:
100
,
n
.
style
=
n
.
style
||
""
,
n
.
style
+=
"
top:
"
+
(
t
.
body
.
scrollTop
+
n
.
top
)
+
"
px
"
),
2
===
n
.
type
&&
(
n
.
content
=
'
<i></i><i class="layui-m-layerload"></i><i></i><p>
'
+
(
n
.
content
||
""
)
+
"
</p>
"
),
n
.
skin
&&
(
n
.
anim
=
"
up
"
),
"
msg
"
===
n
.
skin
&&
(
n
.
shade
=!
1
),
s
.
innerHTML
=
(
n
.
shade
?
"
<div
"
+
(
"
string
"
==
typeof
n
.
shade
?
'
style="
'
+
n
.
shade
+
'
"
'
:
""
)
+
'
class="layui-m-layershade"></div>
'
:
""
)
+
'
<div class="layui-m-layermain"
'
+
(
n
.
fixed
?
""
:
'
style="position:static;"
'
)
+
'
><div class="layui-m-layersection"><div class="layui-m-layerchild
'
+
(
n
.
skin
?
"
layui-m-layer-
"
+
n
.
skin
+
"
"
:
""
)
+
(
n
.
className
?
n
.
className
:
""
)
+
"
"
+
(
n
.
anim
?
"
layui-m-anim-
"
+
n
.
anim
:
""
)
+
'
"
'
+
(
n
.
style
?
'
style="
'
+
n
.
style
+
'
"
'
:
""
)
+
"
>
"
+
l
+
'
<div class="layui-m-layercont">
'
+
n
.
content
+
"
</div>
"
+
c
+
"
</div></div></div>
"
,
!
n
.
type
||
2
===
n
.
type
){
var
d
=
t
[
i
](
o
[
0
]
+
n
.
type
),
y
=
d
.
length
;
y
>=
1
&&
layer
.
close
(
d
[
0
].
getAttribute
(
"
index
"
))}
document
.
body
.
appendChild
(
s
);
var
u
=
e
.
elem
=
a
(
"
#
"
+
e
.
id
)[
0
];
n
.
success
&&
n
.
success
(
u
),
e
.
index
=
r
++
,
e
.
action
(
n
,
u
)},
c
.
prototype
.
action
=
function
(
e
,
t
){
var
n
=
this
;
e
.
time
&&
(
l
.
timer
[
n
.
index
]
=
setTimeout
(
function
(){
layer
.
close
(
n
.
index
)},
1
e3
*
e
.
time
));
var
a
=
function
(){
var
t
=
this
.
getAttribute
(
"
type
"
);
0
==
t
?(
e
.
no
&&
e
.
no
(),
layer
.
close
(
n
.
index
)):
e
.
yes
?
e
.
yes
(
n
.
index
):
layer
.
close
(
n
.
index
)};
if
(
e
.
btn
)
for
(
var
s
=
t
[
i
](
"
layui-m-layerbtn
"
)[
0
].
children
,
r
=
s
.
length
,
o
=
0
;
o
<
r
;
o
++
)
l
.
touch
(
s
[
o
],
a
);
if
(
e
.
shade
&&
e
.
shadeClose
){
var
c
=
t
[
i
](
"
layui-m-layershade
"
)[
0
];
l
.
touch
(
c
,
function
(){
layer
.
close
(
n
.
index
,
e
.
end
)})}
e
.
end
&&
(
l
.
end
[
n
.
index
]
=
e
.
end
)},
e
.
layer
=
{
v
:
"
2.0
"
,
index
:
r
,
open
:
function
(
e
){
var
t
=
new
c
(
e
||
{});
return
t
.
index
},
close
:
function
(
e
){
var
n
=
a
(
"
#
"
+
o
[
0
]
+
e
)[
0
];
n
&&
(
n
.
innerHTML
=
""
,
t
.
body
.
removeChild
(
n
),
clearTimeout
(
l
.
timer
[
e
]),
delete
l
.
timer
[
e
],
"
function
"
==
typeof
l
.
end
[
e
]
&&
l
.
end
[
e
](),
delete
l
.
end
[
e
])},
closeAll
:
function
(){
for
(
var
e
=
t
[
i
](
o
[
0
]),
n
=
0
,
a
=
e
.
length
;
n
<
a
;
n
++
)
layer
.
close
(
0
|
e
[
0
].
getAttribute
(
"
index
"
))}},
"
function
"
==
typeof
define
?
define
(
function
(){
return
layer
}):
function
(){
var
e
=
document
.
scripts
,
n
=
e
[
e
.
length
-
1
],
i
=
n
.
src
,
a
=
i
.
substring
(
0
,
i
.
lastIndexOf
(
"
/
"
)
+
1
);
n
.
getAttribute
(
"
merge
"
)
||
document
.
head
.
appendChild
(
function
(){
var
e
=
t
.
createElement
(
"
link
"
);
return
e
.
href
=
a
+
"
need/layer.css?2.0
"
,
e
.
type
=
"
text/css
"
,
e
.
rel
=
"
styleSheet
"
,
e
.
id
=
"
layermcss
"
,
e
}())}()}(
window
);
\ No newline at end of file
xxl-job-admin/src/main/webapp/static/plugins/layer/mobile/need/layer.css
0 → 100755
浏览文件 @
00cd63c4
.layui-m-layer
{
position
:
relative
;
z-index
:
19891014
}
.layui-m-layer
*
{
-webkit-box-sizing
:
content-box
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
}
.layui-m-layermain
,
.layui-m-layershade
{
position
:
fixed
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
}
.layui-m-layershade
{
background-color
:
rgba
(
0
,
0
,
0
,
.7
);
pointer-events
:
auto
}
.layui-m-layermain
{
display
:
table
;
font-family
:
Helvetica
,
arial
,
sans-serif
;
pointer-events
:
none
}
.layui-m-layermain
.layui-m-layersection
{
display
:
table-cell
;
vertical-align
:
middle
;
text-align
:
center
}
.layui-m-layerchild
{
position
:
relative
;
display
:
inline-block
;
text-align
:
left
;
background-color
:
#fff
;
font-size
:
14px
;
border-radius
:
5px
;
box-shadow
:
0
0
8px
rgba
(
0
,
0
,
0
,
.1
);
pointer-events
:
auto
;
-webkit-overflow-scrolling
:
touch
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
;
-webkit-animation-duration
:
.2s
;
animation-duration
:
.2s
}
@-webkit-keyframes
layui-m-anim-scale
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.5
);
transform
:
scale
(
.5
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
@keyframes
layui-m-anim-scale
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.5
);
transform
:
scale
(
.5
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
.layui-m-anim-scale
{
animation-name
:
layui-m-anim-scale
;
-webkit-animation-name
:
layui-m-anim-scale
}
@-webkit-keyframes
layui-m-anim-up
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateY
(
800px
);
transform
:
translateY
(
800px
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}}
@keyframes
layui-m-anim-up
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateY
(
800px
);
transform
:
translateY
(
800px
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}}
.layui-m-anim-up
{
-webkit-animation-name
:
layui-m-anim-up
;
animation-name
:
layui-m-anim-up
}
.layui-m-layer0
.layui-m-layerchild
{
width
:
90%
;
max-width
:
640px
}
.layui-m-layer1
.layui-m-layerchild
{
border
:
none
;
border-radius
:
0
}
.layui-m-layer2
.layui-m-layerchild
{
width
:
auto
;
max-width
:
260px
;
min-width
:
40px
;
border
:
none
;
background
:
0
0
;
box-shadow
:
none
;
color
:
#fff
}
.layui-m-layerchild
h3
{
padding
:
0
10px
;
height
:
60px
;
line-height
:
60px
;
font-size
:
16px
;
font-weight
:
400
;
border-radius
:
5px
5px
0
0
;
text-align
:
center
}
.layui-m-layerbtn
span
,
.layui-m-layerchild
h3
{
text-overflow
:
ellipsis
;
overflow
:
hidden
;
white-space
:
nowrap
}
.layui-m-layercont
{
padding
:
50px
30px
;
line-height
:
22px
;
text-align
:
center
}
.layui-m-layer1
.layui-m-layercont
{
padding
:
0
;
text-align
:
left
}
.layui-m-layer2
.layui-m-layercont
{
text-align
:
center
;
padding
:
0
;
line-height
:
0
}
.layui-m-layer2
.layui-m-layercont
i
{
width
:
25px
;
height
:
25px
;
margin-left
:
8px
;
display
:
inline-block
;
background-color
:
#fff
;
border-radius
:
100%
;
-webkit-animation
:
layui-m-anim-loading
1.4s
infinite
ease-in-out
;
animation
:
layui-m-anim-loading
1.4s
infinite
ease-in-out
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
}
.layui-m-layerbtn
,
.layui-m-layerbtn
span
{
position
:
relative
;
text-align
:
center
;
border-radius
:
0
0
5px
5px
}
.layui-m-layer2
.layui-m-layercont
p
{
margin-top
:
20px
}
@-webkit-keyframes
layui-m-anim-loading
{
0
%,
100
%,
80
%
{
transform
:
scale
(
0
);
-webkit-transform
:
scale
(
0
)}
40
%
{
transform
:
scale
(
1
);
-webkit-transform
:
scale
(
1
)}}
@keyframes
layui-m-anim-loading
{
0
%,
100
%,
80
%
{
transform
:
scale
(
0
);
-webkit-transform
:
scale
(
0
)}
40
%
{
transform
:
scale
(
1
);
-webkit-transform
:
scale
(
1
)}}
.layui-m-layer2
.layui-m-layercont
i
:first-child
{
margin-left
:
0
;
-webkit-animation-delay
:
-.32s
;
animation-delay
:
-.32s
}
.layui-m-layer2
.layui-m-layercont
i
.layui-m-layerload
{
-webkit-animation-delay
:
-.16s
;
animation-delay
:
-.16s
}
.layui-m-layer2
.layui-m-layercont
>
div
{
line-height
:
22px
;
padding-top
:
7px
;
margin-bottom
:
20px
;
font-size
:
14px
}
.layui-m-layerbtn
{
display
:
box
;
display
:
-moz-box
;
display
:
-webkit-box
;
width
:
100%
;
height
:
50px
;
line-height
:
50px
;
font-size
:
0
;
border-top
:
1px
solid
#D0D0D0
;
background-color
:
#F2F2F2
}
.layui-m-layerbtn
span
{
display
:
block
;
-moz-box-flex
:
1
;
box-flex
:
1
;
-webkit-box-flex
:
1
;
font-size
:
14px
;
cursor
:
pointer
}
.layui-m-layerbtn
span
[
yes
]
{
color
:
#40AFFE
}
.layui-m-layerbtn
span
[
no
]
{
border-right
:
1px
solid
#D0D0D0
;
border-radius
:
0
0
0
5px
}
.layui-m-layerbtn
span
:active
{
background-color
:
#F6F6F6
}
.layui-m-layerend
{
position
:
absolute
;
right
:
7px
;
top
:
10px
;
width
:
30px
;
height
:
30px
;
border
:
0
;
font-weight
:
400
;
background
:
0
0
;
cursor
:
pointer
;
-webkit-appearance
:
none
;
font-size
:
30px
}
.layui-m-layerend
::after
,
.layui-m-layerend
::before
{
position
:
absolute
;
left
:
5px
;
top
:
15px
;
content
:
''
;
width
:
18px
;
height
:
1px
;
background-color
:
#999
;
transform
:
rotate
(
45deg
);
-webkit-transform
:
rotate
(
45deg
);
border-radius
:
3px
}
.layui-m-layerend
::after
{
transform
:
rotate
(
-45deg
);
-webkit-transform
:
rotate
(
-45deg
)}
body
.layui-m-layer
.layui-m-layer-footer
{
position
:
fixed
;
width
:
95%
;
max-width
:
100%
;
margin
:
0
auto
;
left
:
0
;
right
:
0
;
bottom
:
10px
;
background
:
0
0
}
.layui-m-layer-footer
.layui-m-layercont
{
padding
:
20px
;
border-radius
:
5px
5px
0
0
;
background-color
:
rgba
(
255
,
255
,
255
,
.8
)}
.layui-m-layer-footer
.layui-m-layerbtn
{
display
:
block
;
height
:
auto
;
background
:
0
0
;
border-top
:
none
}
.layui-m-layer-footer
.layui-m-layerbtn
span
{
background-color
:
rgba
(
255
,
255
,
255
,
.8
)}
.layui-m-layer-footer
.layui-m-layerbtn
span
[
no
]
{
color
:
#FD482C
;
border-top
:
1px
solid
#c2c2c2
;
border-radius
:
0
0
5px
5px
}
.layui-m-layer-footer
.layui-m-layerbtn
span
[
yes
]
{
margin-top
:
10px
;
border-radius
:
5px
}
body
.layui-m-layer
.layui-m-layer-msg
{
width
:
auto
;
max-width
:
90%
;
margin
:
0
auto
;
bottom
:
-150px
;
background-color
:
rgba
(
0
,
0
,
0
,
.7
);
color
:
#fff
}
.layui-m-layer-msg
.layui-m-layercont
{
padding
:
10px
20px
}
\ No newline at end of file
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/icon-ext.png
0 → 100755
浏览文件 @
00cd63c4
5.8 KB
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/icon.png
0 → 100755
浏览文件 @
00cd63c4
11.2 KB
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/layer.css
0 → 100755
浏览文件 @
00cd63c4
.layui-layer-imgbar
,
.layui-layer-imgtit
a
,
.layui-layer-tab
.layui-layer-title
span
,
.layui-layer-title
{
text-overflow
:
ellipsis
;
white-space
:
nowrap
}
*
html
{
background-image
:
url(about:blank)
;
background-attachment
:
fixed
}
html
#layuicss-skinlayercss
{
display
:
none
;
position
:
absolute
;
width
:
1989px
}
.layui-layer
,
.layui-layer-shade
{
position
:
fixed
;
_position
:
absolute
;
pointer-events
:
auto
}
.layui-layer-shade
{
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
_height
:
expression
(
document
.
body
.
offsetHeight
+
"px"
)}
.layui-layer
{
-webkit-overflow-scrolling
:
touch
;
top
:
150px
;
left
:
0
;
margin
:
0
;
padding
:
0
;
background-color
:
#fff
;
-webkit-background-clip
:
content
;
box-shadow
:
1px
1px
50px
rgba
(
0
,
0
,
0
,
.3
)}
.layui-layer-close
{
position
:
absolute
}
.layui-layer-content
{
position
:
relative
}
.layui-layer-border
{
border
:
1px
solid
#B2B2B2
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
.1
);
box-shadow
:
1px
1px
5px
rgba
(
0
,
0
,
0
,
.2
)}
.layui-layer-load
{
background
:
url(loading-1.gif)
center
center
no-repeat
#eee
}
.layui-layer-ico
{
background
:
url(icon.png)
no-repeat
}
.layui-layer-btn
a
,
.layui-layer-dialog
.layui-layer-ico
,
.layui-layer-setwin
a
{
display
:
inline-block
;
*
display
:
inline
;
*
zoom
:
1
;
vertical-align
:
top
}
.layui-layer-move
{
display
:
none
;
position
:
fixed
;
*
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
cursor
:
move
;
opacity
:
0
;
filter
:
alpha
(
opacity
=
0
);
background-color
:
#fff
;
z-index
:
2147483647
}
.layui-layer-resize
{
position
:
absolute
;
width
:
15px
;
height
:
15px
;
right
:
0
;
bottom
:
0
;
cursor
:
se-resize
}
.layui-layer
{
border-radius
:
2px
;
-webkit-animation-fill-mode
:
both
;
animation-fill-mode
:
both
;
-webkit-animation-duration
:
.3s
;
animation-duration
:
.3s
}
@-webkit-keyframes
layer-bounceIn
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.5
);
transform
:
scale
(
.5
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
@keyframes
layer-bounceIn
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.5
);
-ms-transform
:
scale
(
.5
);
transform
:
scale
(
.5
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
1
);
-ms-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
.layer-anim
{
-webkit-animation-name
:
layer-bounceIn
;
animation-name
:
layer-bounceIn
}
@-webkit-keyframes
layer-zoomInDown
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translateY
(
-2000px
);
transform
:
scale
(
.1
)
translateY
(
-2000px
);
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
.475
)
translateY
(
60px
);
transform
:
scale
(
.475
)
translateY
(
60px
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}}
@keyframes
layer-zoomInDown
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translateY
(
-2000px
);
-ms-transform
:
scale
(
.1
)
translateY
(
-2000px
);
transform
:
scale
(
.1
)
translateY
(
-2000px
);
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
.475
)
translateY
(
60px
);
-ms-transform
:
scale
(
.475
)
translateY
(
60px
);
transform
:
scale
(
.475
)
translateY
(
60px
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}}
.layer-anim-01
{
-webkit-animation-name
:
layer-zoomInDown
;
animation-name
:
layer-zoomInDown
}
@-webkit-keyframes
layer-fadeInUpBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateY
(
2000px
);
transform
:
translateY
(
2000px
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}}
@keyframes
layer-fadeInUpBig
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateY
(
2000px
);
-ms-transform
:
translateY
(
2000px
);
transform
:
translateY
(
2000px
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateY
(
0
);
-ms-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)}}
.layer-anim-02
{
-webkit-animation-name
:
layer-fadeInUpBig
;
animation-name
:
layer-fadeInUpBig
}
@-webkit-keyframes
layer-zoomInLeft
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translateX
(
-2000px
);
transform
:
scale
(
.1
)
translateX
(
-2000px
);
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
.475
)
translateX
(
48px
);
transform
:
scale
(
.475
)
translateX
(
48px
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}}
@keyframes
layer-zoomInLeft
{
0
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.1
)
translateX
(
-2000px
);
-ms-transform
:
scale
(
.1
)
translateX
(
-2000px
);
transform
:
scale
(
.1
)
translateX
(
-2000px
);
-webkit-animation-timing-function
:
ease-in-out
;
animation-timing-function
:
ease-in-out
}
60
%
{
opacity
:
1
;
-webkit-transform
:
scale
(
.475
)
translateX
(
48px
);
-ms-transform
:
scale
(
.475
)
translateX
(
48px
);
transform
:
scale
(
.475
)
translateX
(
48px
);
-webkit-animation-timing-function
:
ease-out
;
animation-timing-function
:
ease-out
}}
.layer-anim-03
{
-webkit-animation-name
:
layer-zoomInLeft
;
animation-name
:
layer-zoomInLeft
}
@-webkit-keyframes
layer-rollIn
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateX
(
-100%
)
rotate
(
-120deg
);
transform
:
translateX
(
-100%
)
rotate
(
-120deg
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateX
(
0
)
rotate
(
0
);
transform
:
translateX
(
0
)
rotate
(
0
)}}
@keyframes
layer-rollIn
{
0
%
{
opacity
:
0
;
-webkit-transform
:
translateX
(
-100%
)
rotate
(
-120deg
);
-ms-transform
:
translateX
(
-100%
)
rotate
(
-120deg
);
transform
:
translateX
(
-100%
)
rotate
(
-120deg
)}
100
%
{
opacity
:
1
;
-webkit-transform
:
translateX
(
0
)
rotate
(
0
);
-ms-transform
:
translateX
(
0
)
rotate
(
0
);
transform
:
translateX
(
0
)
rotate
(
0
)}}
.layer-anim-04
{
-webkit-animation-name
:
layer-rollIn
;
animation-name
:
layer-rollIn
}
@keyframes
layer-fadeIn
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
.layer-anim-05
{
-webkit-animation-name
:
layer-fadeIn
;
animation-name
:
layer-fadeIn
}
@-webkit-keyframes
layer-shake
{
0
%,
100
%
{
-webkit-transform
:
translateX
(
0
);
transform
:
translateX
(
0
)}
10
%,
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
translateX
(
-10px
);
transform
:
translateX
(
-10px
)}
20
%,
40
%,
60
%,
80
%
{
-webkit-transform
:
translateX
(
10px
);
transform
:
translateX
(
10px
)}}
@keyframes
layer-shake
{
0
%,
100
%
{
-webkit-transform
:
translateX
(
0
);
-ms-transform
:
translateX
(
0
);
transform
:
translateX
(
0
)}
10
%,
30
%,
50
%,
70
%,
90
%
{
-webkit-transform
:
translateX
(
-10px
);
-ms-transform
:
translateX
(
-10px
);
transform
:
translateX
(
-10px
)}
20
%,
40
%,
60
%,
80
%
{
-webkit-transform
:
translateX
(
10px
);
-ms-transform
:
translateX
(
10px
);
transform
:
translateX
(
10px
)}}
.layer-anim-06
{
-webkit-animation-name
:
layer-shake
;
animation-name
:
layer-shake
}
@-webkit-keyframes
fadeIn
{
0
%
{
opacity
:
0
}
100
%
{
opacity
:
1
}}
.layui-layer-title
{
padding
:
0
80px
0
20px
;
height
:
42px
;
line-height
:
42px
;
border-bottom
:
1px
solid
#eee
;
font-size
:
14px
;
color
:
#333
;
overflow
:
hidden
;
background-color
:
#F8F8F8
;
border-radius
:
2px
2px
0
0
}
.layui-layer-setwin
{
position
:
absolute
;
right
:
15px
;
*
right
:
0
;
top
:
15px
;
font-size
:
0
;
line-height
:
initial
}
.layui-layer-setwin
a
{
position
:
relative
;
width
:
16px
;
height
:
16px
;
margin-left
:
10px
;
font-size
:
12px
;
_overflow
:
hidden
}
.layui-layer-setwin
.layui-layer-min
cite
{
position
:
absolute
;
width
:
14px
;
height
:
2px
;
left
:
0
;
top
:
50%
;
margin-top
:
-1px
;
background-color
:
#2E2D3C
;
cursor
:
pointer
;
_overflow
:
hidden
}
.layui-layer-setwin
.layui-layer-min
:hover
cite
{
background-color
:
#2D93CA
}
.layui-layer-setwin
.layui-layer-max
{
background-position
:
-32px
-40px
}
.layui-layer-setwin
.layui-layer-max
:hover
{
background-position
:
-16px
-40px
}
.layui-layer-setwin
.layui-layer-maxmin
{
background-position
:
-65px
-40px
}
.layui-layer-setwin
.layui-layer-maxmin
:hover
{
background-position
:
-49px
-40px
}
.layui-layer-setwin
.layui-layer-close1
{
background-position
:
1px
-40px
;
cursor
:
pointer
}
.layui-layer-setwin
.layui-layer-close1
:hover
{
opacity
:
.7
}
.layui-layer-setwin
.layui-layer-close2
{
position
:
absolute
;
right
:
-28px
;
top
:
-28px
;
width
:
30px
;
height
:
30px
;
margin-left
:
0
;
background-position
:
-149px
-31px
;
*
right
:
-18px
;
_display
:
none
}
.layui-layer-setwin
.layui-layer-close2
:hover
{
background-position
:
-180px
-31px
}
.layui-layer-btn
{
text-align
:
right
;
padding
:
0
10px
12px
;
pointer-events
:
auto
;
user-select
:
none
;
-webkit-user-select
:
none
}
.layui-layer-btn
a
{
height
:
28px
;
line-height
:
28px
;
margin
:
6px
6px
0
;
padding
:
0
15px
;
border
:
1px
solid
#dedede
;
background-color
:
#f1f1f1
;
color
:
#333
;
border-radius
:
2px
;
font-weight
:
400
;
cursor
:
pointer
;
text-decoration
:
none
}
.layui-layer-btn
a
:hover
{
opacity
:
.9
;
text-decoration
:
none
}
.layui-layer-btn
a
:active
{
opacity
:
.8
}
.layui-layer-btn
.layui-layer-btn0
{
border-color
:
#4898d5
;
background-color
:
#2e8ded
;
color
:
#fff
}
.layui-layer-btn-l
{
text-align
:
left
}
.layui-layer-btn-c
{
text-align
:
center
}
.layui-layer-dialog
{
min-width
:
260px
}
.layui-layer-dialog
.layui-layer-content
{
position
:
relative
;
padding
:
20px
;
line-height
:
24px
;
word-break
:
break-all
;
overflow
:
hidden
;
font-size
:
14px
;
overflow-x
:
hidden
;
overflow-y
:
auto
}
.layui-layer-dialog
.layui-layer-content
.layui-layer-ico
{
position
:
absolute
;
top
:
16px
;
left
:
15px
;
_left
:
-40px
;
width
:
30px
;
height
:
30px
}
.layui-layer-ico1
{
background-position
:
-30px
0
}
.layui-layer-ico2
{
background-position
:
-60px
0
}
.layui-layer-ico3
{
background-position
:
-90px
0
}
.layui-layer-ico4
{
background-position
:
-120px
0
}
.layui-layer-ico5
{
background-position
:
-150px
0
}
.layui-layer-ico6
{
background-position
:
-180px
0
}
.layui-layer-rim
{
border
:
6px
solid
#8D8D8D
;
border
:
6px
solid
rgba
(
0
,
0
,
0
,
.3
);
border-radius
:
5px
;
box-shadow
:
none
}
.layui-layer-msg
{
min-width
:
180px
;
border
:
1px
solid
#D3D4D3
;
box-shadow
:
none
}
.layui-layer-hui
{
min-width
:
100px
;
background-color
:
#000
;
filter
:
alpha
(
opacity
=
60
);
background-color
:
rgba
(
0
,
0
,
0
,
.6
);
color
:
#fff
;
border
:
none
}
.layui-layer-hui
.layui-layer-content
{
padding
:
12px
25px
;
text-align
:
center
}
.layui-layer-dialog
.layui-layer-padding
{
padding
:
20px
20px
20px
55px
;
text-align
:
left
}
.layui-layer-page
.layui-layer-content
{
position
:
relative
;
overflow
:
auto
}
.layui-layer-iframe
.layui-layer-btn
,
.layui-layer-page
.layui-layer-btn
{
padding-top
:
10px
}
.layui-layer-nobg
{
background
:
0
0
}
.layui-layer-iframe
iframe
{
display
:
block
;
width
:
100%
}
.layui-layer-loading
{
border-radius
:
100%
;
background
:
0
0
;
box-shadow
:
none
;
border
:
none
}
.layui-layer-loading
.layui-layer-content
{
width
:
60px
;
height
:
24px
;
background
:
url(loading-0.gif)
no-repeat
}
.layui-layer-loading
.layui-layer-loading1
{
width
:
37px
;
height
:
37px
;
background
:
url(loading-1.gif)
no-repeat
}
.layui-layer-ico16
,
.layui-layer-loading
.layui-layer-loading2
{
width
:
32px
;
height
:
32px
;
background
:
url(loading-2.gif)
no-repeat
}
.layui-layer-tips
{
background
:
0
0
;
box-shadow
:
none
;
border
:
none
}
.layui-layer-tips
.layui-layer-content
{
position
:
relative
;
line-height
:
22px
;
min-width
:
12px
;
padding
:
5px
10px
;
font-size
:
12px
;
_float
:
left
;
border-radius
:
2px
;
box-shadow
:
1px
1px
3px
rgba
(
0
,
0
,
0
,
.2
);
background-color
:
#000
;
color
:
#fff
}
.layui-layer-tips
.layui-layer-close
{
right
:
-2px
;
top
:
-1px
}
.layui-layer-tips
i
.layui-layer-TipsG
{
position
:
absolute
;
width
:
0
;
height
:
0
;
border-width
:
8px
;
border-color
:
transparent
;
border-style
:
dashed
;
*
overflow
:
hidden
}
.layui-layer-tips
i
.layui-layer-TipsB
,
.layui-layer-tips
i
.layui-layer-TipsT
{
left
:
5px
;
border-right-style
:
solid
;
border-right-color
:
#000
}
.layui-layer-tips
i
.layui-layer-TipsT
{
bottom
:
-8px
}
.layui-layer-tips
i
.layui-layer-TipsB
{
top
:
-8px
}
.layui-layer-tips
i
.layui-layer-TipsL
,
.layui-layer-tips
i
.layui-layer-TipsR
{
top
:
1px
;
border-bottom-style
:
solid
;
border-bottom-color
:
#000
}
.layui-layer-tips
i
.layui-layer-TipsR
{
left
:
-8px
}
.layui-layer-tips
i
.layui-layer-TipsL
{
right
:
-8px
}
.layui-layer-lan
[
type
=
dialog
]
{
min-width
:
280px
}
.layui-layer-lan
.layui-layer-title
{
background
:
#4476A7
;
color
:
#fff
;
border
:
none
}
.layui-layer-lan
.layui-layer-btn
{
padding
:
5px
10px
10px
;
text-align
:
right
;
border-top
:
1px
solid
#E9E7E7
}
.layui-layer-lan
.layui-layer-btn
a
{
background
:
#BBB5B5
;
border
:
none
}
.layui-layer-lan
.layui-layer-btn
.layui-layer-btn1
{
background
:
#C9C5C5
}
.layui-layer-molv
.layui-layer-title
{
background
:
#009f95
;
color
:
#fff
;
border
:
none
}
.layui-layer-molv
.layui-layer-btn
a
{
background
:
#009f95
}
.layui-layer-molv
.layui-layer-btn
.layui-layer-btn1
{
background
:
#92B8B1
}
.layui-layer-iconext
{
background
:
url(icon-ext.png)
no-repeat
}
.layui-layer-prompt
.layui-layer-input
{
display
:
block
;
width
:
220px
;
height
:
30px
;
margin
:
0
auto
;
line-height
:
30px
;
padding
:
0
5px
;
border
:
1px
solid
#ccc
;
box-shadow
:
1px
1px
5px
rgba
(
0
,
0
,
0
,
.1
)
inset
;
color
:
#333
}
.layui-layer-prompt
textarea
.layui-layer-input
{
width
:
300px
;
height
:
100px
;
line-height
:
20px
}
.layui-layer-prompt
.layui-layer-content
{
padding
:
20px
}
.layui-layer-prompt
.layui-layer-btn
{
padding-top
:
0
}
.layui-layer-tab
{
box-shadow
:
1px
1px
50px
rgba
(
0
,
0
,
0
,
.4
)}
.layui-layer-tab
.layui-layer-title
{
padding-left
:
0
;
border-bottom
:
1px
solid
#ccc
;
background-color
:
#eee
;
overflow
:
visible
}
.layui-layer-tab
.layui-layer-title
span
{
position
:
relative
;
float
:
left
;
min-width
:
80px
;
max-width
:
260px
;
padding
:
0
20px
;
text-align
:
center
;
cursor
:
default
;
overflow
:
hidden
}
.layui-layer-tab
.layui-layer-title
span
.layui-layer-tabnow
{
height
:
43px
;
border-left
:
1px
solid
#ccc
;
border-right
:
1px
solid
#ccc
;
background-color
:
#fff
;
z-index
:
10
}
.layui-layer-tab
.layui-layer-title
span
:first-child
{
border-left
:
none
}
.layui-layer-tabmain
{
line-height
:
24px
;
clear
:
both
}
.layui-layer-tabmain
.layui-layer-tabli
{
display
:
none
}
.layui-layer-tabmain
.layui-layer-tabli.xubox_tab_layer
{
display
:
block
}
.xubox_tabclose
{
position
:
absolute
;
right
:
10px
;
top
:
5px
;
cursor
:
pointer
}
.layui-layer-photos
{
-webkit-animation-duration
:
.8s
;
animation-duration
:
.8s
}
.layui-layer-photos
.layui-layer-content
{
overflow
:
hidden
;
text-align
:
center
}
.layui-layer-photos
.layui-layer-phimg
img
{
position
:
relative
;
width
:
100%
;
display
:
inline-block
;
*
display
:
inline
;
*
zoom
:
1
;
vertical-align
:
top
}
.layui-layer-imgbar
,
.layui-layer-imguide
{
display
:
none
}
.layui-layer-imgnext
,
.layui-layer-imgprev
{
position
:
absolute
;
top
:
50%
;
width
:
27px
;
_width
:
44px
;
height
:
44px
;
margin-top
:
-22px
;
outline
:
0
;
blr
:
expression
(
this
.
onFocus
=
this
.
blur
())}
.layui-layer-imgprev
{
left
:
10px
;
background-position
:
-5px
-5px
;
_background-position
:
-70px
-5px
}
.layui-layer-imgprev
:hover
{
background-position
:
-33px
-5px
;
_background-position
:
-120px
-5px
}
.layui-layer-imgnext
{
right
:
10px
;
_right
:
8px
;
background-position
:
-5px
-50px
;
_background-position
:
-70px
-50px
}
.layui-layer-imgnext
:hover
{
background-position
:
-33px
-50px
;
_background-position
:
-120px
-50px
}
.layui-layer-imgbar
{
position
:
absolute
;
left
:
0
;
bottom
:
0
;
width
:
100%
;
height
:
32px
;
line-height
:
32px
;
background-color
:
rgba
(
0
,
0
,
0
,
.8
);
background-color
:
#000
\
9
;
filter
:
Alpha
(
opacity
=
80
);
color
:
#fff
;
overflow
:
hidden
;
font-size
:
0
}
.layui-layer-imgtit
*
{
display
:
inline-block
;
*
display
:
inline
;
*
zoom
:
1
;
vertical-align
:
top
;
font-size
:
12px
}
.layui-layer-imgtit
a
{
max-width
:
65%
;
overflow
:
hidden
;
color
:
#fff
}
.layui-layer-imgtit
a
:hover
{
color
:
#fff
;
text-decoration
:
underline
}
.layui-layer-imgtit
em
{
padding-left
:
10px
;
font-style
:
normal
}
@-webkit-keyframes
layer-bounceOut
{
100
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.7
);
transform
:
scale
(
.7
)}
30
%
{
-webkit-transform
:
scale
(
1.05
);
transform
:
scale
(
1.05
)}
0
%
{
-webkit-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
@keyframes
layer-bounceOut
{
100
%
{
opacity
:
0
;
-webkit-transform
:
scale
(
.7
);
-ms-transform
:
scale
(
.7
);
transform
:
scale
(
.7
)}
30
%
{
-webkit-transform
:
scale
(
1.05
);
-ms-transform
:
scale
(
1.05
);
transform
:
scale
(
1.05
)}
0
%
{
-webkit-transform
:
scale
(
1
);
-ms-transform
:
scale
(
1
);
transform
:
scale
(
1
)}}
.layer-anim-close
{
-webkit-animation-name
:
layer-bounceOut
;
animation-name
:
layer-bounceOut
;
-webkit-animation-duration
:
.2s
;
animation-duration
:
.2s
}
@media
screen
and
(
max-width
:
1100px
){
.layui-layer-iframe
{
overflow-y
:
auto
;
-webkit-overflow-scrolling
:
touch
}}
\ No newline at end of file
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-0.gif
0 → 100755
浏览文件 @
00cd63c4
5.7 KB
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-1.gif
0 → 100755
浏览文件 @
00cd63c4
701 字节
xxl-job-admin/src/main/webapp/static/plugins/layer/skin/default/loading-2.gif
0 → 100755
浏览文件 @
00cd63c4
1.7 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录