205 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
		
		
			
		
	
	
			205 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			HTML
		
	
	
| 
								 | 
							
								{layout name="layout1" /}
							 | 
						|||
| 
								 | 
							
								<div class="wrapper">
							 | 
						|||
| 
								 | 
							
								    <div class="layui-card">
							 | 
						|||
| 
								 | 
							
								        <div class="layui-card-body">
							 | 
						|||
| 
								 | 
							
								            <div class="layui-collapse like-layui-collapse" lay-accordion="" style="border:1px dashed #c4c4c4">
							 | 
						|||
| 
								 | 
							
								                <div class="layui-colla-item">
							 | 
						|||
| 
								 | 
							
								                    <h2 class="layui-colla-title like-layui-colla-title" style="background-color: #fff">操作提示</h2>
							 | 
						|||
| 
								 | 
							
								                    <div class="layui-colla-content layui-show">
							 | 
						|||
| 
								 | 
							
								                        <p>1.请在linux环境使用crontab命令添加定时任务:*/1 * * * * php think crontab 。</p>
							 | 
						|||
| 
								 | 
							
								                        <p>2.规则如下:</p>
							 | 
						|||
| 
								 | 
							
								                        <p>*(0~59分)  *(0~23小时)  *(1~31号)  *(1-12月)  *(0-7星期,0和7都代表星期日)</p>
							 | 
						|||
| 
								 | 
							
								                        <p>*(星号):代表任何时刻都接受的意思。例:0 10 * * * command 日、月、周都是*,就代表着不论何月、何日的星期几的10:00都执行后续命令的意思。</p>
							 | 
						|||
| 
								 | 
							
								                        <p>,(逗号):代表分隔时段的意思。例:要执行的工作是2:00与3:00时,就会是:0 2,3 * * * command时间还是有五列,不过第二列是 2,3 ,代表2与3都适用。</p>
							 | 
						|||
| 
								 | 
							
								                        <p>-(减号):	代表一段时间范围内,例:8点到11点之间的每小时的18分都进行一项工作:18 8-11 * * * command仔细看到第二列变成8-11.代表 8,9,10,11,12 都适用的。</p>
							 | 
						|||
| 
								 | 
							
								                        <p>/n(斜线):那个n代表数字,即是每隔n单位间隔的意思,例:每五分钟进行一次,则:*/5 * * * *  。</p>
							 | 
						|||
| 
								 | 
							
								                    </div>
							 | 
						|||
| 
								 | 
							
								                </div>
							 | 
						|||
| 
								 | 
							
								            </div>
							 | 
						|||
| 
								 | 
							
								            <br>
							 | 
						|||
| 
								 | 
							
								            <div style="padding-bottom: 10px;">
							 | 
						|||
| 
								 | 
							
								                <button class="layui-btn layui-btn-sm layuiadmin-btn-crontab {$view_theme_color}" data-type="add">添加</button>
							 | 
						|||
| 
								 | 
							
								            </div>
							 | 
						|||
| 
								 | 
							
								            <table id="crontab-lists" lay-filter="crontab-lists"></table>
							 | 
						|||
| 
								 | 
							
								            <script type="text/html" id="status">
							 | 
						|||
| 
								 | 
							
								                {{#  if(d.status == 1){ }}
							 | 
						|||
| 
								 | 
							
								                <button class="layui-btn layui-btn-sm {$view_theme_button}">运行</button>
							 | 
						|||
| 
								 | 
							
								                {{#  } }}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                {{#  if(d.status == 2){ }}
							 | 
						|||
| 
								 | 
							
								                <button class="layui-btn layui-btn-sm layui-btn-danger">停止</button>
							 | 
						|||
| 
								 | 
							
								                {{#  } }}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                {{#  if(d.status == 3){ }}
							 | 
						|||
| 
								 | 
							
								                <button class="layui-btn layui-btn-sm layui-btn-danger">错误</button>
							 | 
						|||
| 
								 | 
							
								                {{#  } }}
							 | 
						|||
| 
								 | 
							
								            </script>
							 | 
						|||
| 
								 | 
							
								            <script type="text/html" id="operation">
							 | 
						|||
| 
								 | 
							
								                <a class="layui-btn layui-btn-sm layui-btn-normal" lay-event="edit">编辑</a>
							 | 
						|||
| 
								 | 
							
								                {{#  if(d.system == 0){ }}
							 | 
						|||
| 
								 | 
							
								                <a class="layui-btn layui-btn-sm layui-btn-danger" lay-event="delete">删除</a>
							 | 
						|||
| 
								 | 
							
								                {{#  } }}
							 | 
						|||
| 
								 | 
							
								                {{#  if(d.system == 1){ }}
							 | 
						|||
| 
								 | 
							
								                <a class="layui-btn layui-btn-sm layui-btn-danger layui-btn-disabled">删除</a>
							 | 
						|||
| 
								 | 
							
								                {{#  } }}
							 | 
						|||
| 
								 | 
							
								            </script>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        </div>
							 | 
						|||
| 
								 | 
							
								    </div>
							 | 
						|||
| 
								 | 
							
								</div>
							 | 
						|||
| 
								 | 
							
								<script>
							 | 
						|||
| 
								 | 
							
								    layui.config({
							 | 
						|||
| 
								 | 
							
								        version:"{$front_version}",
							 | 
						|||
| 
								 | 
							
								        base: '/static/lib/' //静态资源所在路径
							 | 
						|||
| 
								 | 
							
								    }).use(['table'], function () {
							 | 
						|||
| 
								 | 
							
								        var $ = layui.$
							 | 
						|||
| 
								 | 
							
								            , form = layui.form
							 | 
						|||
| 
								 | 
							
								            , table = layui.table;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        table.render({
							 | 
						|||
| 
								 | 
							
								            elem: '#crontab-lists'
							 | 
						|||
| 
								 | 
							
								            , url: '{:url("system.Crontab/lists")}' //模拟接口
							 | 
						|||
| 
								 | 
							
								            , cols: [[
							 | 
						|||
| 
								 | 
							
								                {field: 'name', width: 150, title: '名称'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'type_desc', width: 90, title: '类型'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'command', width: 150, title: '命令'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'parameter', width: 100, title: '参数'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'expression', width: 100, title: '规则'}
							 | 
						|||
| 
								 | 
							
								                , {width:80,title: '状态', templet: '#status', align: 'center',sort: true}
							 | 
						|||
| 
								 | 
							
								                , {field: 'error', width: 120, title: '错误原因'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'last_time_str', width: 160, title: '最后执行时间'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'time', width: 90, title: '时长'}
							 | 
						|||
| 
								 | 
							
								                , {field: 'max_time', width: 90, title: '最大时长'}
							 | 
						|||
| 
								 | 
							
								                , {fixed: 'right', title: '操作',width: 300,align: 'center', toolbar: '#operation'}
							 | 
						|||
| 
								 | 
							
								            ]]
							 | 
						|||
| 
								 | 
							
								            , text: {none: '暂无数据!'}
							 | 
						|||
| 
								 | 
							
								            , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
							 | 
						|||
| 
								 | 
							
								                return {
							 | 
						|||
| 
								 | 
							
								                    "code": res.code,
							 | 
						|||
| 
								 | 
							
								                    "msg": res.msg,
							 | 
						|||
| 
								 | 
							
								                    "count": res.data.count, //解析数据长度
							 | 
						|||
| 
								 | 
							
								                    "data": res.data.lists, //解析数据列表
							 | 
						|||
| 
								 | 
							
								                };
							 | 
						|||
| 
								 | 
							
								            },
							 | 
						|||
| 
								 | 
							
								            response: {
							 | 
						|||
| 
								 | 
							
								                statusCode: 1
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            ,done: function(res, curr, count){
							 | 
						|||
| 
								 | 
							
								                // 解决操作栏因为内容过多换行问题
							 | 
						|||
| 
								 | 
							
								                $(".layui-table-main tr").each(function (index, val) {
							 | 
						|||
| 
								 | 
							
								                    $($(".layui-table-fixed-l .layui-table-body tbody tr")[index]).height($(val).height());
							 | 
						|||
| 
								 | 
							
								                    $($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
							 | 
						|||
| 
								 | 
							
								                });
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        //监听工具条
							 | 
						|||
| 
								 | 
							
								        table.on('tool(crontab-lists)', function (obj) {
							 | 
						|||
| 
								 | 
							
								            var operation = obj.event;
							 | 
						|||
| 
								 | 
							
								            var id = obj.data['id'];
							 | 
						|||
| 
								 | 
							
								            switch (operation) {
							 | 
						|||
| 
								 | 
							
								                case 'delete':
							 | 
						|||
| 
								 | 
							
								                    layer.confirm('确定删除定时任务吗?', function(index){
							 | 
						|||
| 
								 | 
							
								                        like.ajax({
							 | 
						|||
| 
								 | 
							
								                            url:'{:url("system.Crontab/del")}',
							 | 
						|||
| 
								 | 
							
								                            data:{'id':id},
							 | 
						|||
| 
								 | 
							
								                            type:"post",
							 | 
						|||
| 
								 | 
							
								                            success:function(res)
							 | 
						|||
| 
								 | 
							
								                            {
							 | 
						|||
| 
								 | 
							
								                                if(res.code == 1) {
							 | 
						|||
| 
								 | 
							
								                                    obj.del();
							 | 
						|||
| 
								 | 
							
								                                    layui.layer.msg(res.msg, {
							 | 
						|||
| 
								 | 
							
								                                        offset: '15px'
							 | 
						|||
| 
								 | 
							
								                                        , icon: 1
							 | 
						|||
| 
								 | 
							
								                                        , time: 1000
							 | 
						|||
| 
								 | 
							
								                                    });
							 | 
						|||
| 
								 | 
							
								                                    layer.close(index);
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            }
							 | 
						|||
| 
								 | 
							
								                        });
							 | 
						|||
| 
								 | 
							
								                    });
							 | 
						|||
| 
								 | 
							
								                    break;
							 | 
						|||
| 
								 | 
							
								                case 'edit':
							 | 
						|||
| 
								 | 
							
								                    layer.open({
							 | 
						|||
| 
								 | 
							
								                        type: 2
							 | 
						|||
| 
								 | 
							
								                        ,title: '编辑系统任务'
							 | 
						|||
| 
								 | 
							
								                        ,content: '{:url("system.Crontab/edit")}?id='+id
							 | 
						|||
| 
								 | 
							
								                        ,area: ['90%', '90%']
							 | 
						|||
| 
								 | 
							
								                        ,btn: ['确定', '取消']
							 | 
						|||
| 
								 | 
							
								                        ,yes: function(index, layero){
							 | 
						|||
| 
								 | 
							
								                            var iframeWindow = window['layui-layer-iframe'+ index]
							 | 
						|||
| 
								 | 
							
								                                ,submitID = 'crontab-submit-edit'
							 | 
						|||
| 
								 | 
							
								                                ,submit = layero.find('iframe').contents().find('#'+ submitID);
							 | 
						|||
| 
								 | 
							
								                            //监听提交
							 | 
						|||
| 
								 | 
							
								                            iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
							 | 
						|||
| 
								 | 
							
								                                var field = data.field;
							 | 
						|||
| 
								 | 
							
								                                like.ajax({
							 | 
						|||
| 
								 | 
							
								                                    url:'{:url("system.Crontab/edit")}',
							 | 
						|||
| 
								 | 
							
								                                    data:field,
							 | 
						|||
| 
								 | 
							
								                                    type:"post",
							 | 
						|||
| 
								 | 
							
								                                    success:function(res)
							 | 
						|||
| 
								 | 
							
								                                    {
							 | 
						|||
| 
								 | 
							
								                                        if(res.code == 1) {
							 | 
						|||
| 
								 | 
							
								                                            layui.layer.msg(res.msg, {
							 | 
						|||
| 
								 | 
							
								                                                offset: '15px'
							 | 
						|||
| 
								 | 
							
								                                                , icon: 1
							 | 
						|||
| 
								 | 
							
								                                                , time: 1000
							 | 
						|||
| 
								 | 
							
								                                            });
							 | 
						|||
| 
								 | 
							
								                                            layer.close(index); //关闭弹层
							 | 
						|||
| 
								 | 
							
								                                            table.reload('crontab-lists'); //数据刷新
							 | 
						|||
| 
								 | 
							
								                                        }
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                });
							 | 
						|||
| 
								 | 
							
								                            });
							 | 
						|||
| 
								 | 
							
								                            submit.trigger('click');
							 | 
						|||
| 
								 | 
							
								                        }
							 | 
						|||
| 
								 | 
							
								                    })
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        var active = {
							 | 
						|||
| 
								 | 
							
								            add: function(){
							 | 
						|||
| 
								 | 
							
								                layer.open({
							 | 
						|||
| 
								 | 
							
								                    type: 2
							 | 
						|||
| 
								 | 
							
								                    ,title: '添加系统任务'
							 | 
						|||
| 
								 | 
							
								                    ,content: '{:url("system.Crontab/add")}'
							 | 
						|||
| 
								 | 
							
								                    ,area: ['90%', '90%']
							 | 
						|||
| 
								 | 
							
								                    ,btn: ['确定', '取消']
							 | 
						|||
| 
								 | 
							
								                    ,yes: function(index, layero){
							 | 
						|||
| 
								 | 
							
								                        var iframeWindow = window['layui-layer-iframe'+ index]
							 | 
						|||
| 
								 | 
							
								                            ,submitID = 'crontab-submit'
							 | 
						|||
| 
								 | 
							
								                            ,submit = layero.find('iframe').contents().find('#'+ submitID);
							 | 
						|||
| 
								 | 
							
								                        //监听提交
							 | 
						|||
| 
								 | 
							
								                        iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
							 | 
						|||
| 
								 | 
							
								                            var field = data.field;
							 | 
						|||
| 
								 | 
							
								                            like.ajax({
							 | 
						|||
| 
								 | 
							
								                                url:'{:url("system.Crontab/add")}',
							 | 
						|||
| 
								 | 
							
								                                data:field,
							 | 
						|||
| 
								 | 
							
								                                type:"post",
							 | 
						|||
| 
								 | 
							
								                                success:function(res)
							 | 
						|||
| 
								 | 
							
								                                {
							 | 
						|||
| 
								 | 
							
								                                    if(res.code == 1) {
							 | 
						|||
| 
								 | 
							
								                                        layui.layer.msg(res.msg, {
							 | 
						|||
| 
								 | 
							
								                                            offset: '15px'
							 | 
						|||
| 
								 | 
							
								                                            , icon: 1
							 | 
						|||
| 
								 | 
							
								                                            , time: 1000
							 | 
						|||
| 
								 | 
							
								                                        });
							 | 
						|||
| 
								 | 
							
								                                        layer.close(index); //关闭弹层
							 | 
						|||
| 
								 | 
							
								                                        table.reload('crontab-lists'); //数据刷新
							 | 
						|||
| 
								 | 
							
								                                    }
							 | 
						|||
| 
								 | 
							
								                                }
							 | 
						|||
| 
								 | 
							
								                            });
							 | 
						|||
| 
								 | 
							
								                        });
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								                        submit.trigger('click');
							 | 
						|||
| 
								 | 
							
								                    }
							 | 
						|||
| 
								 | 
							
								                });
							 | 
						|||
| 
								 | 
							
								            },
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								        $('.layui-btn.layuiadmin-btn-crontab').on('click', function(){
							 | 
						|||
| 
								 | 
							
								            var type = $(this).data('type');
							 | 
						|||
| 
								 | 
							
								            active[type] ? active[type].call(this) : '';
							 | 
						|||
| 
								 | 
							
								        });
							 | 
						|||
| 
								 | 
							
								    });
							 | 
						|||
| 
								 | 
							
								</script>
							 |