501 lines
15 KiB
HTML
Executable File
501 lines
15 KiB
HTML
Executable File
<style>
|
||
.coupon-box{
|
||
padding: 20px;
|
||
}
|
||
|
||
.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;
|
||
}
|
||
.colorSelector{
|
||
position: relative;
|
||
width: 20px;
|
||
height: 20px;
|
||
border-radius: 3px;
|
||
border: 1px solid #d7d7d7;
|
||
display: inline-block;
|
||
cursor: pointer;
|
||
vertical-align: middle;
|
||
padding: 2px;
|
||
}
|
||
.colorSelector div{
|
||
width: 100%;
|
||
height: 100%;
|
||
border-radius: 3px;
|
||
}
|
||
.flexbox-fix-btn .btn{
|
||
margin-top: 0;
|
||
line-height: 1;
|
||
}
|
||
</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 name="level_name" value="{$level_info.level_name}" type="text" lay-verify="required" class="layui-input len-long" maxlength="40">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">会员卡说明:</label>
|
||
<div class="layui-input-block len-long">
|
||
<textarea name="remark" class="layui-textarea" maxlength="150">{$level_info.remark}</textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label"><span class="required">*</span>会员卡类型:</label>
|
||
<div class="layui-input-block">{$level_info.charge_type == 1 ? '充值卡' : '付费卡'}</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">等级封面背景色:</label>
|
||
<div class="layui-input-block flex">
|
||
<input name="bg_color" type="hidden" value="{$level_info.bg_color}" class="layui-input len-short" id="bg_color_input">
|
||
<div id="bg_color"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">等级文字颜色:</label>
|
||
<div class="layui-input-block ">
|
||
<input name="level_text_color" type="hidden" value="{$level_info.level_text_color}" class="layui-input len-short" id="level_text_color_input">
|
||
<div id="level_text_color"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">背景图:</label>
|
||
<div class="layui-input-block img-upload">
|
||
<div class="upload-img-block">
|
||
<div class="upload-img-box {if condition="!empty($level_info.level_picture)"}hover{/if} ">
|
||
<div class="upload-default" id="imgUpload">
|
||
{if condition="!empty($level_info.level_picture)"}
|
||
<div id="preview_logoUpload" class="preview_img">
|
||
<img layer-src src="{:img($level_info.level_picture)}" class="img_prev"/>
|
||
</div>
|
||
{else/}
|
||
<div class="upload">
|
||
<i class="iconfont iconshangchuan"></i>
|
||
<p>点击上传</p>
|
||
</div>
|
||
{/if}
|
||
</div>
|
||
|
||
<div class="operation">
|
||
<div>
|
||
<i title="图片预览" class="iconfont iconreview js-preview" style="margin-right: 20px;"></i>
|
||
<i title="删除图片" class="layui-icon layui-icon-delete js-delete"></i>
|
||
</div>
|
||
<div class="replace_img js-replace">点击替换</div>
|
||
</div>
|
||
<input type="hidden" name="level_picture" value="{$level_info.level_picture}"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="word-aux">
|
||
<p>尺寸:1000*525像素,小于1M,支持jpg、png、jpeg格式,上传背景图后,手机端将不会展示背景颜色,优先展示背景图</p>
|
||
</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="charge_type" value="0" title="付款" {if $level_info['charge_type'] == 0}checked{/if}>
|
||
<input type="radio" name="charge_type" value="1" title="充值" {if $level_info['charge_type'] == 1}checked{/if}>
|
||
</div>
|
||
<div class="word-aux">充值卡不能设置为推荐会员卡</div>
|
||
</div>
|
||
<div class="layui-form-item charge-rule">
|
||
<label class="layui-form-label"><span class="required">*</span>付费规则:</label>
|
||
<div class="layui-input-block">
|
||
<table class="layui-table len-long" lay-skin="nob" id="level-rule">
|
||
<colgroup>
|
||
<col width="30%">
|
||
<col width="50%">
|
||
<col width="20%">
|
||
</colgroup>
|
||
<thead>
|
||
<tr>
|
||
<th>有效期</th>
|
||
<th class="align-center">价格</th>
|
||
<th>操作</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{php}
|
||
$level = json_decode($level_info['charge_rule'], true);
|
||
{/php}
|
||
{if $level}
|
||
{foreach $level as $k => $v}
|
||
<tr>
|
||
<td>
|
||
<div class="len-short">
|
||
<select lay-filter="selectRule">
|
||
{foreach $level_time as $key => $val}
|
||
{if $key == $k}
|
||
<option value="{$k}">{$val}</option>
|
||
{/if}
|
||
{/foreach}
|
||
</select>
|
||
</div>
|
||
</td>
|
||
<td class="align-center">
|
||
<input type="text" value="{$v}" lay-verify="num" class="layui-input len-short price" placeholder="价格/元" style="">
|
||
</td>
|
||
<td>
|
||
<a href="javascript:void(0)" class="text-color" onclick="deleteRule(this)">删除</a>
|
||
</td>
|
||
</tr>
|
||
{/foreach}
|
||
{/if}
|
||
</tbody>
|
||
</table>
|
||
<a href="javascript:void(0)" class="text-color " {if $level && count($level) >= 4}style="display:none"{/if} onclick="addRule()" id="add_rule_btn">添加规则</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-card card-common card-brief level-equity">
|
||
<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">
|
||
<input type="checkbox" name="is_free_shipping" value="1" {if $level_info.is_free_shipping == 1} checked {/if} lay-skin="switch" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label"><span class="required">*</span>消费折扣:</label>
|
||
<div class="layui-input-block">
|
||
<input type="number" name="consume_discount" value="{$level_info.consume_discount}" lay-verify="fl" min="0" max="100" autocomplete="off" class="layui-input len-short"> %
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">积分回馈倍率:</label>
|
||
<div class="layui-input-block">
|
||
<input type="number" name="point_feedback" value="{$level_info.point_feedback}" lay-verify="jf" min="0" max="100" autocomplete="off" class="layui-input len-short"> 倍
|
||
</div>
|
||
<div class="word-aux">回馈积分 = 消费金额 * 积分回馈倍率</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">
|
||
<input name="send_point" value="{$level_info.send_point}" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">赠送红包:</label>
|
||
<div class="layui-input-block len-long">
|
||
<input name="send_balance" value="{$level_info.send_balance}" type="number" lay-verify="num" min="0" class="layui-input len-short">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="layui-form-item">
|
||
<label class="layui-form-label">赠送优惠券:</label>
|
||
<div class="layui-input-block">
|
||
<div id="coupon_list"></div>
|
||
<button class="layui-btn" id="select_coupon">选择优惠券</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="word-aux">开卡礼包仅首次购卡发放</div>
|
||
</div>
|
||
</div>
|
||
|
||
<input type="hidden" name="level_id" value="{$level_info.level_id}">
|
||
|
||
<div class="layui-card card-common">
|
||
<div class="layui-card-body">
|
||
<div class="form-row">
|
||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||
<button class="layui-btn layui-btn-primary" onclick="back()">返回</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script type="text/javascript" src="__STATIC__/ext/colorPicker/js/colorpicker.js"></script>
|
||
<script type="text/javascript" src="STATIC_JS/coupon_select.js"></script>
|
||
<script>
|
||
var coupon_id = [], addCoupon;
|
||
var form,colorpicker,upload;
|
||
var coupon_select = new CouponSelect({
|
||
tableElem:'#coupon_list',
|
||
selectElem:'#select_coupon',
|
||
selectedIds:'{$level_info.send_coupon}',
|
||
})
|
||
|
||
layui.use(['form', 'laytpl', 'colorpicker', 'upload'], function() {
|
||
form = layui.form;
|
||
upload = layui.upload;
|
||
colorpicker = layui.colorpicker;
|
||
var laytpl = layui.laytpl,
|
||
repeat_flag = false; //防重复标识
|
||
form.render();
|
||
|
||
var logo_upload = new Upload({
|
||
elem: '#imgUpload'
|
||
});
|
||
colorpicker.render({
|
||
elem: '#bg_color', //绑定元素
|
||
color: "{$level_info.bg_color}",
|
||
done: function(color) {
|
||
$("#bg_color_input").attr("value", color);
|
||
}
|
||
});
|
||
|
||
colorpicker.render({
|
||
elem: '#level_text_color', //绑定元素
|
||
color: "{$level_info.level_text_color}",
|
||
done: function(color) {
|
||
$("#level_text_color_input").attr("value", color);
|
||
}
|
||
});
|
||
|
||
/**
|
||
* 监听保存
|
||
*/
|
||
form.on('submit(save)', function(data) {
|
||
data.field.send_coupon = coupon_select.getSelectedData().selectedIds.toString();
|
||
if(repeat_flag) return false;
|
||
|
||
let level = {};
|
||
$('#level-rule tr').each(function (i, e) {
|
||
if($(e).find('.price').val() != undefined){
|
||
level[$(e).find('select').val()] = $(e).find('.price').val();
|
||
}
|
||
})
|
||
if(JSON.stringify(level) == '{}'){
|
||
layer.msg('请设置付费规则');
|
||
return false;
|
||
}
|
||
|
||
data.field.charge_rule = JSON.stringify(level);
|
||
repeat_flag = true;
|
||
$.ajax({
|
||
url: ns.url("supermember://shop/membercard/edit"),
|
||
data: data.field,
|
||
type: "POST",
|
||
dataType: "JSON",
|
||
success: function(res) {
|
||
repeat_flag = false;
|
||
if (res.code == 0) {
|
||
layer.confirm('编辑成功', {
|
||
title:'操作提示',
|
||
btn: ['返回列表', '继续操作'],
|
||
yes: function(index, layero){
|
||
location.hash = ns.hash("supermember://shop/membercard/lists")
|
||
layer.close(index);
|
||
},
|
||
btn2: function(index, layero) {
|
||
layer.close(index);
|
||
}
|
||
});
|
||
}else{
|
||
layer.msg(res.message);
|
||
}
|
||
}
|
||
});
|
||
});
|
||
|
||
/**
|
||
* 表单验证
|
||
*/
|
||
form.verify({
|
||
num: function(value) {
|
||
var arrMen = value.split(".");
|
||
var val = 0;
|
||
if (arrMen.length == 2) {
|
||
val = arrMen[1];
|
||
}
|
||
|
||
if (value == "") {
|
||
return false;
|
||
}
|
||
if (value < 0 || val.length > 2) {
|
||
return '请输入大于等于0的数,保留小数点后两位'
|
||
}
|
||
},
|
||
fl: function(value, item) {
|
||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||
str = str.substring(0, str.length - 1);
|
||
|
||
if (isNaN(parseFloat(value))) {
|
||
return "请设置" + str;
|
||
}
|
||
|
||
if (value <= 0) {
|
||
return str + "不能小于等于0";
|
||
}
|
||
|
||
if (value > 100) {
|
||
return str + "不能大于100";
|
||
}
|
||
|
||
var arrMen = value.split(".");
|
||
var val = 0;
|
||
if (arrMen.length == 2) {
|
||
val = arrMen[1];
|
||
}
|
||
if (val.length > 2) {
|
||
return str + "最多可保留两位小数";
|
||
}
|
||
},
|
||
jf: function(value, item) {
|
||
var str = $(item).parents(".layui-form-item").find("label").text().split("*").join("");
|
||
str = str.substring(0, str.length - 1);
|
||
|
||
if (value < 0) {
|
||
return str + "不能小于0";
|
||
}
|
||
|
||
if (value > 100) {
|
||
return str + "不能大于100";
|
||
}
|
||
|
||
var arrMen = value.split(".");
|
||
var val = 0;
|
||
if (arrMen.length == 2) {
|
||
val = arrMen[1];
|
||
}
|
||
if (val.length > 2) {
|
||
return str + "最多可保留两位小数";
|
||
}
|
||
}
|
||
|
||
});
|
||
});
|
||
|
||
function back(){
|
||
location.hash = ns.hash("supermember://shop/membercard/lists");
|
||
}
|
||
|
||
//添加付费规则
|
||
function addRule() {
|
||
let level_select = {:json_encode($level_time, JSON_UNESCAPED_UNICODE)};
|
||
$('#level-rule tr').each(function (i, e) {
|
||
if($(e).find('select').val() && $(e).find('select').val() != undefined){
|
||
delete level_select[$(e).find('select').val()];
|
||
}
|
||
})
|
||
|
||
var select_html = '';
|
||
for (let i in level_select){
|
||
select_html += '<option value="'+i+'">'+level_select[i]+'</option>';
|
||
}
|
||
|
||
var html = `
|
||
<tr>
|
||
<td>
|
||
<div class="len-short">
|
||
<select lay-filter="selectRule">
|
||
${select_html}
|
||
</select>
|
||
</div>
|
||
</td>
|
||
<td class="align-center">
|
||
<input type="text" value="0" lay-verify="num" class="layui-input len-short price" placeholder="价格/元">
|
||
</td>
|
||
<td>
|
||
<a href="javascript:void(0)" class="text-color" onclick="deleteRule(this)">删除</a>
|
||
</td>
|
||
</tr>
|
||
`;
|
||
|
||
$('#level-rule tbody').append(html);
|
||
if($('#level-rule tr').length == 5){
|
||
$('#add_rule_btn').hide()
|
||
}
|
||
form.render();
|
||
form.on('select(selectRule)', function(data){
|
||
let num = 0;
|
||
$('#level-rule tr').each(function (i, e) {
|
||
if($(e).find('select').val() == data.value){
|
||
num++;
|
||
$('.delete-rule').removeClass('delete-rule');
|
||
$(e).find('select').addClass('delete-rule');
|
||
}
|
||
})
|
||
if(num > 1) deleteRule($('.delete-rule'));
|
||
});
|
||
|
||
form.verify({
|
||
num: function (value) {
|
||
|
||
var arrmen = value.split(".");
|
||
var val = 0;
|
||
if (arrmen.length == 2) {
|
||
val = arrmen[1];
|
||
}
|
||
|
||
if (value == "") {
|
||
return false;
|
||
}
|
||
if (value < 0 || val.length > 2) {
|
||
return '请输入大于等于0的数,保留小数点后两位'
|
||
}
|
||
}
|
||
})
|
||
|
||
return false;
|
||
}
|
||
|
||
function deleteRule(obj) {
|
||
$(obj).parents('tr').remove();
|
||
if($('#level-rule tr').length < 5){
|
||
$('#add_rule_btn').show()
|
||
}
|
||
}
|
||
|
||
</script>
|