HaniBlindBox/server/php/app/admin/view/Diamond/index.html
2026-01-01 20:46:07 +08:00

429 lines
22 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{include file="Public:header3"/}
<body>
<div class="layui-fluid" style="padding-top: 15px;">
<div class="layui-card">
<div class="layui-form layui-card-header layuiadmin-card-header-auto" style="height: 84px;">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline" style="width: 300px;margin-left: 0px">
<input type="text" name="name" id="name" placeholder="请输入商品名称" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline" style="width: 180px;margin-left: 0px">
<select name="status" id="status" style="width:100%">
<option value="">--请选择状态--</option>
<option value="1">启用</option>
<option value="0">禁用</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layuiadmin-btn-useradmin" id="searchBtn">
<i class="layui-icon layui-icon-search layuiadmin-button-btn"></i>
</button>
<button class="layui-btn" id="addBtn">添加钻石商品</button>
</div>
</div>
</div>
<div class="layui-card-body">
<table id="diamondTable" lay-filter="diamondTable"></table>
</div>
</div>
</div>
<!-- 商品状态模板 -->
<script type="text/html" id="statusTpl">
<input type="checkbox" name="status" lay-skin="switch" lay-filter="statusSwitch" lay-text="启用|禁用" value="{{d.id}}" {{# if(d.status == 1){ }}checked{{# } }}>
</script>
<!-- 是否首充模板 -->
<script type="text/html" id="isFirstTpl">
{{# if(d.is_first == 1){ }}
<button class="layui-btn layui-btn-warm layui-btn-radius layui-btn-sm"></button>
{{# } else { }}
<button class="layui-btn layui-btn-primary layui-btn-radius layui-btn-sm"></button>
{{# } }}
</script>
<!-- 图片模板 -->
<script type="text/html" id="imageTpl">
{{# if(d.normal_image){ }}
<img src="{{d.normal_image}}" style="max-width: 80px; max-height: 80px;">
{{# } }}
</script>
<!-- 操作栏模板 -->
<script type="text/html" id="toolbarTpl">
<a style="text-decoration:none" title="编辑" lay-event="edit" class="layui-btn layui-btn-normal layui-btn-xs">
<i class="layui-icon layui-icon-edit"></i>
</a>
<a style="text-decoration:none" lay-event="delete" class="layui-btn layui-btn-danger layui-btn-xs">
<i class="layui-icon layui-icon-delete"></i>
</a>
</script>
<!-- 添加/编辑表单模板 -->
<script type="text/html" id="formTpl">
<form class="layui-form" lay-filter="diamondForm" id="diamondForm" style="padding: 20px;">
<input type="hidden" name="id" value="{{d.id}}">
<!-- 第一行商品名称商品ID -->
<div class="layui-form-item">
<label class="layui-form-label">商品名称</label>
<div class="layui-input-inline">
<input type="text" name="name" value="{{d.name}}" placeholder="请输入商品名称" class="layui-input">
</div>
<label class="layui-form-label">商品编号</label>
<div class="layui-input-inline">
<input type="text" name="products_id" value="{{d.products_id}}" placeholder="请输入商品ID" class="layui-input">
</div>
</div>
<!-- 第二行商品类型价格 -->
<div class="layui-form-item">
<label class="layui-form-label">商品类型</label>
<div class="layui-input-inline">
<select name="products_type" class="layui-input">
<option value="1" {{# if(d.products_type == '1' || !d.products_type){ }}selected{{# } }}>钻石商城</option>
</select>
</div>
<label class="layui-form-label">价格</label>
<div class="layui-input-inline">
<input type="text" name="price" value="{{d.price}}" placeholder="请输入价格" class="layui-input">
</div>
</div>
<!-- 第三行基础钻石单独一行 -->
<div class="layui-form-item">
<label class="layui-form-label">赠送货币</label>
<div class="layui-input-inline" style="width: 80%;">
<!-- <input type="text" name="base_reward" value="{{d.base_reward}}" placeholder="请输入基础钻石数量" class="layui-input"> -->
<div id="base_reward_container" style="width: 100%;"></div>
</div>
</div>
<!-- 第四行非首充展示图非首充选中图 -->
<div class="layui-form-item">
<label class="layui-form-label">非首充展示图</label>
<div class="layui-input-inline">
<input type="hidden" name="normal_image" value="{{d.normal_image}}" class="layui-input">
<img style="float:left;width:120px;height:171.53rpx;cursor:pointer;" class="upload-image" id="normal_image_preview" data-target="normal_image" src="{{d.normal_image || '/static/image/upload.jpg'}}">
</div>
<label class="layui-form-label">非首充选中图</label>
<div class="layui-input-inline">
<input type="hidden" name="normal_select_image" value="{{d.normal_select_image}}" class="layui-input">
<img style="float:left;width:120px;height:171.53rpx;cursor:pointer;" class="upload-image" id="normal_select_image_preview" data-target="normal_select_image" src="{{d.normal_select_image || '/static/image/upload.jpg'}}">
</div>
</div>
<!-- 第五行是否首充单独一行 -->
<div class="layui-form-item">
<label class="layui-form-label">是否首充</label>
<div class="layui-input-inline">
<input type="radio" name="is_first" value="1" title="是" lay-filter="is_first" {{# if(d.is_first == 1 || d.id === undefined){ }}checked{{# } }}>
<input type="radio" name="is_first" value="0" title="否" lay-filter="is_first" {{# if(d.is_first == 0 && d.id !== undefined){ }}checked{{# } }}>
</div>
</div>
<!-- 第六行首充赠送金额条件显示单独一行 -->
<div class="first-charge-fields layui-form-item" style="{{# if(d.is_first != 1){ }}display: none;{{# } }}">
<label class="layui-form-label" >首充额外赠送货币</label>
<div class="layui-input-inline" style="width: 80%;">
<div id="first_bonus_reward_container" style="width: 100%;"></div>
</div>
</div>
<!-- 第七行首充展示图首充选中图条件显示 -->
<div class="first-charge-fields layui-form-item" style="{{# if(d.is_first != 1){ }}display: none;{{# } }}">
<label class="layui-form-label">首充展示图</label>
<div class="layui-input-inline">
<input type="hidden" name="first_charge_image" value="{{d.first_charge_image}}" class="layui-input">
<img style="float:left;width:120px;height:171.53rpx;cursor:pointer;" class="upload-image" id="first_charge_image_preview" data-target="first_charge_image" src="{{d.first_charge_image || '/static/image/upload.jpg'}}">
</div>
<label class="layui-form-label">首充选中图</label>
<div class="layui-input-inline">
<input type="hidden" name="first_select_charge_image" value="{{d.first_select_charge_image}}" class="layui-input">
<img style="float:left;width:120px;height:171.53rpx;cursor:pointer;" class="upload-image" id="first_select_charge_image_preview" data-target="first_select_charge_image" src="{{d.first_select_charge_image || '/static/image/upload.jpg'}}">
</div>
</div>
<!-- 第八行排序值状态 -->
<div class="layui-form-item">
<label class="layui-form-label">排序值</label>
<div class="layui-input-inline">
<input type="text" name="sort_order" value="{{d.sort_order}}" placeholder="请输入排序值" class="layui-input">
</div>
<label class="layui-form-label">状态</label>
<div class="layui-input-inline">
<input type="radio" name="status" value="1" title="启用" {{# if(d.status == 1 || d.id === undefined){ }}checked{{# } }}>
<input type="radio" name="status" value="0" title="禁用" {{# if(d.status == 0 && d.id !== undefined){ }}checked{{# } }}>
</div>
</div>
<div class="layui-form-item" style="text-align: center;">
<div class="layui-input-block" style="margin-left: 0;">
<button class="layui-btn" lay-submit lay-filter="diamondFormSubmit">立即提交</button>
<button type="button" class="layui-btn layui-btn-primary closeBtn">关闭</button>
</div>
</div>
</form>
</script>
{include file="Public:footer3"/}
<script type="text/javascript">
layui.use(['layer', 'table', 'form', 'upload'], function () {
var table = layui.table;
var layer = layui.layer;
var form = layui.form;
var upload = layui.upload;
var laytpl = layui.laytpl;
// 初始化表格
table.render({
elem: '#diamondTable',
url: '{:url("/admin/diamond")}',
height: 'full-120',
lineStyle: 'height:100px',
cols: [[
{ field: 'id', title: 'ID', width: 80, sort: true },
{ field: 'name', title: '商品名称', width: 150 },
{ field: 'products_id', title: '商品ID', width: 150 },
// { field: 'base_reward', title: '基础钻石数量', width: 120 },
{ field: 'price', title: '价格(元)', width: 100 },
{ field: 'is_first', title: '是否有首充', width: 100, templet: '#isFirstTpl' },
{ field: 'normal_image', title: '展示图', width: 120, templet: '#imageTpl' },
{ field: 'sort_order', title: '排序', width: 80 },
{ field: 'status', title: '状态', width: 120, templet: '#statusTpl' },
{ field: 'created_at', title: '创建时间', width: 160 },
{ field: 'updated_at', title: '更新时间', width: 160 },
{ fixed: 'right', title: '操作', toolbar: '#toolbarTpl', width: 150 }
]],
page: true,
limit: 15,
skin: 'line'
});
// 搜索按钮点击事件
$('#searchBtn').on('click', function () {
var name = $('#name').val();
var status = $('#status').val();
// 重载表格
table.reload('diamondTable', {
where: {
name: name,
status: status
},
page: {
curr: 1
}
});
});
var base_reward_instance = null;
var first_bonus_reward_instance = null;
// 添加按钮点击事件
$('#addBtn').on('click', function () {
// 获取当前最大排序值
$.get('{:url("/admin/diamond_get_max_sort")}', function(res) {
const maxSort = res.data || 0;
console.log(maxSort);
layer.open({
type: 1,
title: '添加钻石商品',
area: ['800px', '90%'],
content: laytpl($('#formTpl').html()).render({ d: {sort_order: maxSort + 1} }),
success: function (layero, index) {
form.render();
initUpload();
// 页面加载时初始化奖励信息区域
base_reward_instance = initRewardInfo('base_reward_container', null, 'base_reward');
console.log(base_reward_instance);
first_bonus_reward_instance = initRewardInfo('first_bonus_reward_container', null, 'first_bonus_reward');
// 监听关闭按钮点击事件
$('.closeBtn').on('click', function() {
layer.closeAll('page');
});
// 监听是否首充单选框变化
form.on('radio(is_first)', function (data) {
var value = data.value;
if (value == 1) {
$(data.elem).closest('.layui-form').find('.first-charge-fields').show();
} else {
$(data.elem).closest('.layui-form').find('.first-charge-fields').hide();
}
});
form.val('diamondForm', {sort_order: maxSort + 1});
// 默认显示首充字段
$('.first-charge-fields').show();
form.render();
}
});
});
});
// 监听工具条
table.on('tool(diamondTable)', function (obj) {
var data = obj.data;
var layEvent = obj.event;
if (layEvent === 'edit') {
// 编辑
layer.open({
type: 1,
title: '编辑钻石商品',
area: ['800px', '90%'],
content: laytpl($('#formTpl').html()).render({ d: data }),
success: function (layero, index) {
form.render();
initUpload();
console.log(data);
// 页面加载时初始化奖励信息区域
base_reward_instance = initRewardInfo('base_reward_container', data.base_reward, 'base_reward');
console.log(base_reward_instance);
first_bonus_reward_instance = initRewardInfo('first_bonus_reward_container', data.first_bonus_reward, 'first_bonus_reward');
form.val('diamondForm', data);
// 监听关闭按钮点击事件
$('.closeBtn').on('click', function() {
layer.closeAll('page');
});
// 监听是否首充单选框变化
form.on('radio(is_first)', function (data) {
var value = data.value;
if (value == 1) {
$(data.elem).closest('.layui-form').find('.first-charge-fields').show();
} else {
$(data.elem).closest('.layui-form').find('.first-charge-fields').hide();
}
});
if(data.is_first==1){
$('.first-charge-fields').show();
}else{
$('.first-charge-fields').hide();
}
form.render();
$('#normal_image_preview').attr('src', data.normal_image);
if (data.first_charge_image != null && data.first_charge_image != "") {
$('#first_charge_image_preview').attr('src', data.first_charge_image);
}
$('#normal_select_image_preview').attr('src', data.normal_select_image);
if (data.first_select_charge_image != null && data.first_select_charge_image != "") {
$('#first_select_charge_image_preview').attr('src', data.first_select_charge_image);
}
}
});
} else if (layEvent === 'delete') {
// 删除
layer.confirm('确定要删除该商品吗?', { icon: 3, title: '提示' }, function (index) {
$.ajax({
url: '{:url("/admin/diamond_del")}',
type: 'post',
data: { id: data.id },
success: function (res) {
if (res.status === 1) {
layer.msg(res.msg, { icon: 1, time: 1000 }, function () {
table.reload('diamondTable');
});
} else {
layer.msg(res.msg, { icon: 2, time: 1500 });
}
}
});
layer.close(index);
});
}
});
// 监听表单提交
form.on('submit(diamondFormSubmit)', function (data) {
(async () => {
var load = layer.load(2);
console.log(data);
var url = data.field.id ? '{:url("/admin/diamond_edit")}' : '{:url("/admin/diamond_add")}';
await rewardInstances[base_reward_instance].processRewardIdData("PRODUCT");
await rewardInstances[first_bonus_reward_instance].processRewardIdData("PRODUCT");
var formData = $("#diamondForm").serialize();
console.log(formData);
$.post(url, formData, function (res) {
layer.close(load);
if (res.status === 1) {
layer.msg(res.msg, { icon: 1, time: 1000 }, function () {
layer.closeAll('page');
table.reload('diamondTable');
});
} else {
layer.msg(res.msg, { icon: 2, anim: 6, time: 1500 });
}
});
})();
return false;
});
// 监听状态开关切换
form.on('switch(statusSwitch)', function(obj){
var id = this.value;
var status = obj.elem.checked ? 1 : 0;
$.ajax({
url: '{:url("/admin/diamond_status")}',
type: 'post',
data: { id: id, status: status },
success: function(res) {
if (res.status === 1) {
layer.msg(res.msg, { icon: 1, time: 1000 });
} else {
// 如果修改失败,将开关状态切换回去
obj.elem.checked = status === 0 ? true : false;
form.render('checkbox');
layer.msg(res.msg, { icon: 2, time: 1500 });
}
},
error: function() {
// 如果请求出错,将开关状态切换回去
obj.elem.checked = status === 0 ? true : false;
form.render('checkbox');
layer.msg('操作失败,请重试', { icon: 2, time: 1500 });
}
});
});
// 初始化图片上传
function initUpload() {
$('.upload-image').each(function () {
var targetInput = $(this).data('target');
var previewImg = this;
upload.render({
elem: this,
url: '{:url("/admin/picture")}',
accept: 'images',
acceptMime: 'image/*',
done: function (res) {
if (res.status === 1) {
$('input[name="' + targetInput + '"]').val(res.data.imgurl);
$(previewImg).attr('src', res.data.imgurl);
layer.msg('上传成功', { icon: 1 });
} else {
layer.msg(res.msg, { icon: 2, anim: 6 });
}
}
});
});
}
});
</script>
</body>
</html>