签到与活动配置:后台配置接口、用户签到流程、UserEntity 扩展
This commit is contained in:
+236
-198
@@ -1,4 +1,4 @@
|
||||
|
||||
|
||||
<title>签到配置</title>
|
||||
|
||||
<div class="layui-card layadmin-header">
|
||||
@@ -11,6 +11,33 @@
|
||||
|
||||
<div class="layui-fluid">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">基础配置</div>
|
||||
<div class="layui-card-body">
|
||||
<form class="layui-form" lay-filter="sign-form">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">是否开启</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="checkbox" name="isOpen" lay-skin="switch" lay-text="开启|关闭">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">不可中断</label>
|
||||
<div class="layui-input-inline" style="line-height:38px;">
|
||||
<input type="checkbox" name="cannotInterrupt" lay-skin="switch" lay-text="勾选|未勾选">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux">勾选=漏签不回退(按累计次数循环1~7);未勾选=漏签重置回第1天</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="layui-btn" lay-submit lay-filter="save-base">保存基础配置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">7 日签到奖励</div>
|
||||
<div class="layui-card-body">
|
||||
<table id="table-sign" lay-filter="table-sign"></table>
|
||||
</div>
|
||||
@@ -20,17 +47,16 @@
|
||||
<script type="text/html" id="toolbar-sign">
|
||||
<div class="layui-btn-container">
|
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" lay-filter="init-sign"><i class="layui-icon layui-icon-refresh"></i> 初始化配置</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-filter="add-sign"><i class="layui-icon layui-icon-add-1"></i> 添加天数</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-filter="save-sign"><i class="layui-icon layui-icon-ok"></i> 保存配置</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-warm" lay-filter="reload-sign"><i class="layui-icon layui-icon-refresh"></i> 刷新</button>
|
||||
<button class="layui-btn layui-btn-sm" lay-filter="add-sign">添加</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-danger" lay-filter="batchdel-sign">批量删除</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="saveAct('SignConfigs')"><i class="layui-icon layui-icon-export"></i> 保存到初始化文件</button>
|
||||
<button class="layui-btn layui-btn-sm layui-btn-normal" onclick="saveAct('SignActivityConfig')"><i class="layui-icon layui-icon-export"></i> 保存到初始化文件</button>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="table-operate">
|
||||
<script type="text/html" id="bar-sign">
|
||||
<a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i>编辑</a>
|
||||
<a class="layui-btn layui-btn-xs" lay-event="preview"><i class="layui-icon layui-icon-search"></i>预览</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i>删除</a>
|
||||
</script>
|
||||
|
||||
@@ -49,6 +75,10 @@
|
||||
.icon-upload-preview:hover { border-color: #009688; }
|
||||
.icon-upload-preview img { max-width: 100%; max-height: 100%; }
|
||||
.icon-upload-preview .placeholder { color: #999; font-size: 12px; text-align: center; }
|
||||
.gift-row { display: flex; align-items: center; margin-bottom: 6px; }
|
||||
.gift-row .layui-input, .gift-row select { height: 32px; }
|
||||
.gift-row .gr-count { width: 110px; margin: 0 6px; }
|
||||
.gift-row .gr-oid { width: 150px; margin-right: 6px; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
@@ -61,6 +91,7 @@
|
||||
setter = layui.setter;
|
||||
|
||||
var activityConfig = null;
|
||||
var typeMap = { 1: '金币', 2: '钻石', 3: '道具' };
|
||||
|
||||
setTimeout(function() {
|
||||
if (window.parent && window.parent.$ && window.parent.layer) {
|
||||
@@ -71,43 +102,104 @@
|
||||
layer.closeAll();
|
||||
}, 100);
|
||||
|
||||
function sign() {
|
||||
if (!activityConfig) activityConfig = {};
|
||||
if (!activityConfig.signActivityConfig) activityConfig.signActivityConfig = { isOpen: true, cannotInterrupt: false, days: [] };
|
||||
if (!activityConfig.signActivityConfig.days) activityConfig.signActivityConfig.days = [];
|
||||
return activityConfig.signActivityConfig;
|
||||
}
|
||||
|
||||
function loadConfig() {
|
||||
admin.req({
|
||||
method: "get",
|
||||
url: setter.baseurl + "adminapi/ActivityConfig/Get",
|
||||
done: function (res) {
|
||||
if (res.code === 0 && res.data) {
|
||||
activityConfig = res.data;
|
||||
renderTable();
|
||||
activityConfig = (res.code === 0 && res.data) ? res.data : { signActivityConfig: {} };
|
||||
initForm();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function initForm() {
|
||||
var s = sign();
|
||||
$('input[name="isOpen"]').prop('checked', !!s.isOpen);
|
||||
$('input[name="cannotInterrupt"]').prop('checked', !!s.cannotInterrupt);
|
||||
form.render();
|
||||
renderTable();
|
||||
}
|
||||
|
||||
function save(msg) {
|
||||
var s = sign();
|
||||
s.isOpen = $('input[name="isOpen"]')[0].checked;
|
||||
s.cannotInterrupt = $('input[name="cannotInterrupt"]')[0].checked;
|
||||
admin.req({
|
||||
method: "post",
|
||||
contentType: "application/json;charset=UTF-8",
|
||||
url: setter.baseurl + "adminapi/ActivityConfig/UpdateSign",
|
||||
data: JSON.stringify(s),
|
||||
done: function (res) {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
layer.msg(msg || '保存成功');
|
||||
loadConfig();
|
||||
} else {
|
||||
layer.msg(res.info || '保存失败');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function giftText(list) {
|
||||
if (!list || !list.length) return '<span style="color:#999;">未配置</span>';
|
||||
return list.map(function (g) {
|
||||
var t = typeMap[g.type] || '金币';
|
||||
var oid = (g.type === 3 && g.otherId) ? ('(' + g.otherId + ')') : '';
|
||||
return t + '×' + (g.count || 0) + oid;
|
||||
}).join('、');
|
||||
}
|
||||
|
||||
function renderTable() {
|
||||
table.render({
|
||||
elem: '#table-sign',
|
||||
data: activityConfig ? activityConfig.signConfigs || [] : [],
|
||||
data: sign().days || [],
|
||||
page: false,
|
||||
cols: [[
|
||||
{ type: 'checkbox', fixed: 'left' },
|
||||
{ field: "order", title: "排序", width: 70, edit: 'text' },
|
||||
{ field: "name", title: "名称", width: 100, edit: 'text' },
|
||||
{ field: "gold", title: "金币", width: 100, edit: 'text' },
|
||||
{ field: "probability", title: "概率", width: 100, edit: 'text' },
|
||||
{ field: "icon", title: "图标", width: 100, templet: '#tpl-icon' },
|
||||
{ title: "操作", width: 180, fixed: 'right', toolbar: '#table-operate' }
|
||||
{ field: "day", title: "第几天", width: 80, sort: true },
|
||||
{ field: "name", title: "名称", width: 140 },
|
||||
{ field: "icon", title: "图标", width: 90, templet: '#tpl-icon' },
|
||||
{ title: "奖励", templet: function (d) { return giftText(d.giftList); } },
|
||||
{ title: "操作", width: 160, fixed: 'right', toolbar: '#bar-sign' }
|
||||
]],
|
||||
toolbar: '#toolbar-sign',
|
||||
defaultToolbar: ['filter', 'exports', 'print']
|
||||
});
|
||||
}
|
||||
|
||||
function initConfig() {
|
||||
layer.confirm('确定要从配置文件还原签到配置吗?', function(idx) {
|
||||
form.on('submit(save-base)', function () { save('保存成功'); return false; });
|
||||
|
||||
$(document).on('click', '[lay-filter="reload-sign"]', function () {
|
||||
loadConfig();
|
||||
layer.msg('刷新成功');
|
||||
});
|
||||
|
||||
$(document).on('click', '[lay-filter="save-sign"]', function () { save('保存成功'); });
|
||||
|
||||
$(document).on('click', '[lay-filter="add-sign"]', function () {
|
||||
var days = sign().days || [];
|
||||
var max = days.length ? Math.max.apply(null, days.map(function (d) { return d.day || 0; })) : 0;
|
||||
showDayEdit({ day: max + 1, name: '第' + (max + 1) + '天', icon: '', giftList: [] }, true, -1);
|
||||
});
|
||||
|
||||
$(document).on('click', '[lay-filter="init-sign"]', function () {
|
||||
if (window.parent && window.parent.$ && window.parent.layer) {
|
||||
window.parent.$('.layui-layer-shade').remove();
|
||||
window.parent.layer.closeAll();
|
||||
}
|
||||
layer.confirm('确定要从配置文件还原签到配置吗?', function (idx) {
|
||||
layer.close(idx);
|
||||
admin.req({
|
||||
method: "get",
|
||||
url: setter.baseurl + "adminapi/GameConfig/InitActivitySection/SignConfigs",
|
||||
url: setter.baseurl + "adminapi/GameConfig/InitActivitySection/SignActivityConfig",
|
||||
done: function (res) {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
layer.msg('初始化成功');
|
||||
@@ -116,48 +208,14 @@
|
||||
layer.msg(res.info || '初始化失败');
|
||||
}
|
||||
},
|
||||
fail: function(res) {
|
||||
fail: function (res) {
|
||||
layer.msg(res.info || '初始化失败');
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '[lay-filter="init-sign"]', function() {
|
||||
if (window.parent && window.parent.$ && window.parent.layer) {
|
||||
window.parent.$('.layui-layer-shade').remove();
|
||||
window.parent.layer.closeAll();
|
||||
}
|
||||
initConfig();
|
||||
});
|
||||
|
||||
$(document).on('click', '[lay-filter="reload-sign"]', function() {
|
||||
loadConfig();
|
||||
layer.msg('刷新成功');
|
||||
});
|
||||
|
||||
$(document).on('click', '[lay-filter="save-sign"]', function() {
|
||||
if (window.parent && window.parent.$ && window.parent.layer) {
|
||||
window.parent.$('.layui-layer-shade').remove();
|
||||
window.parent.layer.closeAll();
|
||||
}
|
||||
admin.req({
|
||||
method: "post",
|
||||
contentType: "application/json;charset=UTF-8",
|
||||
url: setter.baseurl + "adminapi/ActivityConfig/UpdateSign",
|
||||
data: JSON.stringify(activityConfig.signConfigs || []),
|
||||
done: function (res) {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
layer.msg('保存成功');
|
||||
loadConfig();
|
||||
} else {
|
||||
layer.msg(res.info || '保存失败');
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
window.previewImage = function(url) {
|
||||
window.previewImage = function (url) {
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: '图片预览',
|
||||
@@ -167,75 +225,87 @@
|
||||
});
|
||||
};
|
||||
|
||||
function updateDataByTable(obj) {
|
||||
var field = obj.field;
|
||||
var value = obj.value;
|
||||
table.on('tool(table-sign)', function (obj) {
|
||||
var data = obj.data;
|
||||
|
||||
if (field === 'gold') {
|
||||
data[field] = parseInt(value) || 0;
|
||||
} else if (field === 'probability') {
|
||||
data[field] = parseFloat(value) || 0;
|
||||
} else {
|
||||
data[field] = value;
|
||||
}
|
||||
}
|
||||
|
||||
table.on('edit(table-sign)', function(obj){
|
||||
updateDataByTable(obj);
|
||||
});
|
||||
|
||||
table.on('tool(table-sign)', function(obj) {
|
||||
var data = obj.data;
|
||||
var trIndex = activityConfig && activityConfig.signConfigs
|
||||
? activityConfig.signConfigs.findIndex(function(x) { return x.order === data.order; }) : -1;
|
||||
var days = sign().days || [];
|
||||
var idx = days.findIndex(function (x) { return x.day === data.day; });
|
||||
if (idx < 0) return;
|
||||
|
||||
if (obj.event === 'edit') {
|
||||
showEditDialog(trIndex > -1 ? activityConfig.signConfigs[trIndex] : data, false, trIndex);
|
||||
showDayEdit(days[idx], false, idx);
|
||||
} else if (obj.event === 'del') {
|
||||
layer.confirm('确定删除该配置吗?', function(idx) {
|
||||
if (trIndex >= 0 && activityConfig && activityConfig.signConfigs) {
|
||||
activityConfig.signConfigs.splice(trIndex, 1);
|
||||
}
|
||||
obj.del();
|
||||
layer.close(idx);
|
||||
layer.confirm('确定删除第' + data.day + '天配置吗?', function (i) {
|
||||
days.splice(idx, 1);
|
||||
layer.close(i);
|
||||
save('删除成功');
|
||||
});
|
||||
} else if (obj.event === 'preview') {
|
||||
if (data.icon) {
|
||||
previewImage(data.icon);
|
||||
} else {
|
||||
layer.msg('暂无图片');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function showAddDialog() {
|
||||
var newData = {
|
||||
order: 0,
|
||||
name: '',
|
||||
gold: 0,
|
||||
probability: 0,
|
||||
icon: ''
|
||||
};
|
||||
showEditDialog(newData, true);
|
||||
}
|
||||
|
||||
$(document).on('click', '[lay-filter="add-sign"]', function() {
|
||||
showAddDialog();
|
||||
$(document).on('click', '[lay-filter="batchdel-sign"]', function () {
|
||||
var checkData = table.checkStatus('table-sign').data;
|
||||
if (checkData.length === 0) return layer.msg('请选择要删除的数据');
|
||||
layer.confirm('确定删除选中 ' + checkData.length + ' 条数据吗?', function (idx) {
|
||||
var daySet = checkData.map(function (item) { return item.day; });
|
||||
var s = sign();
|
||||
s.days = (s.days || []).filter(function (item) { return daySet.indexOf(item.day) < 0; });
|
||||
layer.close(idx);
|
||||
save('删除成功');
|
||||
});
|
||||
});
|
||||
|
||||
function showEditDialog(data, isAdd, rowIndex) {
|
||||
var dialogTitle = isAdd ? '添加签到配置' : '编辑签到配置';
|
||||
// ==================== 天数编辑弹窗(含奖励编辑) ====================
|
||||
function giftRowHtml(g) {
|
||||
g = g || { type: 1, count: 0, otherId: '' };
|
||||
var oidStyle = g.type === 3 ? '' : 'display:none;';
|
||||
return '<div class="gift-row">' +
|
||||
'<select class="gr-type" style="width:90px;">' +
|
||||
'<option value="1">金币</option><option value="2">钻石</option><option value="3">道具</option>' +
|
||||
'</select>' +
|
||||
'<input type="number" class="layui-input gr-count" placeholder="数量" value="' + (g.count || 0) + '">' +
|
||||
'<input type="text" class="layui-input gr-oid" style="' + oidStyle + '" placeholder="道具编号" value="' + (g.otherId || '') + '">' +
|
||||
'<button type="button" class="layui-btn layui-btn-sm layui-btn-danger gr-del">删除</button>' +
|
||||
'</div>';
|
||||
}
|
||||
|
||||
function bindGiftRows(container) {
|
||||
container.off('change', '.gr-type').on('change', '.gr-type', function () {
|
||||
var isProp = $(this).val() === '3';
|
||||
$(this).closest('.gift-row').find('.gr-oid').toggle(isProp);
|
||||
});
|
||||
container.off('click', '.gr-del').on('click', '.gr-del', function () {
|
||||
$(this).closest('.gift-row').remove();
|
||||
});
|
||||
container.off('click', '.gr-add').on('click', '.gr-add', function () {
|
||||
container.find('#giftRows').append(giftRowHtml({ type: 1, count: 0, otherId: '' }));
|
||||
});
|
||||
}
|
||||
|
||||
function collectGiftRows(container) {
|
||||
var list = [];
|
||||
container.find('.gift-row').each(function () {
|
||||
var t = parseInt($(this).find('.gr-type').val()) || 1;
|
||||
var c = parseInt($(this).find('.gr-count').val()) || 0;
|
||||
var oid = t === 3 ? ($(this).find('.gr-oid').val() || '') : '';
|
||||
list.push({ type: t, count: c, otherId: oid });
|
||||
});
|
||||
return list;
|
||||
}
|
||||
|
||||
function showDayEdit(data, isAdd, rowIndex) {
|
||||
var imagePreviewHtml = data.icon
|
||||
? '<img src="' + data.icon + '" style="max-width:100%;max-height:100%;">'
|
||||
: '<div class="placeholder">点击上传</div>';
|
||||
|
||||
var rowsHtml = '';
|
||||
(data.giftList || []).forEach(function (g) { rowsHtml += giftRowHtml(g); });
|
||||
|
||||
var html = '<div style="padding:20px;">' +
|
||||
'<form class="layui-form">' +
|
||||
'<div class="layui-form-item">' +
|
||||
'<label class="layui-form-label">排序</label>' +
|
||||
'<label class="layui-form-label">第几天</label>' +
|
||||
'<div class="layui-input-block">' +
|
||||
'<input type="number" name="order" value="' + (data.order || 0) + '" class="layui-input">' +
|
||||
'<input type="number" name="day" value="' + (data.day || 1) + '" class="layui-input" ' + (isAdd ? '' : 'readonly') + '>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="layui-form-item">' +
|
||||
@@ -244,27 +314,23 @@
|
||||
'<input type="text" name="name" value="' + (data.name || '') + '" class="layui-input">' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="layui-form-item">' +
|
||||
'<label class="layui-form-label">金币</label>' +
|
||||
'<div class="layui-input-block">' +
|
||||
'<input type="number" name="gold" value="' + (data.gold || 0) + '" class="layui-input">' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="layui-form-item">' +
|
||||
'<label class="layui-form-label">概率</label>' +
|
||||
'<div class="layui-input-block">' +
|
||||
'<input type="number" name="probability" value="' + (data.probability || 0) + '" class="layui-input">' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="layui-form-item">' +
|
||||
'<label class="layui-form-label">图标</label>' +
|
||||
'<div class="layui-input-block">' +
|
||||
'<div class="icon-upload-box">' +
|
||||
'<div class="icon-upload-preview" id="iconPreview">' + imagePreviewHtml + '</div>' +
|
||||
'<input type="file" class="upload-btn" accept="image/png" id="iconUpload">' +
|
||||
'<input type="file" class="upload-btn" accept="image/*" id="iconUpload">' +
|
||||
'</div>' +
|
||||
'<input type="hidden" name="icon" id="iconInput" value="' + (data.icon || '') + '">' +
|
||||
'<div style="margin-top:8px;color:#999;font-size:12px;">点击图片可预览,仅支持 PNG 格式</div>' +
|
||||
'<div style="margin-top:8px;color:#999;font-size:12px;">点击图片可预览</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'<div class="layui-form-item">' +
|
||||
'<label class="layui-form-label">奖励</label>' +
|
||||
'<div class="layui-input-block">' +
|
||||
'<div id="giftRows">' + rowsHtml + '</div>' +
|
||||
'<button type="button" class="layui-btn layui-btn-sm layui-btn-normal gr-add" style="margin-top:6px;"><i class="layui-icon layui-icon-add-1"></i> 新增奖励</button>' +
|
||||
'<div style="color:#999;font-size:12px;margin-top:4px;">类型选“道具”时需填写道具编号</div>' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</form>' +
|
||||
@@ -272,106 +338,78 @@
|
||||
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: dialogTitle,
|
||||
area: ['600px', '500px'],
|
||||
title: isAdd ? '添加天数配置' : '编辑天数配置',
|
||||
area: ['620px', '560px'],
|
||||
content: html,
|
||||
btn: ['保存', '取消'],
|
||||
shadeClose: true,
|
||||
success: function(layero) {
|
||||
success: function (layero) {
|
||||
// 初始化每个奖励行的类型下拉
|
||||
(data.giftList || []).forEach(function (g, i) {
|
||||
var row = layero.find('.gift-row').eq(i);
|
||||
row.find('.gr-type').val(g.type || 1);
|
||||
row.find('.gr-oid').toggle((g.type || 1) === 3);
|
||||
});
|
||||
bindGiftRows(layero);
|
||||
|
||||
var $preview = layero.find('#iconPreview');
|
||||
var $input = layero.find('#iconInput');
|
||||
var $fileInput = layero.find('#iconUpload');
|
||||
|
||||
$preview.on('click', function() {
|
||||
$preview.on('click', function () {
|
||||
var url = $input.val();
|
||||
if (url) {
|
||||
previewImage(url);
|
||||
}
|
||||
if (url) previewImage(url);
|
||||
});
|
||||
|
||||
$fileInput.on('change', function() {
|
||||
layero.find('#iconUpload').on('change', function () {
|
||||
var file = this.files[0];
|
||||
if (file) {
|
||||
var order = layero.find('input[name="order"]').val();
|
||||
if (!order && isAdd) {
|
||||
layer.msg('请先填写排序编号');
|
||||
$(this).val('');
|
||||
return;
|
||||
}
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
formData.append('number', order);
|
||||
|
||||
$.ajax({
|
||||
url: setter.baseurl + 'adminapi/ImageUpload/upload/config',
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
headers: { 'token': layui.data(setter.tableName)[setter.request.tokenName] },
|
||||
success: function(res) {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
var path = res.data.path;
|
||||
$input.val(path);
|
||||
$preview.html('<img src="' + path + '" style="max-width:100%;max-height:100%;">');
|
||||
layer.msg('上传成功');
|
||||
} else {
|
||||
layer.msg(res.info || '上传失败');
|
||||
}
|
||||
},
|
||||
error: function() {
|
||||
layer.msg('上传失败');
|
||||
if (!file) return;
|
||||
var formData = new FormData();
|
||||
formData.append('file', file);
|
||||
$.ajax({
|
||||
url: setter.baseurl + 'adminapi/ImageUpload/upload/temp',
|
||||
type: 'POST',
|
||||
data: formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
headers: { 'token': layui.data(setter.tableName)[setter.request.tokenName] },
|
||||
success: function (res) {
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
var path = res.data.path;
|
||||
$input.val(path);
|
||||
$preview.html('<img src="' + path + '" style="max-width:100%;max-height:100%;">');
|
||||
layer.msg('上传成功');
|
||||
} else {
|
||||
layer.msg(res.info || '上传失败');
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
error: function () { layer.msg('上传失败'); }
|
||||
});
|
||||
});
|
||||
},
|
||||
yes: function(index, layero) {
|
||||
yes: function (index, layero) {
|
||||
var day = parseInt(layero.find('input[name="day"]').val()) || data.day;
|
||||
if (day <= 0) { layer.msg('请填写正确的天数'); return; }
|
||||
var item = {
|
||||
day: day,
|
||||
name: layero.find('input[name="name"]').val() || ('第' + day + '天'),
|
||||
icon: layero.find('input[name="icon"]').val(),
|
||||
giftList: collectGiftRows(layero)
|
||||
};
|
||||
var s = sign();
|
||||
if (!s.days) s.days = [];
|
||||
if (isAdd) {
|
||||
var newItem = {
|
||||
order: parseInt(layero.find('input[name="order"]').val()) || 0,
|
||||
name: layero.find('input[name="name"]').val(),
|
||||
gold: parseInt(layero.find('input[name="gold"]').val()) || 0,
|
||||
probability: parseFloat(layero.find('input[name="probability"]').val()) || 0,
|
||||
icon: layero.find('input[name="icon"]').val()
|
||||
};
|
||||
if (!activityConfig.signConfigs) activityConfig.signConfigs = [];
|
||||
activityConfig.signConfigs.unshift(newItem);
|
||||
if (s.days.some(function (x) { return x.day === item.day; })) { layer.msg('该天数已存在'); return; }
|
||||
s.days.push(item);
|
||||
} else if (rowIndex > -1) {
|
||||
var original = activityConfig.signConfigs[rowIndex];
|
||||
original.order = parseInt(layero.find('input[name="order"]').val()) || 0;
|
||||
original.name = layero.find('input[name="name"]').val();
|
||||
original.gold = parseInt(layero.find('input[name="gold"]').val()) || 0;
|
||||
original.probability = parseFloat(layero.find('input[name="probability"]').val()) || 0;
|
||||
original.icon = layero.find('input[name="icon"]').val();
|
||||
s.days[rowIndex] = item;
|
||||
}
|
||||
layer.close(index);
|
||||
table.reload('table-sign', {
|
||||
data: activityConfig.signConfigs || []
|
||||
});
|
||||
save(isAdd ? '添加成功' : '保存成功');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$(document).on('click', '[lay-filter="batchdel-sign"]', function() {
|
||||
var checkStatus = table.checkStatus('table-sign');
|
||||
var checkData = checkStatus.data;
|
||||
if (checkData.length === 0) {
|
||||
return layer.msg('请选择要删除的数据');
|
||||
}
|
||||
layer.confirm('确定删除选中 ' + checkData.length + ' 条数据吗?', function(idx) {
|
||||
var orders = checkData.map(function(item) { return item.order; });
|
||||
if (activityConfig && activityConfig.signConfigs) {
|
||||
activityConfig.signConfigs = activityConfig.signConfigs.filter(function(item) {
|
||||
return !orders.includes(item.order);
|
||||
});
|
||||
}
|
||||
renderTable();
|
||||
layer.close(idx);
|
||||
});
|
||||
});
|
||||
|
||||
window.saveAct=function(n){layui.admin.req({method:'get',url:(layui.setter.baseurl||'/')+'adminapi/ActivityConfig/SaveSection/'+n,done:function(r){layui.layer.msg(r.info||(r.code===0?'保存成功':'保存失败'))}})}
|
||||
window.saveAct = function (n) { layui.admin.req({ method: 'get', url: (layui.setter.baseurl || '/') + 'adminapi/ActivityConfig/SaveSection/' + n, done: function (r) { layui.layer.msg(r.info || (r.code === 0 ? '保存成功' : '保存失败')) } }) }
|
||||
|
||||
loadConfig();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user