311 lines
13 KiB
HTML
311 lines
13 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>*微信公众号回复管理,可以设置自动回复用户输入内容;</p>
|
|
<p>*关注回复用于用户关注公众号时回复;</p>
|
|
<p>*关键词回复用于用户输入内容时回复。关键词相同时,根据排序回复,排序值越小越前;</p>
|
|
<p>*默认回复用于用户输入内容未匹配时回复;</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-tab layui-tab-card" lay-filter="tab-all">
|
|
<!-- 选项卡头部-->
|
|
<ul class="layui-tab-title">
|
|
{foreach $type_list as $type => $name}
|
|
<li data-type={$type} {if 'subscribe' == $type } class="layui-this" {/if} >{$name}</li>
|
|
{/foreach}
|
|
</ul>
|
|
|
|
<div class="layui-tab-item layui-show">
|
|
<div class="layui-card">
|
|
<div class="layui-card-body">
|
|
<div style="padding-bottom: 10px;">
|
|
<button class="layui-btn layui-btn-sm layuiadmin-btn-reply {$view_theme_color}" data-type="add">新增回复</button>
|
|
</div>
|
|
<table id="reply-lists" lay-filter="reply-lists"></table>
|
|
<script type="text/html" id="status">
|
|
<input type="checkbox" lay-filter="switch-status" data-id={{d.id}} data-field='status' lay-skin="switch"
|
|
lay-text="显示|隐藏" {{# if(d.status){ }} checked {{# } }} />
|
|
</script>
|
|
<script type="text/html" id="reply-operation">
|
|
<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="edit"><i class="layui-icon"></i>编辑</a>
|
|
<a class="layui-btn layui-btn-danger layui-btn-sm" lay-event="del" ><i class="layui-icon"></i>删除</a>
|
|
</script>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<style>
|
|
.layui-table-cell {
|
|
height: auto;
|
|
}
|
|
</style>
|
|
<script>
|
|
// 初始回复类型
|
|
var type = 'subscribe';
|
|
|
|
layui.config({
|
|
version:"{$front_version}",
|
|
base: '/static/lib/' //静态资源所在路径
|
|
}).use(['table', 'element'], function(){
|
|
var $ = layui.$
|
|
,form = layui.form
|
|
,table = layui.table
|
|
,element = layui.element;
|
|
|
|
// 初始获取列表数据
|
|
getList()
|
|
|
|
// 事件处理函数
|
|
var active = {
|
|
add: function(){
|
|
var add = layer.open({
|
|
type: 2
|
|
,title: '新增回复 '
|
|
,content: '{:url("wechat.reply/add")}?type='+type
|
|
,area: ['90%','90%']
|
|
,btn: ['确定', '取消']
|
|
,yes: function(index, layero){
|
|
var iframeWindow = window['layui-layer-iframe'+ index]
|
|
,submitID = 'add-reply-submit'
|
|
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
|
//监听提交
|
|
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
|
var field = data.field;
|
|
field['reply_type'] = type;
|
|
like.ajax({
|
|
url:'{:url("wechat.reply/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('reply-lists'); //数据刷新
|
|
}
|
|
},
|
|
});
|
|
});
|
|
submit.trigger('click');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
// 监听文本框编辑
|
|
table.on('edit(reply-lists)', function (obj) {
|
|
var ids = [];
|
|
var id = obj.data.id;
|
|
var fields = obj.field;
|
|
var field_value = obj.value;
|
|
ids.push(id);
|
|
if(isNaN(field_value)){
|
|
var old_value=$(this).prev().text();
|
|
|
|
layer.tips('请输入数字', $(this), {tips: [1, '#FF5722']});
|
|
$(this).val(old_value);
|
|
|
|
return false;
|
|
}
|
|
|
|
changeFields(ids,fields,field_value)
|
|
|
|
});
|
|
|
|
// 新增回复
|
|
$('.layui-btn.layuiadmin-btn-reply').on('click', function(){
|
|
var type = $(this).data('type');
|
|
active[type] ? active[type].call(this) : '';
|
|
});
|
|
|
|
// 监听启用状态开关
|
|
form.on('switch(switch-status)',function (obj) {
|
|
var ids = [];
|
|
var id = obj.elem.attributes['data-id'].nodeValue
|
|
var fields = obj.elem.attributes['data-field'].nodeValue
|
|
var field_value = 0;
|
|
ids.push(id);
|
|
if(this.checked){
|
|
field_value = 1;
|
|
}
|
|
changeFields(ids,fields,field_value)
|
|
|
|
})
|
|
|
|
// 监听选项卡切换
|
|
element.on('tab(tab-all)', function (data) {
|
|
type = $(this).attr('data-type');
|
|
getList();
|
|
});
|
|
|
|
// 加载列表数据
|
|
function getList() {
|
|
switch (type) {
|
|
case "subscribe":
|
|
var cols = [
|
|
{field: 'name', title: '规则名称', align: 'center'}
|
|
, {field: 'content_type', title: '回复类型', align: 'center'}
|
|
, {field: 'content', title: '回复内容', align: 'center'}
|
|
, {title:'启用状态', align: 'center', toolbar: '#status'}
|
|
, {title: '操作', align: 'center', toolbar: '#reply-operation'}
|
|
];
|
|
break;
|
|
case "text":
|
|
var cols = [
|
|
{field: 'keyword', title: '关键词', align: 'center'}
|
|
, {field: 'matching_type', title: '匹配方式', align: 'center'}
|
|
, {field: 'content_type', title: '回复类型', align: 'center'}
|
|
, {field: 'content', title: '回复内容', align: 'center'}
|
|
, {title: 'status', title:'启用状态', align: 'center', toolbar: '#status'}
|
|
, {field: 'sort', title: '排序', align: 'center',edit:'text'}
|
|
, {title: '操作', align: 'center', toolbar: '#reply-operation'}
|
|
];
|
|
break;
|
|
case "default":
|
|
var cols = [
|
|
{field: 'name', title: '规则名称', align: 'center'}
|
|
, {field: 'content_type', title: '回复类型', align: 'center'}
|
|
, {field: 'content', title: '回复内容', align: 'center'}
|
|
, {title: 'status', title:'启用状态', align: 'center', toolbar: '#status'}
|
|
, {title: '操作', align: 'center', toolbar: '#reply-operation'}
|
|
];
|
|
break;
|
|
}
|
|
|
|
//管理员管理
|
|
table.render({
|
|
elem: '#reply-lists'
|
|
, url: '{:url("wechat.reply/lists")}?type='+type
|
|
, cols: [
|
|
cols
|
|
]
|
|
, page: true
|
|
, text: {none: '暂无数据!'}
|
|
, response: {
|
|
'statusCode': 1
|
|
}
|
|
, parseData: function (res) { //将原始数据解析成 table 组件所规定的数据
|
|
return {
|
|
"code": res.code,
|
|
"msg": res.msg,
|
|
"count": res.data.count, //解析数据长度
|
|
"data": res.data.list, //解析数据列表
|
|
};
|
|
}
|
|
});
|
|
}
|
|
|
|
//监听工具条
|
|
table.on('tool(reply-lists)', function(obj){
|
|
if(obj.event === 'del'){
|
|
var id = obj.data.id;
|
|
var attr = obj.data.attr;
|
|
var name = obj.data.name;
|
|
layer.confirm('确认删除回复:'+'<span style="color: red">'+name+'</span>', function(index){
|
|
like.ajax({
|
|
url:'{:url("wechat.reply/del")}',
|
|
data:{id:id},
|
|
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('reply-lists'); //数据刷新
|
|
}
|
|
},
|
|
});
|
|
});
|
|
}else if(obj.event === 'edit'){
|
|
var id = obj.data.id;
|
|
var edit = layer.open({
|
|
type: 2
|
|
,title: '编辑回复'
|
|
,content: '{:url("wechat.reply/edit")}?id='+id
|
|
,area: ['90%','90%']
|
|
,btn: ['确定', '取消']
|
|
,yes: function(index, layero){
|
|
var iframeWindow = window['layui-layer-iframe'+ index]
|
|
,submitID = 'edit-reply-submit'
|
|
,submit = layero.find('iframe').contents().find('#'+ submitID);
|
|
|
|
//监听提交
|
|
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
|
|
var field = data.field;
|
|
field['reply_type'] = type;
|
|
like.ajax({
|
|
url:'{:url("wechat.reply/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('reply-lists'); //数据刷新
|
|
}
|
|
},
|
|
});
|
|
});
|
|
submit.trigger('click');
|
|
}
|
|
})
|
|
}
|
|
});
|
|
});
|
|
|
|
function changeFields(ids,fields,value) {
|
|
like.ajax({
|
|
url:'{:url("wechat.reply/changeFields")}',
|
|
data:{id:ids,field:fields,value:value,reply_type:type},
|
|
type:'post',
|
|
dataType:'json',
|
|
success:function (res) {
|
|
if(res.code == 1) {
|
|
layui.layer.msg(res.msg, {
|
|
offset: '15px'
|
|
, icon: 1
|
|
, time: 1000
|
|
}, function(){
|
|
location.href = location.href;
|
|
});
|
|
|
|
} else {
|
|
layui.layer.msg(res.msg, {
|
|
offset: '15px'
|
|
, icon: 2
|
|
, time: 1000
|
|
}, function(){
|
|
location.href = location.href;
|
|
});
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
</script> |