添加网站文件

This commit is contained in:
2025-12-22 13:59:40 +08:00
commit 117aaf83d1
19468 changed files with 2111999 additions and 0 deletions

View File

@@ -0,0 +1,271 @@
{layout name="layout1" /}
<style>
.layui-table-cell {
height:auto;
}
</style>
<div class="layui-fluid">
<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>
</div>
</div>
</div>
</div>
<div class="layui-tab layui-tab-card" lay-filter="tab-all">
<ul class="layui-tab-title">
<li data-type='1' class="layui-this">通知会员</li>
<li data-type='2' >通知平台</li>
</ul>
<div class="layui-tab-content">
<!--通知会员-->
<div class="layui-tab-item layui-show ">
{include file="notice_setting/notice_user"/}
</div>
<!--通知平台-->
<div class="layui-tab-item">
{include file="notice_setting/notice_platform"/}
</div>
</div>
</div>
</div>
</div>
<script type="text/html" id="systemTpl">
{{# if((d.support).includes(1)){ }}
<div>
{{# if(d.system_notice.status == 1){ }}
<a class="layui-btn layui-btn layui-btn-sm operation-btn">已开启</a>
{{# } else { }}
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn">已关闭</a>
{{# } }}
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="system_record">通知记录</a>
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="system">设置</a>
</div>
{{# } else { }}
-
{{# } }}
</script>
<script type="text/html" id="smsTpl">
{{# if((d.support).includes(2)){ }}
<div>
{{# if(d.sms_notice.status == 1){ }}
<a class="layui-btn layui-btn layui-btn-sm operation-btn">已开启</a>
{{# } else { }}
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn">已关闭</a>
{{# } }}
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="sms_record">通知记录</a>
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="sms">设置</a>
</div>
{{# } else { }}
-
{{# } }}
</script>
<script type="text/html" id="oaTpl">
{{# if((d.support).includes(3)){ }}
<div>
{{# if(d.oa_notice.status == 1){ }}
<a class="layui-btn layui-btn layui-btn-sm operation-btn">已开启</a>
{{# } else { }}
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn">已关闭</a>
{{# } }}
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="oa_record">通知记录</a>
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="oa">设置</a>
</div>
{{# } else { }}
-
{{# } }}
</script>
<script type="text/html" id="mnpTpl">
{{# if((d.support).includes(4)){ }}
<div>
{{# if(d.mnp_notice.status == 1){ }}
<a class="layui-btn layui-btn layui-btn-sm operation-btn">已开启</a>
{{# } else { }}
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn">已关闭</a>
{{# } }}
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="mnp_record">通知记录</a>
<a class="layui-btn layui-btn-normal layui-btn-sm operation-btn" lay-event="mnp">设置</a>
</div>
{{# } else { }}
-
{{# } }}
</script>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/layui-admin/dist/layuiadmin/'
}).extend({
index: 'lib/index'
}).use(['index', 'element', 'like', 'table'], function () {
var $ = layui.$
, form = layui.form
, table = layui.table
, element = layui.element
, like = layui.like;
getLists(1);
//切换列表
element.on('tab(tab-all)', function (data) {
form.render('select');
var type = $(this).attr('data-type');
getLists(type);
});
//列表
function getLists(type) {
var elem = '#user-lists';
if (type == 2) {
elem = '#platform-lists';
}
table.render({
elem: elem
, url: '{:url("noticeSetting/index")}?type='+type
, cols: [[
{field: 'scene', title: '通知类型',width:140}
, {field: 'desc', title: '通知场景说明', width:140 }
, {field: 'system_notice', title: '系统通知',width:240, align: 'center', templet:'#systemTpl'}
, {field: 'sms_notice', title: '短信通知',width:240, align: 'center', templet:'#smsTpl'}
, {field: 'oa_notice', title: '微信模板消息',width:240, align: 'center', templet:'#oaTpl'}
, {field: 'mnp_notice', title: '微信小程序提醒',width:240, align: 'center', templet:'#mnpTpl'}
]]
, text: {none: '暂无数据!'}
, parseData: function (res) {
return {
"code": res.code,
"msg": res.msg,
"count": res.data.count,
"data": res.data.lists,
};
}
,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());
});
}
});
}
//操作
var active = {
//系统通知
system: function (obj) {
setPage('系统通知设置', obj.data.id, 'system');
},
//系统通知记录
system_record: function (obj) {
recordPage('系统通知记录', obj.data.id, 1);
},
//短信通知
sms: function (obj) {
setPage('短信通知设置', obj.data.id, 'sms');
},
//知信通知记录
sms_record: function (obj) {
recordPage('短信通知记录', obj.data.id, 2);
},
//公众号通知
oa: function (obj) {
setPage('公众号通知设置', obj.data.id, 'oa');
},
//微信模板通知记录
oa_record: function (obj) {
recordPage('微信模板通知记录', obj.data.id, 3);
},
//小程序
mnp: function (obj) {
setPage('小程序通知设置', obj.data.id, 'mnp');
},
//微信小程序通知记录
mnp_record: function (obj) {
recordPage('微信小程序通知记录', obj.data.id, 4);
},
};
//设置页面
function setPage(title, id, type) {
layer.open({
type: 2
,title: title
,content: '{:url("noticeSetting/set")}?id='+id+'&type='+type
,area: ['90%','90%']
,btn: ['确定', '取消']
,yes: function(index, layero) {
var iframeWindow = window['layui-layer-iframe'+ index]
,submitID = 'addSubmit'
,submit = layero.find('iframe').contents().find('#'+ submitID);
//监听提交
iframeWindow.layui.form.on('submit('+ submitID +')', function(data){
var field = data.field;
like.ajax({
url:'{:url("noticeSetting/set")}',
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('user-lists');
table.reload('platform-lists');
}
}
});
});
submit.trigger('click');
}
});
}
// 通知记录界面
function recordPage(title, id, send_type) {
layer.open({
type: 2
,title: title
,content: '{:url("noticeSetting/record")}?id='+id+'&send_type='+send_type
,area: ['90%','90%']
,btn: ['确定', '取消']
,yes: function(index, layero) {
layer.close(index);
}
});
}
// 监听表格右侧工具条
table.on('tool(user-lists)', function(obj) {
var type = obj.event;
active[type] ? active[type].call(this, obj) : '';
});
table.on('tool(platform-lists)', function(obj) {
var type = obj.event;
active[type] ? active[type].call(this, obj) : '';
});
});
</script>

View File

@@ -0,0 +1,4 @@
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<table id="platform-lists" lay-filter="platform-lists"></table>
</div>

View File

@@ -0,0 +1,6 @@
<div class="layui-form layui-card-header layuiadmin-card-header-auto">
<table id="user-lists" lay-filter="user-lists"></table>
</div>

View File

@@ -0,0 +1,142 @@
{layout name="layout1" /}
<style>
.layui-table-cell {
height:auto;
}
</style>
<div class="layui-card">
<div class="layui-card-header">
<!--搜索-->
<div class="layui-form">
<div class="layui-inline">
<label class="layui-form-label">通知内容</label>
<div class="layui-input-inline">
<input type="text" name="content" id="content" class="layui-input" />
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">通知时间</label>
<div class="layui-input-inline" style="width: 300px;">
<input type="text" name="create_time" id="create_time" class="layui-input" />
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-normal layui-btn-sm" lay-submit lay-filter="search">查询</button>
<button class="layui-btn layui-btn-primary layui-btn-sm" lay-submit lay-filter="reset">重置</button>
</div>
</div>
</div>
<div class="layui-card-body">
<table id="record" lay-filter="record"></table>
</div>
</div>
<script type="text/html" id="user-info">
{{# if(d.receive_type == 1){ }}
{{ d.userInfo }}
{{# } else if(d.receive_type == 2 && d.userInfo != null) { }}
{{ d.userInfo.nickname }}({{ d.userInfo.sn }})
{{# } else if(d.receive_type == 3 && d.userInfo != null) { }}
{{ d.userInfo }}
{{# } }}
</script>
<script type="text/html" id="operation">
<a class="layui-btn layui-btn-sm layui-btn-danger" lay-event="del">删除</a>
</script>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/' //静态资源所在路径
}).extend({
treeTable: 'treetable-lay/treeTable'
,like: 'layui-admin/dist/layuiadmin/modules/like',
}).use(['form', 'laydate', 'table', 'jquery', 'layer', 'like'], function(){
var $ = layui.jquery;
var form = layui.form;
var table = layui.table;
var laydate = layui.laydate;
var layer = layui.layer;
var like = layui.like;
laydate.render({
elem: '#create_time',
type: 'datetime',
range: '#'
});
var tableIns = table.render({
elem: '#record'
,url: '{:url("noticeSetting/record")}?id={$param.id}&&send_type={$param.send_type}'
,page: true //开启分页
, text: {
none: '暂无数据'
}
,cols: [[ //表头
{field: 'sceneDesc', title: '通知类型', width:220, align: 'center'}
,{title: '通知对象', width:250 , templet: '#user-info', align: 'center'}
,{field: 'content', title: '通知内容', width:250 , align: 'center'}
,{ title: '其他信息', width:180 , align: 'center'}
,{ field: 'extra', title: '通知反馈', width:180 , align: 'center'}
,{field: 'create_time', title: '通知时间', width:180 , align: 'center'}
,{field: 'sign', title: '操作', fixed: 'right', toolbar: '#operation' , align: 'center'}
]]
,parseData: function(res){ //res 即为原始返回的数据
return {
"code": res.code, //解析接口状态
"msg": res.msg, //解析提示文本
"count": res.data.count, //解析数据长度
"data": res.data.lists //解析数据列表
};
}
,response: {
statusCode: 1 //规定成功的状态码默认0
}
});
table.on('tool(record)', function(obj) {
switch (obj.event) {
case 'del':
layer.confirm('确定删除吗?', {icon: 3, title:'提示'}, function(index){
like.ajax({
url: '{:url("noticeSetting/delRecord")}',
data: {
id: obj.data.id
},
method: 'post',
success: function (res) {
if(res.code == 1) {
layer.msg(res.msg);
table.reload('record');
}
}
});
layer.close(index);
});
break;
}
});
form.on('submit(search)', function (obj) {
tableIns.reload({
where: obj.field,
page: {
curr: 1
}
});
});
form.on('submit(reset)', function () {
$('#content').val('');
$('#create_time').val('');
tableIns.reload({
where: [],
page: {
curr: 1
}
});
});
});
</script>

View File

@@ -0,0 +1,214 @@
{layout name="layout2" /}
<style>
.tips{
color: red;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user" id="layuiadmin-form-user" style="padding: 20px 30px 0 0;">
<input type="hidden" value="{$info.id}" name="id">
<input type="hidden" value="{$type}" name="type">
<!--通知场景-->
<div class="layui-form-item">
<label class="layui-form-label">通知场景:</label>
<div class="layui-input-inline" style="padding-top: 8px">
{$info.scene}
</div>
</div>
<!--模板编号-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板编号:</label>
<div class="layui-input-inline">
<input type="text" name="template_sn" value="{$info.mnp_notice.template_sn | default =''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<!--模板名称-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板名称:</label>
<div class="layui-input-inline">
<input type="text" name="name" value="{$info.mnp_notice.name | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<!--模板id-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板ID</label>
<div class="layui-input-inline">
<input type="text" name="template_id" value="{$info.mnp_notice.template_id | default =''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<!--场景变量-->
<div class="layui-form-item">
<label class="layui-form-label">场景变量:</label>
<div class="layui-input-block">
{foreach $info.variable as $item => $val}
<button type="button" class="layui-btn layui-btn-primary variable-btn" data-value="{$item}">{$val}</button>
{/foreach}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-form-mid layui-word-aux">系统在当前场景预定义好的通知变量</div>
</div>
<!--模板内容-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板内容:</label>
<div class="layui-input-inline">
<button class="layui-btn layui-btn-sm layui-btn-normal addTpl" type="button">新增</button>
</div>
</div>
<!--模板-->
<div class="template-body">
{notempty name ="$info.mnp_notice.tpl"}
{foreach $info.mnp_notice.tpl as $k => $item}
<div class="layui-form-item template">
<div class="layui-input-block">
<label class="layui-form-label">字段名称:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_name[]" value="{$item.tpl_name}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<label class="layui-form-label">关键词:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_keyword[]" value="{$item.tpl_keyword}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<label class="layui-form-label">字段内容:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_content[]" value="{$item.tpl_content}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<button class="layui-btn layui-btn-sm layui-btn-danger delTpl" type="button">删除</button>
</div>
</div>
{/foreach}
{/notempty}
</div>
<!--模板预览-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板预览:</label>
<div class="layui-input-block">
<div class="layui-col-sm4">
<textarea placeholder="请输入内容" name="content" id="content" class="layui-textarea"></textarea>
</div>
</div>
</div>
<!--状态-->
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="radio" name="status" value="1" title="开启" {if ($info.mnp_notice.status ?? 0) == 1}checked{/if} />
<input type="radio" name="status" value="0" title="关闭" {if ($info.mnp_notice.status ?? 0) == 0}checked{/if} />
<div class="layui-form-mid layui-word-aux">开启或关闭当前场景通知</div>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认">
</div>
</div>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/'
}).extend({
base: '/static/plug/layui-admin/dist/layuiadmin/'
}).use(['form'], function() {
var $ = layui.$
,form = layui.form;
//场景变量复制
$(document).on('click', '.variable-btn', function () {
var copyText = $(this).data('value');
let aux = document.createElement("input");
aux.setAttribute("value", '{'+copyText+'}');
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
layer.msg('已复制场景变量');
});
// 添加模板
$(document).on('click','.addTpl',function() {
var tpl = '<div class="layui-form-item template">' +
' <div class="layui-input-block">' +
' <label class="layui-form-label">字段名称:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_name[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <label class="layui-form-label">关键词:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_keyword[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <label class="layui-form-label">字段内容:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_content[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <button class="layui-btn layui-btn-sm layui-btn-danger delTpl" type="button">删除</button>' +
' </div>' +
' </div>';
$('.template-body').append(tpl);
});
refreshContent();
//监听字段名称
$(document).on("input propertychange","input[name='tpl_name[]']",function() {
refreshContent();
});
//监听关键词
$(document).on("input propertychange","input[name='tpl_keyword[]']",function() {
refreshContent();
});
// 删除模板
$(document).on('click','.delTpl',function() {
var len = $("div.template-body > div.template").size();
if (len == 1) {
layer.msg('最少保留一个模板内容');
return;
} else {
$(this).parents('.template').remove();
refreshContent();
}
});
//渲染模板预览
function refreshContent() {
var map = [];
$(".template").each(function() {
var index = $(this).index();
var key_value = $(this).children().find("input[name='tpl_keyword[]']").val();
var name_value = $(this).children().find("input[name='tpl_name[]']").val();
map[index] = {name:name_value, key:key_value};
});
if (map.length > 0) {
var content = '';
for (var i=0; i < map.length; i++) {
var key = '{{'+map[i].key+'.DATA}}';
var name = map[i].name;
if (map[i].key === undefined || map[i].key === '') {
key = '';
}
if (map[i].name === undefined || map[i].name === '') {
name = '';
}
content += name + ':' + key + "\n";
}
$('#content').text(content);
}
}
})
</script>

View File

@@ -0,0 +1,244 @@
{layout name="layout2" /}
<style>
.tips{
color: red;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user" id="layuiadmin-form-user" style="padding: 20px 30px 0 0;">
<input type="hidden" value="{$info.id}" name="id">
<input type="hidden" value="{$type}" name="type">
<!--通知场景-->
<div class="layui-form-item">
<label class="layui-form-label">通知场景:</label>
<div class="layui-input-inline" style="padding-top: 8px">
{$info.scene}
</div>
</div>
<!--模板编号-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板编号:</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="template_sn" value="{$info.oa_notice.template_sn | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
</div>
<!--模板名称-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板名称:</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="name" value="{$info.oa_notice.name | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
</div>
<!--模板id-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板ID</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="template_id" value="{$info.oa_notice.template_id | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
</div>
<!--场景变量-->
<div class="layui-form-item">
<label class="layui-form-label">场景变量:</label>
<div class="layui-input-block">
{foreach $info.variable as $item => $val}
<button type="button" class="layui-btn layui-btn-primary variable-btn" data-value="{$item}">{$val}</button>
{/foreach}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-form-mid layui-word-aux">系统在当前场景预定义好的通知变量</div>
</div>
<!--头部标题-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>头部标题:</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="first" value="{$info.oa_notice.first | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
<div class="layui-form-mid layui-word-aux">{{first.DT}}的内容,支持嵌入场景变量,复制场景变量的值填入即可生效</div>
</div>
</div>
</div>
<!--模板内容-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板内容:</label>
<div class="layui-input-inline">
<button class="layui-btn layui-btn-sm layui-btn-normal addTpl" type="button">新增</button>
</div>
</div>
<!--模板-->
<div class="template-body">
{notempty name ="$info.oa_notice.tpl"}
{foreach $info.oa_notice.tpl as $k => $item}
<div class="layui-form-item template">
<div class="layui-input-block">
<label class="layui-form-label">字段名称:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_name[]" value="{$item.tpl_name}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<label class="layui-form-label">关键词:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_keyword[]" value="{$item.tpl_keyword}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<label class="layui-form-label">字段内容:</label>
<div class="layui-input-inline">
<input type="text" name="tpl_content[]" value="{$item.tpl_content}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
<button class="layui-btn layui-btn-sm layui-btn-danger delTpl" type="button">删除</button>
</div>
</div>
{/foreach}
{/notempty}
</div>
<!--模板预览-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板预览:</label>
<div class="layui-input-block">
<div class="layui-col-sm4">
<textarea name="content" id="content" class="layui-textarea"></textarea>
</div>
</div>
</div>
<!--尾部描述-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>尾部描述:</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="remark" value="{$info.oa_notice.remark | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
<div class="layui-form-mid layui-word-aux">{{remrk.DT}}的内容,支持嵌入场景变量,复制场景变量的值填入即可生效</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="radio" name="status" value="1" title="开启" {if ($info.oa_notice.status ?? 0) == 1}checked{/if} />
<input type="radio" name="status" value="0" title="关闭" {if ($info.oa_notice.status ?? 0) == 0}checked{/if} />
<div class="layui-form-mid layui-word-aux">开启或关闭当前场景通知</div>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认">
</div>
</div>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/'
}).extend({
base: '/static/plug/layui-admin/dist/layuiadmin/'
}).use(['form'], function() {
var $ = layui.$
,form = layui.form;
//场景变量复制
$(document).on('click', '.variable-btn', function () {
var copyText = $(this).data('value');
let aux = document.createElement("input");
aux.setAttribute("value", '{'+copyText+'}');
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
layer.msg('已复制场景变量');
});
// 添加模板
$(document).on('click','.addTpl',function() {
var tpl = '<div class="layui-form-item template">' +
' <div class="layui-input-block">' +
' <label class="layui-form-label">字段名称:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_name[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <label class="layui-form-label">关键词:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_keyword[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <label class="layui-form-label">字段内容:</label>' +
' <div class="layui-input-inline">' +
' <input type="text" name="tpl_content[]" autocomplete="off" class="layui-input" value="" lay-verify="required" lay-vertype="tips">' +
' </div>' +
' <button class="layui-btn layui-btn-sm layui-btn-danger delTpl" type="button">删除</button>' +
' </div>' +
' </div>';
$('.template-body').append(tpl);
});
refreshContent();
//监听字段名称
$(document).on("input propertychange","input[name='tpl_name[]']",function() {
refreshContent();
});
//监听关键词
$(document).on("input propertychange","input[name='tpl_keyword[]']",function() {
refreshContent();
});
// 删除模板
$(document).on('click','.delTpl',function() {
var len = $("div.template-body > div.template").size();
if (len <= 1) {
layer.msg('最少保留一个模板内容');
return;
} else {
$(this).parents('.template').remove();
refreshContent();
}
});
//渲染模板预览
function refreshContent() {
var map = [];
$(".template").each(function() {
var index = $(this).index();
var key_value = $(this).children().find("input[name='tpl_keyword[]']").val();
var name_value = $(this).children().find("input[name='tpl_name[]']").val();
map[index] = {name:name_value, key:key_value};
});
if (map.length > 0) {
var content = '{{first.DATA}}' + "\n";
for (var i=0; i < map.length; i++) {
var key = '{{'+map[i].key+'.DATA}}';
var name = map[i].name;
if (map[i].key === undefined || map[i].key === '') {
key = '';
}
if (map[i].name === undefined || map[i].name === '') {
name = '';
}
content += name + ':' + key + "\n";
}
content += '{{remark.DATA}}';
$('#content').text(content);
}
}
})
</script>

View File

@@ -0,0 +1,89 @@
{layout name="layout2" /}
<style>
.tips{
color: red;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user" id="layuiadmin-form-user" style="padding: 20px 30px 0 0;">
<input type="hidden" value="{$info.id}" name="id">
<input type="hidden" value="{$type}" name="type">
<!--通知场景-->
<div class="layui-form-item">
<label class="layui-form-label">通知场景:</label>
<div class="layui-input-inline" style="padding-top: 8px">
{$info.scene}
</div>
</div>
<!--模板id-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>模板ID</label>
<div class="layui-input-block">
<div class="layui-col-md4">
<input type="text" name="template_code" value="{$info.sms_notice.template_code | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
<div class="layui-form-mid layui-word-aux">需要与短信接口的模板ID一致</div>
</div>
</div>
</div>
<!--场景变量-->
<div class="layui-form-item">
<label class="layui-form-label">场景变量:</label>
<div class="layui-input-block">
{foreach $info.variable as $item => $val}
<button type="button" class="layui-btn layui-btn-primary variable-btn" data-value="{$item}">{$val}</button>
{/foreach}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-form-mid layui-word-aux">系统在当前场景预定义好的通知变量</div>
</div>
<!--通知内容-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>短信内容:</label>
<div class="layui-input-block">
<div class="layui-col-sm4">
<textarea name="content" id="content" class="layui-textarea">{$info.sms_notice.content | default = ''}</textarea>
<div class="layui-form-mid layui-word-aux">支持嵌入场景变量,复制场景变量的值填入即可生效</div>
</div>
</div>
</div>
<!--状态-->
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="radio" name="status" value="1" title="开启" {if ($info.sms_notice.status ?? 0) == 1}checked{/if} />
<input type="radio" name="status" value="0" title="关闭" {if ($info.sms_notice.status ?? 0) == 0}checked{/if} />
<div class="layui-form-mid layui-word-aux">开启或关闭当前场景通知</div>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认">
</div>
</div>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/' //静态资源所在路径
}).extend({
base: '/static/plug/layui-admin/dist/layuiadmin/' //静态资源所在路径
}).use(['form'], function(){
var $ = layui.$
,form = layui.form ;
$(document).on('click', '.variable-btn', function () {
var copyText = $(this).data('value');
let aux = document.createElement("input");
aux.setAttribute("value", '{'+copyText+'}');
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
layer.msg('已复制场景变量');
})
})
</script>

View File

@@ -0,0 +1,97 @@
{layout name="layout2" /}
<style>
.tips{
color: red;
}
</style>
<div class="layui-form" lay-filter="layuiadmin-form-user" id="layuiadmin-form-user" style="padding: 20px 30px 0 0;">
<input type="hidden" value="{$info.id}" name="id">
<input type="hidden" value="{$type}" name="type">
<!--通知场景-->
<div class="layui-form-item">
<label class="layui-form-label">通知场景:</label>
<div class="layui-input-inline" style="padding-top: 8px">
{$info.scene}
</div>
</div>
<!--通知标题-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>通知标题:</label>
<div class="layui-input-inline">
<input type="text" name="title" value="{$info.system_notice.title | default = ''}" autocomplete="off" class="layui-input" lay-verify="required" lay-vertype="tips">
</div>
</div>
<!--场景变量-->
<div class="layui-form-item">
<label class="layui-form-label">场景变量:</label>
<div class="layui-input-block">
{foreach $info.variable as $item => $val}
<button type="button" class="layui-btn layui-btn-primary variable-btn" data-value="{$item}">{$val}</button>
{/foreach}
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"></label>
<div class="layui-form-mid layui-word-aux">系统在当前场景预定义好的通知变量</div>
</div>
<!--通知内容-->
<div class="layui-form-item">
<label class="layui-form-label"><span class="tips">*</span>通知内容:</label>
<div class="layui-input-block">
<div class="layui-col-sm4">
<textarea name="content" id="content" class="layui-textarea">{$info.system_notice.content | default = ''}</textarea>
<div class="layui-form-mid layui-word-aux">支持嵌入场景变量,复制场景变量的值填入即可生效</div>
</div>
</div>
</div>
<!--app推送-->
<div class="layui-form-item">
<label class="layui-form-label">APP推送</label>
<div class="layui-input-inline">
<input type="radio" name="is_push" value="1" title="开启" {if ($info.system_notice.is_push ?? 0) == 1}checked{/if} />
<input type="radio" name="is_push" value="0" title="关闭" {if ($info.system_notice.is_push ?? 0) == 0}checked{/if} />
<div class="layui-form-mid layui-word-aux">开启或关闭PP推送</div>
</div>
</div>
<!--状态-->
<div class="layui-form-item">
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="radio" name="status" value="1" title="开启" {if ($info.system_notice.status ?? 0) == 1}checked{/if} />
<input type="radio" name="status" value="0" title="关闭" {if ($info.system_notice.status ?? 0) == 0}checked{/if} />
<div class="layui-form-mid layui-word-aux">开启或关闭当前场景通知</div>
</div>
</div>
<div class="layui-form-item layui-hide">
<input type="button" lay-submit lay-filter="addSubmit" id="addSubmit" value="确认">
</div>
</div>
<script>
layui.config({
version:"{$front_version}",
base: '/static/plug/'
}).extend({
base: '/static/plug/layui-admin/dist/layuiadmin/'
}).use(['form'], function() {
var $ = layui.$
,like = layui.like
,form = layui.form;
$(document).on('click', '.variable-btn', function () {
var copyText = $(this).data('value');
let aux = document.createElement("input");
aux.setAttribute("value", '{'+copyText+'}');
document.body.appendChild(aux);
aux.select();
document.execCommand("copy");
document.body.removeChild(aux);
layer.msg('已复制场景变量');
});
})
</script>