111
This commit is contained in:
parent
bfa5e94f89
commit
6754ace425
189
app/admin/controller/Diamond.php
Normal file
189
app/admin/controller/Diamond.php
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
<?php
|
||||
namespace app\admin\controller;
|
||||
|
||||
use think\facade\View;
|
||||
use think\facade\Db;
|
||||
use app\common\model\DiamondProducts;
|
||||
|
||||
class Diamond extends Base
|
||||
{
|
||||
/**
|
||||
* 钻石商品列表
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
if (request()->isAjax()) {
|
||||
$param = input('param.');
|
||||
$limit = $param['limit'] ?? 15;
|
||||
$page = $param['page'] ?? 1;
|
||||
$name = $param['name'] ?? '';
|
||||
$status = $param['status'] ?? '';
|
||||
|
||||
$where = [];
|
||||
if ($name) {
|
||||
$where[] = ['name', 'like', "%{$name}%"];
|
||||
}
|
||||
if ($status !== '') {
|
||||
$where[] = ['status', '=', $status];
|
||||
}
|
||||
|
||||
$data = DiamondProducts::getList($where, $page, $limit);
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => '',
|
||||
'count' => $data['count'],
|
||||
'data' => $data['list']
|
||||
]);
|
||||
}
|
||||
// View::fetch("Goods/goods");
|
||||
return View::fetch('Diamond/index');
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加钻石商品
|
||||
*/
|
||||
public function add()
|
||||
{
|
||||
if (request()->isPost()) {
|
||||
$param = input('post.');
|
||||
|
||||
// 验证数据
|
||||
$validate = [
|
||||
'name' => 'require',
|
||||
'products_id' => 'require',
|
||||
'products_type' => 'require',
|
||||
'base_reward' => 'require',
|
||||
'price' => 'require|float',
|
||||
'is_first' => 'require|in:0,1',
|
||||
'sort_order' => 'require|number',
|
||||
'status' => 'require|in:0,1'
|
||||
];
|
||||
$message = [
|
||||
'name.require' => '商品名称不能为空',
|
||||
'products_id.require' => '商品ID不能为空',
|
||||
'products_type.require' => '商品类型不能为空',
|
||||
'base_reward.require' => '基础钻石数量不能为空',
|
||||
'price.require' => '价格不能为空',
|
||||
'price.float' => '价格必须为数字',
|
||||
'is_first.require' => '请选择是否为首充',
|
||||
'is_first.in' => '是否为首充值无效',
|
||||
'sort_order.require' => '排序值不能为空',
|
||||
'sort_order.number' => '排序值必须为数字',
|
||||
'status.require' => '请选择状态',
|
||||
'status.in' => '状态值无效'
|
||||
];
|
||||
|
||||
$result = $this->validate($param, $validate, $message);
|
||||
if ($result !== true) {
|
||||
return $this->err($result);
|
||||
}
|
||||
|
||||
// 处理图片路径
|
||||
$fields = ['first_charge_image', 'first_select_charge_image', 'normal_image', 'normal_select_image'];
|
||||
foreach ($fields as $field) {
|
||||
if (isset($param[$field]) && $param[$field]) {
|
||||
$param[$field] = str_replace('/www/wwwroot/test.zfunbox.cn/public', '', $param[$field]);
|
||||
}
|
||||
}
|
||||
|
||||
// 保存数据
|
||||
$id = DiamondProducts::add($param);
|
||||
if ($id) {
|
||||
return $this->succ('添加成功');
|
||||
} else {
|
||||
return $this->err('添加失败');
|
||||
}
|
||||
}
|
||||
|
||||
return View::fetch('Diamond/add');
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑钻石商品
|
||||
*/
|
||||
public function edit()
|
||||
{
|
||||
$id = input('id/d', 0);
|
||||
if (!$id) {
|
||||
return $this->err('参数错误');
|
||||
}
|
||||
|
||||
$info = DiamondProducts::getInfo($id);
|
||||
if (!$info) {
|
||||
return $this->err('数据不存在');
|
||||
}
|
||||
|
||||
if (request()->isPost()) {
|
||||
$param = input('post.');
|
||||
|
||||
// 验证数据
|
||||
$validate = [
|
||||
'name' => 'require',
|
||||
'products_id' => 'require',
|
||||
'products_type' => 'require',
|
||||
'base_reward' => 'require',
|
||||
'price' => 'require|float',
|
||||
'is_first' => 'require|in:0,1',
|
||||
'sort_order' => 'require|number',
|
||||
'status' => 'require|in:0,1'
|
||||
];
|
||||
$message = [
|
||||
'name.require' => '商品名称不能为空',
|
||||
'products_id.require' => '商品ID不能为空',
|
||||
'products_type.require' => '商品类型不能为空',
|
||||
'base_reward.require' => '基础钻石数量不能为空',
|
||||
'price.require' => '价格不能为空',
|
||||
'price.float' => '价格必须为数字',
|
||||
'is_first.require' => '请选择是否为首充',
|
||||
'is_first.in' => '是否为首充值无效',
|
||||
'sort_order.require' => '排序值不能为空',
|
||||
'sort_order.number' => '排序值必须为数字',
|
||||
'status.require' => '请选择状态',
|
||||
'status.in' => '状态值无效'
|
||||
];
|
||||
|
||||
$result = $this->validate($param, $validate, $message);
|
||||
if ($result !== true) {
|
||||
return $this->err($result);
|
||||
}
|
||||
|
||||
// 处理图片路径
|
||||
$fields = ['first_charge_image', 'first_select_charge_image', 'normal_image', 'normal_select_image'];
|
||||
foreach ($fields as $field) {
|
||||
if (isset($param[$field]) && $param[$field]) {
|
||||
$param[$field] = str_replace('/www/wwwroot/test.zfunbox.cn/public', '', $param[$field]);
|
||||
}
|
||||
}
|
||||
|
||||
// 更新数据
|
||||
$result = DiamondProducts::edit($id, $param);
|
||||
if ($result) {
|
||||
return $this->succ('修改成功');
|
||||
} else {
|
||||
return $this->err('修改失败');
|
||||
}
|
||||
}
|
||||
|
||||
View::assign('info', $info);
|
||||
return View::fetch('Diamond/edit');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除钻石商品
|
||||
*/
|
||||
public function del()
|
||||
{
|
||||
$id = input('id/d', 0);
|
||||
if (!$id) {
|
||||
return $this->err('参数错误');
|
||||
}
|
||||
|
||||
$result = DiamondProducts::del($id);
|
||||
if ($result) {
|
||||
return $this->succ('删除成功');
|
||||
} else {
|
||||
return $this->err('删除失败');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -465,4 +465,12 @@ Route::get('dynamicJs.js', 'Config/dynamicJs')->ext('js');
|
|||
#============================
|
||||
Route::rule('markdown/index', 'Markdown/index', 'GET|POST');
|
||||
Route::rule('markdown/order_info', 'Markdown/order_info', 'GET|POST');
|
||||
|
||||
#============================
|
||||
#Diamond.php钻石商品配置
|
||||
#============================
|
||||
Route::rule('diamond', 'Diamond/index', 'GET|POST');
|
||||
Route::rule('diamond_add', 'Diamond/add', 'GET|POST');
|
||||
Route::rule('diamond_edit', 'Diamond/edit', 'GET|POST');
|
||||
Route::rule('diamond_del', 'Diamond/del', 'GET|POST');
|
||||
|
||||
394
app/admin/view/Diamond/index.html
Normal file
394
app/admin/view/Diamond/index.html
Normal file
|
|
@ -0,0 +1,394 @@
|
|||
{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">
|
||||
{{# if(d.status == 1){ }}
|
||||
<button class="layui-btn layui-btn-normal layui-btn-radius layui-btn-sm">启用</button>
|
||||
{{# } else { }}
|
||||
<button class="layui-btn layui-btn-danger layui-btn-radius layui-btn-sm">禁用</button>
|
||||
{{# } }}
|
||||
</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){ }}checked{{# } }}>
|
||||
<input type="radio" name="is_first" value="0" title="否" lay-filter="is_first" {{# if(d.is_first == 0){ }}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){ }}checked{{# } }}>
|
||||
<input type="radio" name="status" value="0" title="禁用" {{# if(d.status == 0){ }}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: 80, 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 () {
|
||||
layer.open({
|
||||
type: 1,
|
||||
title: '添加钻石商品',
|
||||
area: ['900px', '90%'],
|
||||
content: laytpl($('#formTpl').html()).render({ d: {} }),
|
||||
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();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 监听工具条
|
||||
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;
|
||||
});
|
||||
|
||||
// 初始化图片上传
|
||||
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>
|
||||
79
app/common/model/DiamondProducts.php
Normal file
79
app/common/model/DiamondProducts.php
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
namespace app\common\model;
|
||||
|
||||
use think\Model;
|
||||
use think\facade\Db;
|
||||
|
||||
class DiamondProducts extends Base
|
||||
{
|
||||
//设置主键
|
||||
protected $pk = 'id';
|
||||
//设置表名
|
||||
protected $table = 'diamond_products';
|
||||
//设置自动时间戳
|
||||
protected $autoWriteTimestamp = true;
|
||||
protected $createTime = 'created_at';
|
||||
protected $updateTime = 'updated_at';
|
||||
|
||||
/**
|
||||
* 获取钻石商品列表
|
||||
* @param array $where 条件
|
||||
* @param int $page 页码
|
||||
* @param int $limit 每页数据量
|
||||
* @return array
|
||||
*/
|
||||
public static function getList($where = [], $page = 1, $limit = 10)
|
||||
{
|
||||
$query = self::where($where);
|
||||
$count = $query->count();
|
||||
$list = $query->order('sort_order asc')
|
||||
->page($page, $limit)
|
||||
->select()
|
||||
->toArray();
|
||||
|
||||
return ['list' => $list, 'count' => $count];
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加钻石商品
|
||||
* @param array $data 商品数据
|
||||
* @return int|string
|
||||
*/
|
||||
public static function add($data)
|
||||
{
|
||||
$model = new self;
|
||||
$model->save($data);
|
||||
return $model->id;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改钻石商品
|
||||
* @param int $id 商品ID
|
||||
* @param array $data 商品数据
|
||||
* @return bool
|
||||
*/
|
||||
public static function edit($id, $data)
|
||||
{
|
||||
return self::where('id', $id)->update($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除钻石商品
|
||||
* @param int $id 商品ID
|
||||
* @return bool
|
||||
*/
|
||||
public static function del($id)
|
||||
{
|
||||
return self::where('id', $id)->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取钻石商品详情
|
||||
* @param int $id 商品ID
|
||||
* @return array|Model|null
|
||||
*/
|
||||
public static function getInfo($id)
|
||||
{
|
||||
return self::where('id', $id)->find();
|
||||
}
|
||||
}
|
||||
|
|
@ -86,6 +86,11 @@ return [
|
|||
'url' => '/admin/card_shang',
|
||||
'name' => '抽奖等级设置',
|
||||
],
|
||||
[
|
||||
'url' => '/admin/diamond',
|
||||
'name' => '钻石商品配置',
|
||||
],
|
||||
|
||||
],
|
||||
],
|
||||
[
|
||||
|
|
|
|||
|
|
@ -3,15 +3,23 @@
|
|||
* 用于创建和管理奖励信息表单元素
|
||||
*/
|
||||
|
||||
// 存储所有实例的映射
|
||||
var rewardInstances = {};
|
||||
|
||||
/**
|
||||
* 初始化奖励信息区域
|
||||
* @param {string} containerId - 容器ID
|
||||
* @param {Array|string} existingRewards - 已存在的奖励数据数组或reward_id
|
||||
* @param {string} fieldName - 自定义字段名,默认为reward_id
|
||||
* @returns {string} - 返回实例ID,用于后续操作
|
||||
*/
|
||||
function initRewardInfo(containerId, existingRewards = null) {
|
||||
function initRewardInfo(containerId, existingRewards = null, fieldName = 'reward_id') {
|
||||
var $ = layui.$;
|
||||
var form = layui.form;
|
||||
|
||||
// 创建实例ID
|
||||
var instanceId = containerId + '_' + new Date().getTime();
|
||||
|
||||
// 奖励类型选项
|
||||
var rewardTypes = [
|
||||
{ value: '1', text: '钻石' },
|
||||
|
|
@ -23,21 +31,24 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
// 存储优惠券数据
|
||||
var couponsData = [];
|
||||
|
||||
// 创建奖励信息卡片
|
||||
// 创建奖励信息卡片 - 使用实例化ID
|
||||
var cardHtml = '<div class="layui-card">' +
|
||||
'<div class="layui-card-header">' +
|
||||
'<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" id="addReward">' +
|
||||
'<button type="button" class="layui-btn layui-btn-sm layui-btn-normal" id="' + instanceId + '_addReward">' +
|
||||
'<i class="layui-icon"></i>添加奖励' +
|
||||
'</button>' +
|
||||
'</div>' +
|
||||
'<div class="layui-card-body">' +
|
||||
'<div id="rewardContainer">' +
|
||||
'<div id="' + instanceId + '_rewardContainer">' +
|
||||
'<!-- 动态添加的奖励项将显示在这里 -->' +
|
||||
'</div>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
if ($('input[name="reward_id"]').length == 0) {
|
||||
cardHtml += '<input type="hidden" name="reward_id" value="">';
|
||||
|
||||
// 只有在不存在同名字段时添加隐藏字段
|
||||
if ($('#' + containerId + ' input[name="' + fieldName + '"]').length == 0 &&
|
||||
$('input[name="' + fieldName + '"]').length == 0) {
|
||||
cardHtml += '<input type="hidden" name="' + fieldName + '" value="">';
|
||||
}
|
||||
|
||||
// 渲染奖励信息卡片
|
||||
|
|
@ -70,15 +81,15 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
|
||||
// 生成唯一ID
|
||||
function generateUniqueId() {
|
||||
return 'reward_' + new Date().getTime() + '_' + Math.floor(Math.random() * 1000);
|
||||
return instanceId + '_item_' + new Date().getTime() + '_' + Math.floor(Math.random() * 1000);
|
||||
}
|
||||
|
||||
// 添加奖励项
|
||||
function addRewardItem(rewardData = null) {
|
||||
var uniqueId = generateUniqueId();
|
||||
var html = '<div class="layui-form-item reward-item" id="' + uniqueId + '">' +
|
||||
var html = '<div class="layui-form-item ' + instanceId + '-reward-item" id="' + uniqueId + '">' +
|
||||
'<div class="layui-inline">' +
|
||||
'<select class="reward-type-select" lay-filter="rewardTypeFilter">' +
|
||||
'<select class="' + instanceId + '-reward-type-select" lay-filter="' + instanceId + 'RewardTypeFilter">' +
|
||||
'<option value="">请选择奖励类型</option>';
|
||||
|
||||
// 添加奖励类型选项
|
||||
|
|
@ -95,27 +106,27 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
var couponDisplay = (!rewardData || rewardData.reward_type != '4') ? 'style="display:none;"' : '';
|
||||
var rewardValue = rewardData ? rewardData.reward_value : '';
|
||||
|
||||
html += '<div class="layui-inline reward-value-container" ' + rewardValueDisplay + '>' +
|
||||
'<input type="text" placeholder="请输入奖励数值" class="layui-input reward-value-input" value="' + rewardValue + '">' +
|
||||
html += '<div class="layui-inline ' + instanceId + '-reward-value-container" ' + rewardValueDisplay + '>' +
|
||||
'<input type="text" placeholder="请输入奖励数值" class="layui-input ' + instanceId + '-reward-value-input" value="' + rewardValue + '">' +
|
||||
'</div>' +
|
||||
'<div class="layui-inline coupon-container" ' + couponDisplay + '>' +
|
||||
'<select class="coupon-select">' +
|
||||
'<div class="layui-inline ' + instanceId + '-coupon-container" ' + couponDisplay + '>' +
|
||||
'<select class="' + instanceId + '-coupon-select">' +
|
||||
'<option value="">请选择优惠券</option>' +
|
||||
'<option value="loading" disabled>加载中...</option>' +
|
||||
'</select>' +
|
||||
'</div>' +
|
||||
'<div class="layui-inline">' +
|
||||
'<button type="button" class="layui-btn layui-btn-danger layui-btn-sm remove-reward" data-id="' + uniqueId + '">' +
|
||||
'<button type="button" class="layui-btn layui-btn-danger layui-btn-sm ' + instanceId + '-remove-reward" data-id="' + uniqueId + '">' +
|
||||
'<i class="layui-icon"></i>删除' +
|
||||
'</button>' +
|
||||
'</div>' +
|
||||
'</div>';
|
||||
|
||||
$('#rewardContainer').append(html);
|
||||
$('#' + instanceId + '_rewardContainer').append(html);
|
||||
form.render('select'); // 重新渲染表单
|
||||
|
||||
// 绑定删除按钮事件
|
||||
$('.remove-reward[data-id="' + uniqueId + '"]').click(function () {
|
||||
$('.' + instanceId + '-remove-reward[data-id="' + uniqueId + '"]').click(function () {
|
||||
var id = $(this).data('id');
|
||||
$('#' + id).remove();
|
||||
});
|
||||
|
|
@ -123,7 +134,7 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
// 如果是优惠券类型,需要加载优惠券数据
|
||||
if (rewardData && rewardData.reward_type == '4') {
|
||||
var $item = $('#' + uniqueId);
|
||||
var $couponSelect = $item.find('.coupon-select');
|
||||
var $couponSelect = $item.find('.' + instanceId + '-coupon-select');
|
||||
|
||||
// 获取优惠券数据并选中指定的优惠券
|
||||
if (couponsData.length > 0) {
|
||||
|
|
@ -139,22 +150,22 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
}
|
||||
|
||||
// 添加奖励按钮点击事件
|
||||
$('#addReward').click(function () {
|
||||
$('#' + instanceId + '_addReward').click(function () {
|
||||
addRewardItem();
|
||||
});
|
||||
|
||||
// 监听奖励类型选择
|
||||
form.on('select(rewardTypeFilter)', function (data) {
|
||||
var $item = $(data.elem).closest('.reward-item');
|
||||
form.on('select(' + instanceId + 'RewardTypeFilter)', function (data) {
|
||||
var $item = $(data.elem).closest('.' + instanceId + '-reward-item');
|
||||
var value = data.value;
|
||||
|
||||
if (value == '4') { // 选择了优惠券
|
||||
$item.find('.reward-value-container').hide();
|
||||
$item.find('.coupon-container').show();
|
||||
$item.find('.reward-value-input').val(''); // 清空奖励数值
|
||||
$item.find('.' + instanceId + '-reward-value-container').hide();
|
||||
$item.find('.' + instanceId + '-coupon-container').show();
|
||||
$item.find('.' + instanceId + '-reward-value-input').val(''); // 清空奖励数值
|
||||
|
||||
// 获取当前选择框的优惠券选择框
|
||||
var $couponSelect = $item.find('.coupon-select');
|
||||
var $couponSelect = $item.find('.' + instanceId + '-coupon-select');
|
||||
|
||||
// 如果优惠券数据已加载,直接填充
|
||||
if (couponsData.length > 0) {
|
||||
|
|
@ -166,9 +177,9 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
});
|
||||
}
|
||||
} else {
|
||||
$item.find('.reward-value-container').show();
|
||||
$item.find('.coupon-container').hide();
|
||||
$item.find('.coupon-select').val(''); // 清空优惠券选择
|
||||
$item.find('.' + instanceId + '-reward-value-container').show();
|
||||
$item.find('.' + instanceId + '-coupon-container').hide();
|
||||
$item.find('.' + instanceId + '-coupon-select').val(''); // 清空优惠券选择
|
||||
form.render('select');
|
||||
}
|
||||
});
|
||||
|
|
@ -207,8 +218,8 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
layer.close(loadingIndex);
|
||||
if (res.status === 1 && res.data && res.data.length > 0) {
|
||||
// 先获取优惠券数据,再初始化奖励表单
|
||||
if ($('input[name="reward_id"]').length > 0) {
|
||||
$('input[name="reward_id"]').val(rewardId);
|
||||
if ($('input[name="' + fieldName + '"]').length > 0) {
|
||||
$('input[name="' + fieldName + '"]').val(rewardId);
|
||||
}
|
||||
fetchCoupons(function () {
|
||||
// 遍历奖励数据,添加奖励项
|
||||
|
|
@ -244,151 +255,215 @@ function initRewardInfo(containerId, existingRewards = null) {
|
|||
// 预加载优惠券数据,以便后续使用
|
||||
fetchCoupons();
|
||||
}
|
||||
|
||||
// 存储实例相关数据
|
||||
rewardInstances[instanceId] = {
|
||||
containerId: containerId,
|
||||
fieldName: fieldName,
|
||||
validateRewardInfo: function () {
|
||||
var hasRewardType = false;
|
||||
$('.' + instanceId + '-reward-type-select').each(function () {
|
||||
if ($(this).val()) {
|
||||
hasRewardType = true;
|
||||
var $item = $(this).closest('.' + instanceId + '-reward-item');
|
||||
var rewardType = $(this).val();
|
||||
|
||||
// 如果不是优惠券类型,检查奖励数值
|
||||
if (rewardType != '4' && !$item.find('.' + instanceId + '-reward-value-input').val()) {
|
||||
layer.msg('请输入奖励数值', { icon: 2, anim: 6, time: 1500 });
|
||||
hasRewardType = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果是优惠券类型,检查是否选择了优惠券
|
||||
if (rewardType == '4' && !$item.find('.' + instanceId + '-coupon-select').val()) {
|
||||
layer.msg('请选择优惠券', { icon: 2, anim: 6, time: 1500 });
|
||||
hasRewardType = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!hasRewardType) {
|
||||
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
|
||||
return false;
|
||||
}
|
||||
|
||||
// 验证通过后,处理奖励数据
|
||||
this.processRewardData();
|
||||
return true;
|
||||
},
|
||||
processRewardData: function () {
|
||||
var rewardData = [];
|
||||
|
||||
// 收集所有奖励项的数据
|
||||
$('.' + instanceId + '-reward-item').each(function () {
|
||||
var $item = $(this);
|
||||
var rewardType = $item.find('.' + instanceId + '-reward-type-select').val();
|
||||
|
||||
if (rewardType) {
|
||||
var rewardObj = {
|
||||
reward_type: rewardType,
|
||||
reward_value: '',
|
||||
coupon_id: ''
|
||||
};
|
||||
|
||||
// 根据奖励类型设置相应的值
|
||||
if (rewardType == '4') { // 优惠券类型
|
||||
rewardObj.coupon_id = $item.find('.' + instanceId + '-coupon-select').val() || '';
|
||||
} else { // 其他类型
|
||||
rewardObj.reward_value = $item.find('.' + instanceId + '-reward-value-input').val() || '';
|
||||
}
|
||||
|
||||
rewardData.push(rewardObj);
|
||||
}
|
||||
});
|
||||
|
||||
// 将奖励数据转换为JSON字符串
|
||||
var rewardJson = JSON.stringify(rewardData);
|
||||
|
||||
// 创建或更新reward字段名
|
||||
var rewardDataFieldName = 'reward_' + fieldName.replace('_id', '');
|
||||
if ($('input[name="' + rewardDataFieldName + '"]').length > 0) {
|
||||
$('input[name="' + rewardDataFieldName + '"]').val(rewardJson);
|
||||
} else {
|
||||
$('form').append('<input type="hidden" name="' + rewardDataFieldName + '" value=\'' + rewardJson + '\'>');
|
||||
}
|
||||
},
|
||||
processRewardIdData: async function (pre, reward_id = '') {
|
||||
var rewardData = [];
|
||||
var $ = layui.$; // 确保在异步函数内部重新获取jQuery引用
|
||||
|
||||
// 收集所有奖励项的数据
|
||||
$('.' + instanceId + '-reward-item').each(function () {
|
||||
var $item = $(this);
|
||||
var rewardType = $item.find('.' + instanceId + '-reward-type-select').val();
|
||||
|
||||
if (rewardType) {
|
||||
var rewardObj = {
|
||||
reward_type: rewardType,
|
||||
reward_value: '',
|
||||
coupon_id: ''
|
||||
};
|
||||
|
||||
// 根据奖励类型设置相应的值
|
||||
if (rewardType == '4') { // 优惠券类型
|
||||
rewardObj.coupon_id = $item.find('.' + instanceId + '-coupon-select').val() || '';
|
||||
} else { // 其他类型
|
||||
rewardObj.reward_value = $item.find('.' + instanceId + '-reward-value-input').val() || '';
|
||||
}
|
||||
|
||||
rewardData.push(rewardObj);
|
||||
}
|
||||
});
|
||||
|
||||
if (reward_id === '') {
|
||||
if ($('input[name="' + fieldName + '"]').length > 0) {
|
||||
reward_id = $('input[name="' + fieldName + '"]').val();
|
||||
}
|
||||
}
|
||||
|
||||
if (reward_id == '' && rewardData.length == 0) {
|
||||
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
|
||||
return false;
|
||||
}
|
||||
|
||||
// 将奖励数据转换为JSON字符串
|
||||
var rewardJson = JSON.stringify(rewardData);
|
||||
var url = "/admin/reward_add_json.html";
|
||||
var load = layer.load(2);
|
||||
|
||||
try {
|
||||
let l = await $.post(url, {
|
||||
reward: rewardJson,
|
||||
reward_id: reward_id,
|
||||
reward_id_pre: pre
|
||||
});
|
||||
|
||||
layer.close(load);
|
||||
console.log(l);
|
||||
|
||||
if (l && l.status === 1) {
|
||||
reward_id = l.data.reward_id;
|
||||
|
||||
// 更新reward_id字段
|
||||
if ($('input[name="' + fieldName + '"]').length > 0) {
|
||||
$('input[name="' + fieldName + '"]').val(reward_id);
|
||||
} else {
|
||||
$('form').append('<input type="hidden" name="' + fieldName + '" value="' + reward_id + '">');
|
||||
}
|
||||
|
||||
return reward_id;
|
||||
}
|
||||
return false;
|
||||
} catch (error) {
|
||||
layer.close(load);
|
||||
layer.msg('网络错误,请稍后重试', { icon: 2, anim: 6, time: 1500 });
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证奖励信息
|
||||
* 验证奖励信息 (兼容旧版本调用)
|
||||
* @param {string} instanceId - 实例ID,为空时使用最后一个实例
|
||||
* @returns {boolean} - 验证结果
|
||||
*/
|
||||
function validateRewardInfo() {
|
||||
var $ = layui.$;
|
||||
var hasRewardType = false;
|
||||
|
||||
$('.reward-type-select').each(function () {
|
||||
if ($(this).val()) {
|
||||
hasRewardType = true;
|
||||
var $item = $(this).closest('.reward-item');
|
||||
var rewardType = $(this).val();
|
||||
|
||||
// 如果不是优惠券类型,检查奖励数值
|
||||
if (rewardType != '4' && !$item.find('.reward-value-input').val()) {
|
||||
layer.msg('请输入奖励数值', { icon: 2, anim: 6, time: 1500 });
|
||||
hasRewardType = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
// 如果是优惠券类型,检查是否选择了优惠券
|
||||
if (rewardType == '4' && !$item.find('.coupon-select').val()) {
|
||||
layer.msg('请选择优惠券', { icon: 2, anim: 6, time: 1500 });
|
||||
hasRewardType = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (!hasRewardType) {
|
||||
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
|
||||
return false;
|
||||
function validateRewardInfo(instanceId = null) {
|
||||
// 如果没有指定实例ID,使用最后创建的实例
|
||||
if (!instanceId) {
|
||||
var instances = Object.keys(rewardInstances);
|
||||
if (instances.length === 0) return false;
|
||||
instanceId = instances[instances.length - 1];
|
||||
}
|
||||
|
||||
// 验证通过后,处理奖励数据
|
||||
processRewardData();
|
||||
return true;
|
||||
// 如果指定的实例不存在,返回false
|
||||
if (!rewardInstances[instanceId]) return false;
|
||||
|
||||
// 调用实例的验证方法
|
||||
return rewardInstances[instanceId].validateRewardInfo();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理奖励数据,将其转换为JSON格式并添加到隐藏字段
|
||||
* 处理奖励数据 (兼容旧版本调用)
|
||||
* @param {string} instanceId - 实例ID,为空时使用最后一个实例
|
||||
*/
|
||||
function processRewardData() {
|
||||
var $ = layui.$;
|
||||
var rewardData = [];
|
||||
|
||||
// 收集所有奖励项的数据
|
||||
$('.reward-item').each(function () {
|
||||
var $item = $(this);
|
||||
var rewardType = $item.find('.reward-type-select').val();
|
||||
|
||||
if (rewardType) {
|
||||
var rewardObj = {
|
||||
reward_type: rewardType,
|
||||
reward_value: '',
|
||||
coupon_id: ''
|
||||
};
|
||||
|
||||
// 根据奖励类型设置相应的值
|
||||
if (rewardType == '4') { // 优惠券类型
|
||||
rewardObj.coupon_id = $item.find('.coupon-select').val() || '';
|
||||
} else { // 其他类型
|
||||
rewardObj.reward_value = $item.find('.reward-value-input').val() || '';
|
||||
}
|
||||
|
||||
rewardData.push(rewardObj);
|
||||
}
|
||||
});
|
||||
|
||||
// 将奖励数据转换为JSON字符串
|
||||
var rewardJson = JSON.stringify(rewardData);
|
||||
|
||||
// 检查表单中是否已存在reward隐藏字段
|
||||
if ($('input[name="reward"]').length > 0) {
|
||||
$('input[name="reward"]').val(rewardJson);
|
||||
} else {
|
||||
// 创建隐藏字段并添加到表单中
|
||||
$('form').append('<input type="hidden" name="reward" value=\'' + rewardJson + '\'>');
|
||||
function processRewardData(instanceId = null) {
|
||||
// 如果没有指定实例ID,使用最后创建的实例
|
||||
if (!instanceId) {
|
||||
var instances = Object.keys(rewardInstances);
|
||||
if (instances.length === 0) return;
|
||||
instanceId = instances[instances.length - 1];
|
||||
}
|
||||
|
||||
// 清除可能残留的旧字段(兼容性考虑)
|
||||
$('input[name="reward_type[]"], input[name="reward_value[]"], input[name="coupon_id[]"]').remove();
|
||||
// 如果指定的实例不存在,直接返回
|
||||
if (!rewardInstances[instanceId]) return;
|
||||
|
||||
// 调用实例的数据处理方法
|
||||
rewardInstances[instanceId].processRewardData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理奖励数据,将其转换为JSON格式并添加到隐藏字段
|
||||
* 处理奖励数据,将其转换为JSON格式并添加到隐藏字段 (兼容旧版本调用)
|
||||
* @param {string} pre - 前缀
|
||||
* @param {string} reward_id - 奖励ID
|
||||
* @param {string} instanceId - 实例ID,为空时使用最后一个实例
|
||||
* @returns {Promise<string|boolean>} - 返回reward_id或false
|
||||
*/
|
||||
async function processRewardIdData(pre, reward_id = '') {
|
||||
var $ = layui.$;
|
||||
var rewardData = [];
|
||||
|
||||
// 收集所有奖励项的数据
|
||||
$('.reward-item').each(function () {
|
||||
var $item = $(this);
|
||||
var rewardType = $item.find('.reward-type-select').val();
|
||||
|
||||
if (rewardType) {
|
||||
var rewardObj = {
|
||||
reward_type: rewardType,
|
||||
reward_value: '',
|
||||
coupon_id: ''
|
||||
};
|
||||
|
||||
// 根据奖励类型设置相应的值
|
||||
if (rewardType == '4') { // 优惠券类型
|
||||
rewardObj.coupon_id = $item.find('.coupon-select').val() || '';
|
||||
} else { // 其他类型
|
||||
rewardObj.reward_value = $item.find('.reward-value-input').val() || '';
|
||||
}
|
||||
|
||||
rewardData.push(rewardObj);
|
||||
}
|
||||
});
|
||||
if (reward_id || reward_id == '') {
|
||||
if ($('input[name="reward_id"]').length > 0) {
|
||||
reward_id = $('input[name="reward_id"]').val();
|
||||
}
|
||||
}
|
||||
if (reward_id == '' && rewardData.length == 0) {
|
||||
layer.msg('请至少添加一项奖励信息', { icon: 2, anim: 6, time: 1500 });
|
||||
return false;
|
||||
}
|
||||
// 将奖励数据转换为JSON字符串
|
||||
var rewardJson = JSON.stringify(rewardData);
|
||||
// reward_add_json
|
||||
var url = "/admin/reward_add_json.html";
|
||||
var $ = layui.$;
|
||||
var load = layer.load(2);
|
||||
let l = await $.post(url, { reward: rewardJson, reward_id: reward_id, reward_id_pre: pre });
|
||||
layer.close(load);
|
||||
console.log(l);
|
||||
if (l && l.status === 1) {
|
||||
reward_id = l.data.reward_id;
|
||||
}
|
||||
// 检查表单中是否已存在reward隐藏字段
|
||||
if ($('input[name="reward_id"]').length > 0) {
|
||||
$('input[name="reward_id"]').val(reward_id);
|
||||
} else {
|
||||
// 创建隐藏字段并添加到表单中
|
||||
$('form').append('<input type="hidden" name="reward_id" value=\'' + reward_id + '\'>');
|
||||
async function processRewardIdData(pre, reward_id = '', instanceId = null) {
|
||||
// 如果没有指定实例ID,使用最后创建的实例
|
||||
if (!instanceId) {
|
||||
var instances = Object.keys(rewardInstances);
|
||||
if (instances.length === 0) return false;
|
||||
instanceId = instances[instances.length - 1];
|
||||
}
|
||||
|
||||
// 清除可能残留的旧字段(兼容性考虑)
|
||||
$('input[name="reward_type[]"], input[name="reward_value[]"], input[name="coupon_id[]"]').remove();
|
||||
// 如果指定的实例不存在,返回false
|
||||
if (!rewardInstances[instanceId]) return false;
|
||||
|
||||
// 调用实例的数据处理方法
|
||||
return await rewardInstances[instanceId].processRewardIdData(pre, reward_id);
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user