初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,305 @@
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
<link rel="stylesheet" href="SHOP_CSS/package.css"/>
<div class="order-detail">
<div class="layui-row layui-col-space1 order-detail-info" >
<div class="layui-col-md4 order-detail-left" >
<div class="layui-card">
<div class="layui-card-header nav-title">订单信息</div>
<div class="layui-card-body">
<div class="layui-form">
<div class="layui-form-item">
<label class="layui-form-label">订单编号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$order_detail['order_no']}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">订单类型:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$order_detail['order_type_name']}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">订单来源:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail.order_from_name}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">买家:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux"><a class="text-color" target="_blank" href='{:href_url("shop/member/editmember?member_id=".$order_detail["member_id"])}'>{$order_detail.name}</a></div>
</div>
</div>
</div>
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">定金支付方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['deposit_pay_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">定金支付流水号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['deposit_out_trade_no']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">定金支付时间:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{:time_to_date($order_detail['pay_deposit_time'])}</p>
</div>
</div>
</div>
</div>
{if !empty($order_detail['final_pay_type'])}
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">尾款支付方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['final_pay_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾款支付流水号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['final_out_trade_no']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾款支付时间:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{:time_to_date($order_detail['pay_final_time'])}</p>
</div>
</div>
</div>
</div>
{/if}
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">配送方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['delivery_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收货人:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['mobile']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">收货地址:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$order_detail['full_address']}-{$order_detail['address']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item order-detail-hr"></div>
<div class="layui-form-item">
<label class="layui-form-label">买家留言:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
{if $order_detail['buyer_message'] == ""}
<p>-</p>
{else/}
<p>{$order_detail['buyer_message']}</p>
{/if}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md8 order-detail-operation">
<div class="layui-card">
<div class="layui-card-header">订单状态:{$order_detail.order_status_name}</div>
<div class="layui-card-body">
<p class="order-detail-tips"></p>
{php}
$order_json_data = json_decode($order_detail['order_status_action'], true);
$action = $order_json_data['action'];
{/php}
{foreach $action as $action_k => $action_item}
<a class="layui-btn" href="javascript:orderAction('{$action_item.action}', '{$order_detail.id}')">{$action_item.title}</a>
{/foreach}
<br>
<i class="layui-icon layui-icon-about"></i>
</div>
</div>
</div>
<div class="order-detail-dl">
<dl>
<dt>提醒:</dt>
<dd>交易成功后,平台将把货款结算至你的店铺账户余额,你可申请提现;</dd>
<dd>请及时关注你发出的包裹状态,确保能配送至买家手中;</dd>
<dd>如果买家表示未收到货或者货物有问题,请及时联系买家积极处理,友好协商;</dd>
</dl>
</div>
</div>
</div>
{if $order_detail['is_invoice'] == 1}
<div style="height: 15px;"></div>
<div class="layui-row form-wrap invoice-view">
<div class="layui-col-md6">
<h4 class="invoice-title">发票信息</h4>
<ul class="invoice-box">
<li class="invoice-item">
<label class="invoice-label">发票类型:</label>
<div class="invoice-content">{if $order_detail['invoice_type'] == 1}纸质{else/}电子{/if}{if $order_detail['is_tax_invoice'] == 1}专票{else/}普票{/if}</div>
</li>
<li class="invoice-item">
<label class="invoice-label">发票抬头:</label>
<div class="invoice-content">{$order_detail['invoice_title']}</div>
</li>
<li class="invoice-item">
<label class="invoice-label">发票抬头类型:</label>
<div class="invoice-content">{$order_detail['invoice_title_type'] == 1 ? '个人' : '企业'}</div>
</li>
{if $order_detail['invoice_title_type'] == 2}
<li class="invoice-item">
<label class="invoice-label">纳税人识别号:</label>
<div class="invoice-content">{$order_detail['taxpayer_number']}</div>
</li>
{/if}
<li class="invoice-item">
<label class="invoice-label">发票内容:</label>
<div class="invoice-content">{$order_detail['invoice_content']}</div>
</li>
{if $order_detail['invoice_type'] == 1}
<li class="invoice-item">
<label class="invoice-label">发票邮寄地址:</label>
<div class="invoice-content">{$order_detail['invoice_full_address']}</div>
</li>
{else/}
<li class="invoice-item">
<label class="invoice-label">发票接收邮件:</label>
<div class="invoice-content">{$order_detail['invoice_email']}</div>
</li>
{/if}
</ul>
</div>
<div class="layui-col-md6">
<h4 class="invoice-title">发票费用</h4>
<ul class="invoice-box">
<li class="invoice-item">
<label class="invoice-label">发票费用:</label>
<div class="invoice-content"><span class="invoice-money">¥{$order_detail.invoice_money}</span> </div>
</li>
<li class="invoice-item">
<label class="invoice-label">发票税率:</label>
<div class="invoice-content"><span class="invoice-money">{$order_detail.invoice_rate}%</span> </div>
</li>
<li class="invoice-item">
<label class="invoice-label">发票邮寄费用:</label>
<div class="invoice-content"><span class="invoice-money">¥{$order_detail.invoice_delivery_money}</span> </div>
</li>
</ul>
</div>
</div>
{/if}
<div style="height: 15px;"></div>
<div class="order-detail-table">
<table class="layui-table" lay-filter="parse-table-order-product" lay-skin="line" lay-size="lg">
<thead>
<tr>
<th lay-data="{field:'product_name', width:200}">商品</th>
<th lay-data="{field:'sale_num'}">数量</th>
<th lay-data="{field:'price'}">单价</th>
<th lay-data="{field:'total_money'}">总价</th>
<th lay-data="{field:'presale_deposit'}">预售定金单价</th>
<th lay-data="{field:'presale_deposit_money'}">定金总额</th>
<th lay-data="{field:'presale_price'}">抵扣金额单价</th>
<th lay-data="{field:'presale_money'}">抵扣总额</th>
</tr>
</thead>
<tbody>
<tr>
<td>{$order_detail.sku_name}</td>
<td>{$order_detail.num}</td>
<td>{$order_detail.price}</td>
<td>{$order_detail.goods_money}</td>
<td>{$order_detail.presale_deposit}</td>
<td>{$order_detail.presale_deposit_money}</td>
<td>{$order_detail.presale_price}</td>
<td>{$order_detail.presale_money}</td>
</tr>
</tbody>
</table>
<div class="layui-row order-detail-total">
<div class="layui-col-md9">&nbsp;</div>
<div class="layui-col-md3 order-money-box" >
<div>商品总额:¥{$order_detail["goods_money"]}</div>
<div>店铺优惠券:¥{$order_detail["coupon_money"]}</div>
<div>配送费用:¥{$order_detail["delivery_money"]}</div>
<div>发票费用:¥{$order_detail["invoice_money"]}</div>
<div>发票邮寄费用:¥{$order_detail["invoice_delivery_money"]}</div>
<div>定金总额:¥{$order_detail["presale_deposit_money"]}</div>
<div>抵扣总额:¥{$order_detail["presale_money"]}</div>
<div>尾款总额:¥{$order_detail["final_money"]}</div>
<div>订单共{$order_detail["num"]}件商品,总计:<span>¥{$order_detail["order_money"]}</span></div>
</div>
</div>
</div>
{include file="order/order_common_action" /}

View File

@@ -0,0 +1,368 @@
<style type="text/css">
.address{height: 0;width: 1px; border: none; overflow: hidden;}
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
.layui-layout-admin .screen{margin-top: 15px;}
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
</style>
<div class="layui-collapse tips-wrap">
<div class="layui-colla-item">
<h2 class="layui-colla-title">操作提示</h2>
<ul class="layui-colla-content layui-show">
<li>商品预售展示商品预售相关信息</li>
</ul>
</div>
</div>
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">搜索方式:</label>
<div class="layui-input-inline">
<select name="order_label" >
{foreach $order_label_list as $k => $label_val}
<option value="{$k}">{$label_val}</option>
{/foreach}
</select>
</div>
<div class="layui-input-inline">
<input type="text" name="search" autocomplete="off" class="layui-input" />
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">下单时间:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">订单类型:</label>
<div class="layui-input-inline">
<select name="order_type" lay-filter="order_type">
{foreach $order_type_list as $order_type_k => $order_type_val}
<option value="{$order_type_val.type}">{$order_type_val.name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单来源:</label>
<div class="layui-input-inline">
<select name="order_from">
<option value="">全部</option>
{foreach $order_from_list as $order_from_k => $order_from_v}
<option value="{$order_from_k}">{$order_from_v['name']}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">定金付款方式:</label>
<div class="layui-input-inline">
<select name="deposit_pay_type" >
<option value="">全部</option>
{foreach pay_type_list as $pay_type_k => $pay_type_v}
<option value="{$pay_type_k}">{$pay_type_v}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">尾款付款方式:</label>
<div class="layui-input-inline">
<select name="final_pay_type" >
<option value="">全部</option>
{foreach pay_type_list as $pay_type_k => $pay_type_v}
<option value="{$pay_type_k}">{$pay_type_v}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<div class="layui-tab table-tab" lay-filter="presale_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="">全部</li>
{foreach $order_status_list as $status_val}
<li data-status="{$status_val.status}">{$status_val.name}</li>
{/foreach}
</ul>
<div class="layui-tab-content">
<!-- 列表 -->
<table id="presale_list" lay-filter="presale_list"></table>
</div>
</div>
{include file="order/order_common_action" /}
<!-- 商品 -->
<script type="text/html" id="goods">
<div class="table-title">
<div class="title-pic">
{{# if(d.sku_image){ }}
<img layer-src="{{ns.img(d.sku_image.split(',')[0],'big')}}" src="{{ns.img(d.sku_image.split(',')[0],'small')}}"/>
{{# } }}
</div>
<div class="title-content">
<a href="javascript:;" class="multi-line-hiding text-color" title="{{d.sku_name}}">{{d.sku_name}}</a>
<a href="javascript:;" class="multi-line-hiding" title="">{{ d.price }}</a>
</div>
</div>
</script>
<!-- 金额 -->
<script id="price" type="text/html">
<div class="layui-elip">定金{{ d.presale_deposit_money }}</div>
<div class="layui-elip">尾款{{ d.final_money }}</div>
</script>
<!-- 收货人地址 -->
<script id="addressHtml" type="text/html">
<div class="layui-elip">{{ d.name }}</div>
<div class="layui-elip">{{ d.mobile }}</div>
{{# if(d.full_address){ }}
<div class="layui-elip" title="{{ d.full_address }} {{ d.address }}" > <input type="text" class="address" id="address" value="{{ d.full_address }} {{ d.address }}"><a href="javascript:ns.copy('address');" class="iconfont iconfuzhi" style="margin-top: 4px"></a> {{ d.full_address }} {{ d.address }}</div>
{{# } }}
</script>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" lay-event="detail">详情</a>
{{# if(d.is_deposit_back!=1 && d.can_refund !=1){ }}
{{# layui.each(d.action, function(index, item){ }}
<a class="layui-btn" href="javascript:orderAction('{{item.action}}', '{{d.id}}')">{{item.title}}</a>
{{# }); }}
{{# } }}
{{# if(d.order_status == 1 && d.is_deposit_back==1 && d.can_refund ==1){ }}
<a class="layui-btn" lay-event="agree">退定金</a>
{{# } }}
</div>
</script>
<script>
var laytpl,table,form,laydate,element,repeat_flag;
layui.use(['form', 'element','laydate','laytpl'], function() {
form = layui.form;
laytpl = layui.laytpl;
laydate = layui.laydate;
element = layui.element;
repeat_flag = false; //防重复标识
form.render();
//渲染时间
laydate.render({
elem: '#start_time',
type: 'datetime'
});
laydate.render({
elem: '#end_time',
type: 'datetime'
});
element.on('tab(presale_tab)', function() {
table.reload({
page: {
curr: 1
},
where: {
'order_status': this.getAttribute('data-status')
}
});
});
table = new Table({
elem: '#presale_list',
url: ns.url("presale://shop/order/lists"),
where:{
'presale_id':{$presale_id}
},
cols: [
[{
field: 'order_no',
title: '订单编号',
unresize: 'false',
width:'10%'
},{
title: '商品信息',
unresize: 'false',
templet:'#goods',
width:'20%'
}, {
field:'num',
title: '购买数量',
unresize: 'false',
templet:function(data){
return data.num + '件';
},
width:'6%'
}, {
title: '金额',
unresize: 'false',
templet:'#price',
width:'10%'
},{
field:'nickname',
title: '购买人',
unresize: 'false',
width:'10%'
}, {
title: '收货人信息',
unresize: 'false',
templet:'#addressHtml',
width:'10%'
}, {
title: '状态',
unresize: 'false',
width:'10%',
templet:function(data){
if(data.order_status==1 && data.is_deposit_back==1 && data.can_refund==1){
return '已关闭(未支付尾款)'
}else{
var html = data.order_status_name;
if(data.refund_status != 0){
html += ''+ data.refund_status_name +'';
}
return html;
}
}
}, {
title: '创建时间',
unresize: 'false',
templet:function(data){
return ns.time_to_date(data.create_time);
},
width:"10%"
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
]
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
return false;
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'detail': //查看
window.open(ns.href("presale://shop/order/detail", {"id": data.id}));
break;
case 'agree': //同意
agreeRefund(data.id);
break;
}
});
});
//同意退款
function agreeRefund(id){
layer.confirm('确定该退定金吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/refund/agree"),
data: {
id: id
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
/**
* 七天时间
*/
function datePick(date_num,event_obj){
$(".date-picker-btn").removeClass("selected");
$(event_obj).addClass('selected');
// alert(new Date().format("yyyy-MM-dd hh:mm"));
Date.prototype.Format = function (fmt,date_num) { //author: meizz
this.setDate(this.getDate()-date_num);
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};
// var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
$("input[name=start_time]").val(before_time,0);
$("input[name=end_time]").val(now_time,date_num-1);
}
function add() {
location.hash = ns.hash("presale://shop/presale/add");
}
</script>

View File

@@ -0,0 +1,116 @@
<script type="text/javascript">
var laytpl;
var form;
//渲染模板引擎
layui.use(['laytpl','form'], function(){
laytpl = layui.laytpl;
form = layui.form;
form.render();
});
/**
* 订单操作
* @param fun
* @param order_id
*/
function orderAction(fun, order_id){
eval(fun+"("+order_id+")");
}
/**
* 关闭订单
* @param order_id
*/
function orderClose(order_id){
layer.confirm('确定要关闭该订单吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("presale://shop/order/close"),
data: {order_id : order_id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}, function () {
layer.close();
});
}
/**
* 线下支付定金
* @param order_id
*/
function offlinePayDeposit(order_id){
layer.confirm('确定要线下支付定金吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("presale://shop/order/offlinePayDeposit"),
data: {order_id : order_id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}, function () {
layer.close();
});
}
/**
* 线下支付尾款
* @param order_id
*/
function offlinePayFinal(order_id){
layer.confirm('确定要线下支付尾款吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("presale://shop/order/offlinePayFinal"),
data: {order_id : order_id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}, function () {
layer.close();
});
}
/**
* 删除订单
* @param order_id
*/
function deleteOrder(order_id){
layer.confirm('确定要删除该订单吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("presale://shop/order/deleteOrder"),
data: {order_id : order_id},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("presale://shop/order/lists");
}
}
});
}, function () {
layer.close();
});
}
</script>

View File

@@ -0,0 +1,683 @@
<style>
.len-input {width: 100%;max-width: 120px;}
.layui-form-item .layui-input-inline.end-time{float: none;}
.goods-title{display: flex;align-items: center;}
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
.goods-title .goods-name{flex: 1;line-height: 1.6;}
.form-wrap {position: relative;}
.layui-carousel { position: absolute; top: 15px; left: 1325px; background: #fff;}
.goods_num {padding-left: 20px;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动名称:</label>
<div class="layui-input-block">
<input type="text" name="presale_name" value="{$presale_name}" lay-verify="required" autocomplete="off" class="layui-input len-long" maxlength="40">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>定金支付时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="start_time" name="start_time" lay-verify="required" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="end_time" name="end_time" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>尾款支付时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="pay_start_time" name="pay_start_time" lay-verify="required|spay_time" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="pay_end_time" name="pay_end_time" lay-verify="required|epay_time" class="layui-input" autocomplete="off" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
<div class="word-aux">
<p>注意:当尾款支付时间结束,那么该预售活动也就结束</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">限购:</label>
<div class="layui-input-block">
<input type="number" min="0" name="presale_num" class="layui-input len-short">
</div>
<div class="word-aux">
<p>下单时每人最多可购买数量限制,不填时不限制。</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">预计发货时间:</label>
<div class="layui-input-block">
<input type="radio" name="deliver_type" value="0" lay-filter="deliver_type" checked="checked" title="固定时间">
<input type="radio" name="deliver_type" value="1" lay-filter="deliver_type" title="支付尾款后">
</div>
</div>
<div class="layui-form-item deliver-time end-time">
<label class="layui-form-label">固定时间:</label>
<div class="layui-input-block">
<input type="text" lay-verify="deliver_time" id="deliver_time" class="layui-input len-mid" autocomplete="off" readonly>
</div>
</div>
<div class="layui-form-item deliver-time fixed-term" style="display: none">
<label class="layui-form-label">支付尾款:</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="number" min="1" max="365" id="pay_days" autocomplete="off" class="layui-input len-short">
</div>
<span class="layui-form-mid">天后,开始发货</span>
</div>
<div class="word-aux">
<p>不能小于0且必须为整数</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否参与分销:</label>
<div class="layui-input-block">
<input type="radio" name="is_fenxiao" value="0" title="不参与" checked>
<input type="radio" name="is_fenxiao" value="1" title="参与">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否支持退定金:</label>
<div class="layui-input-block">
<input type="radio" name="is_deposit_back" value="0" title="是" lay-filter="deposit_back" checked>
<input type="radio" name="is_deposit_back" value="1" title="否" lay-filter="deposit_back">
</div>
</div>
<div class="layui-form-item layui-form-text deposit_agreement layui-hide">
<label class="layui-form-label">定金退还协议:</label>
<div class="layui-input-inline">
<textarea name="deposit_agreement" id="deposit_agreement" class="layui-textarea len-long" maxlength="150"></textarea>
</div>
</div>
<div class="layui-form-item goods_list">
<label class="layui-form-label">活动商品:</label>
<div class="layui-input-block">
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
<button class="layui-btn" onclick="addGoods()">选择商品</button> <span class="goods_num">已选商品(<span id="goods_num" class="text-color">0</span></span>
</div>
</div>
<input type="hidden" name="sku_ids">
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">活动规则说明:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" maxlength="300"></textarea>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPresaleList()">返回</button>
</div>
<!-- <div class="layui-carousel" >
<img src="__STATIC__/img/presale.png" >
</div>-->
</div>
<script type="text/html" id="toolbarOperation">
<button class="layui-btn layui-btn-primary" lay-event="presale-stock">预售库存</button>
<button class="layui-btn layui-btn-primary" lay-event="presale-deposit">定金</button>
<button class="layui-btn layui-btn-primary" lay-event="presale-price">定金抵扣金额</button>
</script>
<script>
var goodsId = {}, selectedGoodsId = [], sku_list = [],
form,laydate,repeat_flag,currentDate,minDate;
layui.use(['form', 'laydate'], function() {
form = layui.form;
laydate = layui.laydate;
repeat_flag = false;
currentDate = new Date();
minDate = "";
currentDate.setDate(currentDate.getDate() + 30);
form.render();
renderTable(sku_list); // 初始化表格
for (var i = 0; i <= 30; i++) {
if (i < 10) {
var html = '<option value="' + i + '">0' + i + '</option>';
} else {
var html = '<option value="' + i + '">' + i + '</option>';
}
if (i == 1) {
var html = '<option value="' + i + '" selected>0' + i + '</option>';
}
$(".presale-day").append(html);
}
for (var i = 0; i <= 23; i++) {
if (i < 10) {
var html = '<option value="' + i + '">0' + i + '</option>';
} else {
var html = '<option value="' + i + '">' + i + '</option>';
}
$(".presale-hour").append(html);
}
for (var i = 0; i <= 59; i++) {
if (i < 10) {
var html = '<option value="' + i + '">0' + i + '</option>';
} else {
var html = '<option value="' + i + '">' + i + '</option>';
}
$(".presale-minute").append(html);
}
form.render('select');
//定金开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime',
value: new Date(),
done: function(value) {
minDate = value;
}
});
//定金结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime',
value: new Date(currentDate)
});
var payDate = new Date(currentDate);
payDate.setDate(payDate.getDate() + 1);
//尾款开始时间
laydate.render({
elem: '#pay_start_time', //指定元素
type: 'datetime',
value: payDate
});
payDate.setDate(payDate.getDate() + 29);
//尾款结束时间
laydate.render({
elem: '#pay_end_time', //指定元素
type: 'datetime',
value: payDate
});
//发货时间
laydate.render({
elem: '#deliver_time', //指定元素
type: 'datetime'
});
// 监听单选按钮
form.on('radio(deliver_type)', function(data) {
if (data.value == 0) {
$('#deliver_time').attr('lay-verify','deliver_time');
$('#pay_days').attr('lay-verify','');
$('.deliver-time.end-time').show();
$('.deliver-time.fixed-term').hide();
$('#pay_days').val('');
} else {
$('#deliver_time').attr('lay-verify','');
$('#pay_days').attr('lay-verify','days');
$('.deliver-time.end-time').hide();
$('.deliver-time.fixed-term').show();
$('#deliver_time').val('');
}
});
// 监听单选按钮是否退定金显示退定金协议
form.on('radio(deposit_back)', function(data) {
if (data.value == 1) {
$(".deposit_agreement").removeClass("layui-hide");
} else {
$('#deposit_agreement').val('');
$(".deposit_agreement").addClass("layui-hide");
}
});
/**
* 表单验证
*/
form.verify({
etime: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#deposit_start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
spay_time: function(value) {
var now_time = (new Date()).getTime();
var start_time =(new Date(value)).getTime();
var deposit_end_time = (new Date($("#end_time").val())).getTime();
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
if(start_time < deposit_end_time){
return '尾款开始支付时间不能小于定金结束支付时间!'
}
},
epay_time: function(value) {
var now_time = (new Date()).getTime();
var start_time = (new Date($("#pay_start_time").val())).getTime();
var end_time = (new Date(value)).getTime();
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
},
presale_stock: function(value) {
if (value.trim() == "") {
return '预售库存不能为空';
}
if (Number(value) <= 0) {
return '预售库存必须大于0';
}
if (value % 1 != 0) {
return '砍价库存必须为整数';
}
},
presale_deposit: function(value, item) {
var sku_id = $(item).attr('data-id');
var price = $(item).parent().parent().siblings().children().children().children(".presale-price-" + sku_id).text();
if (Number(value) <= 0) {
return '定金必须大于0';
}
if (Number(value) === Number(price)) {
return '定金不能等于价格';
}
if (Number(value) > Number(price)) {
return '定金不能大于价格';
}
},
presale_price: function(value, item) {
var sku_id = $(item).attr('data-id');
var presale_deposit = $(item).parent().parent().siblings().children().children(".presale_deposit_" + sku_id).val();
var price = $(item).parent().parent().siblings().children().children().children(".presale-price-" + sku_id).text();
if (value.trim() == "") {
return '定金可抵金额不能为空';
}
if (Number(value) === Number(price)) {
return '定金可抵金额不能等于价格';
}
if (Number(value) > Number(price)) {
return '定金可抵金额不能大于价格';
}
if (Number(value) < Number(presale_deposit)) {
return '定金可抵金额不能小于定金';
}
},
deliver_time: function(value) {
var pay_end_time = (new Date($("#pay_end_time").val())).getTime();
var deliver_time = (new Date(value)).getTime();
if (value.trim() == "") {
return '预计发货时间不能为空!';
}
if(deliver_time < pay_end_time && deliver_time!=''){
return '预计发货时间不能小于尾款结束支付时间!'
}
},
days: function(value) {
if (value.trim() == "") {
return '预计发货时间不能为空!';
}
},
});
/**
* 监听提交
*/
form.on('submit(save)', function(data){
var field = data.field;
if (!Object.keys(goodsId).length) {
layer.msg("请选择活动商品!", {icon: 5, anim: 6});
return;
}
var deposit_end_time = (new Date($("#end_time").val())).getTime();
var pay_start_time = (new Date($("#pay_start_time").val())).getTime();
if(pay_start_time < deposit_end_time){
layer.msg('尾款开始支付时间不能小于定金结束支付时间');
$("#pay_start_time").focus();
return;
}
if(field.deliver_type == 1){
field.deliver_time = $('#pay_days').val();
}else{
var pay_end_time = (new Date($("#pay_end_time").val())).getTime();
var deliver_time = (new Date($("#deliver_time").val())).getTime();
if(deliver_time < pay_end_time){
layer.msg('预计发货时间不能小于尾款结束支付时间');
$("#deliver_time").focus();
return;
}
field.deliver_time = $('#deliver_time').val();
}
field.goods_ids = selectedGoodsId.split(',');
var skuId = [];
Object.values(goodsId).forEach(function (item,index) {
Object.values(item.sku_id).forEach(function (skuItem,skuIndex) {
skuId.push(skuItem.sku);
});
});
field.sku_ids = skuId;
var skuLisArr = [];
sku_list.forEach(function(item,index) {
var sku_detail = {};
sku_detail.sku_id = item.sku_id;
sku_detail.goods_id = item.goods_id;
sku_detail.presale_stock = item.presale_stock || 0;
sku_detail.presale_deposit = item.presale_deposit || 0.00;
sku_detail.presale_price = item.presale_price || 0.00;
skuLisArr.push(sku_detail);
});
field.sku_list = skuLisArr;
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("presale://shop/presale/add"),
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("presale://shop/presale/lists");
layer.close(index);
},
btn2: function (index, layero) {
listenerHash(); // 刷新页面
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
// 表格渲染
function renderTable(sku_list) {
//展示已知数据
table = new Table({
elem: '#selected_goods_list',
page: false,
limit: Number.MAX_VALUE,
cols: [
[{
width: "3%",
type: 'checkbox',
unresize: 'false'
},{
title: '商品名称',
width: '23%',
unresize: 'false',
templet: function(data) {
var html = '';
html += `
<div class="goods-title">
<div class="goods-img">
<img layer-src src="${data.sku_image ? ns.img(data.sku_image) : ''}" alt="">
</div>
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" data-sku_id="${data.sku_id}" title="${data.sku_name}">${data.sku_name}</p>
</div>
`;
return html;
}
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
width: '15%',
templet: function(data) {
return '<p class="line-hiding" title="'+ data.price +'">¥<span class="presale-price presale-price-'+data.sku_id+'">' + data.price +'</span></p>';
}
}, {
title: '预售库存',
unresize: 'false',
width: '13%',
templet: '#presaleStock'
}, {
title: '定金',
unresize: 'false',
width: '13%',
templet: '#presaleDeposit'
}, {
title: '定金可抵金额',
unresize: 'false',
width: '13%',
templet: '#presalePrice'
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
],
data: sku_list,
toolbar: '#toolbarOperation'
});
/**
* 批量操作
*/
table.toolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "presale-stock":
editInput(0,obj);
break;
case "presale-deposit":
editInput(1,obj);
break;
case "presale-price":
editInput(2,obj);
break;
}
});
}
function editInput(textIndex=0,data) {
var text = [{
name: '预售库存',
value: 'presale_stock'
},{
name: '定金',
value: 'presale_deposit'
},{
name: '定金抵扣金额',
value: 'presale_price'
}];
layer.open({
type: 1,
title:"修改"+text[textIndex].name,
area:['600px'],
btn:["保存","返回"],
content: `
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>${text[textIndex].name}</label>
<div class="layui-input-block">
<input type="text" name="presale_edit_input" lay-verify="required" autocomplete="off" class="layui-input len-mid" placeholder="请输入${text[textIndex].name}">
</div>
</div>
`,
yes: function(index, layero){
var val = $("input[name='presale_edit_input']").val();
if (!val){
layer.msg("请输入" + text[textIndex].name);
return false;
}
data.data.forEach(function (item,index) {
sku_list.forEach(function (skuItem,skuIndex) {
if (item.sku_id == skuItem.sku_id){
sku_list[skuIndex][text[textIndex].value] = val;
}
})
});
renderTable(sku_list);
layer.closeAll();
}
});
}
/**
* 添加商品
*/
function addGoods(){
goodsSelect(function (data) {
sku_list = [];
goodsId = [];
for (var key in data) {
goodsId['goods_'+ data[key].goods_id] = {};
goodsId['goods_'+ data[key].goods_id].sku_id = {};
goodsId['goods_'+ data[key].goods_id].spu_id = data[key].goods_id;
for (var sku in data[key].sku_list) {
var item = data[key].sku_list[sku];
goodsId['goods_'+ data[key].goods_id].sku_id['sku_'+item.sku_id]={};
goodsId['goods_'+ data[key].goods_id].sku_id['sku_'+item.sku_id].sku = item.sku_id;
sku_list.push(item);
}
}
renderTable(sku_list);
$("input[name='sku_ids']").val(JSON.stringify(goodsId));
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
$("#goods_num").html(sku_list.length);
selectedGoodsId = spuId.toString();
}, selectedGoodsId);
}
function delRow(obj,id) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].sku_id == parseInt(id)){
sku_list.splice(i,1);
}
}
Object.values(goodsId).forEach(function (item,index) {
delete item.sku_id['sku_'+id];
if (!Object.keys(item.sku_id).length){
delete goodsId['goods_'+item.spu_id];
}
});
var spuId = [];
Object.values(goodsId).forEach(function (item,index) {
spuId.push(item.spu_id);
});
$("#goods_num").html(sku_list.length);
selectedGoodsId = spuId.toString();
$(obj).parents("tr").remove();
}
function presaleStock(index,event) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].sku_id == index)
sku_list[i].presale_stock = event.srcElement.value;
}
}
function presaleDeposit(index,event) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].sku_id == index)
sku_list[i].presale_deposit = event.srcElement.value;
}
}
function presalePrice(index,event) {
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].sku_id == index)
sku_list[i].presale_price = event.srcElement.value;
}
}
function deposit(sku_id,value,index,event){
for (var i = 0; i < sku_list.length; i++){
if (sku_list[i].sku_id == index)
sku_list[i].presale_price = event.srcElement.value;
}
$(".presale_price_"+sku_id).val(value);
//sku_list[index-1].presale_price = event.srcElement.value;
}
function backPresaleList() {
location.hash = ns.hash("presale://shop/presale/lists");
}
</script>
<script type="text/html" id="presaleStock">
<input type="number" class="layui-input len-input presale-stock" value="{{d.presale_stock ? d.presale_stock : '0' }}" lay-verify="presale_stock" min="0" oninput="presaleStock({{ d.sku_id }},event)" onporpertychange="presaleStock({{ d.sku_id }},event)"/>
</script>
<script type="text/html" id="presaleDeposit">
<input type="number" class="layui-input len-input presale-deposit presale_deposit_{{ d.sku_id }}" value="{{d.presale_deposit ? d.presale_deposit : '0'}}" lay-verify="presale_deposit" min="0.00" oninput="presaleDeposit({{ d.sku_id }},event)" onporpertychange="presaleDeposit({{ d.sku_id }},event)" data-id="{{ d.sku_id }}" onchange="deposit({{ d.sku_id }},value,{{ d.sku_id }},event)"/>
</script>
<script type="text/html" id="presalePrice">
<input type="number" class="layui-input len-input presale-price presale_price_{{ d.sku_id }}" lay-verify="presale_price" min="0.00" value="{{d.presale_price ? d.presale_price : '0'}}" oninput="presalePrice({{ d.sku_id }},event)" onporpertychange="presalePrice({{ d.sku_id }},event)" data-id="{{ d.sku_id }}" />
</script>
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" onclick="delRow(this,{{d.sku_id}})">删除</a>
</div>
</script>

View File

@@ -0,0 +1,127 @@
<link rel="stylesheet" href="STATIC_CSS/promotion_detail.css">
<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="promotion-view">
<div class="promotion-view-item">
<label>活动名称:</label>
<span>{$info.presale_name}</span>
</div>
<div class="promotion-view-item">
<label>活动状态:</label>
<span>{$info.status_name}</span>
</div>
<div class="promotion-view-item">
<label>添加时间:</label>
<span>{:date('Y-m-d H:i:s',$info.create_time)}</span>
</div>
<div class="promotion-view-item">
<label>开始时间:</label>
<span>{:date('Y-m-d H:i:s',$info.start_time)}</span>
</div>
<div class="promotion-view-item">
<label>结束时间:</label>
<span>{:date('Y-m-d H:i:s',$info.end_time)}</span>
</div>
<div class="promotion-view-item">
<label>预售总库存:</label>
<span>{$info.presale_stock}</span>
</div>
<div class="promotion-view-item">
<label>尾款支付开始时间:</label>
<span>{:date('Y-m-d H:i:s',$info.pay_start_time)}</span>
</div>
<div class="promotion-view-item">
<label>尾款支付结束时间:</label>
<span>{:date('Y-m-d H:i:s',$info.pay_end_time)}</span>
</div>
<div class="promotion-view-item">
<label>发货时间:</label>
<span>
{if $info.deliver_type == 0}
{:date('Y-m-d H:i:s',$info.deliver_time)}
{else/}
支付尾款{$info.deliver_time}天后,开始发货
{/if}
</span>
</div>
<div class="promotion-view-item">
<label>销量:</label>
<span>{$info.sale_num}</span>
</div>
<div class="promotion-view-item">
<label>是否参与分销:</label>
<span>{if $info.is_fenxiao == 1} 参与 {else/} 不参与 {/if}</span>
</div>
<div class="promotion-view-item">
<label>是否支持退定金:</label>
<span>{if $info.is_deposit_back == 1} 否 {else/} 是 {/if}</span>
</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='promotion-view-list'>
<table id="promotion_list"></table>
</div>
</div>
</div>
</div>
<script type='text/html' id="promotion_list_item_box_html">
<div class="promotion-list-item-title">
<div class="promotion-list-item-title-icon">
<img src="{{ ns.img(d.sku_image) }}" alt="">
</div>
<p class="promotion-list-item-title-name multi-line-hiding">{{ d.sku_name }}</p>
</div>
</script>
<script>
var promotion_list = {:json_encode($info.sku_list, JSON_UNESCAPED_UNICODE)};
layui.use('table', function() {
new Table({
elem: '#promotion_list',
cols: [
[{
field: 'sku_name',
title: '商品名称',
width: '30%',
unresize: 'false',
templet: '#promotion_list_item_box_html'
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
templet: function(data) {
return '¥' + data.price;
}
}, {
field: 'presale_stock',
title: '预售库存',
unresize: 'false',
}, {
field: 'presale_deposit',
title: '定金',
unresize: 'false',
templet: function(data) {
return '¥' + data.presale_deposit;
}
}, {
field: 'presale_price',
title: '定金抵扣金额',
unresize: 'false'
}]
],
data: promotion_list
});
});
</script>

View File

@@ -0,0 +1,672 @@
<style>
.len-input{width: 100%;max-width: 120px;}
.layui-table-view{margin-top: 0;}
.layui-form-item .layui-input-inline.end-time{float: none;}
.forbidden{cursor:not-allowed;background-color: #eee;}
.layui-table-body{max-height: 480px !important;}
.goods-title{display: flex;align-items: center;}
.goods-title .goods-img{display: flex;align-items: center;justify-content: center;width: 55px;height: 55px;margin-right: 5px;}
.goods-title .goods-img img{max-height: 100%;max-width: 100%;}
.goods-title .goods-name{flex: 1;line-height: 1.6;}
.form-wrap {position: relative;}
.layui-carousel { position: absolute; top: 15px; left: 1325px; background: #fff;}
</style>
<div class="layui-form form-wrap">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>活动名称:</label>
<div class="layui-input-block">
<input type="text" name="presale_name" lay-verify="required" value="{$presale_info.presale_name}" autocomplete="off" class="layui-input len-long" maxlength="40">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>定金支付时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="start_time" name="start_time" value="{:date('Y-m-d H:i:s', $presale_info.start_time)}" lay-verify="required|stime" class="layui-input" autocomplete="off" readonly>
<input type="hidden" value="{:date('Y-m-d H:i:s', $presale_info.start_time)}" id="ystart_time" name="ystart_time">
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="end_time" name="end_time" value="{:date('Y-m-d H:i:s', $presale_info.end_time)}" lay-verify="required|etime" class="layui-input" autocomplete="off" readonly>
<input type="hidden" value="{$presale_info.end_time}" id="old_end_time">
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
<div class="word-aux">
<p>定金支付时间</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>尾款支付时间:</label>
<div class="layui-inline">
<div class="layui-input-inline len-mid">
<input type="text" id="pay_start_time" name="pay_start_time" value="{:date('Y-m-d H:i:s', $presale_info.pay_start_time)}" lay-verify="required|spay_time" class="layui-input" autocomplete="off" readonly>
<input type="hidden" value="{:date('Y-m-d H:i:s', $presale_info.pay_start_time)}" id="pstart_time" name="pstart_time">
<i class=" iconrili iconfont calendar"></i>
</div>
<span class="layui-form-mid">-</span>
<div class="layui-input-inline len-mid end-time">
<input type="text" id="pay_end_time" name="pay_end_time" value="{:date('Y-m-d H:i:s', $presale_info.pay_end_time)}" lay-verify="required|epay_time" class="layui-input" autocomplete="off" readonly>
<input type="hidden" value="{$presale_info.pay_end_time}" id="old_pay_end_time">
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">限购:</label>
<div class="layui-input-block">
<input type="number" min="0" name="presale_num" value="{$presale_info.presale_num}" class="layui-input len-short">
</div>
<div class="word-aux">
<p>下单时每人最多可购买数量限制,不填时不限制。</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">预计发货时间:</label>
<div class="layui-input-block">
<input type="radio" name="deliver_type" value="0" lay-filter="filter" {if $presale_info.deliver_type == 0} checked {/if} title="固定时间">
<input type="radio" name="deliver_type" value="1" lay-filter="filter" {if $presale_info.deliver_type == 1} checked {/if} title="支付尾款后">
</div>
</div>
<div class="layui-form-item deliver-time end-time">
<label class="layui-form-label">固定时间:</label>
<div class="layui-input-block">
<input type="text" lay-verify="deliver_time" id="deliver_time" {if $presale_info.deliver_type == 0} value="{:date('Y-m-d H:i:s',$presale_info.deliver_time)}" {/if} class="layui-input len-mid" autocomplete="off" readonly>
</div>
</div>
<div class="layui-form-item deliver-time fixed-term">
<label class="layui-form-label">支付尾款:</label>
<div class="layui-input-block">
<div class="layui-input-inline">
<input type="number" min="1" max="365" id="pay_days" {if $presale_info.deliver_type == 1} value="{$presale_info.deliver_time}" {/if} lay-verify="days" autocomplete="off" class="layui-input len-short">
</div>
<span class="layui-form-mid">天后,开始发货</span>
</div>
<div class="word-aux">
<p>不能小于0且必须为整数</p>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否参与分销:</label>
<div class="layui-input-inline">
<input type="radio" name="is_fenxiao" value="0" title="不参与" {if $presale_info.is_fenxiao == 0} checked {/if}>
<input type="radio" name="is_fenxiao" value="1" title="参与" {if $presale_info.is_fenxiao == 1} checked {/if}>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">是否支持退定金:</label>
<div class="layui-input-block">
<input type="radio" name="is_deposit_back" lay-filter="deposit_back" value="0" title="是" {if $presale_info.is_deposit_back == 0} checked {/if}>
<input type="radio" name="is_deposit_back" lay-filter="deposit_back" value="1" title="否" {if $presale_info.is_deposit_back == 1} checked {/if}>
</div>
</div>
<div class="layui-form-item layui-form-text deposit_agreement {if $presale_info.is_deposit_back == 0} layui-hide {/if}">
<label class="layui-form-label">定金退还协议:</label>
<div class="layui-input-inline">
<textarea name="deposit_agreement" class="layui-textarea len-long" maxlength="150">{$presale_info.deposit_agreement}</textarea>
</div>
</div>
<div class="layui-form-item goods_list">
<label class="layui-form-label">活动商品:</label>
<div class="layui-input-block">
<table id="selected_goods_list" lay-filter="selected_goods_list"></table>
</div>
</div>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">活动规则说明:</label>
<div class="layui-input-inline">
<textarea name="remark" class="layui-textarea len-long" maxlength="300">{$presale_info.remark}</textarea>
</div>
</div>
<!-- <div class="layui-carousel" >
<img src="__STATIC__/img/presale.png" >
</div>-->
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
<button class="layui-btn layui-btn-primary" onclick="backPresaleList()">返回</button>
</div>
<input type="hidden" name="presale_id" value="{$presale_info.presale_id}" />
</div>
<script type="text/html" id="toolbarOperation">
<button class="layui-btn layui-btn-primary" lay-event="presale-stock">预售库存</button>
<button class="layui-btn layui-btn-primary" lay-event="presale-deposit">定金</button>
<button class="layui-btn layui-btn-primary" lay-event="presale-price">定金抵扣金额</button>
</script>
<script>
var deliver_type = $("input[name='deliver_type']:checked").val();
if (deliver_type == 0) {
$('#deliver_time').attr('lay-verify','deliver_time');
$('#pay_days').attr('lay-verify','');
$('.deliver-time.end-time').show();
$('.deliver-time.fixed-term').hide();
$('#pay_days').val('');
} else {
$('#deliver_time').attr('lay-verify','');
$('#pay_days').attr('lay-verify','days');
$('.deliver-time.end-time').hide();
$('.deliver-time.fixed-term').show();
$('#deliver_time').val('');
}
var sku_list = [];
sku_list = {:json_encode($presale_info.sku_list, JSON_UNESCAPED_UNICODE)};
sku_list.forEach(function (item,index) {
item.is_delete = item.presale_stock ? 1 : 2;
});
layui.use(['form', 'laydate'], function() {
var form = layui.form,
laydate = layui.laydate,
repeat_flag = false,
startDate = '{$presale_info.start_time}',
endDate = '{$presale_info.end_time}',
minDate = "";
form.render();
renderTable(sku_list); // 初始化表格
//定金开始时间
var now_time = (new Date()).getTime();
var ystart_time = (new Date($("#ystart_time").val())).getTime();
if (now_time <= ystart_time) {
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime'
});
//定金结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
}
var pstart_time = (new Date($("#pstart_time").val())).getTime();
if(now_time <= pstart_time) {
//尾款开始时间
laydate.render({
elem: '#pay_start_time', //指定元素
type: 'datetime'
});
//尾款结束时间
laydate.render({
elem: '#pay_end_time', //指定元素
type: 'datetime'
});
}
//发货时间
laydate.render({
elem: '#deliver_time', //指定元素
type: 'datetime'
});
// 监听单选按钮
form.on('radio(filter)', function(data) {
if (data.value == 0) {
$('#deliver_time').attr('lay-verify','deliver_time');
$('#pay_days').attr('lay-verify','');
$('.end-time').show();
$('.fixed-term').hide();
$('#pay_days').val('');
} else {
$('#deliver_time').attr('lay-verify','');
$('#pay_days').attr('lay-verify','days');
$('.end-time').hide();
$('.fixed-term').show();
$('#deliver_time').val('');
}
});
// 监听单选按钮是否退定金显示退定金协议
form.on('radio(deposit_back)', function(data) {
if (data.value == 1) {
$(".deposit_agreement").removeClass("layui-hide");
} else {
$('#deposit_agreement').val('');
$(".deposit_agreement").addClass("layui-hide");
}
});
/**
* 表单验证
*/
form.verify({
stime: function(value) {
var now_time = (new Date()).getTime();
var start_time =(new Date(value)).getTime();
var ystart_time = (new Date($("#ystart_time").val())).getTime();
if (now_time <= ystart_time) {
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
}
},
etime: function(value) {
var now_time = ((new Date()).getTime())/1000;
var start_time = ((new Date($("#start_time").val())).getTime())/1000;
var end_time = ((new Date(value)).getTime())/1000;
var ystart_time = ((new Date($("#ystart_time").val())).getTime())/1000;
var old_end_time = $("#old_end_time").val();
if (now_time <= ystart_time) {
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
if (end_time < old_end_time){
return '结束时间不能小于之前设置的结束时间!';
}
}
},
spay_time: function(value) {
var now_time = (new Date()).getTime();
var start_time =(new Date(value)).getTime();
var deposit_end_time = (new Date($("#end_time").val())).getTime();
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
if(start_time < deposit_end_time){
return '尾款开始支付时间不能小于定金结束支付时间!'
}
},
epay_time: function(value) {
var now_time = ((new Date()).getTime())/1000;
var start_time = ((new Date($("#pay_start_time").val())).getTime())/1000;
var end_time = ((new Date(value)).getTime())/1000;
var old_pay_end_time = $("#old_pay_end_time").val();
if (now_time > start_time) {
return '开始时间不能小于当前时间!'
}
if (now_time > end_time) {
return '结束时间不能小于当前时间!'
}
if (start_time > end_time) {
return '结束时间不能小于开始时间!';
}
if (old_pay_end_time > end_time) {
return '结束时间不能小于之前设置的结束时间!';
}
},
deliver_time: function(value) {
var pay_end_time = (new Date($("#pay_end_time").val())).getTime();
var deliver_time = (new Date(value)).getTime();
if (value.trim() == "") {
return '预计发货时间不能为空!';
}
if(deliver_time < pay_end_time && deliver_time!=''){
return '预计发货时间不能小于尾款结束支付时间!'
}
},
days: function(value) {
if (value.trim() == "") {
return '预计发货时间不能为空!';
}
},
presale_stock: function(value) {
if (value.trim() == "") {
return '预售库存不能为空';
}
if (Number(value) <= 0) {
return '预售库存必须大于0';
}
if (value % 1 != 0) {
return '砍价库存必须为整数';
}
},
presale_deposit: function(value, item) {
var sku_id = $(item).attr('data-id');
var price = $(item).parent().parent().siblings().children().children().children(".presale-price-" + sku_id).text();
if (Number(value) <= 0) {
return '定金必须大于0';
}
if (Number(value) === Number(price)) {
return '定金不能等于价格';
}
if (Number(value) > Number(price)) {
return '定金不能大于价格';
}
},
presale_price: function(value, item) {
var sku_id = $(item).attr('data-id');
var presale_deposit = $(item).parent().parent().siblings().children().children(".presale_deposit_" + sku_id).val();
var price = $(item).parent().parent().siblings().children().children().children(".presale-price-" + sku_id).text();
if (value.trim() == "") {
return '定金可抵金额不能为空';
}
if (Number(value) === Number(price)) {
return '定金可抵金额不能等于价格';
}
if (Number(value) > Number(price)) {
return '定金可抵金额不能大于价格';
}
if (Number(value) < Number(presale_deposit)) {
return '定金可抵金额不能小于定金';
}
}
});
/**
* 监听提交
*/
form.on('submit(save)', function(data){
var field = data.field;
var deposit_end_time = (new Date($("#end_time").val())).getTime();
var pay_start_time = (new Date($("#pay_start_time").val())).getTime();
if(pay_start_time < deposit_end_time){
layer.msg('尾款开始支付时间不能小于定金结束支付时间');
$("#pay_start_time").focus();
return;
}
if(field.deliver_type == 1){
field.deliver_time = $('#pay_days').val();
}else{
var pay_end_time = (new Date($("#pay_end_time").val())).getTime();
var deliver_time = (new Date($("#deliver_time").val())).getTime();
if(deliver_time < pay_end_time){
layer.msg('预计发货时间不能小于尾款结束支付时间');
$("#deliver_time").focus();
return;
}
field.deliver_time = $('#deliver_time').val();
}
field.sku_ids = [];
field.goods_id = sku_list[0].goods_id;
sku_list.forEach(function (item,index) {
if (item.is_delete == 2) return false;
field.sku_ids.push(item.sku_id);
});
if (field.sku_ids.length == 0) {
layer.msg("请选择参与活动商品!", {icon: 5, anim: 6});
return;
}
var skuLisArr = [];
sku_list.forEach(function(item,index) {
var sku_detail = {};
sku_detail.sku_id = item.sku_id;
sku_detail.goods_id = item.goods_id;
sku_detail.presale_stock = item.presale_stock || 0;
sku_detail.presale_deposit = item.presale_deposit || 0.00;
sku_detail.presale_price = item.presale_price || 0.00;
sku_detail.is_delete = item.is_delete || 1;
skuLisArr.push(sku_detail);
});
field.sku_list = skuLisArr;
if(repeat_flag) return;
repeat_flag = true;
$.ajax({
type: 'POST',
dataType: 'JSON',
url: ns.url("presale://shop/presale/edit"),
data: field,
async: false,
success: function(res){
repeat_flag = false;
if (res.code == 0) {
layer.confirm('编辑成功', {
title:'操作提示',
btn: ['返回列表', '继续编辑'],
yes: function(index, layero){
location.hash = ns.hash("presale://shop/presale/lists");
layer.close(index);
},
btn2: function(index, layero) {
layer.close(index);
}
});
}else{
layer.msg(res.message);
}
}
})
});
});
// 表格渲染
function renderTable(sku_list) {
//展示已知数据
table = new Table({
elem: '#selected_goods_list',
page: false,
limit: Number.MAX_VALUE,
cols: [
[{
width: "3%",
type: 'checkbox',
unresize: 'false'
},{
title: '商品名称',
width: '23%',
unresize: 'false',
templet: function(data) {
var html = '';
html += `
<div class="goods-title">
<div class="goods-img">
<img layer-src src="${data.sku_image ? ns.img(data.sku_image) : ''}" alt="">
</div>
<p class="multi-line-hiding goods-name" data-goods_id="${data.goods_id}" data-sku_id="${data.sku_id}" title="${data.sku_name}">${data.sku_name}</p>
</div>
`;
return html;
}
}, {
field: 'price',
title: '商品价格',
unresize: 'false',
width: '15%',
templet: function(data) {
return '<p class="line-hiding" title="'+ data.price +'">¥<span class="presale-price presale-price-'+data.sku_id+'">' + data.price +'</span></p>';
}
}, {
title: '预售库存',
unresize: 'false',
templet: '#presaleStock'
}, {
title: '定金',
unresize: 'false',
templet: '#presaleDeposit'
}, {
title: '定金抵扣金额',
unresize: 'false',
templet: '#presalePrice'
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
],
data: sku_list,
toolbar: '#toolbarOperation'
});
/**
* 批量操作
*/
table.toolbar(function(obj) {
if (obj.data.length < 1) {
layer.msg('请选择要操作的数据');
return;
}
switch (obj.event) {
case "presale-stock":
editInput(0,obj);
break;
case "presale-deposit":
editInput(1,obj);
break;
case "presale-price":
editInput(2,obj);
break;
}
});
}
function editInput(textIndex=0,data) {
var text = [{
name: '预售库存',
value: 'presale_stock'
},{
name: '定金',
value: 'presale_deposit'
},{
name: '定金抵扣金额',
value: 'presale_price'
}];
layer.open({
type: 1,
title:"修改"+text[textIndex].name,
area:['600px'],
btn:["保存","返回"],
content: `
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>${text[textIndex].name}</label>
<div class="layui-input-block">
<input type="text" name="presale_edit_input" lay-verify="required" autocomplete="off" class="layui-input len-mid" placeholder="请输入${text[textIndex].name}">
</div>
</div>
`,
yes: function(index, layero){
var val = $("input[name='presale_edit_input']").val();
if (!val){
layer.msg("请输入" + text[textIndex].name);
return false;
}
data.data.forEach(function (item,index) {
sku_list.forEach(function (skuItem,skuIndex) {
if (item.sku_id == skuItem.sku_id){
sku_list[skuIndex][text[textIndex].value] = val;
sku_list[skuIndex].is_delete = 1;
}
})
});
renderTable(sku_list);
layer.closeAll();
}
});
}
function presaleStock(index,event) {
sku_list[index-1].presale_stock = event.srcElement.value;
}
function presaleDeposit(index,event) {
sku_list[index-1].presale_deposit = event.srcElement.value;
}
function presalePrice(index,event) {
sku_list[index-1].presale_price = event.srcElement.value;
}
function deposit(sku_id,value,index,event){
$(".presale_price_"+sku_id).val(value);
sku_list[index-1].presale_price = event.srcElement.value;
}
function backPresaleList() {
location.hash = ns.hash("presale://shop/presale/lists");
}
$("body").off("click",".no-participation").on("click",".no-participation",function(){
$(this).text("参与");
$(this).parents("tr").find("input").each(function (index,item) {
$(item).attr("readonly",true);
$(item).attr("disabled",true);
$(item).addClass("forbidden");
$(item).attr("lay-verify","");
});
$(this).addClass("participation").removeClass("no-participation");
sku_list[$(this).parents("tr").attr("data-index")].is_delete = 2;
});
$("body").off("click",".participation").on("click",".participation",function(){
$(this).text("不参与");
$(this).parents("tr").find("input").each(function (index,item) {
$(item).attr("readonly",false);
$(item).attr("disabled",false);
$(item).removeClass("forbidden");
if($(item).hasClass("presale-stock")){
$(item).attr("lay-verify","presale_stock");
}else if($(item).hasClass("presale-deposit")){
$(item).attr("lay-verify","presale_deposit");
}else if($(item).hasClass("presale-price")){
$(item).attr("lay-verify","presale_price");
}
});
$(this).removeClass("participation").addClass("no-participation");
sku_list[$(this).parents("tr").attr("data-index")].is_delete = 1;
});
</script>
<script type="text/html" id="presaleStock">
{{# if(!d.presale_stock){ }}
<input type="number" class="layui-input len-input presale-stock forbidden" value="{{d.presale_stock}}" min="0" oninput="presaleStock({{ d.LAY_INDEX }},event)" onporpertychange="presaleStock({{ d.LAY_INDEX }},event)" readonly disabled lay-verify=""/>
{{# }else{ }}
<input type="number" class="layui-input len-input presale-stock" value="{{d.presale_stock}}" lay-verify="presale_stock" min="0" oninput="presaleStock({{ d.LAY_INDEX }},event)" onporpertychange="presaleStock({{ d.LAY_INDEX }},event)"/>
{{# } }}
</script>
<script type="text/html" id="presaleDeposit">
{{# if(!d.presale_stock){ }}
<input type="number" class="layui-input len-input presale-deposit forbidden presale_deposit_{{ d.sku_id }}" value="{{d.presale_deposit}}" min="0.00" oninput="presaleDeposit({{ d.LAY_INDEX }},event)" onporpertychange="presaleDeposit({{ d.LAY_INDEX }},event)" readonly disabled data-id="{{ d.sku_id }}" onchange="deposit({{ d.sku_id }},value,{{ d.LAY_INDEX }},event)" lay-verify=""/>
{{# }else{ }}
<input type="number" class="layui-input len-input presale-deposit presale_deposit_{{ d.sku_id }}" value="{{d.presale_deposit}}" lay-verify="presale_deposit" min="0.00" oninput="presaleDeposit({{ d.LAY_INDEX }},event)" onporpertychange="presaleDeposit({{ d.LAY_INDEX }},event)" data-id="{{ d.sku_id }}" onchange="deposit({{ d.sku_id }},value,{{ d.LAY_INDEX }},event)"/>
{{# } }}
</script>
<script type="text/html" id="presalePrice">
{{# if(!d.presale_stock){ }}
<input type="number" class="layui-input len-input presale-price forbidden presale_price_{{ d.sku_id }}" value="{{d.presale_price}}" min="0.00" oninput="presalePrice({{ d.LAY_INDEX }},event)" onporpertychange="presalePrice({{ d.LAY_INDEX }},event)" readonly disabled data-id="{{ d.sku_id }}" lay-verify=""/>
{{# }else{ }}
<input type="number" class="layui-input len-input presale-price presale_price_{{ d.sku_id }}" value="{{d.presale_price}}" lay-verify="presale_price" min="0.00" oninput="presalePrice({{ d.LAY_INDEX }},event)" onporpertychange="presalePrice({{ d.LAY_INDEX }},event)" data-id="{{ d.sku_id }}"/>
{{# } }}
</script>
<script type="text/html" id="operation">
<div class="table-btn">
{{# if(!d.presale_stock){ }}
<a class="layui-btn participation">参与</a>
{{# }else{ }}
<a class="layui-btn no-participation">不参与</a>
{{# } }}
</div>
</script>

View File

@@ -0,0 +1,487 @@
<style>
.screen{margin-bottom: 15px;}
.contraction span{cursor: pointer;display: inline-block;width: 17px;height: 17px;text-align: center;line-height: 14px;user-select: none;}
.sku-list{overflow: hidden;padding: 0 45px;}
.sku-list li .img-wrap{vertical-align: middle;margin-right: 8px;width: 120px;height: 120px;text-align: center;line-height: 120px;}
.sku-list li .img-wrap img{max-width: 100%;max-height: 100%;}
.sku-list li .info-wrap span.sku-name{-webkit-line-clamp: 2;margin-bottom: 5px;}
.sku-list li .info-wrap span{display: -webkit-box;margin-bottom: 5px;overflow: hidden;text-overflow: ellipsis;white-space: normal;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 1;}
.sku-list li{float: left;display: flex;padding: 10px;margin-right: 10px;margin-bottom: 10px;border: 1px solid #EFEFEF;width: 294px;height: 280px;align-items: center;}
.single-filter-box button{margin-bottom: 20px;}
.layui-layout-admin .single-filter-box button{margin-bottom: 0;}
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
</style>
<div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加预售</button>
</div>
<!-- 搜索框 -->
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">商品名称:</label>
<div class="layui-input-inline">
<input type="text" name="goods_name" placeholder="请输入商品名称" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">预售时间:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
</div>
</div>
<div class="form-row">
<button type="button" class="layui-btn" lay-filter="search" lay-submit>筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<div class="layui-tab table-tab" lay-filter="presale_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="">全部</li>
{foreach $presale_status as $k=>$v}
<li data-status="{$k}">{$v}</li>
{/foreach}
</ul>
<div class="layui-tab-content">
<!-- 列表 -->
<table id="presale_list" lay-filter="presale_list"></table>
</div>
</div>
<!-- 商品 -->
<script type="text/html" id="goods_info">
<div class="table-title">
<div class="contraction" data-id="{{d.presale_id}}" data-open="0">
<span>+</span>
</div>
<div class="title-pic">
{{# if(d.goods_image){ }}
<img layer-src="{{ns.img(d.goods_image.split(',')[0],'big')}}" src="{{ns.img(d.goods_image.split(',')[0],'small')}}"/>
{{# } }}
</div>
<div class="title-content">
<a href="javascript:;" class="multi-line-hiding text-color" title="{{d.goods_name}}">{{d.goods_name}}</a>
</div>
</div>
</script>
<!-- 时间 -->
<script id="time" type="text/html">
<div class="layui-elip">开始{{ns.time_to_date(d.start_time)}}</div>
<div class="layui-elip">结束{{ns.time_to_date(d.end_time)}}</div>
</script>
<!-- 时间 -->
<script id="payTime" type="text/html">
<div class="layui-elip">开始{{ns.time_to_date(d.pay_start_time)}}</div>
<div class="layui-elip">结束{{ns.time_to_date(d.pay_end_time)}}</div>
</script>
<!-- 推广 -->
{include file="app/shop/view/component/promote_show.html"}
<!-- 批量操作 -->
<script type="text/html" id="toolbarAction">
<button class="layui-btn layui-btn-primary" lay-event="delete">批量删除</button>
<button class="layui-btn layui-btn-primary" lay-event="close">批量关闭</button>
</script>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="operation-wrap" data-presale-id="{{d.presale_id}}">
<div class="popup-qrcode-wrap" style="display: none"><img class="popup-qrcode-loadimg" src="__STATIC__/loading/loading.gif"/></div>
<div class="table-btn">
{{# if(d.status == 1){ }}
<a class="layui-btn text-color" lay-event="select">推广</a>
{{# } }}
<a class="layui-btn" lay-event="detail">详情</a>
<a class="layui-btn" lay-event="edit">编辑</a>
{{# if(d.status == 0){ }}
<a class="layui-btn" lay-event="del">删除</a>
{{# }else if(d.status == 1){ }}
<a class="layui-btn" lay-event="launch">预售列表</a>
<a class="layui-btn" lay-event="close">结束</a>
{{# }else{ }}
<a class="layui-btn" lay-event="launch">预售列表</a>
<a class="layui-btn" lay-event="del">删除</a>
{{# } }}
</div>
</div>
</script>
<!-- 商品sku -->
<script type="text/html" id="skuList">
<tr class="js-list-{{d.index}}" id="sku_img_{{d.index}}">
<td colspan="8">
<ul class="sku-list">
{{# for(var i=0; i<d.list.length; i++){ }}
<li>
<div class="img-wrap">
<img layer-src src="{{ns.img(d.list[i].sku_image)}}">
</div>
<div class="info-wrap">
<span class="sku-name" title="{{d.list[i].sku_name}}">{{d.list[i].sku_name}}</span>
<span class="price">商品价格{{d.list[i].price}}</span>
<span class="price">预售库存{{d.list[i].presale_stock}}</span>
<span class="price">定金{{d.list[i].presale_deposit}}</span>
<span class="sale_num">定金抵扣金额{{d.list[i].presale_price}}</span>
</div>
</li>
{{# } }}
</ul>
</td>
</tr>
</script>
<script>
var laytpl;
$(function () {
$("body").off("click", ".contraction").on("click", ".contraction", function () {
var presale_id = $(this).attr("data-id");
var open = $(this).attr("data-open");
var tr = $(this).parent().parent().parent().parent();
var index = tr.attr("data-index");
if (open == 1) {
$(this).children("span").text("+");
$(".js-list-" + index).remove();
} else {
$(this).children("span").text("-");
$.ajax({
url: ns.url("presale://shop/presale/getSkuList"),
data: {presale_id: presale_id},
dataType: 'JSON',
type: 'POST',
async: false,
success: function (res) {
var sku_list = $("#skuList").html();
var data = {
list: res.data,
index: index
};
laytpl(sku_list).render(data, function (html) {
tr.after(html);
});
layer.photos({
photos: '.img-wrap',
anim: 5
});
}
});
}
$(this).attr("data-open", (open == 0 ? 1 : 0));
});
layui.use(['form', 'element', 'laytpl', 'laydate'], function () {
laytpl = layui.laytpl;
var table,
form = layui.form,
element = layui.element,
laydate = layui.laydate,
repeat_flag = false; //防重复标识
form.render();
element.on('tab(presale_tab)', function () {
table.reload({
page: {
curr: 1
},
where: {
'status': this.getAttribute('data-status')
}
});
});
//开始时间
laydate.render({
elem: '#start_time', //指定元素
type: 'datetime'
});
//结束时间
laydate.render({
elem: '#end_time', //指定元素
type: 'datetime'
});
table = new Table({
elem: '#presale_list',
url: ns.url("presale://shop/presale/lists"),
cols: [
[{
type: 'checkbox',
width: '3%',
},{
title: '商品信息',
unresize: 'false',
width: '20%',
templet: '#goods_info'
}, {
title: '商品价格',
unresize: 'false',
templet: function (data) {
return '¥' + data.price;
}
}, {
field: 'presale_stock',
title: '预售总库存',
unresize: 'false'
}, {
field: 'sale_num',
title: '销量',
unresize: 'false',
sort : true
}, {
title: '定金支付时间',
unresize: 'false',
width: '15%',
templet: '#time'
}, {
title: '尾款支付时间',
unresize: 'false',
width: '15%',
templet: '#payTime'
}, {
field: 'status_name',
title: '状态',
unresize: 'false',
width: '8%'
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
],
toolbar: '#toolbarAction'
});
/**
* 搜索功能
*/
form.on('submit(search)', function (data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
});
table.on("sort",function (obj) {
table.reload({
page: {
curr: 1
},
where: {
order:obj.field,
sort:obj.type
}
});
});
//监听Tab切换
element.on('tab(status)', function (data) {
var status = $(this).attr("data-status");
table.reload({
page: {
curr: 1
},
where: {
'status': status
}
});
});
// 监听工具栏操作
table.toolbar(function (obj) {
var data = obj.data;
if(data.length <= 0) return;
var presaleIdAll = [];
for (var i in data){
presaleIdAll.push(data[i].presale_id);
}
switch (obj.event) {
case 'delete':
deletePresaleAll(presaleIdAll)
break;
case 'close':
closePresaleAll(presaleIdAll)
break;
}
})
function deletePresaleAll(data){
layer.confirm('确定要删除预售活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/presale/deleteAll"),
data: {
presale_id: data
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
table.reload({
page: {
curr: 1
},
});
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
function closePresaleAll(data){
layer.confirm('确定要结束预售活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/presale/finishAll"),
data: {
presale_id: data
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
table.reload();
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
/**
* 监听工具栏操作
*/
table.tool(function (obj) {
var data = obj.data;
switch (obj.event) {
case 'detail': //详情
location.hash = ns.hash("presale://shop/presale/detail", {"presale_id": data.presale_id});
break;
case 'edit': //编辑
location.hash = ns.hash("presale://shop/presale/edit", {"presale_id": data.presale_id});
break;
case 'del': //删除
deletePresale(data.presale_id);
break;
case 'close': // 结束
closePresale(data.presale_id);
break;
case 'select': //推广
presaleUrl(data);
break;
case 'launch': //预售订单
location.hash = ns.hash("presale://shop/order/lists", {"presale_id": data.presale_id});
break;
}
});
/**
* 删除
*/
function deletePresale(presale_id) {
layer.confirm('确定要删除该预售活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/presale/delete"),
data: {
presale_id: presale_id
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload({
page: {
curr: 1
},
});
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
// 结束
function closePresale(presale_id) {
layer.confirm('确定要结束该预售活动吗?', function (index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/presale/finish"),
data: {
presale_id: presale_id
},
dataType: 'JSON',
type: 'POST',
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function () {
layer.close();
repeat_flag = false;
});
}
function presaleUrl(data){
new PromoteShow({
url:ns.url("presale://shop/presale/presaleUrl"),
param:{presale_id:data.presale_id},
})
}
});
});
function add() {
location.hash = ns.hash("presale://shop/presale/add");
}
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

View File

@@ -0,0 +1,328 @@
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
<link rel="stylesheet" type="text/css" href="SHOP_CSS/refund_detail.css" />
<style>
.order-detail-box{display: flex;justify-content: space-around}
</style>
<div class="order-detail">
<div class="layui-row layui-col-space1 order-detail-info" >
<div class="layui-col-md4 order-detail-left" >
<div class="layui-card">
<div class="layui-card-header nav-title">退款订单信息</div>
<div class="layui-card-body">
<div class="layui-form order-detail-box">
<div class="item-box">
<div class="layui-form-item">
<label class="layui-form-label">订单编号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$detail.order_no}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">退款编号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$detail.deposit_refund_no}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">买家:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux"><a target="_blank" href='{:href_url("shop/member/editmember?member_id=".$detail["member_id"])}' style="color: #999">{$detail.name}</a></div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">申请人:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">{$detail.name}</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">申请时间:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{:time_to_date($detail.apply_refund_time)}</p>
</div>
</div>
</div>
</div>
</div>
<!--
<div class="layui-form-item order-detail-hr">
</div> -->
<!-- <div>
</div> -->
{if !empty($detail.final_pay_type_name)}
<!-- <div class="layui-form-item order-detail-hr">
</div> -->
<div class="item-box">
<div class="layui-form-item">
<label class="layui-form-label">定金:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.presale_deposit_money}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">定金支付方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.deposit_pay_type_name}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">定金退款流水号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.deposit_refund_no}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾款:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.final_money}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾款支付方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.final_pay_type_name}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">尾款退款流水号:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail.final_refund_no}</p>
</div>
</div>
</div>
</div>
</div>
{/if}
<!-- <div class="layui-form-item order-detail-hr">
</div> -->
<div class="item-box1">
<div class="layui-form-item">
<label class="layui-form-label">配送方式:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail['delivery_type_name']}</p>
</div>
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">联系电话:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail['mobile']}</p>
</div>
</div>
</div>
</div>
<!-- <div class="layui-form-item order-detail-hr">
</div> -->
<div class="layui-form-item">
<label class="layui-form-label">订单类型:</label>
<div class="layui-input-block">
<div class="layui-inline">
<div class="layui-form-mid layui-word-aux">
<p>{$detail['order_type_name']}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="layui-col-md8 order-detail-operation">
<div class="layui-card">
<div class="layui-card-header">退款状态:{$detail.refund_status_name}</div>
<div class="layui-card-body">
<p class="order-detail-tips"></p>
{if($detail.refund_status == 1)}
<a class="layui-btn text-color bg-color-light-9" onclick="agreeRefund({$detail.id})">同意退款</a>
<a class="layui-btn text-color bg-color-light-9" onclick="refuseRefund({$detail.id})">拒绝退款</a>
{/if}
<br>
<i class="layui-icon layui-icon-about"></i>
</div>
</div>
</div>
<!--<div class="layui-col-md12">-->
<!--<div class="layui-card">-->
<!--<div class="layui-card-header">订单商品</div>-->
<!--<div class="layui-card-body">-->
<!---->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="order-detail-dl">
<dl>
<dt>温馨提醒</dt>
<dd>如果未发货,请点击同意退款给买家。</dd>
<dd>如果实际已发货,请主动与买家联系。</dd>
<dd>如果订单整体退款后,优惠券和余额会退还给买家。</dd>
</dl>
</div>
</div>
</div>
<div>
<div class="layui-row form-wrap">
<div class="layui-col-md4">
<h4 class="refund-title">售后商品</h4>
<ul class="refund-box">
<li class="refund-item">
<div class="goods-item">
<div class="image-wrap">
{if condition="$detail.sku_image"}
<img alt="商品图片" layer-src src="{:img($detail.sku_image,'small')}">
{/if}
</div>
<div class="detail-wrap">
<h4 class="title"><span style="color: #999;font-weight: 500">{$detail.sku_name}</span></h4>
<p class="gray"></p>
</div>
</div>
</li>
</ul>
</div>
<div class="layui-col-md4">
<h4 class="refund-title">售后信息</h4>
<ul class="refund-box">
<li class="refund-item">
<label class="refund-label">退款金额:</label>
<div class="refund-content"><span class="refund-money">¥{$detail.refund_money}</span> </div>
</li>
<li class="refund-item">
<label class="refund-label">联系方式:</label>
<div class="refund-content">{$detail.mobile}</div>
</li>
</ul>
</div>
<div class="layui-col-md4">
<h4 class="refund-title">购买信息</h4>
<ul class="refund-box">
<li class="refund-item">
<label class="refund-label">商品单价:</label>
<div class="refund-content"><span class="refund-money">¥{$detail.price}</span> x{$detail.num}件</div>
</li>
<li class="refund-item">
<label class="refund-label">实付金额:</label>
<div class="refund-content"><span class="refund-money">¥{$detail['goods_money'] - ($detail['presale_money'] - $detail['presale_deposit_money'])}</span></div>
</li>
<li class="refund-item">
<label class="refund-label">订单编号:</label>
<div class="refund-content"> <a target="_blank" class="text-color" href="{:href_url('shop/order/detail',['order_id'=>$detail['id']])}">{$detail.order_no}</a></div>
</li>
</ul>
</div>
</div>
</div>
<!-- 维权操作 -->
<script>
var repeat_flag = false;//防重复标识
//同意退款
function agreeRefund(id){
layer.confirm('确定同意该退款申请吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/refund/agree"),
data: {
id: id
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
//拒绝退款
var refuse_repeat_flag = false;
function refuseRefund(id) {
layer.prompt({
title: '拒绝理由',
formType: 2,
yes: function(index, layero) {
var value = layero.find(".layui-layer-input").val();
if (value) {
if(refuse_repeat_flag) return false;
refuse_repeat_flag = true;
$.ajax({
url: ns.url("presale://shop/refund/refuse"),
data: {id:id,refuse_reason:value},
dataType: 'JSON', //服务器返回json格式数据
type: 'POST', //HTTP请求类型
success: function(res) {
layer.msg(res.message);
refuse_repeat_flag = false;
if (res.code >= 0) {
listenerHash(); // 刷新页面
}
}
});
layer.close(index);
} else {
layer.msg('请输入拒绝理由!', {icon: 5, anim: 6});
}
}
});
}
</script>

View File

@@ -0,0 +1,383 @@
<style>
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .table-tab .layui-tab-title{margin-bottom: 15px;}
.layui-layout-admin .screen{margin-top: 15px;}
</style>
<div class="layui-collapse tips-wrap">
<div class="layui-colla-item">
<h2 class="layui-colla-title">操作提示</h2>
<ul class="layui-colla-content layui-show">
<li>商品预售展示商品预售相关信息</li>
</ul>
</div>
</div>
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">搜索方式:</label>
<div class="layui-input-inline">
<select name="order_label" >
{foreach $order_label_list as $k => $label_val}
<option value="{$k}">{$label_val}</option>
{/foreach}
</select>
</div>
<div class="layui-input-inline">
<input type="text" name="search" autocomplete="off" class="layui-input" />
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">下单时间:</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="start_time" placeholder="开始时间" id="start_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<div class="layui-form-mid">-</div>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="end_time" placeholder="结束时间" id="end_time" readonly>
<i class=" iconrili iconfont calendar"></i>
</div>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(7, this);return false;">近7天</button>
<button class="layui-btn layui-btn-primary date-picker-btn" onclick="datePick(30, this);return false;">近30天</button>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">订单类型:</label>
<div class="layui-input-inline">
<select name="order_type" lay-filter="order_type">
{foreach $order_type_list as $order_type_k => $order_type_val}
<option value="{$order_type_val.type}">{$order_type_val.name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单来源:</label>
<div class="layui-input-inline">
<select name="order_from">
<option value="">全部</option>
{foreach $order_from_list as $order_from_k => $order_from_v}
<option value="{$order_from_k}">{$order_from_v['name']}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">定金付款方式:</label>
<div class="layui-input-inline">
<select name="deposit_pay_type" >
<option value="">全部</option>
{foreach pay_type_list as $pay_type_k => $pay_type_v}
<option value="{$pay_type_k}">{$pay_type_v}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">尾款付款方式:</label>
<div class="layui-input-inline">
<select name="final_pay_type" >
<option value="">全部</option>
{foreach pay_type_list as $pay_type_k => $pay_type_v}
<option value="{$pay_type_k}">{$pay_type_v}</option>
{/foreach}
</select>
</div>
</div>
</div>
<div class="form-row">
<button class="layui-btn" lay-submit lay-filter="search">筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
</div>
</form>
</div>
</div>
<!-- 搜索框 -->
<!-- <div class="single-filter-box">
<button class="layui-btn" onclick="add()">添加商品预售</button>
</div> -->
<div class="layui-tab table-tab" lay-filter="presale_tab">
<ul class="layui-tab-title">
<li class="layui-this" data-status="">全部</li>
{foreach $order_status_list as $status_val}
<li data-status="{$status_val.status}">{$status_val.name}</li>
{/foreach}
</ul>
<div class="layui-tab-content">
<table id="presale_list" lay-filter="presale_list"></table>
</div>
</div>
<!-- 商品 -->
<script type="text/html" id="goods">
<div class="table-title">
<div class="title-pic">
{{# if(d.sku_image){ }}
<img layer-src src="{{ns.img(d.sku_image.split(',')[0],'small')}}"/>
{{# } }}
</div>
<div class="title-content">
<a href="javascript:;" class="multi-line-hiding text-color" title="{{d.sku_name}}">{{d.sku_name}}</a>
<a href="javascript:;" class="multi-line-hiding" title=""> {{ d.price }}</a>
</div>
</div>
</script>
<!-- 金额 -->
<script id="price" type="text/html">
<div class="layui-elip">定金{{ d.presale_deposit_money }}</div>
<div class="layui-elip">尾款{{ d.final_money }}</div>
</script>
<!-- 操作 -->
<script type="text/html" id="operation">
<div class="table-btn">
<a class="layui-btn" lay-event="edit">详情</a>
{{# if(d.refund_status == 1){ }}
<a class="layui-btn" lay-event="agree">同意退款</a>
<a class="layui-btn" lay-event="refuse">拒绝退款</a>
{{# } }}
</div>
</script>
<script>
var laytpl,table,form,laydate,element,repeat_flag;
layui.use(['form', 'element','laydate','laytpl'], function() {
form = layui.form;
laytpl = layui.laytpl;
laydate = layui.laydate;
element = layui.element;
repeat_flag = false; //防重复标识
form.render();
//渲染时间
laydate.render({
elem: '#start_time',
type: 'datetime'
});
laydate.render({
elem: '#end_time',
type: 'datetime'
});
element.on('tab(presale_tab)', function() {
table.reload({
page: {
curr: 1
},
where: {
'refund_status': this.getAttribute('data-status')
}
});
});
table = new Table({
elem: '#presale_list',
url: ns.url("presale://shop/refund/lists"),
cols: [
[{
field: 'deposit_refund_no',
title: '退款编号',
unresize: 'false',
width:'10%'
},{
field: 'order_no',
title: '订单编号',
unresize: 'false',
width:'10%'
},{
title: '商品信息',
unresize: 'false',
templet:'#goods',
width:'25%'
}, {
field:'num',
title: '购买数量',
unresize: 'false',
templet:function(data){
return data.num + '件';
},
width:'6%'
}, {
title: '金额',
unresize: 'false',
templet:'#price',
width:'10%'
}, {
title: '退款金额',
templet:function(data){
return '¥' + data.refund_money;
}
}, {
field:'refund_status_name',
title: '退款状态',
unresize: 'false'
}, {
title: '申请时间',
unresize: 'false',
templet:function(data){
return ns.time_to_date(data.apply_refund_time);
},
width:"10%"
}, {
title: '操作',
toolbar: '#operation',
unresize: 'false',
align:'right'
}]
]
});
/**
* 搜索功能
*/
form.on('submit(search)', function(data) {
table.reload({
page: {
curr: 1
},
where: data.field
});
return false;
});
/**
* 监听工具栏操作
*/
table.tool(function(obj) {
var data = obj.data;
switch (obj.event) {
case 'edit': //查看
window.open(ns.href("presale://shop/refund/detail", {"id": data.id}));
break;
case 'agree': //同意
agreeRefund(data.id);
break;
case 'refuse'://拒绝
refuseRefund(data.id);
break;
}
});
//同意退款
function agreeRefund(id){
layer.confirm('确定同意该退款申请吗?', function(index) {
if (repeat_flag) return;
repeat_flag = true;
layer.close(index);
$.ajax({
url: ns.url("presale://shop/refund/agree"),
data: {
id: id
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
repeat_flag = false;
if (res.code == 0) {
table.reload();
}
}
});
}, function() {
layer.close();
repeat_flag = false;
});
}
//拒绝退款
var refuse_repeat_flag = false;
function refuseRefund(id) {
layer.prompt({
title: '拒绝理由',
formType: 2,
yes: function(index, layero) {
var value = layero.find(".layui-layer-input").val();
if (value) {
if(refuse_repeat_flag) return false;
refuse_repeat_flag = true;
$.ajax({
url: ns.url("presale://shop/refund/refuse"),
data: {id:id,refuse_reason:value},
dataType: 'JSON', //服务器返回json格式数据
type: 'POST', //HTTP请求类型
success: function(res) {
layer.msg(res.message);
refuse_repeat_flag = false;
if (res.code >= 0) {
table.reload({
page: {
curr: 1
},
});
}
}
});
layer.close(index);
} else {
layer.msg('请输入拒绝理由!', {icon: 5, anim: 6});
}
}
});
}
});
/**
* 七天时间
*/
function datePick(date_num,event_obj){
$(".date-picker-btn").removeClass("selected");
$(event_obj).addClass('selected');
// alert(new Date().format("yyyy-MM-dd hh:mm"));
Date.prototype.Format = function (fmt,date_num) { //author: meizz
this.setDate(this.getDate()-date_num);
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
};
// var now_time = new Date().Format("yyyy-MM-dd HH:mm:ss",0);//当前日期
var now_time = new Date().Format("yyyy-MM-dd 23:59:59",0);//当前日期
var before_time = new Date().Format("yyyy-MM-dd 00:00:00",date_num-1);//前几天日期
$("input[name=start_time]").val(before_time,0);
$("input[name=end_time]").val(now_time,date_num-1);
}
function add() {
location.hash = ns.hash("presale://shop/presale/add");
}
</script>