Files
ZangShiQi/addon/supermember/shop/view/membercard/edit.html
2026-04-04 17:27:12 +08:00

501 lines
15 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.
<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>