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>
							 |