Files
ZangShiQi/addon/scenefestival/shop/view/scenefestival/add.html
2026-04-04 17:27:12 +08:00

588 lines
19 KiB
HTML
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<link rel="stylesheet" href="SHOP_CSS/game.css">
<style>
.choose-item > span {
display: inline-block;
padding: 0 10px;
height: 36px;
line-height: 36px;
text-align: center;
border-radius: 4px;
border: 1px solid #ededed;
position: relative;
cursor: pointer;
margin: 5px 0;
margin-right: 11px;
}
.choose-item > span i {
position: absolute;
bottom: -5px;
right: -6px;
border-radius: 50%;
color: #FFF;
font-size: 14px;
line-height: 1;
}
.holiday-active {
color: #fff;
}
.holiday-hidden {
border: none;
width: .1px;
}
.coupon-box .layui-form{
padding: 0!important;
}
.layui-layer-page .layui-layer-content{
overflow: auto !important;
}
.del-btn {
cursor: pointer;
}
.level-equity .layui-input {
display: inline-block;
}
.gods-box table:first-of-type{
margin-bottom: 0;
}
.gods-box table:last-of-type{
margin-top: 0;
display: block;
max-height: 323px;
overflow: auto;
}
.coupon-box .single-filter-box{
padding-top: 0;
}
.coupon-box .select-coupon-btn{
margin-top: 10px;
}
.layui-layer-page .layui-layer-content{
overflow-y: scroll!important;
}
</style>
<div class="layui-form">
<div class="layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">活动设置</span>
</div>
<div class="layui-card-body">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动名称:</label>
<div class="layui-input-block">
<input type="text" name="activity_name" lay-verify="required" maxlength="15" placeholder="最多可填写15个字" autocomplete="off" class="layui-input len-long">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动时间:</label>
<div class="layui-input-block">
<input type="radio" name="join_time" value="1" lay-verify="required" lay-filter="join_time" title="传统节日" checked>
<input type="radio" name="join_time" value="0" lay-verify="required" lay-filter="join_time" title="自定义节日">
</div>
</div>
<div class="layui-form-item layui-hide" id="festival_name">
<label class="layui-form-label"><span class="required">*</span>节日名称:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" maxlength="15" placeholder="最多可填写15个字" name="festival_name" class="layui-input len-mid" autocomplete="off">
</div>
</div>
</div>
<div class="layui-form-item layui-hide" id="self_time">
<label class="layui-form-label"><span class="required">*</span>节日日期:</label>
<div class="layui-inline">
<div class="layui-input-inline">
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline end-time">
<input type="text" id="end_time" name="end_time" lay-verify="required|time" class="layui-input len-mid" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item" id="join_time">
<label class="layui-form-label"><span class="required">*</span>节日日期:</label>
<div class="layui-input-block">
<span class="holiday-name"></span>
<input type="hidden" class="holiday-hidden" lay-verify='holiday'>
<button class="layui-btn" type="button" onclick="choose()">重新选择</button>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">祝福语:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" maxlength="150"></textarea>
</div>
</div>
<div class="layui-form-item participation-condition">
<label class="layui-form-label">参与条件:</label>
<div class="layui-input-block">
<input type="radio" name="level_id" value="0" lay-filter="participation" title="全部会员" checked>
<input type="radio" name="level_id" value="1" lay-filter="participation" title="部分会员">
</div>
<div class="layui-inline layui-hide">
<label class="layui-form-label"></label>
<div class="layui-input-block">
{foreach $member_level_list as $k =>$v}
<input type="checkbox" class="level-id" value="{$v.level_id}" title="{$v.level_name}" lay-skin="primary">
{/foreach}
</div>
</div>
<div class="word-aux">选择参与的会员等级,默认为所有会员都可参与</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励发放时间:</label>
<div class="layui-input-block">
<input type="radio" name="join_type" value="1" lay-verify="required" lay-filter="join_type" title="活动时间内" checked>
<input type="radio" name="join_type" value="0" lay-verify="required" lay-filter="join_type" title="活动开始前">
<span id="time" class="layui-hide">
<input type="number" name="join_frequency" min="0" max="7" lay-verify="required|join_frequency" onchange="detectionNumType(this,'positiveInteger')" autocomplete="off" class="layui-input len-short" value="1">
</span>
</div>
</div>
<!-- <div class="layui-form-item layui-hide" id="time">
<label class="layui-form-label"></label>
<div class="layui-input-block">
<input type="number" name="join_frequency" min="0" max="7" lay-verify="required|join_frequency" onchange="detectionNumType(this,'positiveInteger')" autocomplete="off" class="layui-input len-short" value="1">天
</div>
</div> -->
</div>
</div>
<div class="layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">奖品设置</span>
</div>
<!-- <div class="layui-card-body">-->
<!-- <div class="layui-form-item">-->
<!-- <label class="layui-form-label">奖品明细:</label>-->
<!-- <div class="layui-input-block">-->
<!-- <table id="award_list"></table>-->
<!-- </div>-->
<!-- <div class="word-aux">-->
<!-- <span class="aux-title">注意:</span>-->
<!-- <div class="aux-item">1、奖项设置包含优惠券时,请保证优惠券数量充足</div>-->
<!-- <div class="aux-item">2、奖品奖项不能少于1项且不能超过7项。</div>-->
<!-- </div>-->
<!-- <div class="word-aux">-->
<!-- <button class="layui-btn" onclick="addAward()">添加奖品</button>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-card-body reward-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励内容:</label>
<div class="layui-input-block">
<input type="checkbox" name="type" value="point" title="积分" lay-skin="primary" lay-filter="type" lay-verify="type" checked>
<input type="checkbox" name="type" value="balance" title="余额" lay-skin="primary" lay-filter="type" lay-verify="type">
<input type="checkbox" name="type" value="coupon" title="优惠券" lay-skin="primary" lay-filter="type" lay-verify="type">
</div>
</div>
<div class="point-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励积分:</label>
<div class="layui-input-block">
<input name="point" value="1" type="number" onchange="detectionNumType(this,'positiveInteger')" lay-verify="required|mum" class="layui-input len-short">
</div>
</div>
</div>
<div class="balance-wrap layui-hide">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励红包:</label>
<div class="layui-input-block len-long">
<input type="radio" name="balance_type" value="0" checked title="不可提现" lay-verify="balance_type"><input name="balance" onchange="detectionNumType(this,'positiveNumber')" value="1" type="number" lay-verify="" class="layui-input len-short">
</div>
<!--<label class="layui-form-label"></label>-->
<!--<div class="layui-input-block len-long">-->
<!--<input type="radio" value="1" name="balance_type" title="可提现" lay-verify="balance_type"><input name="balance_money" onchange="detectionNumType(this,'positiveInteger')" value="1" type="number" lay-verify="" class="layui-input len-short" style="margin-left: 14px;">元-->
<!--</div>-->
</div>
<!-- <div class="word-aux"><p>红包为储值余额,仅在消费时可用</p></div>-->
</div>
<div class="coupon-wrap layui-hide">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>奖励优惠券:</label>
<div class="layui-input-block">
<div id="coupon_list"></div>
<div class="word-aux text-color" style="margin-left: 0">
<p>活动优惠券发放,不受优惠券自身数量和领取数量的限制</p>
</div>
<button class="layui-btn" id="select_coupon">选择优惠券</button>
</div>
</div>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backScenefestivalList()">返回</button>
</div>
</div>
<!-- 添加奖品 -->
{include file="scenefestival/award_select"/}
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
<script>
var form,laydate,laytpl,upload,tableData = [],
repeat_flag = false,
awardId = 0,
currentDate = new Date(),
minDate = "",
coupon_id = [], addCoupon;
var coupon_select = new CouponSelect({
tableElem:'#coupon_list',
selectElem:'#select_coupon',
})
layui.use(['form', 'laydate', 'laytpl'], function() {
form = layui.form;
laydate = layui.laydate;
laytpl = layui.laytpl;
currentDate.setDate(currentDate.getDate() + 30);
form.render();
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
value: new Date(),
done: function(value) {
minDate = value;
reRender();
}
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
value: new Date(currentDate)
});
/**
* 重新渲染结束时间
* */
function reRender() {
$("#end_time").remove();
$(".end-time").html('<input type="text" id="end_time" name="end_time" placeholder="请输入结束时间" lay-verify="required|time" class = "layui-input len-mid" autocomplete="off"> ');
laydate.render({
elem: '#end_time',
type: 'datetime',
min: minDate
});
}
//参与条件
form.on('radio(participation)', function(data){
if (parseInt(data.value))
$('.participation-condition .layui-inline').removeClass('layui-hide');
else
$('.participation-condition .layui-inline').addClass('layui-hide');
});
form.on('radio(join_type)', function(data){
if (data.value == 1 ) {
$("#time").addClass('layui-hide');
}else {
$("#time").removeClass('layui-hide');
}
});
form.on('radio(join_time)', function(data){
if (data.value == 1 ) {
$("#join_time").removeClass('layui-hide');
$("#self_time").addClass('layui-hide');
$("#festival_name").addClass('layui-hide');
}else {
$("#join_time").addClass('layui-hide');
$("#self_time").removeClass('layui-hide');
$("#festival_name").removeClass('layui-hide');
}
});
/**
* 表单验证
*/
form.verify({
time: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
var time_type = $('input[name="join_time"]:checked').val();
if(time_type == 0){
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
}
},
holiday:function(){
if($('input[name = "join_time"]:checked').val() == 1 && $('.holiday-hidden').val() != 1){
return "请选择节日日期";
}
},
type: function(){
if ($('.reward-wrap [name="type"]:checked').length == 0) {
return '请选择领奖励内容';
}
},
mum: function(value, item){
if (/^\d{0,10}$/.test(value) === false) {
return '请输入大于0的整数';
}
if (parseInt(value) <= 0) {
return '请输入大于0的整数';
}
},
// float: function(value, item){
// if (/^\d{0,10}$/.test(value) === false) {
// return '请输入大于0的数字支持小数点后两位';
// }
// if (parseInt(value) <= 0) {
// return '请输入大于0的数字支持小数点后两位';
// }
// },
join_frequency: function(value){
if(value > 7){
return '不得超过7天'
}
}
});
form.on('checkbox(type)', function(data) {
$('[name="type"]').each(function(){
var type = $(this).val();
if ($(this).is(':checked')) {
$('.reward-wrap .' + type + '-wrap').removeClass('layui-hide');
if (type == 'point' || type == 'coupon') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|mum');
}
if (type == 'balance') {
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', 'required|float');
}
} else {
$('.reward-wrap .' + type + '-wrap').addClass('layui-hide');
$('.reward-wrap .' + type + '-wrap [lay-verify]').attr('lay-verify', '');
}
})
});
/**
* 表单提交
*/
form.on('submit(save)', function(data){
let coupon_selected_ids = coupon_select.getSelectedData().selectedIds;
var type = [];
$('.reward-wrap [name="type"]:checked').each(function(){
type.push($(this).val());
});
if ($.inArray('coupon', type) != -1 && coupon_selected_ids.length == 0) {
layer.msg('请选择优惠券', {icon: 5});
return;
}
if(data.field.join_time == 0 && data.field.festival_name == '') {
layer.msg('请输入节日名称');
return;
}
if(data.field.max_fetch == ''){
layer.msg('请输入邀请奖励上限', {icon: 5});
return;
}else if (data.field.max_fetch < 0){
layer.msg('请输入大于或等于0的整数', {icon: 5});
return;
}
data.field.type = type.toString();
data.field.coupon = coupon_selected_ids.toString();
if (parseInt(data.field.level_id)){
var levelId = [],
levelName = [];
$('.level-id').each(function(){
if($(this).prop('checked')){
levelId.push($(this).val());
levelName.push($(this).attr("title"));
}
});
data.field.level_id = levelId.toString();
data.field.level_name = levelName.toString();
}
if($("input[name='level_id']:checked").val() == 1 && data.field.level_id.length == 0){
layer.msg('请选择会员等级', {icon: 5});
return;
}
if (!data.field.no_winning_img && upload.path != 'public/uniapp/game/no_winning.png') upload.delete();
if(repeat_flag) return;
repeat_flag = true;
if($('.holiday-name').html()){
data.field.holiday_name = $('.holiday-name').html();
data.field.holiday_time =$('.holiday-name').attr('date-time')
}else{
data.field.holiday_name = '';
data.field.holiday_time = '';
}
// console.log($('input[name = "join_time"]:checked').val())
// console.log($('.holiday-hidden').val())
// console.log($('input[name = "join_time"]:checked').val() == 1 && $('.holiday-hidden').val() > 0)
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("scenefestival://shop/scenefestival/add"),
data: data.field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('添加成功', {
title:'操作提示',
btn: ['返回列表', '继续添加'],
closeBtn: 0,
yes: function(index, layero){
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
layer.close(index);
},
btn2: function(index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
var upload = new Upload({
elem: '#no_winning_img'
});
});
function backScenefestivalList() {
location.hash = ns.hash("scenefestival://shop/scenefestival/lists");
}
//检测数据类型
function detectionNumType(el,type){
var value = $(el).val();
//大于零 且 不是小数
if (value < 0 && type == 'integral')
$(el).val(0);
else if(type == 'integral')
$(el).val(Math.round(value));
//大于1 且 不是小数
if (value < 1 && type == 'positiveInteger'){
$(el).val(1);
} else if (type == 'positiveInteger'){
var val = Math.round(value);
if(Object.is(val,NaN)){
$(el).val(1);
}else{
$(el).val(val);
}
}
//大于零可以是小数
if (type == 'positiveNumber'){
value = parseFloat(value).toFixed(2);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
//大于零可以是小数
if (type == 'positiveMoney'){
value = parseFloat(value).toFixed(2);
if (value < 0)
$(el).val(0);
else
$(el).val(value);
}
}
// 选择节日日期
function choose() {
var data = {};
laytpl($("#choose_time").html()).render(data, function(html) {
coupon_list = layer.open({
title: '选择节日',
skin: 'layer-tips-class',
type: 1,
area: ['520px', 'auto'],
btn:['确定','取消'],
content: html,
});
form.render();
$('.holiday').each(function(){
if($(this).html() == $('.holiday-name').html()){
$(this).addClass('holiday-active bg-color')
}
});
});
}
function holiday(data){
$('.holiday').removeClass('holiday-active bg-color');
$(data).addClass('holiday-active bg-color');
$('.holiday-name').html($(data).html());
$('.holiday-hidden').val(1);
$('.holiday-name').attr('date-time' , $(data).attr('date-time'))
}
</script>
<script type="text/html" id="choose_time">
<div class="choose-time">
<div class="choose-item">
<p>传统节日</p>
{foreach $jieri_list as $jieri_list_k => $jieri_list_v}
<span class="border-color holiday" date-time="{$jieri_list_v.date}" onclick = "holiday(this)">{$jieri_list_v.holiday_cn}</span>
{/foreach}
</div>
</div>
</script>