Files
yakpanel-core/class/push/panel_push.html

402 lines
16 KiB
HTML
Raw Permalink Normal View History

2026-04-07 02:04:22 +05:30
<style>
.module-check i.form-checkbox{
vertical-align: bottom;
}
.module-check span{
vertical-align: revert;
}
.module-check.check_disabled label,
.module-check.check_disabled i{
cursor: no-drop;
}
.panel_push_form .bt_select_updown .bt_select_list{
max-height: 140px;
}
#bt_panel_push_table .divtable thead {
position: relative;
z-index: 999;
}
#bt_panel_push_table .divtable {
border: 1px solid #ddd;
}
#bt_panel_push_table table {
border: none;
}
.bt-form .bt-disabled{
border: 1px solid #DDD;
background-color: #F5F5F5;
color: #ACA899;
}
</style>
<div id="bt_panel_push_table"></div>
<!--面板消息推送模块-->
<script type="text/javascript">
var panel_push = {
all_info: {},
module_name: 'panel_push',
module_config: [],
msg_list:[],
push_type:'',
init: function () {
this.all_info = $('.alarm-view .bt-w-menu p.bgw').data('data'); //设置全局数据
this.get_push_data();
},
/**
*@description
*/
get_push_data: function () {
var _this = this,data = this.all_info.data,rdata = [];
$.each(data,function(index,item){
item['id'] = index;
item['name'] = _this.module_name;
rdata.push(item)
})
// console.log(rdata,'rdata')
bt_tools.table({
el: '#bt_panel_push_table',
data: rdata,
default: "列表为空",
autoHeight: true,
height:410,
column: [
{ fid: 'title', title: '标题' },
{ fid: 'm_title', title: '推送通道' },
{ fid: 'm_cycle', title: '执行周期' },
{
fid: 'status',
title: '状态',
config: {
icon: true,
list: [
[true, '正常', 'bt_success', 'glyphicon-play'],
[false, '停用', 'bt_danger', 'glyphicon-pause']
]
},
type: 'status',
event: function(row){
bt_tools.send({
url:'/push?action=set_push_status',
data: {id:row.id,name:_this.module_name,status:row['status']?0:1}
},function(res){
if(res.status){
panel_push.refresh_data();
}
bt_tools.msg(res)
},'设置推送状态')
}
},
{
title: '操作', type: 'group', width: 100, align: 'right', group: [{
title: '编辑', event: function(row){
var _typeA = []
_this.get_config_data(function(){
$.each(_this.module_config,function(index,item){
_typeA.push(item.project)
})
_this.panel_push_view($.extend(true,$.inArray(row.project,_typeA) < 0 ? {isOther:true} : {},row));
})
}
},{
title: '删除', event: function (row) {
bt.confirm({title:'删除推送通道',msg:'删除【'+row.title+'】推送,是否继续?'},function(){
_this.del_push_config(row.id, function (res) {
if (res.status) panel_push.refresh_data();
bt_tools.msg(res)
});
});
}
}]
}
],
tootls:[{
type:'group',
positon: ['left', 'top'],
list: [{
title: '添加推送',
active: true,
event: function () {
_this.get_config_data(function(){
_this.panel_push_view();
})
}
}]
}]
});
},
/**
*面板推送视图
*/
panel_push_view:function(res){
var _this = this,config = {title:'添加推送',btn:'添加'},proList = [],editIndex = 0,param = {} ;
if(res){
param = $.extend(true,{},res)
config = {title:'编辑推送',btn:'保存'}
}
$.each(this.module_config,function(index,item){
if(param && param.project === item.project) editIndex = index;
proList.push({title:item.title,value:item.project})
})
bt_tools.open({
type: 1,
title: config.title,
area:'520px',
btn:[config.btn,'取消'],
skin:'panel_push_form',
content:{
class:'pd15',
data:param || {},
form:[{
label:'通知类型',
group:{
type: 'select',
name: 'project',
width: '300px',
value:'ssl',
class:'projectBox',
list: proList,
disabled:!!res,
change:function(formData,element,that){
var config = panel_push.switch_push_type(that,res?res:formData)
that.$again_render_form(config)
}
}
},{
label:'服务名称',
display: false,
group:{
type: 'text',
name: 'proName',
width: '300px',
placeholder:'请输入完整的服务名称',
value:''
}
},{
label:'服务状态',
display:false,
group:{
type: 'select',
name: 'key',
width: '300px',
placeholder:'无服务状态',
value:'stop',
list:[]
}
},{
label:'剩余天数',
group:[{
type: 'number',
name: 'cycle',
width: '100px',
unit: '天',
value:1,
}]
},{
label:'消息通道',
style:{'margin-top': '7px'},
group:[] //动态获取
},{
label:'推送间隔',
display: false,
group:{
type: 'number',
name:'interval',
width: '100px',
class: 'group',
unit: '秒',
value:600
}
},{
group:{
type: 'help',
style: { 'margin-top': '0' },
class: 'none-list-style',
list: []
}
}]
},
success:function(layers,indexs,forms){
forms.element.find('[data-name="project"] ul li:eq('+editIndex+')').click()
},
yes:function(formData,index){
var _configD = {},eData = $.extend(true,{status:true,type:_this.push_type},formData);
// 默认添加的参数
_configD['name'] = _this.module_name;
_configD['id'] = res ? param['id'] : new Date().getTime();
eData['title'] = $('.projectBox .bt_select_content').html();
//删除推送类型
$.each(_this.msg_list,function(index,item){
delete eData[item.name]
})
//拼接选中推送方式
var isCheck = []
$('.module-check').not('.check_disabled').each(function(){
if($(this).find('input').prop('checked')){
isCheck.push($(this).find('input').prop('name'))
}
})
eData['module'] = isCheck.join();
eData['cycle'] = eData['cycle']?parseInt(eData['cycle']):1;
eData['interval'] = eData['interval']?parseInt(eData['interval']):600;
if(!eData['module']){
layer.msg('请选择一种消息通道',{icon:2});
return false
}
// 自定义类型时
if(eData.project === 'other'){
eData.project = eData.proName
eData['title'] = eData.proName+'服务停止'
delete eData.proName; //删除临时服务名称
}
_configD['data'] = JSON.stringify(eData)
//提交
bt_tools.send({
url:'/push?action=set_push_config',
data:_configD
},function(Sres){
if(Sres.status){
layer.close(index);
panel_push.refresh_data();
}
bt_tools.msg(Sres)
},(res ?'保存':'添加')+'推送设置')
}
})
},
// 推送类型判断
switch_push_type: function(config,formData){
var that = this,_config = config.config.form,_checklist = [],isInvalid = false,isCheckType = [];
if(!formData['project']) formData['project'] = 'ssl'
formData['isOther'] ? formData['project'] = 'other':''
$.each(this.module_config,function(index,item){
if(formData.project === item.project){
if(formData['module']){
isCheckType = formData['module'].split(',')
}
$.each(item.push,function(indexP,ic){
if(typeof that.msg_list[ic] != 'undefined') {
_checklist.push({
type: 'checkbox',
name:that.msg_list[ic].name,
class:'module-check '+(!that.msg_list[ic].setup?'check_disabled':'')+'',
style:{'margin-right': '10px'},
disabled:!that.msg_list[ic].setup,
value:$.inArray(that.msg_list[ic].name,isCheckType) >= 0 ?1:0,
title:that.msg_list[ic].title+(!that.msg_list[ic].setup?'<span style="color:red;cursor: pointer;" onclick="panel_push.alarm_jump(\''+that.msg_list[ic].title+'\')">[点击安装]</span>':''),
event:function(formData,element,thatE){
thatE.config.form[4].group[indexP].value = !formData[that.msg_list[ic].name]?0:1;
}
})
}
})
_config[0].group.value = formData.project;
_config[1].display = false;
_config[4].group = _checklist;
_config[6].group.list = item.helps; //动态帮助提醒
formData['type'] = item.type;
if(formData.project === 'other'){
_config[1].display = true
_config[1].group.value = formData['title']?formData['title'].slice(0, -4):''
}
that.push_type = item.type; //保存当前类型
switch(item.type){
case 'services':
var keyList = []
$.each(item.keys,function(indexK,ik){
keyList.push({title:ik.val,value:ik.key})
})
_config[2].display = true;
_config[2].group.list = keyList;
_config[3].display = false;
_config[5].display = true;
_config[5].group.value = item.interval
break;
default:
_config[2].display = false;
_config[3].display = true;
_config[3].group[0].value = parseInt(item.cycle);
_config[5].display = false;
}
isInvalid = true;
return true;
}
})
if(isInvalid) return _config
},
//安装跳转提示
alarm_jump:function(name){
layer.confirm("当前模块<span style='color:red'>未安装</span>,是否跳转到安装界面,是否继续?",{title:"跳转提醒",icon:3,closeBtn:2}, function() {
layer.closeAll();
setTimeout(function(){
open_three_channel_auth(name)
},200)
})
},
get_config_data:function(callback){
var _this = this;
if(_this.module_config.length === 0 || _this.msg_list.length === 0){
_this.get_module_config(function(res){
_this.module_config = res
_this.get_push_msg_list(function(list){
_this.msg_list = list
if(callback) callback(true)
})
})
}else{
if(callback) callback(true)
}
},
/**
*@description 删除配置
*/
del_push_config: function (id,callback) {
var that = this
$.post('/push?action=del_push_config', { name: that.module_name,id:id }, function (rdata) {
if(callback) callback(rdata)
})
},
/**
*@description 刷新配置
*/
refresh_data: function () {
var that = this
$.post('/push?action=get_modules_list', function (rdata) {
$('#bt_panel_push_table').empty()
that.all_info = rdata[that.module_name];
$('.alarm-view .bt-w-menu p.bgw').data('data',rdata[that.module_name]);
that.get_push_data()
})
},
/**
*@description 获取模块执行日志
*/
get_module_logs: function () {
var that = this
$.post('/push?action=get_module_logs', { name: that.module_name }, function (rdata) {
})
},
/**
*@description 获取配置项
*/
get_module_config: function (callback) {
var that = this
$.post('/push?action=get_module_config', { name: that.module_name }, function (rdata) {
if(callback) callback(rdata)
})
},
/**
*@description 获取消息通道安装情况
*/
get_push_msg_list: function(callback) {
$.post('/push?action=get_push_msg_list', function (rdata) {
if(callback) callback(rdata)
})
}
}
</script>