layui.use(['form','table','dropdown','miniTab'], function () {
var $ = layui.jquery;
var table = layui.table;
var form = layui.form;
var dropdown = layui.dropdown;
var miniTab = layui.miniTab;
var categorys = [];
var IDs = [];
var api = get_api('read_link_list'); //列表接口
var limit = localStorage.getItem(u + "_limit") || 50; //尝试读取本地记忆数据,没有就默认50
var pwds = [];
miniTab.listen();
//渲染表格
renderTable1();
function renderTable1(){
//先获取分类数据(用于显示所属分类和筛选)
$.post(get_api('read_category_list','Simplify'),function(data,status){
if(data.code != 1){
layer.alert("获取分类数据失败,请刷新重试",{icon:5,title:'错误',anim: 2,closeBtn: 0,btn: ['刷新页面']},function () {location.reload();});
return;
}else{
categorys = data.data;//赋值分类数据
renderTable2();//开始渲染表格
}
});
}
var cols=[ //表头
{type:'checkbox'} //开启复选框
,{field: 'lid', title: 'ID', width:80, sort: true,hide:true}
,{field: 'category_name', title: '所属分类',sort:true,width:140,event: 'edit_category',templet:function(d){
//检查是否存在,避免特殊情况报错
if (categorys && categorys[d.fid] && categorys[d.fid].font_icon && categorys[d.fid].name) {
return ' ' + categorys[d.fid].name;
}else{
return 'Null';
}
}}
,{field: 'title', title: '链接标题', width:200, edit: 'text'}
,{ title:'操作', toolbar: '#tablebar',width:110}
,{field:'pwd_id',title:'密码',width:70,templet: function(d){
return d.pwd_id>0?'查看':'';
}}
,{field: 'property', title: '私有', width: 100, sort: true,templet: function(d){
return "";
}}
,{field: 'status', title: '状态', width: 100, sort: true,templet: function(d){
return "";
}}
,{field: 'url', title: 'URL',templet:function(d){
return '' + d.url + '';
}}
,{field: 'click', title: '点击数',width:90,sort:true}
,{field: 'add_time', title: '添加时间', width:160, sort: true,templet:function(d){
var add_time = timestampToTime(d.add_time);
return add_time;
}}
,{field: 'up_time', title: '修改时间', width:160,sort:true,templet:function(d){
return d.up_time == null ?'':timestampToTime(d.up_time);
}}
];
//读取列筛选
var local = layui.data('table-filter-link-list');
layui.each(cols, function(index, item){
if(item.field in local){
item.hide = local[item.field];
}
});
//渲染表格函数
var renderTable2 = function () {
table.render({
elem: '#table'
,height: 'full-110' //自适应高度
,url: api //数据接口
,page: true //开启分页
,limit:limit //默认每页显示行数
,limits: [20,50,100,300,500]
,even:true //隔行背景色
,loading:true //加载条
//,defaultToolbar:false
,toolbar: '#toolbar'
,id:'table'
,cols: [cols]
,method: 'post'
,response: {statusCode: 1 }
,done: function (res, curr, count) {
load_dropdown();//加载移动端菜单
//获取当前每页显示数量.并写入本都储存
var temp_limit = $(".layui-laypage-limits option:selected").val();
if(temp_limit > 0 && localStorage.getItem(u + "_limit") != temp_limit){
localStorage.setItem(u + "_limit",temp_limit);
}
$("[data-field='lid']").addClass('layui-hide-xs');
$("[data-field='url']").addClass('layui-hide-xs');
$("[data-field='category_name']").addClass('layui-hide-xs');
$("[data-field='add_time']").addClass('layui-hide-xs');
$("[data-field='up_time']").addClass('layui-hide-xs');
$("[data-field='click']").addClass('layui-hide-xs');
//$(".layui-laypage .layui-laypage-count").css("padding-left","35px");
$(".layui-laypage .layui-laypage-prev").addClass('layui-hide-xs');
$(".layui-laypage .layui-laypage-curr").addClass('layui-hide-xs');
$(".layui-laypage .layui-laypage-next").addClass('layui-hide-xs');
$(".layui-laypage .layui-laypage-skip").addClass('layui-hide-xs');
$(".layui-table-tool-self").addClass('layui-hide-xs');
//加载加密分组数据
$.post(get_api('read_pwd_group_list'),{'page':'1','limit':'9999'},function(data,status){
if(data.code == 1){
pwds = [];
for(var i =0;i 1.不能检测内网/备用链接/其他链接(如迅雷等)
2.受限于网络的复杂性,检测结果仅供参
3.检测结束有问题的链接处于勾选状态
4.短时间的频繁请求可能被服务器视为CC攻击
5.本功能订阅可用,反馈和建议直接Q我
6.红色:无法连通(服务器>链接,不代表本机)
7.绿色:正常 黄色:重定向
8.本功能不会修改和删除任何数据
"
,btn: ['开始检测', '取消']
,yes: function(index, layero){
if($("#subscribe").text() != '1'){
layer.msg("未检测到有效订阅,无法使用此功能!",{icon:5});
return true;
}
var current = 0 ,fail = 0 ,INDEX = 0;
var testapi = get_api('other_testing_link');
var div = "div[lay-id='table'] .layui-table-main table tbody tr";
layer.load(1, {shade: [0.5,'#fff']});//加载层
layer.msg('正在检测死链接中,请稍后...', {icon: 16,time: 1000*300});
$("#testing_tip").show();//显示进度提示
layer.close(open_index); //关闭小窗口
layer.tips("正在检测中,请勿操作页面...","#testing_tip",{tips: [3, "#3595CC"],time: 9000});
for (let i = 0; i < trs.length; i++) {
//未勾选的跳过
if(trs[i].LAY_CHECKED != true){continue;}
$.post(testapi,{url:trs[i].url},function(re,status){
INDEX = trs[i].LAY_INDEX; //行索引
if(re.StatusCode == 200 || re.StatusCode == 301 || re.StatusCode == 302 ){
$("div[lay-id='table'] td .layui-form-checkbox").eq(INDEX).click();//正常的取消勾选
if (re.StatusCode == 200){
$(div).eq(INDEX).css("color","limegreen"); //正常的绿色
}else{
$(div).eq(INDEX).css("color","#ffb800"); //重定向的黄色
}
}else{
fail++;
//失败的红色
$(div).eq(INDEX).css("color","red");
$(div).eq(INDEX).css("font-weight","bold");
}
current++;
});
}
//创建定时器等待检测完成
var wait_id = setInterval(function() {
if(current == count){
$("#testing_tip").text('检测完毕,异常数:'+fail);
layer.closeAll();//关闭所有
layer.msg("检测完毕",{icon:1});
clearInterval(wait_id);
console.log('链接检测完毕,销毁定时器');
}else{
$("#testing_tip").text('正在检测中 '+current +"/"+count +',异常数:'+fail);
}
}, 100);
return false;
},btn2: function(index, layero){
return true;
},cancel: function(){
return true;
}
})
}else if(event === 'icon_pull'){
layer.alert('存在链接图标时如何处理 ?', {icon: 3, title:'请选择',btn: ['保持原样', '重新拉取', '取消'],
btnAlign: 'c',
btn1: function(){icon_pull_test('0')}, //跳过
btn2: function(){icon_pull_test('1')} //覆盖
});
function icon_pull_test(cover){
let i = 0;
let success = 0;
let skip = 0;
let fail = 0;
let total = checkStatus.data.length;
layer.load(1, {shade:[0.5,'#fff']});//加载层
let msg_id = layer.msg('正在拉取中', {icon: 16,time: 1000*300});
icon_pull(i);
function icon_pull(id){
if(i >= total){
layer.closeAll();
layer.alert('总计:' + total +',成功:' + success + ',失败:'+ fail + (skip > 0 ? (',跳过:' + skip):'' ),{icon:1,title:'信息',anim: 2,shadeClose: false,closeBtn: 0});
return true;
}
$("#layui-layer"+ msg_id+" .layui-layer-padding").html('[ ' + i + ' / ' + total + ' ] 正在拉取图标');
$.post(get_api('write_link','icon_pull'),{id:checkStatus.data[i].lid,cover:cover},function(data,status){
if(data.msg == 'success'){
success ++;
}else if(data.msg == 'fail'){
fail ++;
}else if(data.msg == 'skip'){
skip ++;
}else{
layer.closeAll();
layer.alert(data.msg,{icon:2,title:'信息',anim: 2,shadeClose: false,closeBtn: 0});
return true;
}
i ++;
icon_pull(i);
});
}
}
}else if(event === 'link_extend'){
extend_data = '';
index = layer.open({type: 1,scrollbar: false,shadeClose: true,title: '编辑扩展字段',area : ['100%', '100%'],content: $('.link_extend')});
$.post(get_api('read_link_list','extend_list'),function(data,status){
if(data.code == 1){
extend_data = data.data;
table.reload('link_extend_list', {data: extend_data});
} else{
layer.msg(data.msg);
}
});
}
});
table.render({
elem: '#link_extend_list'
,height: 'full-150'
,data: {}
,response: {statusCode: 1 }
,method: 'post'
,page: false
,limit: 1000
,even:true
,id:'link_extend_list'
,loading:true
,cols: [[
{field:'weight',title:'序号',edit:'text',width:80}
,{field:'title',title:'标题',edit:'text',width:256}
,{field:'name',title:'字段名',edit:'text',width:256}
,{field:'type',title:'类型',edit:'text',width:256}
,{field:'default',title:'默认值',edit:'text',width:256}
,{ title:'操作',toolbar:'#link_extend_toolbar',align:'center',width:118}
]]
});
//监听工具条
table.on('tool(table)', function (obj) {
var data = obj.data;
if (obj.event === 'del') {
layer.confirm('确认删除?',{icon: 3, title:'温馨提示'}, function(index){
$.post(get_api('write_link','del'),{lid:data.lid},function(data,status){
if(data.code == 1) {
obj.del();
layer.msg(data.msg, {icon: 1});
}else{
layer.msg(data.msg, {icon: 5});
}
});
});
}else if(obj.event === 'edit') {
var index = layer.open({
title: '编辑链接',
type: 2,
scrollbar: false,
shade: 0.2,
maxmin:false,
shadeClose: true,
area: ['100%', '100%'],
content: './index.php?c=admin&page=link_edit&u=' + u +'&id=' + data.lid
});
}else if(obj.event === 'edit_category'){
//点击分类名弹出编辑分类?
}else if(obj.event === 'pwd'){
layer.alert( '名称: ' + pwds['pid_' + data.pwd_id].name + '
密码: ' + pwds['pid_' + data.pwd_id].pwd,{icon:4,title: data.title + ' - 访问密码',anim: 2,closeBtn: 0});
}
});
//监听单元格编辑
table.on('edit(table)', function(obj){
$.post(get_api('write_link','fast_edit'),{'lid':obj.data.lid,'field':obj.field,'value':obj.value},function(data,status){
if(data.code == 1){
$("*").blur();
layer.msg('修改成功')
obj.update({up_time:data.t});
} else{
layer.msg(data.msg);
}
});
});
//开关监听
form.on('switch(property)',function(obj) {
var sw = obj.elem.checked; //取开关状态
var lid = obj.elem.value;
var contexts = sw?'私有':'公开';
$.post(get_api('write_link','property_sw'), {'lid': lid,'property': sw?'1':'0'},function(data, status) {
if (data.code == 1) {
layer.msg('已设为' + contexts );
} else {
layer.msg('设为' + contexts + '失败');
}
});
});
//开关监听
form.on('switch(status)',function(obj) {
var sw = obj.elem.checked; //取开关状态
var lid = obj.elem.value;
var contexts = sw?'启用':'禁止';
$.post(get_api('write_link','status_sw'), {'lid': lid,'status': sw?'1':'0'},function(data, status) {
if (data.code == 1) {
layer.msg('已设为' + contexts );
} else {
layer.msg('设为' + contexts + '失败');
}
});
});
//关闭按钮
$(document).on('click', '#close', function() {
layer.close(index);//关闭当前页
});
//批量修改分类
form.on('submit(batch_category)', function (data) {
var fid = $("#batch_category_fid").val();
if(fid == 0 || fid == null){
layer.msg('请选择分类',{icon: 5});
return false;
}
$.post(get_api('write_link','batch_category'),{lid:IDs,fid:fid},function(data,status){
if(data.code == 1){
layer.close(index);
link_search();
layer.msg(data.msg,{icon: 1})
} else{
layer.msg(data.msg,{icon: 5});
}
});
return false;
});
//批量操作(通用型:删除/设为公开/设为私有等)
function batch_operation(d,k){
$.post(get_api('write_link',k),{lid:d},function(data,status){
if(data.code == 1){
link_search();
layer.msg(data.msg,{icon: 1})
} else{
layer.msg(data.msg,{icon: 5});
}
});
}
//手机端操作
function load_dropdown(){
var data = [];
$(".layui-btn-normal.layui-hide-xs").each(function(){
data.push({'title':$(this).text(),'id':$(this).attr('lay-event')});
});
//console.log(data);
dropdown.render({elem: '#batch'
,data: data
,click: function(obj){$('#'+ obj.id).click();}
});
}
//自定义字段行事件
table.on('tool(link_extend_list)', function (obj) {
var data = obj.data;
var row = $(obj.tr).attr("data-index"); //获取行索引
if (obj.event === 'del') {
layer.confirm('确认移除?',{icon: 3, title:'温馨提示'}, function(index){
obj.del();
layer.close(index);
layer.msg("移除成功,点击保存后生效!",{icon:1});
});
}
});
//添加字段
$('#add_field').click(function () {
let data = table.cache.link_extend_list;
let max_weight = 0;
//找出最大的一个排序值
for (let i = 0; i < data.length; i++) {
if( parseInt(data[i].weight) > max_weight ){
max_weight = parseInt(data[i].weight);
}
}
data.push({
"title": "请输入标题",
"name":"请输入字段名(大小写字母或数字)",
"weight":(max_weight + 1),
"type":"请输入 text 或 textarea",
"default":""
});
table.reload('link_extend_list', {data: data});
return false;
});
//保存字段
$('#save_field').click(function () {
var data = [];
var tableBak = table.cache.link_extend_list;
for (var i = 0; i < tableBak.length; i++) {
//过滤掉被删除的空数据
if(typeof tableBak[i].LAY_INDEX == 'number'){
data.push(tableBak[i]);
}
}
$.post(get_api('write_link','extend_list') ,{list:JSON.stringify(data)},function(data,status){
if(data.code == 1){
table.reload("link_extend_list",{data:data.datas});
layer.msg('保存成功', {icon: 1});
} else{
layer.msg(data.msg,{icon:5});
}
});
return false;
});
});