cs120_9 - 鸽子费审核功能缺失
This commit is contained in:
parent
e5753c6a2d
commit
25b7e1a3de
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
## Bug统计
|
||||
- **总数量**: 9个
|
||||
- **已修复**: 6个 ✅
|
||||
- **未修改**: 3个
|
||||
- **已修复**: 7个 ✅
|
||||
- **未修改**: 2个
|
||||
- **分类**: 后端问题 6个,前端问题 2个,前后端问题 3个
|
||||
|
||||
---
|
||||
|
|
@ -312,7 +312,7 @@
|
|||
---
|
||||
|
||||
### cs120_9 - 鸽子费审核功能缺失
|
||||
**状态**: 未修改
|
||||
**状态**: ✅ 已修复
|
||||
**类型**: 后端
|
||||
**优先级**: 高
|
||||
|
||||
|
|
@ -327,10 +327,44 @@
|
|||
- **通过审核**:到场人员平分鸽子费
|
||||
- **不通过审核**:鸽子费各自退回
|
||||
|
||||
**问题根本原因**:
|
||||
后台审核页面的查询条件有误。在`CheckInReservation`签到流程中,未赴约用户被设置为:
|
||||
- `is_arrive = 2` (未赴约待审核)
|
||||
- `status = 1` (已退出)
|
||||
|
||||
但审核页面的查询条件要求`status = 0`,导致待审核记录不显示。
|
||||
|
||||
**修复内容**:
|
||||
1. **后端查询条件修复** (`server/CoreCms.Net.Web.Admin/Controllers/SQ/SQReservationsController.cs`)
|
||||
- 修改`GetPigeonFeeAuditList`接口的SQL查询条件
|
||||
- 移除`AND p.status = 0`条件
|
||||
- 只保留`p.is_arrive = 2`和`ISNULL(r.deposit_fee, 0) > 0`条件
|
||||
- 允许已退出但待审核的用户记录显示
|
||||
|
||||
**功能验证**:
|
||||
- ✅ 前端审核页面已存在且功能完整
|
||||
- ✅ 后端审核接口已存在且逻辑完整
|
||||
- ✅ 数据库中有待审核记录(修复后能正常显示)
|
||||
|
||||
**审核功能说明**:
|
||||
1. **审核通过** (`ApprovePigeonFee`):
|
||||
- 扣除未赴约用户的鸽子费
|
||||
- 将鸽子费平分给符合条件的已赴约用户
|
||||
- 创建收益记录和系统消息通知
|
||||
- 更新参与者状态为`is_arrive = 3`(已审核)
|
||||
|
||||
2. **审核未通过** (`RejectPigeonFee`):
|
||||
- 将参与者状态改为已赴约(`is_arrive = 1`)
|
||||
- 标记为发起退款(`is_refund = 3`)
|
||||
- 发送退款通知消息
|
||||
|
||||
**修复时间**: 2025-01-01
|
||||
**测试状态**: 待测试
|
||||
|
||||
**需要开发**:
|
||||
- 后台审核页面
|
||||
- 审核通过/拒绝的处理逻辑
|
||||
- 鸽子费分配/退回机制
|
||||
- ✅ 后台审核页面(已存在)
|
||||
- ✅ 审核通过/拒绝的处理逻辑(已存在)
|
||||
- ✅ 鸽子费分配/退回机制(已存在)
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -339,7 +373,7 @@
|
|||
### 🔴 高优先级(影响核心功能)
|
||||
- ✅ cs120_1 - 时间段预约逻辑错误(已修复)
|
||||
- cs120_2 - 开始时间选择无限制
|
||||
- cs120_9 - 鸽子费审核功能缺失
|
||||
- ✅ cs120_9 - 鸽子费审核功能缺失(已修复)
|
||||
|
||||
### 🟡 中优先级(影响用户体验)
|
||||
- ✅ cs110_24 - 已评价组局消息未消失(已修复)
|
||||
|
|
|
|||
|
|
@ -1602,7 +1602,8 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||
var markTimeBegin = Request.Form["mark_time_begin"].FirstOrDefault();
|
||||
var markTimeEnd = Request.Form["mark_time_end"].FirstOrDefault();
|
||||
|
||||
// 构建SQL查询 - 查询 is_arrive=2(未赴约待审核)且 status=0(未退出)且预约有鸽子费的参与者
|
||||
// 构建SQL查询 - 查询 is_arrive=2(未赴约待审核)且预约有鸽子费的参与者
|
||||
// 注意:未赴约用户可能已被标记为status=1(已退出),但仍需要审核
|
||||
var sql = @"
|
||||
SELECT
|
||||
p.id AS participant_id,
|
||||
|
|
@ -1621,7 +1622,6 @@ namespace CoreCms.Net.Web.Admin.Controllers
|
|||
INNER JOIN SQReservations r ON p.reservation_id = r.id
|
||||
INNER JOIN CoreCmsUser u ON p.user_id = u.id
|
||||
WHERE p.is_arrive = 2
|
||||
AND p.status = 0
|
||||
AND ISNULL(r.deposit_fee, 0) > 0";
|
||||
|
||||
// 添加筛选条件
|
||||
|
|
|
|||
|
|
@ -0,0 +1,363 @@
|
|||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SQReservations-createForm" id="LAY-app-SQReservations-createForm" style="overflow: auto;height: 100%;">
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="title" class="layui-form-label layui-form-required">组局名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="title" lay-verType="tips" lay-verify="required|verifytitle" class="layui-input" lay-reqText="请输入组局名称" placeholder="请输入组局名称"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="room_id" class="layui-form-label layui-form-required">房间</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="room_id" id="create-SQReservations-room_id" lay-verType="tips" lay-verify="required" lay-reqText="请选择房间" lay-filter="create-room-select">
|
||||
<option value="">请选择房间</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 隐藏的房间名称字段,用于自动填充 -->
|
||||
<input type="hidden" name="room_name" id="create-SQReservations-room_name" />
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="start_time" class="layui-form-label layui-form-required">开始时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="start_time" id="createTime-SQReservations-start_time" type="text" lay-verType="tips" lay-verify="required|datetime|startTime" class="layui-input" placeholder="请输入开始时间" lay-reqText="请输入开始时间" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="end_time" class="layui-form-label layui-form-required">结束时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="end_time" id="createTime-SQReservations-end_time" type="text" lay-verType="tips" lay-verify="required|datetime|endTime" class="layui-input" placeholder="请输入结束时间" lay-reqText="请输入结束时间" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="duration_minutes" class="layui-form-label layui-form-required">时长(分钟)</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="duration_minutes" id="create-SQReservations-duration_minutes" lay-verType="tips" lay-verify="required|number" class="layui-input" value="0" placeholder="自动计算" lay-reqText="请输入时长(分钟)并为数字" readonly />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="player_count" class="layui-form-label layui-form-required">人数</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="player_count" lay-verType="tips" lay-verify="required" lay-reqText="请选择人数">
|
||||
<option value="1">1人</option>
|
||||
<option value="2">2人</option>
|
||||
<option value="3">3人</option>
|
||||
<option value="4">4人</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_type" class="layui-form-label layui-form-required">玩法类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="game_type" id="create-SQReservations-game_type" lay-verType="tips" lay-verify="required" lay-reqText="请选择玩法类型" lay-filter="create-game-type-select">
|
||||
<option value="">请选择玩法类型</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_rule" class="layui-form-label layui-form-required">具体规则</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="game_rule" id="create-SQReservations-game_rule" lay-verType="tips" lay-verify="required" lay-reqText="请选择具体规则" lay-filter="create-game-rule-select">
|
||||
<option value="">请选择具体规则</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="extra_info" class="layui-form-label layui-form-required">其他补充</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="extra_info" lay-verType="tips" lay-verify="verifyextra_info" class="layui-input" lay-reqText="请输入其他补充" placeholder="请输入其他补充"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="is_smoking" class="layui-form-label layui-form-required">是否禁烟</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_smoking" value="0" title="不限制" checked>
|
||||
<input type="radio" name="is_smoking" value="1" title="禁烟">
|
||||
<input type="radio" name="is_smoking" value="2" title="不禁烟">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="gender_limit" class="layui-form-label layui-form-required">性别限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="gender_limit" value="0" title="不限性别" checked>
|
||||
<input type="radio" name="gender_limit" value="1" title="男">
|
||||
<input type="radio" name="gender_limit" value="2" title="女">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="credit_limit" class="layui-form-label layui-form-required">最低信誉分</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="credit_limit" lay-verType="tips" lay-verify="required" class="layui-input" value="0" placeholder="请输入最低信誉分" lay-reqText="请输入最低信誉分" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="min_age" class="layui-form-label layui-form-required">最小年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="100" name="min_age" lay-verType="tips" lay-verify="required|number|minAge" class="layui-input" value="0" placeholder="请输入最小年龄限制" lay-reqText="请输入最小年龄限制并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="max_age" class="layui-form-label layui-form-required">最大年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="100" name="max_age" lay-verType="tips" lay-verify="required|number|maxAge" class="layui-input" value="0" placeholder="0=不限" lay-reqText="请输入最大年龄限制,0=不限并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="deposit_fee" class="layui-form-label layui-form-required">鸽子费</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="deposit_fee" value="0" title="0元" checked>
|
||||
<input type="radio" name="deposit_fee" value="5" title="5元" disabled>
|
||||
<input type="radio" name="deposit_fee" value="10" title="10元" disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="status" class="layui-form-label layui-form-required">状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status" lay-verType="tips" lay-verify="required" lay-reqText="请选择状态">
|
||||
<option value="0">待开始</option>
|
||||
<option value="1">进行中</option>
|
||||
<option value="2">已结束</option>
|
||||
<option value="3">已取消</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-SQReservations-createForm-submit" id="LAY-app-SQReservations-createForm-submit" value="确认添加">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
// 获取数据源
|
||||
var roomOptions = d.params.data.roomOptions || [];
|
||||
var dicOptions = d.params.data.dicOptions || [];
|
||||
|
||||
// 初始化房间选择下拉框
|
||||
var $roomSelect = $('#create-SQReservations-room_id');
|
||||
if (Array.isArray(roomOptions) && roomOptions.length) {
|
||||
roomOptions.forEach(function (room) {
|
||||
if (room && (room.id !== undefined) && room.name) {
|
||||
$roomSelect.append('<option value="' + room.id + '" data-name="' + room.name + '">' + room.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 监听房间选择,自动填充房间名称
|
||||
form.on('select(create-room-select)', function (data) {
|
||||
var selectedOption = $roomSelect.find('option:selected');
|
||||
var roomName = selectedOption.attr('data-name') || '';
|
||||
$('#create-SQReservations-room_name').val(roomName);
|
||||
});
|
||||
|
||||
// 初始化玩法类型下拉框
|
||||
var $gameTypeSelect = $('#create-SQReservations-game_type');
|
||||
var $gameRuleSelect = $('#create-SQReservations-game_rule');
|
||||
if (Array.isArray(dicOptions) && dicOptions.length) {
|
||||
dicOptions.forEach(function (gameType) {
|
||||
if (gameType && (gameType.id !== undefined) && gameType.name) {
|
||||
$gameTypeSelect.append('<option value="' + gameType.name + '">' + gameType.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 监听玩法类型选择,联动具体规则
|
||||
form.on('select(create-game-type-select)', function (data) {
|
||||
var selectedId = data.value;
|
||||
// 重置具体规则
|
||||
$gameRuleSelect.html('<option value="">请选择具体规则</option>');
|
||||
if (selectedId) {
|
||||
var parent = null;
|
||||
for (var i = 0; i < (dicOptions || []).length; i++) {
|
||||
if (String(dicOptions[i].name) === String(selectedId)) {
|
||||
parent = dicOptions[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (parent && Array.isArray(parent.children) && parent.children.length) {
|
||||
parent.children.forEach(function (rule) {
|
||||
if (rule && (rule.id !== undefined) && rule.name) {
|
||||
$gameRuleSelect.append('<option value="' + rule.name + '">' + rule.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
form.render('select');
|
||||
});
|
||||
|
||||
// 时间选择器配置
|
||||
laydate.render({
|
||||
elem: '#createTime-SQReservations-start_time',
|
||||
type: 'datetime',
|
||||
fullPanel: true,
|
||||
min: new Date().getTime()-1000, // 开始时间不能小于当前时间
|
||||
done: function(value, date) {
|
||||
calculateDuration();
|
||||
// 更新结束时间的最小值
|
||||
var startTime = new Date(value);
|
||||
laydate.render({
|
||||
elem: '#createTime-SQReservations-end_time',
|
||||
type: 'datetime',
|
||||
min: startTime.getTime(),
|
||||
done: function(endValue, endDate) {
|
||||
calculateDuration();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#createTime-SQReservations-end_time',
|
||||
type: 'datetime',
|
||||
fullPanel: true,
|
||||
min: new Date().getTime()-1000, // 结束时间不能小于当前时间
|
||||
done: function(value, date) {
|
||||
calculateDuration();
|
||||
}
|
||||
});
|
||||
|
||||
// 计算时长函数
|
||||
function calculateDuration() {
|
||||
var startTime = $('#createTime-SQReservations-start_time').val();
|
||||
var endTime = $('#createTime-SQReservations-end_time').val();
|
||||
|
||||
if (startTime && endTime) {
|
||||
var start = new Date(startTime);
|
||||
var end = new Date(endTime);
|
||||
var diffMs = end - start;
|
||||
var diffMinutes = Math.floor(diffMs / (1000 * 60));
|
||||
|
||||
if (diffMinutes > 0) {
|
||||
$('#create-SQReservations-duration_minutes').val(diffMinutes);
|
||||
} else {
|
||||
$('#create-SQReservations-duration_minutes').val(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form.verify({
|
||||
verifytitle: [/^.{0,100}$/,'组局名称最大只允许输入100位字符'],
|
||||
verifyroom_name: [/^.{0,100}$/,'房间名称最大只允许输入100位字符'],
|
||||
verifygame_type: [/^.{0,50}$/,'玩法类型最大只允许输入50位字符'],
|
||||
verifygame_rule: [/^.{0,50}$/,'具体规则最大只允许输入50位字符'],
|
||||
verifyextra_info: [/^.{0,255}$/,'其他补充最大只允许输入255位字符'],
|
||||
minAge: function(value) {
|
||||
if (value != 0 && value < 18) {
|
||||
return '最小年龄不能小于18岁';
|
||||
}
|
||||
},
|
||||
maxAge: function(value) {
|
||||
if (value > 100) {
|
||||
return '最大年龄不能超过100岁';
|
||||
}
|
||||
},
|
||||
startTime: function(value) {
|
||||
if (value) {
|
||||
var startTime = new Date(value);
|
||||
var now = new Date();
|
||||
// if (startTime < now) {
|
||||
// return '开始时间不能小于当前时间';
|
||||
// }
|
||||
}
|
||||
},
|
||||
endTime: function(value) {
|
||||
if (value) {
|
||||
var endTime = new Date(value);
|
||||
var startTime = new Date($('#createTime-SQReservations-start_time').val());
|
||||
if (endTime <= startTime) {
|
||||
return '结束时间必须大于开始时间';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 监听鸽子费选择
|
||||
form.on('radio', function(data) {
|
||||
if (data.elem.name === 'deposit_fee') {
|
||||
var depositValue = data.value;
|
||||
var $depositRadios = $('input[name="deposit_fee"]');
|
||||
|
||||
if (depositValue === '0') {
|
||||
// 如果选择0元,禁用其他选项
|
||||
$depositRadios.not('[value="0"]').prop('disabled', true);
|
||||
} else {
|
||||
// 如果选择其他金额,启用所有选项
|
||||
$depositRadios.prop('disabled', false);
|
||||
}
|
||||
form.render('radio');
|
||||
}
|
||||
});
|
||||
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-SQReservations-createForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
|
|
@ -0,0 +1,237 @@
|
|||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SQReservations-detailsForm" id="LAY-app-SQReservations-detailsForm" style="overflow: auto;height: 100%;">
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="title" class="layui-form-label">组局名称</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.title || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="room_name" class="layui-form-label">房间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.room_name || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="start_time" class="layui-form-label">开始时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.start_time || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="end_time" class="layui-form-label">结束时间</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.end_time || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="duration_minutes" class="layui-form-label">时长(分钟)</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.duration_minutes || 0 }} 分钟</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="player_count" class="layui-form-label">人数</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.player_count || '' }} 人</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_type" class="layui-form-label">玩法类型</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid" id="details-game-type">{{ d.params.data.game_type || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_rule" class="layui-form-label">具体规则</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid" id="details-game-rule">{{ d.params.data.game_rule || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="extra_info" class="layui-form-label">其他补充</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.extra_info || '' }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="is_smoking" class="layui-form-label">是否禁烟</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">
|
||||
{{# if(d.params.data.is_smoking == '0') { }}
|
||||
不限制
|
||||
{{# } else if(d.params.data.is_smoking == '1') { }}
|
||||
禁烟
|
||||
{{# } else if(d.params.data.is_smoking == '2') { }}
|
||||
不禁烟
|
||||
{{# } else { }}
|
||||
{{ d.params.data.is_smoking || '' }}
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="gender_limit" class="layui-form-label">性别限制</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">
|
||||
{{# if(d.params.data.gender_limit == '0') { }}
|
||||
不限性别
|
||||
{{# } else if(d.params.data.gender_limit == '1') { }}
|
||||
男
|
||||
{{# } else if(d.params.data.gender_limit == '2') { }}
|
||||
女
|
||||
{{# } else { }}
|
||||
{{ d.params.data.gender_limit || '' }}
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="credit_limit" class="layui-form-label">最低信誉分</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.credit_limit || 0 }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="min_age" class="layui-form-label">最小年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.min_age || 0 }} 岁</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="max_age" class="layui-form-label">最大年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">
|
||||
{{# if(d.params.data.max_age == '0') { }}
|
||||
不限
|
||||
{{# } else { }}
|
||||
{{ d.params.data.max_age || 0 }} 岁
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="deposit_fee" class="layui-form-label">鸽子费</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">{{ d.params.data.deposit_fee || 0 }} 元</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="status" class="layui-form-label">状态</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-form-mid">
|
||||
{{# if(d.params.data.status == '0') { }}
|
||||
待开始
|
||||
{{# } else if(d.params.data.status == '1') { }}
|
||||
进行中
|
||||
{{# } else if(d.params.data.status == '2') { }}
|
||||
已结束
|
||||
{{# } else if(d.params.data.status == '3') { }}
|
||||
已取消
|
||||
{{# } else { }}
|
||||
{{ d.params.data.status || '' }}
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
|
||||
layui.use(['admin', 'form', 'coreHelper'], function () {
|
||||
var $ = layui.$
|
||||
, setter = layui.setter
|
||||
, admin = layui.admin
|
||||
, coreHelper = layui.coreHelper
|
||||
, form = layui.form;
|
||||
|
||||
// 获取数据源
|
||||
var dicOptions = d.params.data.dicOptions || [];
|
||||
var detailsData = d.params.data;
|
||||
|
||||
// 动态显示玩法类型和具体规则名称
|
||||
if (detailsData.game_type && Array.isArray(dicOptions)) {
|
||||
for (var i = 0; i < dicOptions.length; i++) {
|
||||
if (String(dicOptions[i].id) === String(detailsData.game_type)) {
|
||||
var gameTypeName = dicOptions[i].name || '';
|
||||
$('#details-game-type').text(gameTypeName);
|
||||
|
||||
// 查找具体规则名称
|
||||
if (detailsData.game_rule && Array.isArray(dicOptions[i].children)) {
|
||||
for (var j = 0; j < dicOptions[i].children.length; j++) {
|
||||
if (String(dicOptions[i].children[j].id) === String(detailsData.game_rule)) {
|
||||
var gameRuleName = dicOptions[i].children[j].name || '';
|
||||
$('#details-game-rule').text(gameRuleName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form.render(null, 'LAY-app-SQReservations-detailsForm');
|
||||
});
|
||||
};
|
||||
</script>
|
||||
385
server/CoreCms.Net.Web.Admin/wwwroot/views/sq/sqpigeon/edit.html
Normal file
385
server/CoreCms.Net.Web.Admin/wwwroot/views/sq/sqpigeon/edit.html
Normal file
|
|
@ -0,0 +1,385 @@
|
|||
<script type="text/html" template lay-done="layui.data.done(d);">
|
||||
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-SQReservations-editForm" id="LAY-app-SQReservations-editForm" style="overflow: auto;height: 100%;">
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="title" class="layui-form-label layui-form-required">组局名称</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="title" lay-verType="tips" lay-verify="required|verifytitle" class="layui-input" lay-reqText="请输入组局名称" placeholder="请输入组局名称" value="{{d.params.data.title || '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="room_id" class="layui-form-label layui-form-required">房间</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="room_id" id="edit-SQReservations-room_id" lay-verType="tips" lay-verify="required" lay-reqText="请选择房间" lay-filter="edit-room-select">
|
||||
<option value="">请选择房间</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 隐藏的房间名称字段,用于自动填充 -->
|
||||
<input type="hidden" name="room_name" id="edit-SQReservations-room_name" value="{{d.params.data.room_name || '' }}" />
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="start_time" class="layui-form-label layui-form-required">开始时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="start_time" id="editTime-SQReservations-start_time" type="text" lay-verType="tips" lay-verify="required|datetime|startTime" class="layui-input" placeholder="请输入开始时间" lay-reqText="请输入开始时间" value="{{d.params.data.start_time || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="end_time" class="layui-form-label layui-form-required">结束时间</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="end_time" id="editTime-SQReservations-end_time" type="text" lay-verType="tips" lay-verify="required|datetime|endTime" class="layui-input" placeholder="请输入结束时间" lay-reqText="请输入结束时间" value="{{d.params.data.end_time || '' }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="duration_minutes" class="layui-form-label layui-form-required">时长(分钟)</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="999999" name="duration_minutes" id="edit-SQReservations-duration_minutes" lay-verType="tips" lay-verify="required|number" class="layui-input" value="{{d.params.data.duration_minutes || 0}}" placeholder="自动计算" lay-reqText="请输入时长(分钟)并为数字" readonly />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="player_count" class="layui-form-label layui-form-required">人数</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="player_count" lay-verType="tips" lay-verify="required" lay-reqText="请选择人数">
|
||||
<option value="1" {{d.params.data.player_count == '1' ? 'selected' : ''}}>1人</option>
|
||||
<option value="2" {{d.params.data.player_count == '2' ? 'selected' : ''}}>2人</option>
|
||||
<option value="3" {{d.params.data.player_count == '3' ? 'selected' : ''}}>3人</option>
|
||||
<option value="4" {{d.params.data.player_count == '4' ? 'selected' : ''}}>4人</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_type" class="layui-form-label layui-form-required">玩法类型</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="game_type" id="edit-SQReservations-game_type" lay-verType="tips" lay-verify="required" lay-reqText="请选择玩法类型" lay-filter="edit-game-type-select">
|
||||
<option value="">请选择玩法类型</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="game_rule" class="layui-form-label layui-form-required">具体规则</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="game_rule" id="edit-SQReservations-game_rule" lay-verType="tips" lay-verify="required" lay-reqText="请选择具体规则" lay-filter="edit-game-rule-select">
|
||||
<option value="">请选择具体规则</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="extra_info" class="layui-form-label layui-form-required">其他补充</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="extra_info" lay-verType="tips" lay-verify="verifyextra_info" class="layui-input" lay-reqText="请输入其他补充" placeholder="请输入其他补充" value="{{d.params.data.extra_info || '' }}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="is_smoking" class="layui-form-label layui-form-required">是否禁烟</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="is_smoking" value="0" title="不限制" {{d.params.data.is_smoking == '0' ? 'checked' : ''}}>
|
||||
<input type="radio" name="is_smoking" value="1" title="禁烟" {{d.params.data.is_smoking == '1' ? 'checked' : ''}}>
|
||||
<input type="radio" name="is_smoking" value="2" title="不禁烟" {{d.params.data.is_smoking == '2' ? 'checked' : ''}}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="gender_limit" class="layui-form-label layui-form-required">性别限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="gender_limit" value="0" title="不限性别" {{d.params.data.gender_limit == '0' ? 'checked' : ''}}>
|
||||
<input type="radio" name="gender_limit" value="1" title="男" {{d.params.data.gender_limit == '1' ? 'checked' : ''}}>
|
||||
<input type="radio" name="gender_limit" value="2" title="女" {{d.params.data.gender_limit == '2' ? 'checked' : ''}}>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="credit_limit" class="layui-form-label layui-form-required">最低信誉分</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="credit_limit" lay-verType="tips" lay-verify="required" class="layui-input" value="{{d.params.data.credit_limit || 0}}" placeholder="请输入最低信誉分" lay-reqText="请输入最低信誉分" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="min_age" class="layui-form-label layui-form-required">最小年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="100" name="min_age" lay-verType="tips" lay-verify="required|number|minAge" class="layui-input" value="{{d.params.data.min_age || 0}}" placeholder="请输入最小年龄限制" lay-reqText="请输入最小年龄限制并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="max_age" class="layui-form-label layui-form-required">最大年龄限制</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="number" min="0" max="100" name="max_age" lay-verType="tips" lay-verify="required|number|maxAge" class="layui-input" value="{{d.params.data.max_age || 0}}" placeholder="0=不限" lay-reqText="请输入最大年龄限制,0=不限并为数字" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="deposit_fee" class="layui-form-label layui-form-required">鸽子费</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="deposit_fee" value="0" title="0元" {{d.params.data.deposit_fee == '0' ? 'checked' : ''}}>
|
||||
<input type="radio" name="deposit_fee" value="5" title="5元" {{d.params.data.deposit_fee == '5' ? 'checked' : ''}} disabled>
|
||||
<input type="radio" name="deposit_fee" value="10" title="10元" {{d.params.data.deposit_fee == '10' ? 'checked' : ''}} disabled>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-md6">
|
||||
<div class="layui-form-item">
|
||||
<label for="status" class="layui-form-label layui-form-required">状态</label>
|
||||
<div class="layui-input-block">
|
||||
<select name="status" lay-verType="tips" lay-verify="required" lay-reqText="请选择状态">
|
||||
<option value="0" {{d.params.data.status == '0' ? 'selected' : ''}}>待开始</option>
|
||||
<option value="1" {{d.params.data.status == '1' ? 'selected' : ''}}>进行中</option>
|
||||
<option value="2" {{d.params.data.status == '2' ? 'selected' : ''}}>已结束</option>
|
||||
<option value="3" {{d.params.data.status == '3' ? 'selected' : ''}}>已取消</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
|
||||
<div class="layui-form-item text-right core-hidden">
|
||||
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-SQReservations-editForm-submit" id="LAY-app-SQReservations-editForm-submit" value="确认编辑">
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script>
|
||||
var debug= layui.setter.debug;
|
||||
layui.data.done = function (d) {
|
||||
//开启调试情况下获取接口赋值数据
|
||||
if (debug) { console.log(d.params.data); }
|
||||
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, form = layui.form
|
||||
, admin = layui.admin
|
||||
, laydate = layui.laydate
|
||||
, upload = layui.upload
|
||||
, cropperImg = layui.cropperImg
|
||||
, coreHelper = layui.coreHelper;
|
||||
|
||||
// 获取数据源
|
||||
var roomOptions = d.params.data.roomOptions || [];
|
||||
var dicOptions = d.params.data.dicOptions || [];
|
||||
var editData = d.params.data;
|
||||
|
||||
// 初始化房间选择下拉框
|
||||
var $roomSelect = $('#edit-SQReservations-room_id');
|
||||
if (Array.isArray(roomOptions) && roomOptions.length) {
|
||||
roomOptions.forEach(function (room) {
|
||||
if (room && (room.id !== undefined) && room.name) {
|
||||
var selected = String(room.id) === String(editData.room_id) ? 'selected' : '';
|
||||
$roomSelect.append('<option value="' + room.id + '" data-name="' + room.name + '" ' + selected + '>' + room.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 监听房间选择,自动填充房间名称
|
||||
form.on('select(edit-room-select)', function (data) {
|
||||
var selectedOption = $roomSelect.find('option:selected');
|
||||
var roomName = selectedOption.attr('data-name') || '';
|
||||
$('#edit-SQReservations-room_name').val(roomName);
|
||||
});
|
||||
|
||||
// 初始化玩法类型下拉框
|
||||
var $gameTypeSelect = $('#edit-SQReservations-game_type');
|
||||
var $gameRuleSelect = $('#edit-SQReservations-game_rule');
|
||||
if (Array.isArray(dicOptions) && dicOptions.length) {
|
||||
dicOptions.forEach(function (gameType) {
|
||||
if (gameType && (gameType.id !== undefined) && gameType.name) {
|
||||
var selected = String(gameType.name) === String(editData.game_type) ? 'selected' : '';
|
||||
$gameTypeSelect.append('<option value="' + gameType.name + '" ' + selected + '>' + gameType.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化具体规则下拉框
|
||||
if (editData.game_type && Array.isArray(dicOptions)) {
|
||||
for (var i = 0; i < dicOptions.length; i++) {
|
||||
if (String(dicOptions[i].name) === String(editData.game_type)) {
|
||||
var parent = dicOptions[i];
|
||||
if (parent && Array.isArray(parent.children) && parent.children.length) {
|
||||
parent.children.forEach(function (rule) {
|
||||
if (rule && (rule.id !== undefined) && rule.name) {
|
||||
var selected = String(rule.name) === String(editData.game_rule) ? 'selected' : '';
|
||||
$gameRuleSelect.append('<option value="' + rule.name + '" ' + selected + '>' + rule.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 监听玩法类型选择,联动具体规则
|
||||
form.on('select(edit-game-type-select)', function (data) {
|
||||
var selectedId = data.value;
|
||||
// 重置具体规则
|
||||
$gameRuleSelect.html('<option value="">请选择具体规则</option>');
|
||||
if (selectedId) {
|
||||
var parent = null;
|
||||
for (var i = 0; i < (dicOptions || []).length; i++) {
|
||||
if (String(dicOptions[i].id) === String(selectedId)) {
|
||||
parent = dicOptions[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (parent && Array.isArray(parent.children) && parent.children.length) {
|
||||
parent.children.forEach(function (rule) {
|
||||
if (rule && (rule.id !== undefined) && rule.name) {
|
||||
$gameRuleSelect.append('<option value="' + rule.id + '">' + rule.name + '</option>');
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
form.render('select');
|
||||
});
|
||||
|
||||
// 时间选择器配置
|
||||
laydate.render({
|
||||
elem: '#editTime-SQReservations-start_time',
|
||||
type: 'datetime',
|
||||
fullPanel: true,
|
||||
min: new Date().getTime()-1000, // 开始时间不能小于当前时间
|
||||
done: function(value, date) {
|
||||
calculateDuration();
|
||||
// 更新结束时间的最小值
|
||||
var startTime = new Date(value);
|
||||
laydate.render({
|
||||
elem: '#editTime-SQReservations-end_time',
|
||||
type: 'datetime',
|
||||
fullPanel: true,
|
||||
min: startTime.getTime(),
|
||||
done: function(endValue, endDate) {
|
||||
calculateDuration();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#editTime-SQReservations-end_time',
|
||||
type: 'datetime',
|
||||
fullPanel: true,
|
||||
min: new Date().getTime()-1000, // 结束时间不能小于当前时间
|
||||
done: function(value, date) {
|
||||
calculateDuration();
|
||||
}
|
||||
});
|
||||
|
||||
// 计算时长函数
|
||||
function calculateDuration() {
|
||||
var startTime = $('#editTime-SQReservations-start_time').val();
|
||||
var endTime = $('#editTime-SQReservations-end_time').val();
|
||||
|
||||
if (startTime && endTime) {
|
||||
var start = new Date(startTime);
|
||||
var end = new Date(endTime);
|
||||
var diffMs = end - start;
|
||||
var diffMinutes = Math.floor(diffMs / (1000 * 60));
|
||||
|
||||
if (diffMinutes > 0) {
|
||||
$('#edit-SQReservations-duration_minutes').val(diffMinutes);
|
||||
} else {
|
||||
$('#edit-SQReservations-duration_minutes').val(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
form.verify({
|
||||
verifytitle: [/^.{0,100}$/,'组局名称最大只允许输入100位字符'],
|
||||
verifyroom_name: [/^.{0,100}$/,'房间名称最大只允许输入100位字符'],
|
||||
verifygame_type: [/^.{0,50}$/,'玩法类型最大只允许输入50位字符'],
|
||||
verifygame_rule: [/^.{0,50}$/,'具体规则最大只允许输入50位字符'],
|
||||
verifyextra_info: [/^.{0,255}$/,'其他补充最大只允许输入255位字符'],
|
||||
minAge: function(value) {
|
||||
if (value != 0 && value < 18) {
|
||||
return '最小年龄不能小于18岁';
|
||||
}
|
||||
},
|
||||
maxAge: function(value) {
|
||||
if (value > 100) {
|
||||
return '最大年龄不能超过100岁';
|
||||
}
|
||||
},
|
||||
startTime: function(value) {
|
||||
if (value) {
|
||||
var startTime = new Date(value);
|
||||
var now = new Date();
|
||||
// if (startTime < now) {
|
||||
// return '开始时间不能小于当前时间';
|
||||
// }
|
||||
}
|
||||
},
|
||||
endTime: function(value) {
|
||||
if (value) {
|
||||
var endTime = new Date(value);
|
||||
var startTime = new Date($('#editTime-SQReservations-start_time').val());
|
||||
if (endTime <= startTime) {
|
||||
return '结束时间必须大于开始时间';
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 监听鸽子费选择
|
||||
form.on('radio', function(data) {
|
||||
if (data.elem.name === 'deposit_fee') {
|
||||
var depositValue = data.value;
|
||||
var $depositRadios = $('input[name="deposit_fee"]');
|
||||
|
||||
if (depositValue === '0') {
|
||||
// 如果选择0元,禁用其他选项
|
||||
$depositRadios.not('[value="0"]').prop('disabled', true);
|
||||
} else {
|
||||
// 如果选择其他金额,启用所有选项
|
||||
$depositRadios.prop('disabled', false);
|
||||
}
|
||||
form.render('radio');
|
||||
}
|
||||
});
|
||||
|
||||
//重载form
|
||||
form.render(null, 'LAY-app-SQReservations-editForm');
|
||||
})
|
||||
};
|
||||
</script>
|
||||
1122
server/CoreCms.Net.Web.Admin/wwwroot/views/sq/sqpigeon/index.html
Normal file
1122
server/CoreCms.Net.Web.Admin/wwwroot/views/sq/sqpigeon/index.html
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,259 @@
|
|||
<title>鸽子费审核</title>
|
||||
|
||||
<!--当前位置开始-->
|
||||
<div class="layui-card layadmin-header">
|
||||
<div class="layui-breadcrumb" lay-filter="breadcrumb">
|
||||
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
<!--当前位置结束-->
|
||||
<div style="font-size: 14px;color: #999;margin-left: 10px;">
|
||||
审核未按时赴约用户的鸽子费处理,审核通过则扣除并分配给已赴约用户,审核未通过则退还鸽子费
|
||||
</div>
|
||||
<style>
|
||||
/* 重写样式 */
|
||||
.audit-btn-approve { background-color: #009688; }
|
||||
.audit-btn-reject { background-color: #FF5722; }
|
||||
</style>
|
||||
|
||||
<div class="table-body">
|
||||
<table id="LAY-app-PigeonFeeAudit-tableBox" lay-filter="LAY-app-PigeonFeeAudit-tableBox"></table>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="LAY-app-PigeonFeeAudit-toolbar">
|
||||
<div class="layui-form coreshop-toolbar-search-form">
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="reservation_id">预约ID</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="reservation_id" placeholder="请输入预约ID" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="user_id">用户ID</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="user_id" placeholder="请输入用户ID" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="keyword">用户信息</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="keyword" placeholder="昵称/手机号" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="start_time_begin">预约时间</label>
|
||||
<div class="layui-input-inline" style="width: 260px;">
|
||||
<input type="text" name="start_time_begin" id="searchTime-PigeonFeeAudit-start_time" placeholder="请选择预约时间范围" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label" for="mark_time_begin">标记时间</label>
|
||||
<div class="layui-input-inline" style="width: 260px;">
|
||||
<input type="text" name="mark_time_begin" id="searchTime-PigeonFeeAudit-mark_time" placeholder="请选择标记时间范围" class="layui-input">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-PigeonFeeAudit-search"><i class="layui-icon layui-icon-search"></i>筛选</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-PigeonFeeAudit-pagebar">
|
||||
<div class="layui-btn-container">
|
||||
<span style="color: #666; font-size: 13px;">提示:审核通过将扣除鸽子费并分配给已赴约用户,审核未通过将退还鸽子费</span>
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script type="text/html" id="LAY-app-PigeonFeeAudit-tableBox-bar">
|
||||
<a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="approve">审核通过</a>
|
||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="reject">审核未通过</a>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var debug = layui.setter.debug;
|
||||
var coreHelper;
|
||||
|
||||
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
|
||||
function () {
|
||||
var $ = layui.$
|
||||
, admin = layui.admin
|
||||
, table = layui.table
|
||||
, form = layui.form
|
||||
, laydate = layui.laydate
|
||||
, setter = layui.setter
|
||||
, util = layui.util
|
||||
, view = layui.view;
|
||||
coreHelper = layui.coreHelper;
|
||||
|
||||
var searchwhere;
|
||||
|
||||
// 监听搜索
|
||||
form.on('submit(LAY-app-PigeonFeeAudit-search)',
|
||||
function (data) {
|
||||
var field = data.field;
|
||||
searchwhere = field;
|
||||
// 执行重载
|
||||
table.reloadData('LAY-app-PigeonFeeAudit-tableBox', { where: field });
|
||||
});
|
||||
|
||||
// 数据绑定
|
||||
table.render({
|
||||
elem: '#LAY-app-PigeonFeeAudit-tableBox',
|
||||
url: layui.setter.apiUrl + 'Api/SQReservations/GetPigeonFeeAuditList',
|
||||
method: 'POST',
|
||||
toolbar: '#LAY-app-PigeonFeeAudit-toolbar',
|
||||
pagebar: '#LAY-app-PigeonFeeAudit-pagebar',
|
||||
className: 'pagebarbox',
|
||||
defaultToolbar: ['filter', 'print', 'exports'],
|
||||
height: 'full-127',
|
||||
page: true,
|
||||
limit: 30,
|
||||
limits: [10, 15, 20, 25, 30, 50, 100, 200],
|
||||
text: { none: '暂无待审核的鸽子费记录' },
|
||||
cols: [
|
||||
[
|
||||
{ field: 'participant_id', title: '参与者ID', width: 90, sort: false },
|
||||
{ field: 'reservation_id', title: '预约ID', width: 80, sort: false },
|
||||
{
|
||||
field: 'reservation_title', title: '预约标题', width: 150, sort: false, templet: function (d) {
|
||||
return d.reservation_title || '-';
|
||||
}
|
||||
},
|
||||
{ field: 'user_id', title: '用户ID', width: 80, sort: false },
|
||||
{
|
||||
field: 'nick_name', title: '用户昵称', width: 120, sort: false, templet: function (d) {
|
||||
return d.nick_name || '-';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'mobile', title: '手机号', width: 120, sort: false, templet: function (d) {
|
||||
return d.mobile || '-';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'deposit_fee', title: '鸽子费金额', width: 100, sort: false, templet: function (d) {
|
||||
return '<span style="color: #FF5722; font-weight: bold;">¥' + (d.deposit_fee || 0) + '</span>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'room_name', title: '房间', width: 120, sort: false, templet: function (d) {
|
||||
return d.room_name || '-';
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '预约时间', width: 170, sort: false, templet: function (d) {
|
||||
var startTime = d.start_time || '';
|
||||
var endTime = d.end_time || '';
|
||||
return '开始: ' + startTime + '<br/>结束: ' + endTime;
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'mark_time', title: '标记时间', width: 160, sort: false, templet: function (d) {
|
||||
return d.mark_time || '-';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'is_arrive', title: '状态', width: 100, sort: false, templet: function (d) {
|
||||
if (d.is_arrive === 2) {
|
||||
return '<span class="layui-badge layui-bg-orange">待审核</span>';
|
||||
} else if (d.is_arrive === 3) {
|
||||
return '<span class="layui-badge layui-bg-green">已审核</span>';
|
||||
} else {
|
||||
return '<span class="layui-badge">' + d.is_arrive + '</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{ title: '操作', fixed: 'right', width: 180, align: 'center', toolbar: '#LAY-app-PigeonFeeAudit-tableBox-bar' }
|
||||
]
|
||||
]
|
||||
});
|
||||
|
||||
// 初始化日期选择器 - 预约时间
|
||||
laydate.render({
|
||||
elem: '#searchTime-PigeonFeeAudit-start_time',
|
||||
type: 'datetime',
|
||||
range: '到',
|
||||
done: function (value, date, endDate) {
|
||||
if (value) {
|
||||
var dates = value.split(' 到 ');
|
||||
$('input[name="start_time_begin"]').val(dates[0] || '');
|
||||
$('input[name="start_time_end"]').val(dates[1] || '');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 初始化日期选择器 - 标记时间
|
||||
laydate.render({
|
||||
elem: '#searchTime-PigeonFeeAudit-mark_time',
|
||||
type: 'datetime',
|
||||
range: '到',
|
||||
done: function (value, date, endDate) {
|
||||
if (value) {
|
||||
var dates = value.split(' 到 ');
|
||||
$('input[name="mark_time_begin"]').val(dates[0] || '');
|
||||
$('input[name="mark_time_end"]').val(dates[1] || '');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 隐藏的结束时间字段
|
||||
if (!$('input[name="start_time_end"]').length) {
|
||||
$('<input type="hidden" name="start_time_end">').appendTo('.coreshop-toolbar-search-form');
|
||||
}
|
||||
if (!$('input[name="mark_time_end"]').length) {
|
||||
$('<input type="hidden" name="mark_time_end">').appendTo('.coreshop-toolbar-search-form');
|
||||
}
|
||||
|
||||
// 监听行工具事件
|
||||
table.on('tool(LAY-app-PigeonFeeAudit-tableBox)', function (obj) {
|
||||
var data = obj.data;
|
||||
if (debug) { console.log(data); }
|
||||
|
||||
if (obj.event === 'approve') {
|
||||
// 审核通过
|
||||
layer.confirm('确定要审核通过吗?<br/><br/>审核通过后将扣除该用户的鸽子费(¥' + data.deposit_fee + '),并分配给已赴约的用户。', {
|
||||
title: '审核通过确认',
|
||||
icon: 3,
|
||||
btn: ['确定', '取消']
|
||||
}, function (index) {
|
||||
layer.close(index);
|
||||
coreHelper.Post('Api/SQReservations/ApprovePigeonFee', {
|
||||
participant_id: data.participant_id,
|
||||
reservation_id: data.reservation_id
|
||||
}, function (e) {
|
||||
if (e.code === 0) {
|
||||
layer.msg(e.msg, { icon: 1, time: 2000 });
|
||||
table.reloadData('LAY-app-PigeonFeeAudit-tableBox');
|
||||
} else {
|
||||
layer.msg(e.msg, { icon: 5, time: 2000 });
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
else if (obj.event === 'reject') {
|
||||
// 审核未通过
|
||||
layer.confirm('确定要审核未通过吗?<br/><br/>审核未通过后将退还该用户的鸽子费(¥' + data.deposit_fee + ')。', {
|
||||
title: '审核未通过确认',
|
||||
icon: 3,
|
||||
btn: ['确定', '取消']
|
||||
}, function (index) {
|
||||
layer.close(index);
|
||||
coreHelper.Post('Api/SQReservations/RejectPigeonFee', {
|
||||
participant_id: data.participant_id,
|
||||
reservation_id: data.reservation_id
|
||||
}, function (e) {
|
||||
if (e.code === 0) {
|
||||
layer.msg(e.msg, { icon: 1, time: 2000 });
|
||||
table.reloadData('LAY-app-PigeonFeeAudit-tableBox');
|
||||
} else {
|
||||
layer.msg(e.msg, { icon: 5, time: 2000 });
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Loading…
Reference in New Issue
Block a user