初始上传

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,319 @@
<link rel="stylesheet" href="SHOP_CSS/order_detail.css?t=20250604"/>
<link rel="stylesheet" type="text/css" href="SHOP_CSS/refund_detail.css" />
<style>
.layui-timeline-content {
padding-left: 40px;
}
.contentOne-content-text.image{
display: flex;
flex-wrap: nowrap;
overflow: visible;
}
.contentOne-content-text.image div{
min-width: 100px;
height: 100px;
border: 1px dashed #ccc;
padding: 4px;
position: relative;
margin-right: 10px;
}
.contentOne-content-text.image div img{
position: absolute;
left:50%;
top:50%;
max-width: 100%;
max-height: 100%;
transform: translateX(-50%) translateY(-50%);
}
</style>
<div class="order-detail layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">退款订单信息</span>
</div>
<div class="order-information order-information-bottom layui-card-body">
<div class="order-information-contentOne">
<div class="contentOne-content">
<div class="contentOne-content-title">订单编号:</div>
<div class="contentOne-content-text">{$order_info['order_no']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">订单类型:</div>
<div class="contentOne-content-text">{$order_info['order_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">付款方式:</div>
<div class="contentOne-content-text">{$order_info['pay_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">买家:</div>
<div class="contentOne-content-text">{$order_info.member_id ? $order_info.nickname : '散客'}</div>
</div>
</div>
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">配送方式:</div>
<div class="contentOne-content-text">{$order_info['delivery_type_name']}</div>
</div>
{if $order_info['delivery_type'] eq 'store'}
<div class="contentOne-content">
<div class="contentOne-content-title">配送门店:</div>
<div class="contentOne-content-text">{$order_info['delivery_store_name']}</div>
</div>
{php}
$delivery_store_info = json_decode($order_info['delivery_store_info'], true);
{/php}
<div class="contentOne-content">
<div class="contentOne-content-title">联系电话:</div>
<div class="contentOne-content-text contentOne-content-text-die">{$delivery_store_info.telphone ?? ''}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">门店地址:</div>
<div class="contentOne-content-text">{$delivery_store_info['full_address'] ?? ''}</div>
</div>
{else/}
<div class="contentOne-content">
<div class="contentOne-content-title">收货人:</div>
<div class="contentOne-content-text">{$order_info['name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">联系电话:</div>
<div class="contentOne-content-text">{$order_info['mobile']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">收货地址:</div>
<div class="contentOne-content-text contentOne-content-text-die">{$order_info['full_address']}-{$order_info['address']}</div>
</div>
{/if}
</div>
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">营销活动:</div>
<div class="contentOne-content-text">{$order_info['promotion_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">买家留言:</div>
<div class="contentOne-content-text contentOne-content-text-die">
{if $order_info['buyer_message'] == ""}
-
{else/}
{$order_info['buyer_message']}
{/if}
</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">备注:</div>
<div class="contentOne-content-text">
{if $order_info['remark'] == ""}
-
{else/}
{$order_info['remark']}
{/if}
</div>
</div>
</div>
</div>
<div class="layui-card-header">
<span class="card-title">售后信息</span>
</div>
<div class="order-information order-information-bottom layui-card-body">
<div class="order-information-contentOne">
{if $detail['refund_apply_money'] > 0}
<div class="contentOne-content">
<div class="contentOne-content-title">维权类型:</div>
<div class="contentOne-content-text">{if $detail.refund_mode > 1}售后{else /}退款{/if}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款方式:</div>
<div class="contentOne-content-text">{$detail.refund_type_name}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">申请金额:</div>
<div class="contentOne-content-text">¥{$detail.refund_apply_money}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">申请原因:</div>
<div class="contentOne-content-text">{$detail.refund_reason ?: '--'}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">申请说明:</div>
<div class="contentOne-content-text">{$detail.refund_remark ?: '--'}</div>
</div>
{if !empty($detail.refund_images)}
<div class="contentOne-content">
<div class="contentOne-content-title">申请图片:</div>
<div class="contentOne-content-text image">
{php}$refund_images = explode(',', $detail['refund_images']);{/php}
{foreach $refund_images as $refund_image}
<div>
<img layer-src src="{:img($refund_image)}">
</div>
{/foreach}
</div>
</div>
{/if}
{else/}
<div class="contentOne-content">
<div class="contentOne-content-title"></div>
<div class="contentOne-content-text"></div>
</div>
{/if}
</div>
{if $detail['refund_apply_money'] > 0 && $detail['refund_status'] == 3}
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">退款时间:</div>
<div class="contentOne-content-text">{:date('Y-m-d H:i:s', $detail.refund_time)}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款编号:</div>
<div class="contentOne-content-text">{$detail['refund_no'] ?? ''}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款金额:</div>
<div class="contentOne-content-text">¥{$detail.refund_real_money}{$detail.refund_money_type_name}</div>
</div>
{if $detail.shop_refund_remark}
<div class="contentOne-content">
<div class="contentOne-content-title">退款说明:</div>
<div class="contentOne-content-text">{$detail.shop_refund_remark}</div>
</div>
{/if}
</div>
{/if}
</div>
<div class="layui-card-header">
<span class="card-title">商家主动退款</span>
</div>
<div class="order-information order-information-bottom layui-card-body">
<div class="order-information-contentOne">
{if $detail.shop_active_refund == 1}
<div class="contentOne-content">
<div class="contentOne-content-title">退款编号:</div>
<div class="contentOne-content-text">{$detail.shop_active_refund_no}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款金额:</div>
<div class="contentOne-content-text">¥{$detail.shop_active_refund_money}{$detail.shop_active_refund_money_type_name}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款说明:</div>
<div class="contentOne-content-text">{$detail.shop_active_refund_remark ?: '--'}</div>
</div>
{else/}
<div class="contentOne-content">
<div class="contentOne-content-title"></div>
<div class="contentOne-content-text"></div>
</div>
{/if}
</div>
</div>
<div class="layui-card-header">
<span class="card-title">退款状态</span>
</div>
<div class="order-information-contentOne order-orderStatus-contentOne layui-card-body">
<div class="contentOne-content">
<div class="contentOne-content-title">退款状态:</div>
<div class="contentOne-content-text contentOne-content-textNew">{$detail.refund_status_name}</div>
</div>
{notempty name="$detail.refund_refuse_reason"}
<div class="contentOne-content">
<div class="contentOne-content-title">拒绝理由:</div>
<div class="contentOne-content-text">{$detail.refund_refuse_reason}</div>
</div>
{/notempty}
<div class="contentTow-operation">
{if !empty($detail.refund_action)}
{foreach $detail.refund_action as $k => $v}
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" onclick="{$v.event}({$detail.order_goods_id});">{$v.title}</a>
{/foreach}
{/if}
</div>
<div class="orderStatus">
<div class="orderStatus-content-title">提醒:</div>
<div class="orderStatus-content-text">
<p class="text-tile">如果未发货,请点击同意退款给买家。</p>
<p class="text-tile">如果实际已发货,请主动与买家联系。</p>
<p class="text-tile">如果订单整体退款后,优惠券和余额会退还给买家。</p>
</div>
</div>
</div>
</div>
<div class="shop-information layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">售后商品</span>
</div>
<div class="shop-information-table layui-card-body">
<table lay-filter="parse-table-order-product" lay-skin="line">
<thead>
<tr class="table-trOne">
<th lay-data="{field:'product_name', width:200}">商品</th>
<th lay-data="{field:'price'}">价格</th>
<th lay-data="{field:'sale_num'}" class="align-center">数量</th>
<th lay-data="{field:'total_money'}">小计(元)</th>
<th lay-data="{field:'shipping_status'}" class="align-center">状态</th>
{if $detail.refund_type == 2 && $detail.refund_status > 1 && $detail.refund_delivery_no != ''}
<th>退货物流公司</th>
<th>退货物流单号</th>
<th>物流说明</th>
<th>是否入库</th>
{/if}
</tr>
</thead>
<tbody>
<tr class="table-trTow">
<td>
<div class="multi-line-hiding goods-name" title="{$detail.sku_name}">{$detail.sku_name}</div>
</td>
<td>{$detail.price}</td>
<td class="align-center">{$detail.num}</td>
<td>{$detail.goods_money}</td>
<td class="align-center">{$detail.delivery_status_name}</td>
{if $detail.refund_type == 2 && $detail.refund_status > 1 && $detail.refund_delivery_no != ''}
<td>{$detail.refund_delivery_name}</td>
<td>{$detail.refund_delivery_no}</td>
<td>{$detail.refund_delivery_remark}</td>
<td>{if $detail.is_refund_stock == 1}入库{else/}不入库{/if}</td>
{/if}
</tr>
</tbody>
</table>
</div>
</div>
<div class="shop-operation layui-card card-common card-brief">
<div class="layui-card-header">
<span class="card-title">售后日志</span>
</div>
<div class="refund-block-content layui-card-body">
<ul class="layui-timeline">
{foreach $detail['refund_log_list'] as $log_k => $log_item}
<li class="layui-timeline-item">
{if $log_item["action_way"] == 1}
<span class="refund-way layui-timeline-axis refund-buyer">买</span>
{elseif $log_item["action_way"] == 2 /}
<span class="refund-way layui-timeline-axis seller-buyer bg-color">商</span>
{else /}
<span class="refund-way layui-timeline-axis platform-buyer">平</span>
{/if}
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">{$log_item.action}<span style="display:inline-block;float:right;margin-right:40px;">{:time_to_date($log_item.action_time)}</span></div>
{notempty name="$log_item['desc']"}
<div class="desc">{$log_item.desc}</div>
{/notempty}
</div>
</li>
{/foreach}
</ul>
</div>
</div>
<!-- 维权操作 -->
{include file="orderrefund/refund_action" /}

View File

@@ -0,0 +1,214 @@
<style>
.layui-card-header{background-color:#f8f8f8}
.export-view{
margin:30px 0 30px 0;
}
.apply-time{
float:left;
}
.export-select{float:left;}
.download-button{
float:right;
}
.export-list-view{
font-size:12px;
}
.export-foot-operation{overflow:hidden;margin-top:15px;}
.export-page{
float:right;
}
.export-content-bar{
float:left;
padding-top: 6px;
margin-left: 15px;
}
.export-foot-operation .layui-btn {
padding: 0px 5px;
font-size: 12px;
line-height: 2 !important;
height: auto;
display: inline-block;
}
.layui-unselect.layui-form-checkbox{
margin-top:-5px;
}
</style>
<div class="layui-layout layui-layout-admin">
<div class="export-view">
<div class="body-content">
<div id="export_list"></div>
<div class="export-foot-operation">
<div class="export-content-bar layui-form bg-color-light-gray">
<input type="checkbox" name="export_select" lay-filter="allChoose" lay-skin="primary" title="全选">
</div>
<button class="layui-btn layui-btn-primary" onclick="deleteExport()">批量删除</button>
<div class='export-page' id="export_page"></div>
</div>
</div>
</div>
</div>
<script type="text/html" id="exportHtml">
{{# layui.each(d.data.list, function(index, item){ }}
<div class="layui-card export-list-view">
<div class="layui-card-header">
<div class="layui-form export-select">
<input type="checkbox" name="check[]" value="{{item.export_id}}" lay-skin="primary" title="">
</div>
<div class="apply-time">
导出时间{{ ns.time_to_date(item.create_time) }}
</div>
<div class="download-button">
{{# if(item.status == 0){ }}
<span>正在导出中请耐心等待</span>
{{# }else{ }}
{{# if(item.path != ''){ }}
<a class="text-color" href="{{ ns.img(item.path) }}" target="_blank">下载</a>
{{#}}}
<a class="text-color" href="javascript:void(0)" data-export_id ="{{item.export_id}}" onclick="deleteExport(this)">删除</a>
{{#}}}
</div>
</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space10">
{{# layui.each(JSON.parse(item.condition), function(condition_index, condition_item){ }}
<div class="layui-col-md3">
{{condition_item.name}}{{condition_item.value || '-'}}
</div>
{{# }); }}
</div>
</div>
</div>
{{# }); }}
{{# if(d.data.list.length === 0){ }}
<div class="layui-card export-list-view">
<div class="layui-card-header">
<div class="apply-time">
订单导出记录
</div>
</div>
<div class="layui-card-body">
<div class="layui-row layui-col-space10">
<div class="layui-col-md3">
暂无导出记录
</div>
</div>
</div>
</div>
{{# } }}
</script>
<script>
var laypage,form;
layui.use(['form', 'laytpl', 'laypage'], function() {
form = layui.form;
laytpl = layui.laytpl;
form.render();
exportList(1,10);
laypage = layui.laypage;
/**
* 全选
*/
form.on("checkbox(allChoose)", function(data) {
$("input[name='check[]']").each(function() {
this.checked = data.elem.checked;
});
form.render('checkbox');
})
});
function exportList(page, limit){
$.ajax({
url: '{:addon_url("shop/orderrefund/export")}',
data: {
limit,
page
},
dataType: 'JSON',
type: 'POST',
success: function(res) {
var export_template = $("#exportHtml").html();
if(res.code >= 0){
laytpl(export_template).render(res, function (html) {
$("#export_list").html(html);
})
}
laypage.render({
elem: 'export_page', //注意,这里的 test1 是 ID不用加 # 号
count: res.data.count,
curr: page, //当前页
limit: limit,
jump: function(obj, first){
//obj包含了当前分页的所有参数比如
//首次不执行
if(!first){
exportList(obj.curr, obj.limit);
form.render();
}
}
});
form.render();
}
});
}
/**
* 删除记录
*/
var flag_delete = false;
function deleteExport(data) {
var export_ids = [];
if (!data) {
$("input[name='check[]']:checked").each(function (index, item) {
export_ids.push($(item).val());
});
} else {
export_ids.push($(data).attr("data-export_id"));
}
if (export_ids.length == 0) {
layer.msg('请选择要操作的数据');
return;
}
export_ids = export_ids.toString();
layer.confirm('确定要删除选择的订单导出记录吗。', {
btn: ['确定', '取消']
}, function (index) {
if (flag_delete) return;
flag_delete = true;
layer.close(index);
$.ajax({
type: "POST",
async: true,
url: ns.url("shop/orderrefund/deleteExport"),
data: {
export_ids: export_ids,
},
dataType: "JSON",
success: function (data) {
layer.msg(data.message);
flag_delete = false;
if (data.code == 0) {
listenerHash(); // 刷新页面
}
}
});
}, function () {
layer.close();
});
}
</script>

View File

@@ -0,0 +1,347 @@
<link rel="stylesheet" href="SHOP_CSS/order_list.css"/>
<style>
.content-row .order-money{border-left:0px;}
.content-row .operation .layui-btn{display: block;text-align: left;line-height: 23px;padding: 0px;margin: 0px;}
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
.layui-layout-admin .layui-table-cell{height: 32px;line-height: 32px;}
.content-row .operation .layui-btn{text-align:right}
</style>
<div class="screen layui-collapse" lay-filter="selection_panel">
<div class="layui-colla-item">
<form class="layui-colla-content layui-form layui-show" lay-filter="order_list">
<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="sku_name">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">订单编号</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="order_no">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">退款编号</label>
<div class="layui-input-inline">
<input type="text" class="layui-input" name="refund_no">
</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="refund_status" lay-filter="refund_status">
<option value="">全部</option>
{foreach $refund_status_list as $k => $status_val}
<option value="{$status_val.status}">{$status_val.name}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">退款方式</label>
<div class="layui-input-inline">
<select name="refund_type" >
<option value="">全部</option>
{foreach $refund_type_list as $refund_type_k => $refund_type_v}
<option value="{$refund_type_k}">{$refund_type_v}</option>
{/foreach}
</select>
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">维权类型</label>
<div class="layui-input-inline">
<select name="refund_mode" >
<option value="">全部</option>
<option value="1">订单退款</option>
<option value="2">售后退款</option>
</select>
</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="form-row">
<button class="layui-btn" lay-submit id="btn_search"lay-filter="btn_search">筛选</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="batch_export" >批量导出</button>
<a class="layui-btn layui-btn-primary" href="{:href_url('shop/orderrefund/export')}" target="_blank">查看已生成报表</a>
</div>
<input type="hidden" name="status"/>
<input type="hidden" name="page"/>
</form>
</div>
</div>
<div class="layui-tab table-tab" lay-filter="order_tab">
<ul class="layui-tab-title">
<li class="layui-this" lay-id="">全部</li>
{foreach $refund_status_list as $k => $status_val}
{if $status_val.status!=0}
<li lay-id="{$status_val.status}">{$status_val.name}</li>
{/if}
{/foreach}
</ul>
<div class="layui-tab-content">
<!-- 列表 -->
<div id="order_list"></div>
</div>
</div>
<div id="order_page"></div>
<div id="order_operation"></div>
<script src="SHOP_JS/refund_list.js?v=1"></script>
<script>
var laypage,element, form,laypage_util;
// 通过hash获取页数
function getHashPage(){
var page = 1;
var hash_arr = getHashArr();
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
if(item_arr[0].indexOf("page") != "-1"){
page = item_arr[1];
}
}
});
return page;
}
//从hash中获取数据
function getHashData(){
var hash_arr = getHashArr();
var form_json = {
"end_time" : "",
"sku_name" : "",
"refund_type" : "",
"order_no" : "",
"delivery_status" : "",
"refund_status" : "",
"start_time" : "",
"refund_no" : "",
"delivery_no" : "",
"refund_delivery_no" : "",
'page_size':'',
"page" : "",
"refund_mode" : ""
};
if(hash_arr.length > 0){
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
$.each(form_json,function(key, form_val){
if(item_arr[0].indexOf(key) != "-1"){
form_json[key] = item_arr[1];
}
})
}
})
}
form.val("order_list", form_json);
setStatusTab(form_json.refund_status);
return form_json;
}
layui.use(['laypage','laydate','form', 'element'], function(){
form = layui.form;
laypage = layui.laypage;
element = layui.element;
var laydate = layui.laydate;
form.render();
//渲染时间
laydate.render({
elem: '#start_time'
,type: 'datetime'
,change: function(value, date, endDate){
$(".date-picker-btn").removeClass("selected");
}
});
laydate.render({
elem: '#end_time'
,type: 'datetime'
,change: function(value, date, endDate){
$(".date-picker-btn").removeClass("selected");
}
});
//监听筛选事件
form.on('submit(btn_search)', function(data){
data.field.page = 1;
setHashOrderList(data.field);
setStatusTab(data.field.refund_status);
return false;
});
//批量导出
form.on('submit(batch_export)', function(data){
$.ajax({
type: 'post',
dataType: 'json',
url: ns.url("shop/orderrefund/exportrefundorder"),
data: data.field,
success: function (res) {
}
});
window.open(ns.href("shop/orderrefund/export",{}))
return false;
});
//监听Tab切换以改变地址hash值
element.on('tab(order_tab)', function(){
var status = this.getAttribute('lay-id');
form.val("order_list", {"refund_status":status});
var hash_data = getHashList();
hash_data.refund_status = status;
hash_data.page = 1;
setHashOrderList(hash_data);
});
getOrderList();//筛选
getHashData();
});
//哈希值 订单数据
function setHashOrderList(data){
localStorage.setItem('formSubmit','search'); // 表单搜索标识,防止页面重新加载
var hash = ['url=shop/orderrefund/lists'];
for (let key in data) {
if (data[key] != '' && data[key] != 'all') {
hash.push(`${key}=${data[key]}`)
}
}
location.hash = hash.join('&');
getOrderList();
}
function getHashList(){
var hash_arr = getHashArr();
var form_json = {
"end_time" : "",
"sku_name" : "",
"refund_type" : "",
"order_no" : "",
"delivery_status" : "",
"refund_status" : "",
"start_time" : "",
"refund_no" : "",
"delivery_no" : "",
"refund_delivery_no" : "",
'page_size':'',
"page" : "",
"refund_mode" : ""
};
if(hash_arr.length > 0){
$.each(hash_arr,function(index, itemobj){
var item_arr = itemobj.split("=");
if(item_arr.length == 2){
$.each(form_json,function(key, form_val){
if(item_arr[0].indexOf(key) != "-1"){
form_json[key] = item_arr[1];
}
})
}
})
}
return form_json;
}
function setStatusTab(refund_status){
$(".layui-tab-title li").removeClass("layui-this");
$(".layui-tab-title li").each(function(){
var status = $(this).attr("lay-id");
if(status == refund_status){
$(this).addClass("layui-this")
}
});
}
var order = new Order();
function getOrderList(){
var url = ns.url("shop/orderrefund/lists", getHashArr().join('&'));
$.ajax({
type : 'get',
dataType: 'json',
url :url,
success : function(res){
if(res.code == 0){
order.setData(res.data);
$("#order_list").html(order.fetch());
laypage_util = new Page({
elem: 'order_page',
count: res.data.count,
curr: getHashPage(),
limit:getHashData()['page_size'] || 10,
callback: function(obj){
var hash_data = getHashData();
hash_data.page = obj.curr;
hash_data.page_size = obj.limit;
setHashOrderList(hash_data);
}
});
}else{
layer.msg(res.message);
}
}
});
}
/**
* 七天时间
*/
function datePick(date_num,event_obj){
$(".date-picker-btn").removeClass("selected");
$(event_obj).addClass('selected');
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 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);
}
</script>

View File

@@ -0,0 +1,514 @@
<style>
.refund-view-list{margin-top:20px;font-size:14px;line-height:20px;color:#323233;color:var(--theme-stroke-1,#323233)}
.refund-transfer-html .refund-view-list{margin-top: 0;}
.refund-transfer-html .refund-view-item-label {width: 98px;text-align: left;display: inline-block;vertical-align: middle;}
.refund-transfer-html .align-top{vertical-align: top;}
.refund-view-item {margin-bottom: 10px;}
.refund-view-item-label{width:75px; vertical-align: top;}
.refund-view-item-content{display:inline-block}
</style>
<!-- 售后申请同意 -->
<script type="text/html" id="refund_agree_html">
<div style="padding:10px;">
<div class="layui-form refund-agree-html" id='refund_agree'lay-filter="refund_agree">
{if $order_info.pay_type == 'offlinepay'}
<div style="color: #666;">注意 : 该笔订单通过线下支付商家同意后退款将通过线下原路退回</div>
{else/}
<div style="color: #666;">注意 : 该笔订单通过在线付款商家同意后退款将自动原路退回买家付款账户</div>
{/if}
<div class="refund-view-list">
<div class="refund-view-item">
<label class="refund-view-item-label">退款方式</label>
<div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退退{/if}</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">退款金额</label>
<div class="refund-view-item-content">
<span class="refund-money">{$detail.refund_apply_money}</span>
</div>
</div>
</div>
<input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
<button class="layui-btn" lay-submit id="submit_agree" lay-filter="submit_agree" style="display:none;">保存</button>
</div>
</div>
</script>
<!-- 售后申请拒绝 -->
<script type="text/html" id="refund_refuse_html">
<div style="padding:10px;">
<div class="layui-form refund-refuse-html" id='refund_refuse'lay-filter="refund_refuse">
<div style="color: #666;">注意 : 建议你与买家协商后再确定是否拒绝退款如你拒绝退款后买家可修改退款申请协议重新发起退款</div>
<div class="refund-view-list">
<div class="refund-view-item">
<label class="refund-view-item-label">退款方式</label>
<div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退退{/if}</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">退款金额</label>
<div class="refund-view-item-content">
<span class="refund-money">{$detail.refund_apply_money}</span>
</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">拒绝理由</label>
<div class="refund-view-item-content">
<textarea name="refund_refuse_reason" maxlength="150" placeholder="请填写您的拒绝理由!" class="layui-textarea len-mid" style="overflow: hidden;word-wrap: break-word;resize: horizontal;height: 54px;"></textarea>
</div>
</div>
</div>
<input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
<button class="layui-btn" lay-submit id="submit_refuse" lay-filter="submit_refuse" style="display:none;">保存</button>
</div>
</div>
</script>
<!-- 买家退货接收 -->
<script type="text/html" id="refund_take_delivery_html">
<div style="padding:10px;">
<div class="layui-form refund-take-delivery-html" id='refund_take_delivery'lay-filter="refund_take_delivery">
<div style="color: #666;">注意 : 需你同意退款申请买家才能退货给你买家退货后你需再次确认收货后退款将自动原路退回至买家付款账户</div>
<div class="refund-view-list">
<div class="refund-view-item">
<label class="refund-view-item-label">退款方式</label>
<div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退退{/if}</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">退款金额</label>
<div class="refund-view-item-content">
<span class="refund-money">{$detail.refund_apply_money}</span>
</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">退货地址</label>
<div class="refund-view-item-content">{$detail.refund_address}</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">是否入库</label>
<div class="refund-view-item-content">
<input type="radio" name="is_refund_stock" value="0" title="否" lay-skin="primary" checked>
<input type="radio" name="is_refund_stock" value="1" title="是" lay-skin="primary">
</div>
</div>
</div>
<input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
<button class="layui-btn" lay-submit id="submit_take_delivery" lay-filter="submit_take_delivery" style="display:none;">保存</button>
</div>
</div>
</script>
<!-- 转账退款接收 -->
<script type="text/html" id="refund_transfer_html">
<div style="padding:10px;">
<div class="layui-form refund-transfer-html" id='refund_transfer'lay-filter="refund_transfer">
<!--<div style="color: #666;">注意 : 当你确认转账后退款将自动原路退回至买家付款账户</div>-->
<div class="refund-view-list">
<div class="refund-view-item">
<label class="refund-view-item-label">申请退款金额</label>
<div class="refund-view-item-content">
<span class="refund-money">{{ d.order_goods_info.refund_apply_money }}</span>
</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">实际退款金额</label>
<div class="refund-view-item-content">
{{# if(d.presale_order_info){ }}
<span id="refund_real_money">
{{ d.order_goods_info.refund_apply_money }}
</span>
<input type="hidden" name="refund_real_money" value="{{ d.order_goods_info.refund_apply_money }}" id="refund_real_money_1">
{{# }else{ }}
<input type="number" name="refund_real_money" class="layui-input" lay-verify="required|refundRealMoney" value="{{ d.order_goods_info.refund_apply_money }}">
{{# } }}
</div>
</div>
{{# if(d.order_goods_info.use_point > 0){ }}
<div class="refund-view-item">
<label class="refund-view-item-label">退还积分</label>
<div class="refund-view-item-content">
<span class="refund-money">{{ d.order_goods_info.use_point }}</span>
</div>
</div>
{{# } }}
{{# if(d.coupon_info && Object.keys(d.coupon_info).length){ }}
<div class="refund-view-item">
<label class="refund-view-item-label">退还优惠券</label>
<div class="refund-view-item-content">
{{ d.coupon_info.coupon_name }}
{{# if(d.coupon_info.money > 0){ }}
{{ d.coupon_info.money }}
{{# }else{ }}
{{ d.coupon_info.discount }}
{{# } }}
</div>
</div>
{{# } }}
<div class="refund-view-item">
<label class="refund-view-item-label">退款方式</label>
<div class="refund-view-item-content">
<input type="radio" title="原路退款" checked name="refund_money_type" value="1">
<input type="radio" title="线下退款" name="refund_money_type" value="2">
<input type="radio" title="退款到余额" name="refund_money_type" value="3">
<!-- {{# if(d.order_goods_info.refund_mode == 1 && d.order_info.pay_type != 'offlinepay'){ }}-->
<!-- <input type="radio" title="原路退款" checked name="refund_money_type" value="1">-->
<!-- <input type="radio" title="线下退款" name="refund_money_type" value="2">-->
<!-- <input type="radio" title="退款到余额" name="refund_money_type" value="3">-->
<!-- {{# }else{ }}-->
<!-- <input type="radio" title="线下退款" checked name="refund_money_type" value="2">-->
<!-- <input type="radio" title="退款到余额" name="refund_money_type" value="3">-->
<!-- {{# } }}-->
<!-- <select name="refund_money_type">-->
<!-- {{# if(d.order_goods_info.refund_mode == 1 && d.order_info.pay_type != 'offlinepay'){ }}<option value="1">原路退款</option>{{# } }}-->
<!-- <option value="2">线下退款</option>-->
<!-- </select>-->
</div>
</div>
{{# if(d.presale_order_info){ }}
<div class="refund-view-item" style="margin-bottom: 6px;">
<label class="refund-view-item-label" style="width: 45px; margin-bottom: 4px;">定金</label>
<div class="refund-view-item-content">
<span class="refund-money">{{ d.presale_order_info.presale_deposit_money }}</span>
</div>
<label class="refund-view-item-label" style="width: 45px; margin: 0 0 4px 50px;">尾款</label>
<div class="refund-view-item-content">
<span class="refund-money">{{ d.presale_order_info.final_money }}</span>
</div>
</div>
<div class="refund-view-item">
<label class="refund-view-item-label">是否退定金</label>
<div class="refund-view-item-content">
<input type="radio" name="is_deposit_back" value="1" lay-filter="deliver_type" checked="checked" title="退定金">
<input type="radio" name="is_deposit_back" value="2" lay-filter="deliver_type" title="不退定金">
</div>
</div>
{{# } }}
<div class="refund-view-item">
<label class="refund-view-item-label align-top">退款说明</label>
<div class="refund-view-item-content">
<textarea name="shop_refund_remark" class="layui-textarea len-long" maxlength="150"></textarea>
</div>
</div>
</div>
<input type="hidden" name="order_goods_id" value="{{ d.order_goods_info.order_goods_id }}"/>
<button class="layui-btn" lay-submit id="submit_transfer" lay-filter="submit_transfer" style="display:none;">保存</button>
</div>
</div>
</script>
<script>
var laytpl,form, refundData;
//渲染模板引擎
layui.use(['laytpl','form'], function(){
laytpl = layui.laytpl;
form = layui.form;
form.render();
form.verify({
refundRealMoney: function(value){
var money = parseFloat(value);
if (isNaN(money)) return '请输入正确的退款金额';
if (money < 0) return '退款金额不能为负数';
}
});
// 监听单选按钮
form.on('radio(deliver_type)', function(data) {
if (data.value == 1) {
$('#refund_real_money').html(refundData.order_goods_info.refund_apply_money);
$('#refund_real_money_1').val(refundData.order_goods_info.refund_apply_money);
} else {
$('#refund_real_money').html(refundData.presale_order_info.final_money);
$('#refund_real_money_1').val(refundData.presale_order_info.final_money);
}
});
});
/**
* 审核 申请维权
*/
function orderRefundAgree(order_goods_id) {
var getTpl = $("#refund_agree_html").html();
var data = [];
laytpl(getTpl).render(data, function(html) {
layer.open({
type: 1,
shadeClose: true,
shade: 0.3,
offset: 'auto',
scrollbar: true,
fixed: false,
title: "售后维权处理",
area: ['700px', 'auto'],
btn: ['确认退款', '取消'],
yes: function(index, layero){
$("#submit_agree").click();
},
btn2: function(index, layero){
layer.close(index);
},
content: html,
cancel: function(){
//右上角关闭回调
//return false 开启该代码可禁止点击该按钮关闭
},
success: function(layero, index){
var repeat_flag = false;//防重复标识
form.render();
form.on('submit(submit_agree)', function(data){
if(repeat_flag)return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/orderrefund/agree"),
type: "POST",
dataType: "JSON",
async: false,
data: data.field,
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if(res.code == 0){
listenerHash(); // 刷新页面
layer.closeAll();
}
}
});
return false;
});
}
});
form.render();
});
}
/**
* 售后拒绝
*/
function orderRefundRefuse(order_goods_id) {
var getTpl = $("#refund_refuse_html").html();
var data = [];
laytpl(getTpl).render(data, function(html) {
layer.open({
type: 1,
shadeClose: true,
shade: 0.3,
offset: 'auto',
scrollbar: true,
fixed: false,
title: "售后维权处理",
area: ['700px', 'auto'],
btn: ['确认拒绝', '取消'],
yes: function(index, layero){
$("#submit_refuse").click();
},
btn2: function(index, layero){
layer.close(index);
},
content: html,
cancel: function(){
//右上角关闭回调
//return false 开启该代码可禁止点击该按钮关闭
},
success: function(layero, index){
var repeat_flag = false;//防重复标识
form.render();
form.on('submit(submit_refuse)', function(data){
if(repeat_flag)return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/orderrefund/refuse"),
type: "POST",
dataType: "JSON",
async: false,
data: data.field,
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if(res.code == 0){
listenerHash(); // 刷新页面
layer.closeAll();
}
}
});
return false;
});
}
});
form.render();
});
}
/**
* 买家退货接收
*/
function orderRefundTakeDelivery(order_goods_id) {
var getTpl = $("#refund_take_delivery_html").html();
var data = [];
laytpl(getTpl).render(data, function(html) {
layer.open({
type: 1,
shadeClose: true,
shade: 0.3,
offset: 'auto',
scrollbar: true,
fixed: false,
title: "售后维权处理",
area: ['700px', 'auto'],
btn: ['确认收到退货', '取消'],
yes: function(index, layero){
$("#submit_take_delivery").click();
},
btn2: function(index, layero){
layer.close(index);
},
content: html,
cancel: function(){
//右上角关闭回调
//return false 开启该代码可禁止点击该按钮关闭
},
success: function(layero, index){
var repeat_flag = false;//防重复标识
form.render();
form.on('submit(submit_take_delivery)', function(data){
if(repeat_flag)return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/orderrefund/receive"),
type: "POST",
dataType: "JSON",
async: false,
data: data.field,
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if(res.code == 0){
listenerHash(); // 刷新页面
layer.closeAll();
}
}
});
return false;
});
}
});
form.render();
});
}
/**
* 退款转账
*/
function orderRefundTransfer(order_goods_id) {
$.ajax({
url: ns.url("shop/orderrefund/getOrderGoodsRefundInfo"),
type: "POST",
dataType: "JSON",
async: false,
data: {order_goods_id:order_goods_id},
success: function (res) {
if(res.code >= 0){
var getTpl = $("#refund_transfer_html").html();
refundData = res.data;
laytpl(getTpl).render(refundData, function(html) {
layer.open({
type: 1,
shadeClose: true,
shade: 0.3,
offset: 'auto',
scrollbar: true,
fixed: false,
title: "售后维权处理",
area: ['700px', 'auto'],
btn: ['确认转账', '取消'],
yes: function(index, layero){
$("#submit_transfer").click();
},
btn2: function(index, layero){
layer.close(index);
},
content: html,
success: function(layero, index){
var repeat_flag = false;//防重复标识
form.render();
form.on('submit(submit_transfer)', function(data){
if(repeat_flag)return;
repeat_flag = true;
$.ajax({
url: ns.url("shop/orderrefund/complete"),
type: "POST",
dataType: "JSON",
async: false,
data: data.field,
success: function (res) {
layer.msg(res.message);
repeat_flag = false;
if(res.code == 0){
listenerHash(); // 刷新页面
layer.closeAll();
}
}
});
return false;
});
}
});
form.render();
});
}else{
layer.msg(res.message);
}
}
});
}
/**
* 关闭维权
* @param order_goods_id
*/
function orderRefundClose(order_goods_id){
layer.confirm('确定要关闭本次维权吗?', function(index) {
layer.close(index);
$.ajax({
url: ns.url("shop/orderrefund/close"),
data: { order_goods_id: order_goods_id },
dataType: 'JSON',
type: 'POST',
success: function(res) {
layer.msg(res.message);
if (res.code == 0) {
location.hash = ns.hash("shop/orderrefund/lists");
}
}
});
}, function () {
layer.closeAll();
});
}
</script>

View File

@@ -0,0 +1,266 @@
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
<link rel="stylesheet" type="text/css" href="SHOP_CSS/refund_detail.css" />
<div class="order-detail">
<div class="title">退款订单信息</div>
<div class="order-information order-information-bottom">
<div class="order-information-contentOne">
<div class="contentOne-content">
<div class="contentOne-content-title">订单编号:</div>
<div class="contentOne-content-text">{$order_info['order_no']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">订单类型:</div>
<div class="contentOne-content-text">{$order_info['order_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">付款方式:</div>
<div class="contentOne-content-text">{$order_info['pay_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">买家:</div>
<div class="contentOne-content-text">{$order_info.nickname}</div>
</div>
</div>
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">配送方式:</div>
<div class="contentOne-content-text">{$order_info['delivery_type_name']}</div>
</div>
{if $order_info['delivery_type'] eq 'store'}
<div class="contentOne-content">
<div class="contentOne-content-title">配送门店:</div>
<div class="contentOne-content-text">{$order_info['delivery_store_name']}</div>
</div>
{php}
$delivery_store_info = json_decode($order_info['delivery_store_info'], true);
{/php}
<div class="contentOne-content">
<div class="contentOne-content-title">联系电话:</div>
<div class="contentOne-content-text contentOne-content-text-die">{$delivery_store_info.telphone ?? ''}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">门店地址:</div>
<div class="contentOne-content-text">{$delivery_store_info['full_address'] ?? ''}</div>
</div>
{else/}
<div class="contentOne-content">
<div class="contentOne-content-title">收货人:</div>
<div class="contentOne-content-text">{$order_info['name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">联系电话:</div>
<div class="contentOne-content-text">{$order_info['mobile']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">收货地址:</div>
<div class="contentOne-content-text contentOne-content-text-die">{$order_info['full_address']}-{$order_info['address']}</div>
</div>
{/if}
</div>
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">营销活动:</div>
<div class="contentOne-content-text">{$order_info['promotion_type_name']}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">买家留言:</div>
<div class="contentOne-content-text contentOne-content-text-die">
{if $order_info['buyer_message'] == ""}
-
{else/}
{$order_info['buyer_message']}
{/if}
</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">备注:</div>
<div class="contentOne-content-text">
{if $order_info['remark'] == ""}
-
{else/}
{$order_info['remark']}
{/if}
</div>
</div>
</div>
</div>
<div class="title">售后信息</div>
<div class="order-information order-information-bottom">
<div class="order-information-contentOne">
<div class="contentOne-content">
<div class="contentOne-content-title">退款编号:</div>
<div class="contentOne-content-text">{$detail['refund_no'] ?? ''}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">申请时间:</div>
<div class="contentOne-content-text">{:time_to_date($detail.refund_action_time)}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">维权类型:</div>
<div class="contentOne-content-text">
{if $detail.refund_mode > 1}
售后
{else /}
退款
{/if}
</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款方式:</div>
<div class="contentOne-content-text">
{if $detail.shop_active_refund == 1}
主动退款
{else /}
{if $detail.refund_type == 1}仅退款{else/}退货退款{/if}
{/if}
{if $detail.refund_money_type == 1} 原路退款 {elseif $detail.refund_money_type == 2} 线下退款{else/} 退款到余额{/if}
</div>
</div>
</div>
<div class="order-information-contentTwo">
<div class="contentOne-content">
<div class="contentOne-content-title">退款金额:</div>
<div class="contentOne-content-text">¥{$detail.refund_status == 3 ? $detail.refund_real_money : $detail.refund_apply_money}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款原因:</div>
<div class="contentOne-content-text">{$detail.refund_reason ?: '--'}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">退款说明:</div>
<div class="contentOne-content-text">{$detail.refund_remark ?: '--'}</div>
</div>
<div class="contentOne-content">
<div class="contentOne-content-title">商家退款说明:</div>
<div class="contentOne-content-text">{$detail.shop_refund_remark ?: '--'}</div>
</div>
</div>
</div>
<div class="title">退款状态</div>
<div class="order-information-contentOne order-orderStatus-contentOne ">
<div class="contentOne-content">
<div class="contentOne-content-title">退款状态:</div>
<div class="contentOne-content-text contentOne-content-textNew">{$detail.refund_status_name}</div>
</div>
<div class="contentTow-operation">
{if !empty($detail.refund_action)}
{foreach $detail.refund_action as $k => $v}
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" onclick="{$v.event}({$detail.order_goods_id});">{$v.title}</a>
{/foreach}
{/if}
</div>
<div class="orderStatus">
<div class="orderStatus-content-title">提醒:</div>
<div class="orderStatus-content-text">
<p class="text-tile">如果未发货,请点击同意退款给买家。</p>
<p class="text-tile">如果实际已发货,请主动与买家联系。</p>
<p class="text-tile">如果订单整体退款后,优惠券和余额会退还给买家。</p>
</div>
</div>
</div>
</div>
<div class="shop-information">
<div class="title">售后商品</div>
<div class="shop-information-table">
<table lay-filter="parse-table-order-product" lay-skin="line">
<thead>
<tr class="table-trOne">
<th lay-data="{field:'product_name', width:200}">商品</th>
<th lay-data="{field:'price'}">价格</th>
<th lay-data="{field:'sale_num'}" class="align-center">数量</th>
<th lay-data="{field:'total_money'}">小计(元)</th>
<th lay-data="{field:'shipping_status'}" class="align-center">状态</th>
{if isset($order_info.virtual_goods)}
{if $order_info.goods_class == 2}
<th style="text-align:center">总核销次数</th>
<th style="text-align:center">剩余次数</th>
<th>有效期</th>
<th>操作</th>
{/if}
{if $order_info.goods_class == 3}
<th>卡密信息</th>
{/if}
{/if}
{if $detail.refund_type == 2 && $detail.refund_status > 1 && $detail.refund_delivery_no != ''}
<th>退货物流公司</th>
<th>退货物流单号</th>
<th>物流说明</th>
<th>是否入库</th>
{/if}
</tr>
</thead>
<tbody>
<tr class="table-trTow">
<td>
<div class="multi-line-hiding goods-name" title="{$detail.sku_name}">{$detail.sku_name}</div>
</td>
<td>{$detail.price}</td>
<td class="align-center">{$detail.num}</td>
<td>{$detail.goods_money}</td>
<td class="align-center">{$detail.delivery_status_name}</td>
{if isset($order_info.virtual_goods)}
{if $order_info.goods_class == 2}
<td style="text-align:center;">{$order_info.virtual_goods.total_verify_num}</td>
<td style="text-align:center;">{$order_info.virtual_goods.total_verify_num - $order_info.virtual_goods.verify_num}</td>
<td>
{if $order_info.virtual_goods.expire_time > 0}{:time_to_date($order_info.virtual_goods.expire_time)}{else/}永久有效{/if}</td>
<td><a href="javascript:;" class="text-color" onclick="showVerifyRecord()">核销记录</a></td>
{/if}
{if $order_info.goods_class == 3}
<td>
<div class="carmichael">
{foreach name="$order_info.virtual_goods" item="vo"}
<div>卡号:{$vo.card_info.cardno}<br>密码:{$vo.card_info.password}</div>
{/foreach}
</div>
</td>
{/if}
{/if}
{if $detail.refund_type == 2 && $detail.refund_status > 1 && $detail.refund_delivery_no != ''}
<td>{$detail.refund_delivery_name}</td>
<td>{$detail.refund_delivery_no}</td>
<td>{$detail.refund_delivery_remark}</td>
<td>{if $detail.is_refund_stock == 1}入库{else/}不入库{/if}</td>
{/if}
</tr>
</tbody>
</table>
</div>
</div>
<div class="shop-operation">
<div class="title">售后日志</div>
<div class="refund-block-content">
<ul class="layui-timeline">
{foreach $detail['refund_log_list'] as $log_k => $log_item}
<li class="layui-timeline-item">
{if $log_item["action_way"] == 1}
<span class="refund-way layui-timeline-axis refund-buyer">买</span>
{elseif $log_item["action_way"] == 2 /}
<span class="refund-way layui-timeline-axis seller-buyer bg-color">商</span>
{else /}
<span class="refund-way layui-timeline-axis platform-buyer">平</span>
{/if}
<div class="layui-timeline-content layui-text">
<div class="layui-timeline-title">{$log_item.action}<span style="display:inline-block;float:right;margin-right:40px;">{:time_to_date($log_item.action_time)}</span></div>
{notempty name="$log_item['desc']"}
<div class="desc">{$log_item.desc}</div>
{/notempty}
</div>
</li>
{/foreach}
</ul>
</div>
</div>
<!-- 维权操作 -->
{include file="orderrefund/refund_action" /}