mirror of
http://git.coreshop.cn/jianweie/coreshoppro.git
synced 2026-02-05 23:09:49 +08:00
【新增】增加MySql.Data组件,防止出现Nlog新版mysql不写入的问题。
【优化】优化本地上传写入文件夹缺少反斜杠的问题。 【修复】修复appsetting.json微信公众号配置项命名错误的问题。 【新增】定时任务增加微信公众号获取JS-Token并且全局缓存功能。 【新增】增加微信公众号获取JS-SDK使用权限签名算法。 【新增】新增微信公众号【微信被动回复消息】功能,用于关于公众号提醒,微信聊天被动关键词回复等。 【新增】新增微信公众号【微信菜单管理】功能,用于管理公众号底部三列五横的链接。 【新增】新增微信公众号【消息推送】接口及业务处理。用于接收从微信公众号推送的事件交互。 【新增】新增微信公众号【授权鉴权跳转】功能,用于验证是否为微信公众号访问,及获取openid等信息。 【新增】新增微信公众号用户accressToekn存储机制。 【新增】新增微信公众号发送模板消息方法。 【新增】数据库新增【WeChatMessageResponse】【WeChatUserAccessToken】两个表,【CoreCmsUserWeChatInfo】增加【isSubscribe】是否关注字段。 【新增】商品品牌管理品牌logo增加原图上传 【新增】商品分类管理分类图片增加原图上传 【新增】新增最新后台左侧管理菜单目录脚本,完整数据库脚本备份新增最新商品商品示例。
This commit is contained in:
@@ -15,8 +15,9 @@
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnlogoImageUrl">上传图片</button>
|
||||
<button type="button" class="layui-btn" id="upBtnOriginal">原图上传</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoxlogoImageUrl">
|
||||
<img class="layui-upload-img" id="viewImgBoxlogoImageUrl" src="{{ layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoxlogoImageUrl"></p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -80,6 +81,25 @@
|
||||
});
|
||||
});
|
||||
|
||||
//原图上传
|
||||
upload.render({
|
||||
elem: '#upBtnOriginal'
|
||||
, url: layui.setter.apiUrl + 'Api/Tools/UploadFiles'
|
||||
, done: function (res) {
|
||||
if (res.code > 0) { return layer.msg('上传失败'); }
|
||||
layer.msg('上传成功');
|
||||
$('#viewImgBoxlogoImageUrl').attr('src', res.data.fileUrl);
|
||||
$("#logoImageUrl").val(res.data.fileUrl);
|
||||
}
|
||||
, error: function () {
|
||||
var viewTextBox = $('#viewTextBox');
|
||||
viewTextBox.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
|
||||
viewTextBox.find('.demo-reload').on('click', function () {
|
||||
uploadInst.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#createTime-CoreCmsBrand-createTime',
|
||||
type: 'datetime'
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnlogoImageUrl">上传图片</button>
|
||||
<button type="button" class="layui-btn" id="upBtnlogoImageUrl">裁剪上传</button>
|
||||
<button type="button" class="layui-btn" id="upBtnOriginal">原图上传</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoxlogoImageUrl" src="{{d.params.data.logoImageUrl || layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoxlogoImageUrl"></p>
|
||||
@@ -83,6 +84,25 @@
|
||||
});
|
||||
});
|
||||
|
||||
//原图上传
|
||||
upload.render({
|
||||
elem: '#upBtnOriginal'
|
||||
, url: layui.setter.apiUrl + 'Api/Tools/UploadFiles'
|
||||
, done: function (res) {
|
||||
if (res.code > 0) { return layer.msg('上传失败'); }
|
||||
layer.msg('上传成功');
|
||||
$('#viewImgBoxlogoImageUrl').attr('src', res.data.fileUrl);
|
||||
$("#logoImageUrl").val(res.data.fileUrl);
|
||||
}
|
||||
, error: function () {
|
||||
var viewTextBox = $('#viewTextBox');
|
||||
viewTextBox.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
|
||||
viewTextBox.find('.demo-reload').on('click', function () {
|
||||
uploadInst.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#editTime-CoreCmsBrand-createTime',
|
||||
type: 'datetime'
|
||||
|
||||
@@ -43,7 +43,8 @@
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnimageUrl">上传图片</button>
|
||||
<button type="button" class="layui-btn" id="upBtnimageUrl">裁剪上传</button>
|
||||
<button type="button" class="layui-btn" id="upBtnOriginal">原图上传</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoximageUrl" src="{{ layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoximageUrl"></p>
|
||||
@@ -70,7 +71,7 @@
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'xmSelect','cropperImg'],
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'xmSelect', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
@@ -103,6 +104,26 @@
|
||||
});
|
||||
});
|
||||
|
||||
//原图上传
|
||||
upload.render({
|
||||
elem: '#upBtnOriginal'
|
||||
, url: layui.setter.apiUrl + 'Api/Tools/UploadFiles'
|
||||
, done: function (res) {
|
||||
if (res.code > 0) { return layer.msg('上传失败'); }
|
||||
layer.msg('上传成功');
|
||||
$('#viewImgBoximageUrl').attr('src', res.data.fileUrl);
|
||||
$("#imageUrl").val(res.data.fileUrl);
|
||||
}
|
||||
, error: function () {
|
||||
var viewTextBox = $('#viewTextBox');
|
||||
viewTextBox.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
|
||||
viewTextBox.find('.demo-reload').on('click', function () {
|
||||
uploadInst.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyname: [/^[\S]{0,20}$/, '分类名称最大只允许输入20位字符,且不能出现空格'],
|
||||
|
||||
@@ -44,7 +44,8 @@
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnimageUrl">上传图片</button>
|
||||
<button type="button" class="layui-btn" id="upBtnimageUrl">裁剪上传</button>
|
||||
<button type="button" class="layui-btn" id="upBtnOriginal">原图上传</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoximageUrl" src="{{d.params.data.model.imageUrl || layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoximageUrl"></p>
|
||||
@@ -104,6 +105,25 @@
|
||||
});
|
||||
});
|
||||
|
||||
//原图上传
|
||||
upload.render({
|
||||
elem: '#upBtnOriginal'
|
||||
, url: layui.setter.apiUrl + 'Api/Tools/UploadFiles'
|
||||
, done: function (res) {
|
||||
if (res.code > 0) { return layer.msg('上传失败'); }
|
||||
layer.msg('上传成功');
|
||||
$('#viewImgBoximageUrl').attr('src', res.data.fileUrl);
|
||||
$("#imageUrl").val(res.data.fileUrl);
|
||||
}
|
||||
, error: function () {
|
||||
var viewTextBox = $('#viewTextBox');
|
||||
viewTextBox.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
|
||||
viewTextBox.find('.demo-reload').on('click', function () {
|
||||
uploadInst.upload();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyname: [/^[\S]{0,20}$/, '分类名称最大只允许输入20位字符,且不能出现空格'],
|
||||
|
||||
@@ -0,0 +1,426 @@
|
||||
|
||||
<title>标题</title>
|
||||
<!--当前位置开始-->
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<!--当前位置结束-->
|
||||
<style>
|
||||
.mydiv { margin-top: 10px; }
|
||||
.mydiv p { width: 100%; line-height: 30px; margin-bottom: 5px; }
|
||||
</style>
|
||||
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatMenu/GetIndex" lay-done="layui.data.done(d);">
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">使用说明及规则,请仔细阅读</div>
|
||||
<div class="layui-card-body">
|
||||
<blockquote class="layui-elem-quote">
|
||||
<p>官方要求:1、一级菜单按钮个数为2-3个。2、如果设置了二级菜单,子按钮个数为2-5个。3、按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节。</p>
|
||||
<p>如果name不填,此按钮将被忽略。</p>
|
||||
<p>如果一级菜单为空,该列所有设置的二级菜单都会被忽略,key仅在SingleButton(单击按钮,无下级菜单)的状态下设置。</p>
|
||||
<p>如果此按钮有下级菜单,key将被忽略,所有二级菜单都为SingleButton。</p>
|
||||
<p>如果要快速看到微信上的菜单最新状态,需要重新关注,否则需要静静等待N小时。</p>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md12">
|
||||
<div id="menuEditor">
|
||||
<form action="/Api/WeChatMenu/CreateMenu" id="form_Menu" method="post" _lpchecked="1">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header" style="padding: 10px 10px">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-inline layui-inline-10">
|
||||
<button id="btnGetMenu" class="layui-btn layui-btn-sm" type="button">获取当前菜单</button>
|
||||
<button type="button" class="layui-btn layui-btn-sm" id="submitMenu">更新到服务器</button>
|
||||
<button id="btnDeleteMenu" class="layui-btn layui-btn-danger layui-btn-sm" type="button">删除全部菜单(谨慎操作)</button>
|
||||
</div>
|
||||
<div class="layui-input-inline"> <input id="tokenStr" name="token" value="" class="layui-input" style="width: 400px;" type="hidden" readonly="readonly" /> </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
<p class="menu-state layui-elem-quote">
|
||||
操作状态:<strong id="menuState">-</strong>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md7 menu-list">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<table id="menuTable" class="layui-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>第一列</th>
|
||||
<th>第二列</th>
|
||||
<th>第三列</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{# for (var i = 0; i < 6; i++) { }}
|
||||
<tr id="{{ i == 5? ' subMenuRow_'+i:'rootMenuRow' }}">
|
||||
<td class="menuRowTip {{ i == 5? ' rootMenu':'' }}">
|
||||
{{ i == 5? '一级菜单按钮':'二级菜单No.'+(i + 1) }}
|
||||
</td>
|
||||
{{# for (var j = 0; j < 3; j++) { }}
|
||||
<td>
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.key" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_key" />
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.type" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_type" value="click" />
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.url" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_url" />
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.appid" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_appid" />
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.pagepath" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_pagepath" />
|
||||
<input type="hidden" class="layui-input" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.media_id" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_mediaid" />
|
||||
<input type="text" class="layui-input txtButton" name="{{ i == 5? 'menu.button['+j+']':'menu.button['+j+'].sub_button['+i+']' }}.name" id="{{ i == 5? 'menu_button'+j:'menu_button'+j+'_sub_button'+i }}_name" data-i="{{ i }}" data-j="{{ j }}" {{ i == 5? 'data-root='+j+'':'' }} />
|
||||
</td>
|
||||
{{# } }}
|
||||
</tr>
|
||||
{{# } }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md5" id="buttonDetails">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="layui-card-header">按钮其他参数</div>
|
||||
<div class="mydiv">
|
||||
<div class="layui-form-item">
|
||||
<label for="Name" class="layui-form-label layui-form-required">Name</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" id="buttonDetails_name" class="layui-input txtButton" disabled="disabled" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label for="Name" class="layui-form-label layui-form-required">Type</label>
|
||||
<div class="layui-input-inline">
|
||||
<select id="buttonDetails_type" class="dllButtonDetails layui-select">
|
||||
<option value="click" selected="selected">点击事件(传回服务器)</option>
|
||||
<option value="view">访问网页(直接跳转)</option>
|
||||
<option value="miniprogram">小程序(直接跳转)</option>
|
||||
<option value="location_select">弹出地理位置选择器</option>
|
||||
<option value="pic_photo_or_album">弹出拍照或者相册发图</option>
|
||||
<option value="pic_sysphoto">弹出系统拍照发图</option>
|
||||
<option value="pic_weixin">弹出微信相册发图器</option>
|
||||
<option value="scancode_push">扫码推事件</option>
|
||||
<option value="scancode_waitmsg">扫码推事件且弹出“消息接收中”提示框</option>
|
||||
<option value="media_id">下发消息(除文本消息)</option>
|
||||
<option value="view_limited">跳转图文消息URL</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="buttonDetails_key_area">
|
||||
<label for="Name" class="layui-form-label layui-form-required">Key</label>
|
||||
<div class="layui-input-block">
|
||||
<input id="buttonDetails_key" class="layui-input txtButtonDetails" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="buttonDetails_url_area">
|
||||
<label for="Name" class="layui-form-label layui-form-required">Url</label>
|
||||
<div class="layui-input-block">
|
||||
<input id="buttonDetails_url" class="layui-input txtButtonDetails" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="buttonDetails_miniprogram_appid_area">
|
||||
<label for="Name" class="layui-form-label layui-form-required">小程序AppId</label>
|
||||
<div class="layui-input-block">
|
||||
<input id="buttonDetails_miniprogram_appid" class="layui-input txtButtonDetails" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="buttonDetails_miniprogram_pagepath_area">
|
||||
<label for="Name" class="layui-form-label layui-form-required">小程序PagePath</label>
|
||||
<div class="layui-input-block">
|
||||
<input id="buttonDetails_miniprogram_pagepath" class="layui-input txtButtonDetails" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="buttonDetails_mediaId_area">
|
||||
<label for="Name" class="layui-form-label layui-form-required">MediaId</label>
|
||||
<div class="layui-input-block">
|
||||
<input id="buttonDetails_mediaId" class="layui-input txtButtonDetails" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item" id="rootButtonNotice">
|
||||
<label for="Name" class="layui-form-label layui-form-required">说明:</label>
|
||||
<div class="layui-form-mid layui-word-aux"> 如果还有下级菜单请忽略上述Type和Key、Url等参数。</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script src="/lib/jquery/jquery-2.1.4.js"></script>
|
||||
<script src="/lib/wechatmenu/jquery.form.js"></script>
|
||||
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
var csWeChat = {};
|
||||
var maxSubMenuCount = 5;
|
||||
var menuState;
|
||||
|
||||
csWeChat.menu = {
|
||||
token: '',
|
||||
init: function () {
|
||||
menuState = $('#menuState');
|
||||
$('#buttonDetails').hide();
|
||||
//$('#menuEditor').hide();
|
||||
$("#buttonDetails_type").change(csWeChat.menu.typeChanged);
|
||||
$(':input[id^=menu_button]').click(function () {
|
||||
$('#buttonDetails').show();
|
||||
var idPrefix = $(this).attr('data-root')
|
||||
? ('menu_button' + $(this).attr('data-root'))
|
||||
: ('menu_button' + $(this).attr('data-j') + '_sub_button' + $(this).attr('data-i'));
|
||||
var keyId = idPrefix + "_key";
|
||||
console.log(idPrefix);
|
||||
var nameId = idPrefix + "_name";
|
||||
var typeId = idPrefix + "_type";
|
||||
var urlId = idPrefix + "_url";
|
||||
var mediaIdId = idPrefix + "_mediaid";
|
||||
var appidId = idPrefix + "_appid";
|
||||
var pagepathId = idPrefix + "_pagepath";
|
||||
|
||||
var txtDetailsKey = $('#buttonDetails_key');
|
||||
var txtDetailsName = $('#buttonDetails_name');
|
||||
var ddlDetailsType = $('#buttonDetails_type');
|
||||
var txtDetailsUrl = $('#buttonDetails_url');
|
||||
var txtMediaId = $('#buttonDetails_mediaId');
|
||||
var txtDetailsAppid = $('#buttonDetails_miniprogram_appid');
|
||||
var txtDetailsPagepath = $('#buttonDetails_miniprogram_pagepath');
|
||||
|
||||
var hiddenButtonKey = $('#' + keyId);
|
||||
var hiddenButtonType = $('#' + typeId);
|
||||
var hiddenButtonUrl = $('#' + urlId);
|
||||
var hiddenButtonMediaId = $('#' + mediaIdId);
|
||||
var hiddenButtonAppid = $('#' + appidId);
|
||||
var hiddenButtonPagepath = $('#' + pagepathId);
|
||||
|
||||
txtDetailsKey.val(hiddenButtonKey.val());
|
||||
txtDetailsName.val($('#' + nameId).val());
|
||||
ddlDetailsType.val(hiddenButtonType.val());
|
||||
txtDetailsUrl.val(hiddenButtonUrl.val());
|
||||
txtMediaId.val(hiddenButtonMediaId.val());
|
||||
txtDetailsAppid.val(hiddenButtonAppid.val());
|
||||
txtDetailsPagepath.val(hiddenButtonPagepath.val());
|
||||
|
||||
csWeChat.menu.typeChanged();
|
||||
|
||||
txtDetailsKey.unbind('blur').blur(function () {
|
||||
hiddenButtonKey.val($(this).val());
|
||||
});
|
||||
ddlDetailsType.unbind('blur').blur(function () {
|
||||
hiddenButtonType.val($(this).val());
|
||||
});
|
||||
txtDetailsUrl.unbind('blur').blur(function () {
|
||||
hiddenButtonUrl.val($(this).val());
|
||||
});
|
||||
txtMediaId.unbind('blur').blur(function () {
|
||||
hiddenButtonMediaId.val($(this).val());
|
||||
});
|
||||
txtDetailsAppid.unbind('blur').blur(function () {
|
||||
hiddenButtonAppid.val($(this).val());
|
||||
});
|
||||
txtDetailsPagepath.unbind('blur').blur(function () {
|
||||
hiddenButtonPagepath.val($(this).val());
|
||||
});
|
||||
|
||||
//修改当前行列样式
|
||||
var row = parseInt($(this).attr('data-i'));
|
||||
var column = parseInt($(this).attr('data-j'));
|
||||
$('#menuTable input').removeClass('currentMenuInput');
|
||||
$('#menuTable thead th').removeClass('currentMenuItem');
|
||||
$('#menuTable tbody td').removeClass('currentMenuItem');
|
||||
$(this).addClass('currentMenuInput');
|
||||
$('#menuTable thead th').eq(column + 1).addClass('currentMenuItem');
|
||||
$('#menuTable tbody tr').eq(row).find('td').eq(0).addClass('currentMenuItem');
|
||||
|
||||
//一级菜单提示
|
||||
if (row === 5) {
|
||||
$('#rootButtonNotice').show();
|
||||
} else {
|
||||
$('#rootButtonNotice').hide();
|
||||
}
|
||||
});
|
||||
|
||||
//获取菜单中
|
||||
$('#btnGetMenu').click(function () {
|
||||
menuState.html('获取菜单中...');
|
||||
coreHelper.Post("Api/WeChatMenu/GetMenu", null, function (e) {
|
||||
console.log(e);
|
||||
if (e.code === 0 && e.data.errcode == 0) {
|
||||
$(':input[id^=menu_button]:not([id$=_type])').val('');
|
||||
$('#buttonDetails:input').val('');
|
||||
|
||||
var buttons = e.data.menu.button;
|
||||
//此处i与j和页面中反转
|
||||
for (var i = 0; i < buttons.length; i++) {
|
||||
var button = buttons[i];
|
||||
$('#menu_button' + i + '_name').val(button.name);
|
||||
$('#menu_button' + i + '_key').val(button.key);
|
||||
$('#menu_button' + i + '_type').val(button.type || 'click');
|
||||
$('#menu_button' + i + '_url').val(button.url);
|
||||
$('#menu_button' + i + '_appid').val(button.appid);
|
||||
$('#menu_button' + i + '_pagepath').val(button.pagepath);
|
||||
$('#menu_button' + i + '_mediaid').val(button.media_id);
|
||||
|
||||
if (button.sub_button && button.sub_button.length > 0) {
|
||||
//二级菜单
|
||||
for (var j = 0; j < button.sub_button.length; j++) {
|
||||
var subButton = button.sub_button[j];
|
||||
var idPrefix = '#menu_button' + i + '_sub_button' + j;
|
||||
$(idPrefix + "_name").val(subButton.name);
|
||||
$(idPrefix + "_type").val(subButton.type || 'click');
|
||||
$(idPrefix + "_key").val(subButton.key);
|
||||
$(idPrefix + "_url").val(subButton.url);
|
||||
$(idPrefix + "_appid").val(subButton.appid);
|
||||
$(idPrefix + "_pagepath").val(subButton.pagepath);
|
||||
$(idPrefix + "_mediaid").val(subButton.media_id);
|
||||
}
|
||||
} else {
|
||||
//底部菜单
|
||||
//...
|
||||
}
|
||||
}
|
||||
//显示JSON
|
||||
//$('#txtReveiceJSON').text(JSON.stringify(json));
|
||||
menuState.html('菜单获取已完成');
|
||||
} else {
|
||||
menuState.html(e.msg || '执行过程有错误,请检查!');
|
||||
}
|
||||
});
|
||||
});
|
||||
//删除菜单
|
||||
$('#btnDeleteMenu').click(function () {
|
||||
if (!confirm('确定要删除菜单吗?此操作无法撤销!')) {
|
||||
return;
|
||||
}
|
||||
menuState.html('删除菜单中...');
|
||||
coreHelper.Post("Api/WeChatMenu/DeleteMenu", null, function (e) {
|
||||
console.log(e);
|
||||
if (e.code === 0) {
|
||||
menuState.html('删除成功,如果是误删,并且界面上有最新的菜单状态,可以立即点击【更新到服务器】按钮。');
|
||||
} else {
|
||||
menuState.html(e.msg + e.otherData);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//更新到服务器
|
||||
$('#submitMenu').click(function () {
|
||||
if (!confirm('确定要提交吗?此操作无法撤销的哦!')) {
|
||||
return;
|
||||
}
|
||||
|
||||
var headers = {};
|
||||
headers[layui.setter.request.tokenName] = layui.data(layui.setter.tableName)[layui.setter.request.tokenName];
|
||||
|
||||
menuState.html('上传中...');
|
||||
$('#form_Menu').ajaxSubmit({
|
||||
dataType: 'json',
|
||||
headers: headers, //添加请求头部
|
||||
success: function (json) {
|
||||
if (json.Success) {
|
||||
menuState.html('上传成功。' + json.msg);
|
||||
} else {
|
||||
menuState.html(json.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('#menuTable .control-input').hover(function () {
|
||||
var row = parseInt($(this).attr('data-i'));
|
||||
var column = parseInt($(this).attr('data-j'));
|
||||
|
||||
$('#menuTable thead th').removeClass('hoverMenuItem');
|
||||
$('#menuTable tbody td').removeClass('hoverMenuItem');
|
||||
|
||||
$('#menuTable thead th').eq(column + 1).addClass('hoverMenuItem');
|
||||
$('#menuTable tbody tr').eq(row).find('td').eq(0).addClass('hoverMenuItem');
|
||||
}, function () {
|
||||
$('#menuTable thead th').removeClass('hoverMenuItem');
|
||||
$('#menuTable tbody td').removeClass('hoverMenuItem');
|
||||
});
|
||||
},
|
||||
typeChanged: function () {
|
||||
var val = $('#buttonDetails_type').val().toUpperCase();
|
||||
switch (val) {
|
||||
case 'CLICK':
|
||||
$('#buttonDetails_key_area').slideDown(100);
|
||||
$('#buttonDetails_url_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_appid_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_pagepath_area').slideUp(100);
|
||||
$('#buttonDetails_mediaId_area').slideUp(100);
|
||||
break;
|
||||
case 'VIEW':
|
||||
$('#buttonDetails_key_area').slideUp(100);
|
||||
$('#buttonDetails_url_area').slideDown(100);
|
||||
$('#buttonDetails_miniprogram_appid_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_pagepath_area').slideUp(100);
|
||||
$('#buttonDetails_mediaId_area').slideUp(100);
|
||||
break;
|
||||
case 'MINIPROGRAM':
|
||||
$('#buttonDetails_key_area').slideUp(100);
|
||||
$('#buttonDetails_url_area').slideDown(100);
|
||||
$('#buttonDetails_miniprogram_appid_area').slideDown(100);
|
||||
$('#buttonDetails_miniprogram_pagepath_area').slideDown(100);
|
||||
$('#buttonDetails_mediaId_area').slideUp(100);
|
||||
break;
|
||||
case 'MEDIA_ID':
|
||||
case 'VIEW_LIMITED':
|
||||
$('#buttonDetails_key_area').slideUp(100);
|
||||
$('#buttonDetails_url_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_appid_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_pagepath_area').slideUp(100);
|
||||
$('#buttonDetails_mediaId_area').slideDown(100);
|
||||
break;
|
||||
default:
|
||||
$('#buttonDetails_key_area').slideDown(100);
|
||||
$('#buttonDetails_url_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_appid_area').slideUp(100);
|
||||
$('#buttonDetails_miniprogram_pagepath_area').slideUp(100);
|
||||
$('#buttonDetails_mediaId_area').slideUp(100);
|
||||
break;
|
||||
}
|
||||
},
|
||||
setToken: function (token) {
|
||||
csWeChat.menu.token = token;
|
||||
$('#menuEditor').show();
|
||||
$('#menuLogin').hide();
|
||||
}
|
||||
};
|
||||
|
||||
//初始化操作
|
||||
csWeChat.menu.init();
|
||||
|
||||
//重载form
|
||||
form.render();
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,244 @@
|
||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatMessageResponse-createForm" id="LAY-app-WeChatMessageResponse-createForm">
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="messageRule" class="layui-form-label ">消息类型</label>
|
||||
<div class="layui-input-block">
|
||||
|
||||
<select name="messageRule" lay-filter="messageRuleFilter" lay-verType="tips" lay-verify="required|number" lay-reqText="请选择消息类型">
|
||||
{{# layui.each(d.params.data.weChatRequestRuleEnum, function(index, item){ }}
|
||||
<option value="{{item.value}}">{{item.description}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="categoryBox">
|
||||
<label for="category" class="layui-form-label ">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="category" id="category" lay-filter="categoryFilter"></select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="matchKeyBox">
|
||||
<label for="matchKey" class="layui-form-label ">匹配字符</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="matchKey" class="layui-input" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text" id="textContentBox">
|
||||
<label for="textContent" class="layui-form-label ">文本回复内容</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="textContent" lay-verType="tips" class="layui-textarea" placeholder="请输入文本回复内容" lay-reqText="请输入文本回复内容" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="ImgBox">
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label for="imgTextTitle" class="layui-form-label ">图片回复标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="imgTextTitle" class="layui-input" placeholder="请输入图片回复标题" lay-reqText="请输入图片回复标题" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label for="ImgTextContext" class="layui-form-label ">图片回复内容</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name="ImgTextContext" class="layui-textarea" placeholder="请输入图片回复内容" lay-reqText="请输入图片回复内容" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="imgTextUrl" class="layui-form-label ">图片地址</label>
|
||||
<div class="layui-input-inline layui-inline-5">
|
||||
<input name="imgTextUrl" id="thumbnailInput" class="layui-input" placeholder="请输入图片回复图片地址" lay-reqText="请输入图片回复图片地址" />
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnthumbnail" lay-active="doCropperImg">上传图片</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoxthumbnail" src="{{ layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoxthumbnail"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="imgTextLink" class="layui-form-label ">超链接</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="imgTextLink" class="layui-input" placeholder="请输入图片回复超链接" lay-reqText="请输入图片回复超链接" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="enable" class="layui-form-label ">是否启用</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="checkbox" lay-filter="switch" name="enable" lay-skin="switch" lay-text="开启|关闭" checked="checked">
|
||||
</div>
|
||||
<label for="isDefault" class="layui-form-label ">是否默认</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="checkbox" lay-filter="switch" name="isDefault" lay-skin="switch" lay-text="开启|关闭">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="remark" class="layui-form-label ">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="remark" lay-verType="tips" class="layui-input" placeholder="请输入备注" lay-reqText="请输入备注" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="sort" class="layui-form-label ">排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="sort" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入排序" lay-reqText="请输入排序并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatMessageResponse-createForm-submit" id="LAY-app-WeChatMessageResponse-createForm-submit" value="确认添加">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
$('#categoryBox').show();
|
||||
categoryContent(false)
|
||||
|
||||
$('#matchKeyBox').hide();
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
|
||||
|
||||
form.on('select(messageRuleFilter)', function (data) {
|
||||
if (data.value == 0) { //默认
|
||||
categoryContent(false)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').hide();
|
||||
} else if (data.value == 1) { //关注回复
|
||||
categoryContent(false)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').hide();
|
||||
} else if (data.value == 2) { //文本回复
|
||||
categoryContent(true)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').show();
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
|
||||
$('#category').val(4);
|
||||
|
||||
} else if (data.value == 3) { //图片回复
|
||||
categoryContent(true)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').show();
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
|
||||
$('#category').val(4);
|
||||
}
|
||||
form.render();
|
||||
});
|
||||
|
||||
form.on('select(categoryFilter)', function (data) {
|
||||
if (data.value == 1) { //文本
|
||||
$('#matchKeyBox').hide();
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
} else if (data.value == 2) { //图文
|
||||
$('#matchKeyBox').hide();
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
} else if (data.value == 3) { //语音
|
||||
//不做处理
|
||||
} else if (data.value == 4) { //相等
|
||||
$('#matchKeyBox').show();
|
||||
} else if (data.value == 5) { //包含
|
||||
$('#matchKeyBox').show();
|
||||
}
|
||||
form.render();
|
||||
});
|
||||
|
||||
|
||||
//是否使用匹配模式
|
||||
function categoryContent(bl) {
|
||||
//清空 Select:
|
||||
$("#category").empty();
|
||||
if (bl) {
|
||||
layui.each(d.params.data.weChatReplymatchKeyType, function (index, item) {
|
||||
$("#category").append("<option value='" + item.value + "'>" + item.description + "</option>");
|
||||
});
|
||||
} else {
|
||||
layui.each(d.params.data.weChatReplyType, function (index, item) {
|
||||
$("#category").append("<option value='" + item.value + "'>" + item.description + "</option>");
|
||||
});
|
||||
}
|
||||
form.render();
|
||||
}
|
||||
|
||||
//项目缩略图图片上传
|
||||
$('#upBtnthumbnail').click(function () {
|
||||
cropperImg.cropImg({
|
||||
aspectRatio: 1 / 1,
|
||||
imgSrc: $('#viewImgBoxthumbnail').attr('src'),
|
||||
onCrop: function (data) {
|
||||
var loadIndex = layer.load(2);
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
$('#viewImgBoxthumbnail').attr('src', res.data.fileUrl);
|
||||
$("#thumbnailInput").val(res.data.fileUrl);
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
} else {
|
||||
layer.close(loadIndex);
|
||||
layer.msg(res.msg, { icon: 2, anim: 6 });
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#createTime-WeChatMessageResponse-createTime',
|
||||
type: 'datetime'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#createTime-WeChatMessageResponse-modifyTime',
|
||||
type: 'datetime'
|
||||
});
|
||||
|
||||
form.verify({
|
||||
|
||||
verifymatchKey: [/^.{0,100}$/, '匹配字符最大只允许输入100位字符'],
|
||||
verifyimgTextUrl: [/^.{0,1000}$/, '图片回复图片地址最大只允许输入1000位字符'],
|
||||
verifyimgTextLink: [/^.{0,1000}$/, '图片回复超链接最大只允许输入1000位字符'],
|
||||
verifymeidaUrl: [/^.{0,1000}$/, '语音回复地址最大只允许输入1000位字符'],
|
||||
verifymeidaLink: [/^.{0,1000}$/, '语音回复超链接最大只允许输入1000位字符'],
|
||||
verifyremark: [/^.{0,1000}$/, '备注最大只允许输入1000位字符'],
|
||||
verifycreateBy: [/^.{0,100}$/, '创建来源最大只允许输入100位字符'],
|
||||
verifymodifyBy: [/^.{0,100}$/, '修改来源最大只允许输入100位字符'],
|
||||
});
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-WeChatMessageResponse-createForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,189 @@
|
||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<table class="layui-table layui-form" lay-filter="LAY-app-WeChatMessageResponse-detailsForm" id="LAY-app-WeChatMessageResponse-detailsForm">
|
||||
<colgroup>
|
||||
<col width="100">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="id">序列</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.id || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="messageRule">消息类型</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.messageRule || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="category">分类</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.category || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="matchKey">匹配字符</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.matchKey || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="textContent">文本回复内容</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.textContent || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="imgTextContext">图片回复内容</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.imgTextContext || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="imgTextUrl">图片回复图片地址</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.imgTextUrl || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="imgTextLink">图片回复超链接</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.imgTextLink || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="meidaUrl">语音回复地址</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.meidaUrl || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="meidaLink">语音回复超链接</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.meidaLink || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="enable">是否启用</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" disabled name="enable" value="{{d.params.data.enable}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="enable" {{ d.params.data.enable ? 'checked' : '' }}>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="isDefault">是否默认</label>
|
||||
</td>
|
||||
<td>
|
||||
<input type="checkbox" disabled name="isDefault" value="{{d.params.data.isDefault}}" lay-skin="switch" lay-text="开启|关闭" lay-filter="isDefault" {{ d.params.data.isDefault ? 'checked' : '' }}>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="remark">备注</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.remark || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="sort">排序</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.sort || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="createTime">创建时间</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.createTime || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="createBy">创建来源</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.createBy || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="modifyTime">修改时间</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.modifyTime || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="modifyBy">修改来源</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.modifyBy || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
|
||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||
var $ = layui.$
|
||||
, setter = layui.setter
|
||||
, admin = layui.admin
|
||||
, coreHelper = layui.coreHelper
|
||||
, form = layui.form;
|
||||
form.render(null, 'LAY-app-WeChatMessageResponse-detailsForm');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,271 @@
|
||||
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatMessageResponse-editForm" id="LAY-app-WeChatMessageResponse-editForm">
|
||||
<input type="hidden" name="id" value="{{d.params.data.model.id || '' }}" />
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="messageRule" class="layui-form-label ">消息类型</label>
|
||||
<div class="layui-input-block">
|
||||
|
||||
<select name="messageRule" lay-filter="messageRuleFilter" lay-verType="tips" lay-verify="required|number" lay-reqText="请选择消息类型">
|
||||
{{# layui.each(d.params.data.weChatRequestRuleEnum, function(index, item){ }}
|
||||
<option value="{{item.value}}" {{d.params.data.model.messageRule==item.value ? 'selected="selected"':''}}>{{item.description}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="categoryBox">
|
||||
<label for="category" class="layui-form-label ">类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="category" id="category" lay-filter="categoryFilter">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item" id="matchKeyBox">
|
||||
<label for="matchKey" class="layui-form-label">匹配字符</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="matchKey" lay-verType="tips" class="layui-input" placeholder="请输入匹配字符" lay-reqText="请输入匹配字符" value="{{d.params.data.model.matchKey || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text" id="textContentBox">
|
||||
<label for="textContent" class="layui-form-label">文本回复内容</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="textContent" lay-verType="tips" class="layui-input" placeholder="请输入文本回复内容" lay-reqText="请输入文本回复内容" value="{{d.params.data.model.textContent || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ImgBox">
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label for="imgTextTitle" class="layui-form-label ">图片回复标题</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="imgTextTitle" value="{{ d.params.data.model.messageRule == 3 || d.params.data.model.category == 2 ? d.params.data.model.textContent : ''}}" class="layui-input" placeholder="请输入图片回复标题" lay-reqText="请输入图片回复标题" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-form-text">
|
||||
<label for="imgTextContext" class="layui-form-label">图片回复内容</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="imgTextContext" lay-verType="tips" class="layui-input" placeholder="请输入图片回复内容" lay-reqText="请输入图片回复内容" value="{{d.params.data.model.imgTextContext || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="imgTextUrl" class="layui-form-label">图片回复图片地址</label>
|
||||
<div class="layui-input-inline layui-inline-5">
|
||||
<input name="imgTextUrl" id="thumbnailInput" lay-verType="tips" class="layui-input" placeholder="请输入图片回复图片地址" lay-reqText="请输入图片回复图片地址" value="{{d.params.data.model.imgTextUrl || '' }}" />
|
||||
</div>
|
||||
<div class="layui-input-inline">
|
||||
<div class="layui-upload">
|
||||
<button type="button" class="layui-btn" id="upBtnthumbnail" lay-active="doCropperImg">上传图片</button>
|
||||
<div class="layui-upload-list">
|
||||
<img class="layui-upload-img" id="viewImgBoxthumbnail" src="{{ d.params.data.model.imgTextUrl || layui.setter.noImagePicUrl }}">
|
||||
<p id="viewTextBoxthumbnail"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="imgTextLink" class="layui-form-label">图片回复超链接</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="imgTextLink" lay-verType="tips" class="layui-input" placeholder="请输入图片回复超链接" lay-reqText="请输入图片回复超链接" value="{{d.params.data.model.imgTextLink || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="enable" class="layui-form-label">是否启用</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="checkbox" lay-filter="switch" name="enable" {{ d.params.data.model.enable ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
|
||||
</div>
|
||||
<label for="isDefault" class="layui-form-label">是否默认</label>
|
||||
<div class="layui-input-inline layui-inline-2">
|
||||
<input type="checkbox" lay-filter="switch" name="isDefault" {{ d.params.data.model.isDefault ? 'checked' : '' }} lay-skin="switch" lay-text="开启|关闭">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="remark" class="layui-form-label">备注</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="remark" lay-verType="tips" class="layui-input" placeholder="请输入备注" lay-reqText="请输入备注" value="{{d.params.data.model.remark || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="Sort" class="layui-form-label">排序</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="sort" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.model.sort || '' }}" placeholder="请输入排序" lay-reqText="请输入排序并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatMessageResponse-editForm-submit" id="LAY-app-WeChatMessageResponse-editForm-submit" value="确认编辑">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.sendParams = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
$('#categoryBox').hide();
|
||||
$('#matchKeyBox').show();
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').hide();
|
||||
|
||||
|
||||
getmessageRuleFilterData(d.params.data.model.messageRule);
|
||||
|
||||
form.on('select(messageRuleFilter)', function (data) {
|
||||
getmessageRuleFilterData(data.value);
|
||||
});
|
||||
|
||||
|
||||
function getmessageRuleFilterData(value) {
|
||||
console.log(value);
|
||||
if (value == 0) { //默认
|
||||
categoryContent(false)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').hide();
|
||||
|
||||
var categoryId = $('#category').val();
|
||||
if (categoryId == 1) {
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
} else if (categoryId == 2) {
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
}
|
||||
|
||||
} else if (value == 1) { //关注回复
|
||||
categoryContent(false)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').hide();
|
||||
|
||||
var categoryId = $('#category').val();
|
||||
if (categoryId == 1) {
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
} else if (categoryId == 2) {
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
}
|
||||
|
||||
} else if (value == 2) { //文本回复
|
||||
categoryContent(true)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').show();
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
|
||||
$('#category').val(4);
|
||||
|
||||
} else if (value == 3) { //图片回复
|
||||
categoryContent(true)
|
||||
$('#categoryBox').show();
|
||||
$('#matchKeyBox').show();
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
|
||||
$('#category').val(4);
|
||||
}
|
||||
form.render();
|
||||
}
|
||||
|
||||
|
||||
form.on('select(categoryFilter)', function (data) {
|
||||
if (data.value == 1) { //文本
|
||||
$('#matchKeyBox').hide();
|
||||
$('#textContentBox').show();
|
||||
$('#ImgBox').hide();
|
||||
} else if (data.value == 2) { //图文
|
||||
$('#matchKeyBox').hide();
|
||||
$('#textContentBox').hide();
|
||||
$('#ImgBox').show();
|
||||
} else if (data.value == 3) { //语音
|
||||
//不做处理
|
||||
} else if (data.value == 4) { //相等
|
||||
$('#matchKeyBox').show();
|
||||
} else if (data.value == 5) { //包含
|
||||
$('#matchKeyBox').show();
|
||||
}
|
||||
form.render();
|
||||
});
|
||||
|
||||
|
||||
//是否使用匹配模式
|
||||
function categoryContent(bl) {
|
||||
//清空 Select:
|
||||
$("#category").empty();
|
||||
if (bl) {
|
||||
layui.each(d.params.data.weChatReplymatchKeyType, function (index, item) {
|
||||
if (item.Value == d.params.data.model.category) {
|
||||
$("#category").append("<option value='" + item.value + "' selected='selected'>" + item.Des + "</option>");
|
||||
} else {
|
||||
$("#category").append("<option value='" + item.value + "'>" + item.description + "</option>");
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layui.each(d.params.data.weChatReplyType, function (index, item) {
|
||||
if (item.Value == d.params.data.model.category) {
|
||||
$("#category").append("<option value='" + item.value + "' selected='selected'>" + item.Des + "</option>");
|
||||
} else {
|
||||
$("#category").append("<option value='" + item.value + "'>" + item.description + "</option>");
|
||||
}
|
||||
});
|
||||
}
|
||||
form.render();
|
||||
}
|
||||
|
||||
//项目缩略图图片上传
|
||||
$('#upBtnthumbnail').click(function () {
|
||||
cropperImg.cropImg({
|
||||
aspectRatio: 1 / 1,
|
||||
imgSrc: $('#viewImgBoxthumbnail').attr('src'),
|
||||
onCrop: function (data) {
|
||||
var loadIndex = layer.load(2);
|
||||
coreHelper.Post("api/Tools/UploadFilesFByBase64", { base64: data }, function (res) {
|
||||
if (0 === res.code) {
|
||||
$('#viewImgBoxthumbnail').attr('src', res.data.fileUrl);
|
||||
$("#thumbnailInput").val(res.data.fileUrl);
|
||||
layer.msg(res.msg);
|
||||
layer.close(loadIndex);
|
||||
} else {
|
||||
layer.close(loadIndex);
|
||||
layer.msg(res.msg, { icon: 2, anim: 6 });
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
form.verify({
|
||||
|
||||
verifymatchKey: [/^.{0,100}$/, '匹配字符最大只允许输入100位字符'],
|
||||
verifyimgTextUrl: [/^.{0,1000}$/, '图片回复图片地址最大只允许输入1000位字符'],
|
||||
verifyimgTextLink: [/^.{0,1000}$/, '图片回复超链接最大只允许输入1000位字符'],
|
||||
verifymeidaUrl: [/^.{0,1000}$/, '语音回复地址最大只允许输入1000位字符'],
|
||||
verifymeidaLink: [/^.{0,1000}$/, '语音回复超链接最大只允许输入1000位字符'],
|
||||
verifyremark: [/^.{0,1000}$/, '备注最大只允许输入1000位字符'],
|
||||
verifycreateBy: [/^.{0,100}$/, '创建来源最大只允许输入100位字符'],
|
||||
verifymodifyBy: [/^.{0,100}$/, '修改来源最大只允许输入100位字符'],
|
||||
});
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-WeChatMessageResponse-editForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,468 @@
|
||||
<title>微信自动回复消息表</title>
|
||||
<!--当前位置开始-->
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<!--当前位置结束-->
|
||||
<style>
|
||||
/* 重写样式 */
|
||||
</style>
|
||||
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatMessageResponse/GetIndex" lay-done="layui.data.done(d);">
|
||||
|
||||
</script>
|
||||
<div class="table-body">
|
||||
<table id="LAY-app-WeChatMessageResponse-tableBox" lay-filter="LAY-app-WeChatMessageResponse-tableBox"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatMessageResponse-toolbar">
|
||||
<div class="layui-form coreshop-toolbar-search-form">
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="messageRule">
|
||||
<option value="">请选择消息类型</option>
|
||||
{{# layui.each(indexData.weChatRequestRuleEnum, function(index, item){ }}
|
||||
<option value="{{item.value}}">{{item.description}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="category">
|
||||
<option value="">请选择分类</option>
|
||||
{{# layui.each(indexData.weChatReplyCategory, function(index, item){ }}
|
||||
<option value="{{item.value}}">{{item.description}}</option>
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="matchKey" placeholder="请输入匹配字符" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="enable">
|
||||
<option value="">请选择是否启用</option>
|
||||
<option value="True">是</option>
|
||||
<option value="False">否</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<div class="layui-input-inline">
|
||||
<select name="isDefault">
|
||||
<option value="">请选择是否默认</option>
|
||||
<option value="True">是</option>
|
||||
<option value="False">否</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-WeChatMessageResponse-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatMessageResponse-pagebar">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="addData"><i class="layui-icon layui-icon-add-1"></i>添加数据</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="batchDelete"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="selectExportExcel"><i class="layui-icon layui-icon-add-circle"></i>选择导出</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatMessageResponse-tableBox-bar">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#WeChatMessageResponseTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
||||
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="WeChatMessageResponseTbDelDrop{{d.LAY_INDEX}}"
|
||||
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
||||
<div class="dropdown-anchor"></div>
|
||||
<div class="dropdown-popconfirm-title">
|
||||
<i class="layui-icon layui-icon-help"></i>
|
||||
确定要删除吗?
|
||||
</div>
|
||||
<div class="dropdown-popconfirm-btn">
|
||||
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
|
||||
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var indexData;
|
||||
var debug = layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d); }
|
||||
|
||||
indexData = d.data;
|
||||
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, table = layui.table
|
||||
, form = layui.form
|
||||
, laydate = layui.laydate
|
||||
, setter = layui.setter
|
||||
, coreHelper = layui.coreHelper
|
||||
, util = layui.util
|
||||
, view = layui.view;
|
||||
|
||||
var searchwhere;
|
||||
//监听搜索
|
||||
form.on('submit(LAY-app-WeChatMessageResponse-search)',
|
||||
function (data) {
|
||||
var field = data.field;
|
||||
searchwhere = field;
|
||||
//执行重载
|
||||
table.reloadData('LAY-app-WeChatMessageResponse-tableBox', { where: field });
|
||||
});
|
||||
//数据绑定
|
||||
table.render({
|
||||
elem: '#LAY-app-WeChatMessageResponse-tableBox',
|
||||
url: layui.setter.apiUrl + 'Api/WeChatMessageResponse/GetPageList',
|
||||
method: 'POST',
|
||||
toolbar: '#LAY-app-WeChatMessageResponse-toolbar',
|
||||
pagebar: '#LAY-app-WeChatMessageResponse-pagebar',
|
||||
className: 'pagebarbox',
|
||||
defaultToolbar: ['filter', 'print', 'exports'],
|
||||
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||
page: true,
|
||||
limit: 30,
|
||||
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||
text: { none: '暂无相关数据' },
|
||||
cols: [
|
||||
[
|
||||
{ type: "checkbox", fixed: "left" },
|
||||
{ field: 'id', title: '序列', width: 60, sort: false },
|
||||
//{ field: 'messageRule', title: '消息类型', sort: false, width: 105 },
|
||||
{
|
||||
field: 'messageRule', title: '消息类型', sort: false, width: 80, templet: function (data) {
|
||||
for (var i = 0; i < d.data.weChatRequestRuleEnum.length; i++) {
|
||||
if (d.data.weChatRequestRuleEnum[i].value == data.messageRule) {
|
||||
return d.data.weChatRequestRuleEnum[i].description;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
},
|
||||
//{ field: 'category', title: '分类', sort: false, width: 105 },
|
||||
{
|
||||
field: 'category', title: '分类', sort: false, width: 80, templet: function (data) {
|
||||
for (var i = 0; i < d.data.weChatReplyCategory.length; i++) {
|
||||
if (d.data.weChatReplyCategory[i].value == data.category) {
|
||||
return d.data.weChatReplyCategory[i].description;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
},
|
||||
{ field: 'matchKey', title: '匹配字符', sort: false, width: 105 },
|
||||
{ field: 'textContent', title: '文本回复内容', sort: false },
|
||||
{ field: 'imgTextContext', title: '图片回复内容', sort: false, width: 105 },
|
||||
//{ field: 'imgTextUrl', title: '图片回复图片地址', sort: false, width: 105 },
|
||||
{
|
||||
field: 'imgTextUrl', title: '图片回复内容', sort: false,
|
||||
templet: function (d) {
|
||||
if (d.imgTextUrl) {
|
||||
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + d.imgTextUrl + '")><image style="max-width:28px;max-height:28px;" src="' + d.imgTextUrl + '" /></a>';
|
||||
} else {
|
||||
return '<a href="javascript:void(0);" onclick=layui.coreHelper.viewImage("' + setter.noImagePicUrl + '")><image style="max-width:30px;max-height:30px;" src="' + setter.noImagePicUrl + '" /></a>';
|
||||
}
|
||||
}, width: 105
|
||||
},
|
||||
{ field: 'imgTextLink', title: '图片回复超链接', sort: false, width: 105 },
|
||||
{ field: 'meidaUrl', title: '语音回复地址', sort: false, width: 105 },
|
||||
{ field: 'meidaLink', title: '语音回复超链接', sort: false, width: 105 },
|
||||
{ field: 'enable', title: '是否启用', width: 95, templet: '#switch_enable', sort: false, unresize: true },
|
||||
{ field: 'isDefault', title: '是否默认', width: 95, templet: '#switch_isDefault', sort: false, unresize: true },
|
||||
{ field: 'remark', title: '备注', sort: false, width: 105 },
|
||||
{ field: 'sort', title: '排序', sort: false, width: 105 },
|
||||
{ field: 'createTime', title: '创建时间', width: 130, sort: false },
|
||||
{ width: 162, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-WeChatMessageResponse-tableBox-bar' }
|
||||
]
|
||||
]
|
||||
});
|
||||
//监听排序事件
|
||||
table.on('sort(LAY-app-WeChatMessageResponse-tableBox)', function (obj) {
|
||||
table.reloadData('LAY-app-WeChatMessageResponse-tableBox', {
|
||||
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
||||
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
||||
orderField: obj.field, //排序字段
|
||||
orderDirection: obj.type //排序方式
|
||||
}
|
||||
});
|
||||
});
|
||||
//监听行双击事件
|
||||
table.on('rowDouble(LAY-app-WeChatMessageResponse-tableBox)', function (obj) {
|
||||
//查看详情
|
||||
doDetails(obj);
|
||||
});
|
||||
//头工具栏事件
|
||||
table.on('pagebar(LAY-app-WeChatMessageResponse-tableBox)', function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id);
|
||||
switch (obj.event) {
|
||||
case 'addData':
|
||||
doCreate();
|
||||
break;
|
||||
case 'batchDelete':
|
||||
doBatchDelete(checkStatus);
|
||||
break;
|
||||
case 'selectExportExcel':
|
||||
doSelectExportExcel(checkStatus);
|
||||
break;
|
||||
case 'queryExportExcel':
|
||||
doQueryExportexcel();
|
||||
break;
|
||||
};
|
||||
});
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-WeChatMessageResponse-tableBox)',
|
||||
function (obj) {
|
||||
if (obj.event === 'detail') {
|
||||
doDetails(obj);
|
||||
} else if (obj.event === 'del') {
|
||||
doDelete(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
doEdit(obj)
|
||||
}
|
||||
});
|
||||
//执行创建操作
|
||||
function doCreate() {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/GetCreate", null, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '创建数据',
|
||||
area: ['800px', '90%'],
|
||||
id: 'LAY-popup-WeChatMessageResponse-create',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('wechatoffiaccount/messageresponse/create', { data: e.data }).done(function () {
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-WeChatMessageResponse-createForm-submit)',
|
||||
function (data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
field.enable = field.enable == 'on';
|
||||
field.isDefault = field.isDefault == 'on';
|
||||
|
||||
if (debug) { console.log(field); } //开启调试返回数据
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoCreate", field, function (e) {
|
||||
console.log(e)
|
||||
if (e.code === 0) {
|
||||
layui.table.reloadData('LAY-app-WeChatMessageResponse-tableBox'); //重载表格
|
||||
layer.close(index); //再执行关闭
|
||||
layer.msg(e.msg);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-WeChatMessageResponse-createForm-submit").click();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行编辑操作
|
||||
function doEdit(obj) {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/GetEdit", { id: obj.data.id }, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '编辑数据',
|
||||
area: ['800px', '90%'],
|
||||
id: 'LAY-popup-WeChatMessageResponse-edit',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('wechatoffiaccount/messageresponse/edit', { data: e.data }).done(function () {
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-WeChatMessageResponse-editForm-submit)',
|
||||
function (data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
field.enable = field.enable == 'on';
|
||||
field.isDefault = field.isDefault == 'on';
|
||||
|
||||
if (debug) { console.log(field); } //开启调试返回数据
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoEdit", field, function (e) {
|
||||
console.log(e)
|
||||
if (e.code === 0) {
|
||||
layui.table.reloadData('LAY-app-WeChatMessageResponse-tableBox'); //重载表格
|
||||
layer.close(index); //再执行关闭
|
||||
layer.msg(e.msg);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-WeChatMessageResponse-editForm-submit").click();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行预览操作
|
||||
function doDetails(obj) {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/GetDetails", { id: obj.data.id }, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '查看详情',
|
||||
area: ['800px', '90%'],
|
||||
id: 'LAY-popup-WeChatMessageResponse-details',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('wechatoffiaccount/messageresponse/details', { data: e.data }).done(function () {
|
||||
form.render();
|
||||
});
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行单个删除
|
||||
function doDelete(obj) {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoDelete", { id: obj.data.id }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
table.reloadData('LAY-app-WeChatMessageResponse-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
}
|
||||
//执行批量删除
|
||||
function doBatchDelete(checkStatus) {
|
||||
var checkData = checkStatus.data;
|
||||
if (checkData.length === 0) {
|
||||
return layer.msg('请选择要删除的数据');
|
||||
}
|
||||
layer.confirm('确定删除吗?删除后将无法恢复。',
|
||||
function (index) {
|
||||
var delidsStr = [];
|
||||
layui.each(checkData,
|
||||
function (index, item) {
|
||||
delidsStr.push(item.id);
|
||||
});
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoBatchDelete", { id: delidsStr }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
table.reloadData('LAY-app-WeChatMessageResponse-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
});
|
||||
}
|
||||
//执行查询条件导出excel
|
||||
function doQueryExportexcel() {
|
||||
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
||||
function (index) {
|
||||
var field = searchwhere;
|
||||
coreHelper.PostForm("Api/WeChatMessageResponse/QueryExportExcel", field, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
if (e.code === 0) {
|
||||
window.open(e.data);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
//执行选择目录导出数据
|
||||
function doSelectExportExcel(checkStatus) {
|
||||
var checkData = checkStatus.data;
|
||||
if (checkData.length === 0) {
|
||||
return layer.msg('请选择您要导出的数据');
|
||||
}
|
||||
layer.confirm('确定导出选择的内容吗?',
|
||||
function (index) {
|
||||
var delidsStr = [];
|
||||
layui.each(checkData,
|
||||
function (index, item) {
|
||||
delidsStr.push(item.id);
|
||||
});
|
||||
layer.close(index);
|
||||
coreHelper.Post("Api/WeChatMessageResponse/SelectExportExcel", { id: delidsStr }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
if (e.code === 0) {
|
||||
window.open(e.data);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
laydate.render({
|
||||
elem: '#searchTime-WeChatMessageResponse-createTime',
|
||||
type: 'datetime',
|
||||
range: '到',
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#searchTime-WeChatMessageResponse-modifyTime',
|
||||
type: 'datetime',
|
||||
range: '到',
|
||||
});
|
||||
|
||||
//监听 表格复选框操作
|
||||
|
||||
layui.form.on('switch(switch_enable)', function (obj) {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoSetenable", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
//table.reloadData('LAY-app-WeChatMessageResponse-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
});
|
||||
|
||||
layui.form.on('switch(switch_isDefault)', function (obj) {
|
||||
coreHelper.Post("Api/WeChatMessageResponse/DoSetisDefault", { id: this.value, data: obj.elem.checked }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
//table.reloadData('LAY-app-WeChatMessageResponse-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
//重载form
|
||||
form.render();
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<!--设置是否启用-->
|
||||
<script type="text/html" id="switch_enable">
|
||||
<input type="checkbox" name="switch_enable" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" disabled="disabled">
|
||||
</script>
|
||||
|
||||
<!--设置是否默认-->
|
||||
<script type="text/html" id="switch_isDefault">
|
||||
<input type="checkbox" name="switch_isDefault" value="{{d.id}}" lay-skin="switch" lay-text="开启|关闭" disabled="disabled">
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatUserAccessToken-createForm" id="LAY-app-WeChatUserAccessToken-createForm">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="id" class="layui-form-label layui-form-required">序列</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入序列" lay-reqText="请输入序列并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="access_token" class="layui-form-label layui-form-required">网页授权接口调用凭证</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="access_token" lay-verType="tips" lay-verify="required|verifyaccess_token" class="layui-input" lay-reqText="请输入网页授权接口调用凭证" placeholder="请输入网页授权接口调用凭证"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="expires_in" class="layui-form-label layui-form-required">超时时间秒</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="expires_in" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入超时时间秒" lay-reqText="请输入超时时间秒并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="refresh_token" class="layui-form-label layui-form-required">用户刷新access_token</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="refresh_token" lay-verType="tips" lay-verify="required|verifyrefresh_token" class="layui-input" lay-reqText="请输入用户刷新access_token" placeholder="请输入用户刷新access_token"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="openid" class="layui-form-label layui-form-required">用户唯一标识</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="openid" lay-verType="tips" lay-verify="required|verifyopenid" class="layui-input" lay-reqText="请输入用户唯一标识" placeholder="请输入用户唯一标识"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="scope" class="layui-form-label layui-form-required">用户授权的作用域</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="scope" lay-verType="tips" lay-verify="required|verifyscope" class="layui-input" lay-reqText="请输入用户授权的作用域" placeholder="请输入用户授权的作用域"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="is_snapshotuser" class="layui-form-label layui-form-required">是否为快照页模式虚拟账号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="is_snapshotuser" lay-verType="tips" lay-verify="required|number" class="layui-input" value="1" placeholder="请输入是否为快照页模式虚拟账号" lay-reqText="请输入是否为快照页模式虚拟账号并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="unionid" class="layui-form-label layui-form-required">用户统一标识</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="unionid" lay-verType="tips" lay-verify="required|verifyunionid" class="layui-input" lay-reqText="请输入用户统一标识" placeholder="请输入用户统一标识"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatUserAccessToken-createForm-submit" id="LAY-app-WeChatUserAccessToken-createForm-submit" value="确认添加">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyaccess_token: [/^.{0,50}$/,'网页授权接口调用凭证最大只允许输入50位字符'],
|
||||
verifyrefresh_token: [/^.{0,100}$/,'用户刷新access_token最大只允许输入100位字符'],
|
||||
verifyopenid: [/^.{0,50}$/,'用户唯一标识最大只允许输入50位字符'],
|
||||
verifyscope: [/^.{0,50}$/,'用户授权的作用域最大只允许输入50位字符'],
|
||||
verifyunionid: [/^.{0,50}$/,'用户统一标识最大只允许输入50位字符'],
|
||||
});
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-WeChatUserAccessToken-createForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,99 @@
|
||||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<table class="layui-table layui-form" lay-filter="LAY-app-WeChatUserAccessToken-detailsForm" id="LAY-app-WeChatUserAccessToken-detailsForm">
|
||||
<colgroup>
|
||||
<col width="100">
|
||||
<col>
|
||||
</colgroup>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="id">序列</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.id || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="access_token">网页授权接口调用凭证</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.access_token || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="expires_in">超时时间秒</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.expires_in || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="refresh_token">用户刷新access_token</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.refresh_token || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="openid">用户唯一标识</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.openid || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="scope">用户授权的作用域</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.scope || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="is_snapshotuser">是否为快照页模式虚拟账号</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.is_snapshotuser || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
<label for="unionid">用户统一标识</label>
|
||||
</td>
|
||||
<td>
|
||||
{{ d.params.data.unionid || '' }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
|
||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||
var $ = layui.$
|
||||
, setter = layui.setter
|
||||
, admin = layui.admin
|
||||
, coreHelper = layui.coreHelper
|
||||
, form = layui.form;
|
||||
form.render(null, 'LAY-app-WeChatUserAccessToken-detailsForm');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,92 @@
|
||||
<script type="text/html" template lay-done="layui.data.sendParams(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatUserAccessToken-editForm" id="LAY-app-WeChatUserAccessToken-editForm">
|
||||
<input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
|
||||
<div class="layui-form-item">
|
||||
<label for="id" class="layui-form-label layui-form-required">序列</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="id" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.id || '' }}" placeholder="请输入序列" lay-reqText="请输入序列并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="access_token" class="layui-form-label layui-form-required">网页授权接口调用凭证</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="access_token" lay-verType="tips" lay-verify="required|verifyaccess_token" class="layui-input" placeholder="请输入网页授权接口调用凭证" lay-reqText="请输入网页授权接口调用凭证" value="{{d.params.data.access_token || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="expires_in" class="layui-form-label layui-form-required">超时时间秒</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="expires_in" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.expires_in || '' }}" placeholder="请输入超时时间秒" lay-reqText="请输入超时时间秒并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="refresh_token" class="layui-form-label layui-form-required">用户刷新access_token</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="refresh_token" lay-verType="tips" lay-verify="required|verifyrefresh_token" class="layui-input" placeholder="请输入用户刷新access_token" lay-reqText="请输入用户刷新access_token" value="{{d.params.data.refresh_token || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="openid" class="layui-form-label layui-form-required">用户唯一标识</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="openid" lay-verType="tips" lay-verify="required|verifyopenid" class="layui-input" placeholder="请输入用户唯一标识" lay-reqText="请输入用户唯一标识" value="{{d.params.data.openid || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="scope" class="layui-form-label layui-form-required">用户授权的作用域</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="scope" lay-verType="tips" lay-verify="required|verifyscope" class="layui-input" placeholder="请输入用户授权的作用域" lay-reqText="请输入用户授权的作用域" value="{{d.params.data.scope || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="is_snapshotuser" class="layui-form-label layui-form-required">是否为快照页模式虚拟账号</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="is_snapshotuser" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.is_snapshotuser || '' }}" placeholder="请输入是否为快照页模式虚拟账号" lay-reqText="请输入是否为快照页模式虚拟账号并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label for="unionid" class="layui-form-label layui-form-required">用户统一标识</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="unionid" lay-verType="tips" lay-verify="required|verifyunionid" class="layui-input" placeholder="请输入用户统一标识" lay-reqText="请输入用户统一标识" value="{{d.params.data.unionid || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatUserAccessToken-editForm-submit" id="LAY-app-WeChatUserAccessToken-editForm-submit" value="确认编辑">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.sendParams = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
form.verify({
|
||||
|
||||
verifyaccess_token: [/^.{0,50}$/,'网页授权接口调用凭证最大只允许输入50位字符'],
|
||||
verifyrefresh_token: [/^.{0,100}$/,'用户刷新access_token最大只允许输入100位字符'],
|
||||
verifyopenid: [/^.{0,50}$/,'用户唯一标识最大只允许输入50位字符'],
|
||||
verifyscope: [/^.{0,50}$/,'用户授权的作用域最大只允许输入50位字符'],
|
||||
verifyunionid: [/^.{0,50}$/,'用户统一标识最大只允许输入50位字符'],
|
||||
});
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-WeChatUserAccessToken-editForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1,396 @@
|
||||
<title>微信用户交互授权</title>
|
||||
<!--当前位置开始-->
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<!--当前位置结束-->
|
||||
<style>
|
||||
/* 重写样式 */
|
||||
</style>
|
||||
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatUserAccessToken/GetIndex" lay-done="layui.data.done(d);">
|
||||
|
||||
</script>
|
||||
<div class="table-body">
|
||||
<table id="LAY-app-WeChatUserAccessToken-tableBox" lay-filter="LAY-app-WeChatUserAccessToken-tableBox"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatUserAccessToken-toolbar">
|
||||
<div class="layui-form coreshop-toolbar-search-form">
|
||||
<div class="layui-form-item">
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="id">序列</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="id" placeholder="请输入序列" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="access_token">网页授权接口调用凭证</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="access_token" placeholder="请输入网页授权接口调用凭证" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="expires_in">超时时间秒</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="expires_in" placeholder="请输入超时时间秒" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="refresh_token">用户刷新access_token</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="refresh_token" placeholder="请输入用户刷新access_token" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="openid">用户唯一标识</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="openid" placeholder="请输入用户唯一标识" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="scope">用户授权的作用域</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="scope" placeholder="请输入用户授权的作用域" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="is_snapshotuser">是否为快照页模式虚拟账号</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="is_snapshotuser" placeholder="请输入是否为快照页模式虚拟账号" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="unionid">用户统一标识</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="unionid" placeholder="请输入用户统一标识" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-WeChatUserAccessToken-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatUserAccessToken-pagebar">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm" lay-event="addData"><i class="layui-icon layui-icon-add-1"></i>添加数据</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="batchDelete"><i class="layui-icon layui-icon-delete"></i>批量删除</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="selectExportExcel"><i class="layui-icon layui-icon-add-circle"></i>选择导出</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-event="queryExportExcel"><i class="layui-icon layui-icon-download-circle"></i>查询导出</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-WeChatUserAccessToken-tableBox-bar">
|
||||
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">查看</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" data-dropdown="#WeChatUserAccessTokenTbDelDrop{{d.LAY_INDEX}}" no-shade="true">删除</a>
|
||||
<div class="dropdown-menu-nav dropdown-popconfirm dropdown-top-right layui-hide" id="WeChatUserAccessTokenTbDelDrop{{d.LAY_INDEX}}"
|
||||
style="max-width: 200px;white-space: normal;min-width: auto;margin-left: 10px;">
|
||||
<div class="dropdown-anchor"></div>
|
||||
<div class="dropdown-popconfirm-title">
|
||||
<i class="layui-icon layui-icon-help"></i>
|
||||
确定要删除吗?
|
||||
</div>
|
||||
<div class="dropdown-popconfirm-btn">
|
||||
<a class="layui-btn layui-btn-primary cursor" btn-cancel>取消</a>
|
||||
<a class="layui-btn layui-btn-normal cursor" lay-event="del">确定</a>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var indexData;
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d); }
|
||||
|
||||
indexData = d.data;
|
||||
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, table = layui.table
|
||||
, form = layui.form
|
||||
, laydate = layui.laydate
|
||||
, setter = layui.setter
|
||||
, coreHelper = layui.coreHelper
|
||||
, util = layui.util
|
||||
, view = layui.view;
|
||||
|
||||
var searchwhere;
|
||||
//监听搜索
|
||||
form.on('submit(LAY-app-WeChatUserAccessToken-search)',
|
||||
function(data) {
|
||||
var field = data.field;
|
||||
searchwhere = field;
|
||||
//执行重载
|
||||
table.reloadData('LAY-app-WeChatUserAccessToken-tableBox',{ where: field });
|
||||
});
|
||||
//数据绑定
|
||||
table.render({
|
||||
elem: '#LAY-app-WeChatUserAccessToken-tableBox',
|
||||
url: layui.setter.apiUrl + 'Api/WeChatUserAccessToken/GetPageList',
|
||||
method: 'POST',
|
||||
toolbar: '#LAY-app-WeChatUserAccessToken-toolbar',
|
||||
pagebar: '#LAY-app-WeChatUserAccessToken-pagebar',
|
||||
className: 'pagebarbox',
|
||||
defaultToolbar: ['filter', 'print', 'exports'],
|
||||
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
|
||||
page: true,
|
||||
limit: 30,
|
||||
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||
text: {none: '暂无相关数据'},
|
||||
cols: [
|
||||
[
|
||||
{ type: "checkbox", fixed: "left" },
|
||||
{ field: 'id', title: '序列', width: 60, sort: false},
|
||||
{ field: 'access_token', title: '网页授权接口调用凭证', sort: false,width: 105 },
|
||||
{ field: 'expires_in', title: '超时时间秒', sort: false,width: 105 },
|
||||
{ field: 'refresh_token', title: '用户刷新access_token', sort: false,width: 105 },
|
||||
{ field: 'openid', title: '用户唯一标识', sort: false,width: 105 },
|
||||
{ field: 'scope', title: '用户授权的作用域', sort: false,width: 105 },
|
||||
{ field: 'is_snapshotuser', title: '是否为快照页模式虚拟账号', sort: false,width: 105 },
|
||||
{ field: 'unionid', title: '用户统一标识', sort: false,width: 105 },
|
||||
{ width: 162, align: 'center', title:'操作', fixed: 'right', toolbar: '#LAY-app-WeChatUserAccessToken-tableBox-bar' }
|
||||
]
|
||||
]
|
||||
});
|
||||
//监听排序事件
|
||||
table.on('sort(LAY-app-WeChatUserAccessToken-tableBox)', function(obj){
|
||||
table.reloadData('LAY-app-WeChatUserAccessToken-tableBox', {
|
||||
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
|
||||
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
|
||||
orderField: obj.field, //排序字段
|
||||
orderDirection: obj.type //排序方式
|
||||
}
|
||||
});
|
||||
});
|
||||
//监听行双击事件
|
||||
table.on('rowDouble(LAY-app-WeChatUserAccessToken-tableBox)', function (obj) {
|
||||
//查看详情
|
||||
doDetails(obj);
|
||||
});
|
||||
//头工具栏事件
|
||||
table.on('pagebar(LAY-app-WeChatUserAccessToken-tableBox)', function (obj) {
|
||||
var checkStatus = table.checkStatus(obj.config.id);
|
||||
switch (obj.event) {
|
||||
case 'addData':
|
||||
doCreate();
|
||||
break;
|
||||
case 'batchDelete':
|
||||
doBatchDelete(checkStatus);
|
||||
break;
|
||||
case 'selectExportExcel':
|
||||
doSelectExportExcel(checkStatus);
|
||||
break;
|
||||
case 'queryExportExcel':
|
||||
doQueryExportexcel();
|
||||
break;
|
||||
};
|
||||
});
|
||||
//监听工具条
|
||||
table.on('tool(LAY-app-WeChatUserAccessToken-tableBox)',
|
||||
function(obj) {
|
||||
if (obj.event === 'detail') {
|
||||
doDetails(obj);
|
||||
} else if (obj.event === 'del') {
|
||||
doDelete(obj);
|
||||
} else if (obj.event === 'edit') {
|
||||
doEdit(obj)
|
||||
}
|
||||
});
|
||||
//执行创建操作
|
||||
function doCreate(){
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/GetCreate", null, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '创建数据',
|
||||
area: ['1200px', '90%'],
|
||||
id: 'LAY-popup-WeChatUserAccessToken-create',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('base/WeChatUserAccessToken/create', { data: e.data }).done(function () {
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-WeChatUserAccessToken-createForm-submit)',
|
||||
function(data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
|
||||
if (debug) { console.log(field); } //开启调试返回数据
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/DoCreate", field, function (e) {
|
||||
console.log(e)
|
||||
if (e.code === 0) {
|
||||
layui.table.reloadData('LAY-app-WeChatUserAccessToken-tableBox'); //重载表格
|
||||
layer.close(index); //再执行关闭
|
||||
layer.msg(e.msg);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-WeChatUserAccessToken-createForm-submit").click();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行编辑操作
|
||||
function doEdit(obj){
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/GetEdit", {id:obj.data.id}, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '编辑数据',
|
||||
area: ['1200px', '90%'],
|
||||
id: 'LAY-popup-WeChatUserAccessToken-edit',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('base/WeChatUserAccessToken/edit', { data: e.data }).done(function () {
|
||||
//监听提交
|
||||
form.on('submit(LAY-app-WeChatUserAccessToken-editForm-submit)',
|
||||
function(data) {
|
||||
var field = data.field; //获取提交的字段
|
||||
|
||||
|
||||
if (debug) { console.log(field); } //开启调试返回数据
|
||||
//提交 Ajax 成功后,关闭当前弹层并重载表格
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/DoEdit", field, function (e) {
|
||||
console.log(e)
|
||||
if (e.code === 0) {
|
||||
layui.table.reloadData('LAY-app-WeChatUserAccessToken-tableBox'); //重载表格
|
||||
layer.close(index); //再执行关闭
|
||||
layer.msg(e.msg);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
, btn: ['确定', '取消']
|
||||
, yes: function (index, layero) {
|
||||
layero.contents().find("#LAY-app-WeChatUserAccessToken-editForm-submit").click();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行预览操作
|
||||
function doDetails(obj) {
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/GetDetails", { id: obj.data.id }, function (e) {
|
||||
if (e.code === 0) {
|
||||
admin.popup({
|
||||
shadeClose: false,
|
||||
title: '查看详情',
|
||||
area: ['1200px', '90%'],
|
||||
id: 'LAY-popup-WeChatUserAccessToken-details',
|
||||
success: function (layero, index) {
|
||||
view(this.id).render('base/WeChatUserAccessToken/details', { data: e.data }).done(function () {
|
||||
form.render();
|
||||
});
|
||||
// 禁止弹窗出现滚动条
|
||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
}
|
||||
//执行单个删除
|
||||
function doDelete(obj){
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/DoDelete", { id: obj.data.id }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
table.reloadData('LAY-app-WeChatUserAccessToken-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
}
|
||||
//执行批量删除
|
||||
function doBatchDelete(checkStatus){
|
||||
var checkData = checkStatus.data;
|
||||
if (checkData.length === 0) {
|
||||
return layer.msg('请选择要删除的数据');
|
||||
}
|
||||
layer.confirm('确定删除吗?删除后将无法恢复。',
|
||||
function(index) {
|
||||
var delidsStr = [];
|
||||
layui.each(checkData,
|
||||
function(index, item) {
|
||||
delidsStr.push(item.id);
|
||||
});
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/DoBatchDelete", { id: delidsStr }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
table.reloadData('LAY-app-WeChatUserAccessToken-tableBox');
|
||||
layer.msg(e.msg);
|
||||
});
|
||||
});
|
||||
}
|
||||
//执行查询条件导出excel
|
||||
function doQueryExportexcel(){
|
||||
layer.confirm('确定根据当前的查询条件导出数据吗?',
|
||||
function(index) {
|
||||
var field = searchwhere;
|
||||
coreHelper.PostForm("Api/WeChatUserAccessToken/QueryExportExcel", field, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
if (e.code === 0) {
|
||||
window.open(e.data);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
//执行选择目录导出数据
|
||||
function doSelectExportExcel(checkStatus){
|
||||
var checkData = checkStatus.data;
|
||||
if (checkData.length === 0) {
|
||||
return layer.msg('请选择您要导出的数据');
|
||||
}
|
||||
layer.confirm('确定导出选择的内容吗?',
|
||||
function(index) {
|
||||
var delidsStr = [];
|
||||
layui.each(checkData,
|
||||
function(index, item) {
|
||||
delidsStr.push(item.id);
|
||||
});
|
||||
layer.close(index);
|
||||
coreHelper.Post("Api/WeChatUserAccessToken/SelectExportExcel", { id: delidsStr }, function (e) {
|
||||
if (debug) { console.log(e); } //开启调试返回数据
|
||||
if (e.code === 0) {
|
||||
window.open(e.data);
|
||||
} else {
|
||||
layer.msg(e.msg);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
//监听 表格复选框操作
|
||||
|
||||
|
||||
//重载form
|
||||
form.render();
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user