新增(移动)一些应该放在“管理”形成列表管理,而非放在“设置”形成单一配置的内容
This commit is contained in:
@@ -270,9 +270,7 @@
|
||||
openEditForm(json)
|
||||
}
|
||||
else {
|
||||
window.toastModule.errorLayer({
|
||||
msg: json.data || '服务器错误'
|
||||
});
|
||||
Dog.error()
|
||||
}
|
||||
}
|
||||
layui.table.on('tool(plans)', async function (obj) {
|
||||
@@ -282,24 +280,16 @@
|
||||
else if (obj.event == 'del') {
|
||||
layui.layer.confirm('确定删除该计划任务吗?', function (index) {
|
||||
layui.layer.close(index);
|
||||
const load = layui.layer.load(2);
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/plan/delete',
|
||||
method: 'POST',
|
||||
data: {planId: obj.data.planId},
|
||||
success: function (data) {
|
||||
layui.table.reload('plans', {
|
||||
page: {
|
||||
curr: $(".layui-laypage-em").next().html() //当前页码值
|
||||
}
|
||||
});
|
||||
layer.msg('删除成功', {offset: '15px', icon: 1, time: 1000})
|
||||
},
|
||||
error: function (res) {
|
||||
var r = res.responseJSON;
|
||||
layer.msg(r && r.data || '服务器错误',
|
||||
{offset: '15px', icon: 2, time: 2000});
|
||||
return
|
||||
}
|
||||
success: () => Dog.success({
|
||||
msg: '删除成功', onClose: () => Dog.reloadTable('plans')
|
||||
}),
|
||||
error: res => Dog.error({msg: res}),
|
||||
complete: () => layui.layer.close(load)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:insert="~{admin/v1/include::head}"
|
||||
th:with="title=${'计划任务管理'}">
|
||||
th:with="title=${'计划任务'}">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -10,7 +10,8 @@
|
||||
<div class="manage-body">
|
||||
<div>
|
||||
<h1 class="manage-title">
|
||||
<b>计划任务列表</b><a href="javascript:openNewForm()" class="operate">新增</a>
|
||||
<i class="fa-fw fa-regular fa-calendar"></i>
|
||||
<b>计划任务</b><a href="javascript:openNewForm()" class="operate">新增</a>
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
@@ -39,25 +40,19 @@
|
||||
})
|
||||
.use(['table', 'form', 'dropdown', 'layer', 'xmSelect', 'cron'], function(){
|
||||
var dropdown = layui.dropdown, table = layui.table, form = layui.form;
|
||||
function switchTemplet(d) {
|
||||
var fieldName = d.LAY_COL.field;
|
||||
return `<input type="checkbox" lay-skin="switch" lay-text="|"
|
||||
data-field="${fieldName}" data-id="${d.planId}"
|
||||
${d[fieldName] ? 'checked' : ''} lay-filter="switchFilter">`;
|
||||
}
|
||||
table.render({
|
||||
Helper.renderTable({
|
||||
elem: '#plans',
|
||||
url:'/admin/v1/manage/plan/list',
|
||||
page:true, skin:'line',
|
||||
idName: 'planId',
|
||||
baseUrl:'/admin/v1/manage/plan',
|
||||
cols: [ [
|
||||
{type:'checkbox'},
|
||||
{field:'enabled', title: '启用', width: 95, templet: switchTemplet},
|
||||
{field:'openDayCheck', title: '交易日校验', width: 95, templet: switchTemplet},
|
||||
{field:'enabled', title: '启用', width: 95, switchTemplet: true},
|
||||
{field:'openDayCheck', title: '交易日校验', width: 95, switchTemplet: true},
|
||||
{field:'planId', hide: true, width: 60, title: 'ID'},
|
||||
{field:'planName', title: '计划名称'},
|
||||
{field:'cronExpression', title: '计划表达式'},
|
||||
{field:'indexCode', title: '指标代码'},
|
||||
{field:'params', title: '请求参数',templet: function(d) {
|
||||
{field:'params', title: '请求参数', templet: function(d) {
|
||||
if (typeof d.params === 'object' && d.params !== null) {
|
||||
return Object.entries(d.params).map(([key, value]) => `${key}=${value}`).join(', ');
|
||||
}
|
||||
@@ -71,49 +66,15 @@
|
||||
}},
|
||||
{field:'operation', title: '操作', toolbar: '#operationTpl'}
|
||||
]]
|
||||
});
|
||||
form.on('switch(switchFilter)', function(obj) {
|
||||
console.log(obj);
|
||||
console.log(obj.elem.checked);
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/plan/updateBool',
|
||||
method: 'POST',
|
||||
data: {
|
||||
planId: obj.elem.dataset.id,
|
||||
field: obj.elem.dataset.field,
|
||||
value: obj.elem.checked
|
||||
},
|
||||
success: function () {
|
||||
layer.msg('操作成功', {
|
||||
offset: '15px',
|
||||
icon: 1,
|
||||
time: 1000
|
||||
},
|
||||
function() {}
|
||||
)
|
||||
},
|
||||
error: function (res) {
|
||||
var r = res.responseJSON;
|
||||
layer.msg(r && r.data || '服务器错误', {
|
||||
offset: '15px',
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
// 恢复 enabled 状态
|
||||
obj.elem.checked = !obj.elem.checked;
|
||||
layui.form.render('checkbox')
|
||||
return
|
||||
}
|
||||
})
|
||||
});
|
||||
})
|
||||
dropdown.render({
|
||||
elem: '.operdown',
|
||||
data: [
|
||||
{title: '删除'},
|
||||
{title: '启用', op: 'enable'},
|
||||
{title: '停用', op: 'disable'},
|
||||
{title: '开启交易日校验', op: 'enableOpenDayCheck'},
|
||||
{title: '关闭交易日校验', op: 'disableOpenDayCheck'}],
|
||||
{title: '删除', op: 'DELETE'},
|
||||
{title: '启用', op: 'ENABLE'},
|
||||
{title: '停用', op: 'DISABLE'},
|
||||
{title: '开启交易日校验', op: 'ENABLE_OPEN_DAY_CHECK'},
|
||||
{title: '关闭交易日校验', op: 'DISABLE_OPEN_DAY_CHECK'}],
|
||||
click: function (data, othis){
|
||||
var checked = layui.table.checkStatus('plans'), planIds = [];
|
||||
if (!checked.data.length) {
|
||||
@@ -124,7 +85,7 @@
|
||||
planIds.push(plan.planId);
|
||||
});
|
||||
data = $.extend(data, {ids: planIds});
|
||||
var op = function() {
|
||||
var op = async function() {
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/plan/batchOp',
|
||||
method: 'POST',
|
||||
@@ -155,7 +116,7 @@
|
||||
}
|
||||
})
|
||||
}
|
||||
data.op ? op() : layer.confirm('确认批量删除吗?该操作不可恢复', function(){
|
||||
data.op != 'DELETE' ? op() : layer.confirm('确认批量删除吗?该操作不可恢复', function(){
|
||||
op();
|
||||
})
|
||||
}
|
||||
|
||||
@@ -72,10 +72,7 @@ function openEditForm(r) {
|
||||
offset: 'r',
|
||||
content: $('#addProtocolMatch').html(),
|
||||
success: function(layero, layerIndex) {
|
||||
var el = $(layero);
|
||||
['protocolId', 'className'].forEach(x => {
|
||||
el.find(`[name="${x}"]`).val(r.data[x])
|
||||
});
|
||||
Helper.fillEditForm(r, layero, layerIndex);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<div th:fragment="proxyExtra">
|
||||
<script id="addProxySetting" type="text/html">
|
||||
<style>.layui-form-select dl{max-height: 160px}</style>
|
||||
<div class="layui-form" style="margin:10px 15px" id="editPlanForm" lay-filter="editPlanForm">
|
||||
<div class="layui-form-item">
|
||||
<input type="hidden" name="id"/>
|
||||
<label class="layui-form-label">代理名称<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="proxyName" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">代理类型<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<select name="proxyType" lay-filter="proxyTypeFilter">
|
||||
<option value="">选择代理类型</option>
|
||||
<option value="DIRECT">直连</option>
|
||||
<option value="HTTP">Http(s)</option>
|
||||
<option value="SOCKS">Socks</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">代理主机<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="proxyHost" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">代理端口<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="proxyPort" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">忽略 HTTPS 校验<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox"
|
||||
name="ignoreHttpsVerification" lay-skin="switch" lay-filter="ignoreHttpsVerification" lay-text="ON|OFF">
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none" class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit="*" lay-filter="submitProxySetting">提交</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
Helper.onSubmitForm('submitProxySetting', '/admin/v1/manage/proxySetting/save');
|
||||
function openEditForm(r) {
|
||||
if (r && r.ok) {
|
||||
window.editLayer = Helper.openR({
|
||||
title: `${r.data.id ? '编辑' : '新增'}代理设置`,
|
||||
btn: ['提交', '关闭'],
|
||||
yes: function (index, layero) {
|
||||
layero.find('[lay-filter="submitProxySetting"]').click()
|
||||
},
|
||||
content: $('#addProxySetting').html(),
|
||||
success: async function (layero, layerIndex) {
|
||||
Helper.fillEditForm(r, layero, layerIndex);
|
||||
}
|
||||
})
|
||||
}
|
||||
else Dog.error({
|
||||
msg: r && r.data || '服务器错误'
|
||||
});
|
||||
}
|
||||
async function openNewForm(id) {
|
||||
const json = await (await fetch((() => {
|
||||
const url = '/admin/v1/manage/proxySetting/getOne';
|
||||
if (id) return url + '?id=' + id;
|
||||
return url
|
||||
})())).json();
|
||||
if (json.ok) {
|
||||
openEditForm(json)
|
||||
}
|
||||
else {
|
||||
Dog.error()
|
||||
}
|
||||
}
|
||||
layui.table.on('tool(proxySettings)', async function (obj) {
|
||||
if (obj.event == 'edit') {
|
||||
openNewForm(obj.data.id)
|
||||
}
|
||||
else if (obj.event == 'del') {
|
||||
layui.layer.confirm('确定删除该代理配置吗?', function (index) {
|
||||
layui.layer.close(index);
|
||||
const load = layui.layer.load(2);
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/proxySetting/delete',
|
||||
method: 'POST',
|
||||
data: {id: obj.data.id},
|
||||
success: () => Dog.success({
|
||||
msg: '删除成功', onClose: () => Dog.reloadTable('proxySettings')
|
||||
}),
|
||||
error: res => Dog.error({msg: res}),
|
||||
complete: () => layui.layer.close(load)
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,138 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:insert="~{admin/v1/include::head}"
|
||||
th:with="title=${'代理设置'}">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<ul th:replace="~{admin/v1/include::nav}"></ul>
|
||||
|
||||
<div class="manage-body">
|
||||
<div>
|
||||
<h1 class="manage-title">
|
||||
<i class="fa-fw fa-regular fa-calendar"></i>
|
||||
<b>代理设置</b><a href="javascript:openNewForm()" class="operate">新增</a>
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-sm operdown">
|
||||
<span>选中项<i
|
||||
class="layui-icon layui-icon-sm layui-icon-triangle-d"></i></span>
|
||||
</button>
|
||||
<div>
|
||||
<table class="layui-table" id="proxySettings" lay-filter="proxySettings">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="~{admin/v1/include::feet}"></div>
|
||||
<script type="text/html" id="operationTpl">
|
||||
<div class="layui-btn-group">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
<th:block th:replace="~{admin/v1/include::head-script}"></th:block>
|
||||
<script th:inline="javascript">
|
||||
layui
|
||||
.extend({
|
||||
xmSelect: '/admin/v1/static/layuiadmin/lib/xm-select',
|
||||
cron: '/admin/v1/static/layuiadmin/lib/cron'
|
||||
})
|
||||
.use(['table', 'form', 'dropdown', 'layer', 'xmSelect', 'cron'], function(){
|
||||
var dropdown = layui.dropdown, table = layui.table, form = layui.form;
|
||||
table.render({
|
||||
elem: '#proxySettings',
|
||||
url:'/admin/v1/manage/proxySetting/list',
|
||||
page:true, skin:'line',
|
||||
cols: [ [
|
||||
{type:'checkbox'},
|
||||
{field:'id', hide: true, width: 60, title: 'ID'},
|
||||
{field:'proxyName', title: '名称'},
|
||||
{field:'proxyType', title: '类型'},
|
||||
{field:'proxyHost', title: '主机'},
|
||||
{field:'proxyPort', title: '端口'},
|
||||
{field:'ignoreHttpsVerification', title: '忽略 HTTPS 校验', width: 95, templet: Helper.tableSwitchTemplet('id')},
|
||||
{field:'operation', title: '操作', toolbar: '#operationTpl'}
|
||||
]]
|
||||
});
|
||||
form.on('switch(switchFilter)', function(obj) {
|
||||
console.log(obj);
|
||||
console.log(obj.elem.checked);
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/proxySetting/updateBool',
|
||||
method: 'POST',
|
||||
data: {
|
||||
id: obj.elem.dataset.id,
|
||||
field: obj.elem.dataset.field,
|
||||
value: obj.elem.checked
|
||||
},
|
||||
success: () => Dog.success({time: 1000}),
|
||||
error: function (res) {
|
||||
Dog.error({msg: res})
|
||||
// 恢复 enabled 状态
|
||||
obj.elem.checked = !obj.elem.checked;
|
||||
layui.form.render('checkbox')
|
||||
return
|
||||
}
|
||||
})
|
||||
});
|
||||
dropdown.render({
|
||||
elem: '.operdown',
|
||||
data: [
|
||||
{title: '删除', op: 'DELETE'},
|
||||
{title: '启用', op: 'ENABLE'},
|
||||
{title: '停用', op: 'DISABLE'},
|
||||
{title: '开启交易日校验', op: 'ENABLE_OPEN_DAY_CHECK'},
|
||||
{title: '关闭交易日校验', op: 'DISABLE_OPEN_DAY_CHECK'}],
|
||||
click: function (data, othis){
|
||||
var checked = layui.table.checkStatus('proxySettings'), planIds = [];
|
||||
if (!checked.data.length) {
|
||||
layui.layer.msg('未选中任何项', {time: 1000});
|
||||
return;
|
||||
}
|
||||
$.each(checked.data, function (i, plan){
|
||||
planIds.push(plan.planId);
|
||||
});
|
||||
data = $.extend(data, {ids: planIds});
|
||||
var op = async function() {
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/plan/batchOp',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: function () {
|
||||
layer.msg('批量操作成功', {
|
||||
offset: '15px',
|
||||
icon: 1,
|
||||
time: 1000
|
||||
},
|
||||
function() {
|
||||
layui.table.reload('proxySettings', {
|
||||
page: {
|
||||
curr: $(".layui-laypage-em").next().html() //当前页码值
|
||||
}
|
||||
});
|
||||
}
|
||||
)
|
||||
},
|
||||
error: function (res) {
|
||||
var r = res.responseJSON;
|
||||
layer.msg(r&&r.data||'服务器错误', {
|
||||
offset: '15px',
|
||||
icon: 2,
|
||||
time: 1000
|
||||
});
|
||||
return
|
||||
}
|
||||
})
|
||||
}
|
||||
data.op != 'DELETE' ? op() : layer.confirm('确认批量删除吗?该操作不可恢复', function(){
|
||||
op();
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<th:block th:replace="~{admin/v1/manage/proxySetting/include::proxyExtra}"></th:block>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,218 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<div th:fragment="requestInfoExtra">
|
||||
<script id="addRequestInfo" type="text/html">
|
||||
<style>.layui-form-select dl{max-height: 160px}</style>
|
||||
<div class="layui-form" style="margin:10px 15px" id="editRequestInfoForm" lay-filter="editRequestInfoForm">
|
||||
<div class="layui-form-item">
|
||||
<input type="hidden" name="id"/>
|
||||
<label class="layui-form-label">计划名称<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="name" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">匿名<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="checkbox" name="isAnonymous" lay-skin="switch" lay-filter="isAnonymous" checked lay-text="ON|OFF">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item non-anonymous">
|
||||
<label class="layui-form-label">用户名</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="username" placeholder="" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item non-anonymous">
|
||||
<label class="layui-form-label">密码</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="password" name="password" placeholder="" autocomplete="new-password" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">鉴权信息</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" readonly name="authorization" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">UID</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" readonly name="uid" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Android ID<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="androidId" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">设备名称<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="deviceName" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">指纹<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="fingerprint" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Software Type<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="softwareType" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Chrome 版本号<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="chromeVersion" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">益盟版本号<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="emoneyVersion" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">OkHttp UA<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="okHttpUserAgent" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Emapp-ViewMode<span>*</span></label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" lay-verify="required" name="emappViewMode" placeholder="" autocomplete="off" class="layui-input"/>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:none" class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit="*" lay-filter="submitRequestInfo">提交</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
Helper.onSubmitForm('submitRequestInfo', '/admin/v1/manage/requestInfo/save');
|
||||
function refreshAndroidId() {
|
||||
let androidIdEl = document.querySelector('[name="androidId"]');
|
||||
androidIdEl.value = Helper.randomHexString(16);
|
||||
}
|
||||
async function refreshDeviceInfo() {
|
||||
let deviceNameEl = document.querySelector('[name="deviceName"]');
|
||||
let fingerprintEl = document.querySelector('[name="fingerprint"]');
|
||||
let softwareTypeEl = document.querySelector('[name="softwareType"]');
|
||||
let json = await (await fetch('/admin/v1/config/emoneyRequest/getRandomDeviceInfo')).json();
|
||||
|
||||
if (!json.ok) {
|
||||
Dog.error({msg: json.message || '获取随机设备信息失败'});
|
||||
return
|
||||
}
|
||||
deviceNameEl.value = json.data.model;
|
||||
fingerprintEl.value = json.data.fingerprint;
|
||||
softwareTypeEl.value = json.data.deviceType;
|
||||
refreshAndroidId()
|
||||
}
|
||||
async function refreshChromeVersion() {
|
||||
let chromeVersionEl = document.querySelector('[name="chromeVersion"]');
|
||||
let json = await (await fetch('/admin/v1/config/emoneyRequest/getRandomChromeVersion')).json();
|
||||
|
||||
if (!json.ok) {
|
||||
Dog.error({msg: json.message || '获取随机 Chrome Version 失败'});
|
||||
return
|
||||
}
|
||||
chromeVersionEl.value = json.data;
|
||||
}
|
||||
function openEditForm(r, done) {
|
||||
if (done && typeof done === 'function') done(r);
|
||||
if (r && r.ok) {
|
||||
window.editLayer = Helper.openR({
|
||||
title: `${r.data.id ? '编辑' : '新增'}请求信息`,
|
||||
btn: ['随机设备信息', '随机 Chrome 版本', r.data.id ? '编辑' : '新增'],
|
||||
btn1: () => refreshDeviceInfo() && !1,
|
||||
btn2: () => refreshChromeVersion() && !1,
|
||||
btn3: (_, o) => o.find('[lay-filter="submitRequestInfo"]').click() && !1,
|
||||
content: $('#addRequestInfo').html(),
|
||||
success: async function (layero, layerIndex) {
|
||||
Helper.setLayerMainBtn(layero, -1);
|
||||
var el = $(layero), extraSwitchFuncs = [];
|
||||
// 覆写 isAnonymous
|
||||
extraSwitchFuncs.isAnonymous = function (obj) {
|
||||
const checked = obj.elem.value = obj.elem.checked;
|
||||
const nonAnonymouses = document.querySelectorAll('.non-anonymous');
|
||||
nonAnonymouses.forEach(non => {
|
||||
if (!checked) {
|
||||
// 非匿名,那 username/password 等就需要选必选
|
||||
if (!non.querySelector('label>span')) {
|
||||
$(non).children('label').append('<span>*</span>');
|
||||
}
|
||||
const input = $(non).find('input:first');
|
||||
input.attr('lay-verify', 'required');
|
||||
}
|
||||
else {
|
||||
$(non).children('label').children('span').remove();
|
||||
$(non).find('lay-verify').removeAttr('lay-verify');
|
||||
}
|
||||
});
|
||||
};
|
||||
Helper.fillEditForm(r, layero, layerIndex, extraSwitchFuncs);
|
||||
layui.event.call(this, 'form', 'switch(isAnonymous)', {
|
||||
elem: el[0].querySelector('[name="isAnonymous"]'),
|
||||
value: r.data.isAnonymous == 'true' || r.data.isAnonymous == true
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
else Dog.error({
|
||||
msg: r && r.data || '服务器错误'
|
||||
});
|
||||
}
|
||||
async function openNewRequestInfoForm(id, done) {
|
||||
const json = await (await fetch((() => {
|
||||
const url = '/admin/v1/manage/requestInfo/getOne';
|
||||
if (id) return url + '?id=' + id;
|
||||
return url
|
||||
})())).json();
|
||||
if (json.ok) {
|
||||
openEditForm(json, done)
|
||||
}
|
||||
else {
|
||||
window.toastModule.errorLayer({
|
||||
msg: json.data || '服务器错误'
|
||||
});
|
||||
}
|
||||
}
|
||||
layui.table.on('tool(requestInfos)', async function (obj) {
|
||||
if (obj.event == 'edit') {
|
||||
openNewRequestInfoForm(obj.data.id)
|
||||
}
|
||||
else if (obj.event == 'copy') {
|
||||
openNewRequestInfoForm(obj.data.id, r => {
|
||||
r.data.id = null
|
||||
})
|
||||
}
|
||||
else if (obj.event == 'del') {
|
||||
layui.layer.confirm('确定删除该请求配置吗?', function (index) {
|
||||
layui.layer.close(index);
|
||||
const load = layui.layer.load(2);
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/requestInfo/delete',
|
||||
method: 'POST',
|
||||
data: {id: obj.data.id},
|
||||
success: () => Dog.success({
|
||||
msg: '删除成功', onClose: () => Dog.reloadTable('requestInfos')
|
||||
}),
|
||||
error: res => Dog.error({msg: res}),
|
||||
complete: () => layui.layer.close(load)
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</div>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,98 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:insert="~{admin/v1/include::head}" th:with="title=${'计划任务管理'}">
|
||||
</head>
|
||||
<style>
|
||||
.layui-form-item:after {
|
||||
clear: unset;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<ul th:replace="~{admin/v1/include::nav}"></ul>
|
||||
|
||||
<div class="manage-body">
|
||||
<div>
|
||||
<h1 class="manage-title">
|
||||
<b>请求信息管理</b><a href="javascript:openNewRequestInfoForm()"
|
||||
class="operate">新增</a>
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
<button class="layui-btn layui-btn-sm operdown">
|
||||
<span>选中项<i
|
||||
class="layui-icon layui-icon-sm layui-icon-triangle-d"></i></span>
|
||||
</button>
|
||||
<div>
|
||||
<table class="layui-table" id="requestInfos"
|
||||
lay-filter="requestInfos">
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div th:replace="~{admin/v1/include::feet}"></div>
|
||||
<script type="text/html" id="operationTpl">
|
||||
<div class="layui-btn-group">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="copy">复制</a>
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
|
||||
</div>
|
||||
</script>
|
||||
<th:block th:replace="~{admin/v1/include::head-script}"></th:block>
|
||||
<script th:inline="javascript">
|
||||
layui
|
||||
.use(['table', 'form', 'dropdown', 'layer'], function(){
|
||||
var dropdown = layui.dropdown, table = layui.table, form = layui.form;
|
||||
Helper.renderTable({
|
||||
elem: '#requestInfos',
|
||||
baseUrl: '/admin/v1/manage/requestInfo',
|
||||
idName: 'id',
|
||||
cols: [ [
|
||||
{type:'checkbox'},
|
||||
{field:'id', width: 60, title: 'ID'},
|
||||
{field:'name', title: '名称'},
|
||||
{field:'isAnonymous', title: '匿名', width: 95, switchTemplet: true},
|
||||
{field:'username', title: '用户名', width: 95},
|
||||
{field:'uid', title: 'UID'},
|
||||
{field:'androidVersion', title: '安卓版本'},
|
||||
{field:'emoneyVersion', title: '益盟版本'},
|
||||
{field:'operation', title: '操作', toolbar: '#operationTpl'}
|
||||
]]
|
||||
})
|
||||
dropdown.render({
|
||||
elem: '.operdown',
|
||||
data: [
|
||||
{title: '删除', op: 'DELETE'},
|
||||
{title: '启用', op: 'enable'},
|
||||
{title: '停用', op: 'disable'},
|
||||
{title: '开启交易日校验', op: 'enableOpenDayCheck'},
|
||||
{title: '关闭交易日校验', op: 'disableOpenDayCheck'}],
|
||||
click: function (data, othis){
|
||||
var checked = layui.table.checkStatus('requestInfos'), requestInfoIds = [];
|
||||
if (!checked.data.length) {
|
||||
Dog.error({msg: '未选中任何项', time: 1000});
|
||||
return;
|
||||
}
|
||||
$.each(checked.data, function (i, requestInfo){
|
||||
requestInfoIds.push(requestInfo.id);
|
||||
});
|
||||
data = $.extend(data, {ids: requestInfoIds});
|
||||
var op = function() {
|
||||
$.ajax({
|
||||
url: '/admin/v1/manage/requestInfo/batchOp',
|
||||
method: 'POST',
|
||||
data: data,
|
||||
success: () => Dog.success({msg: '批量操作成功', onClose: () => Dog.reloadTable('plans')}),
|
||||
error: res => Dog.error({msg: res, time: 1000})
|
||||
})
|
||||
}
|
||||
data.op !== 'DELETE' ? op() : layer.confirm('确认批量删除吗?该操作不可恢复', function(){
|
||||
op();
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
</script>
|
||||
<th:block
|
||||
th:replace="~{/admin/v1/manage/requestInfo/include::requestInfoExtra}"></th:block>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Reference in New Issue
Block a user