This commit is contained in:
2025-02-16 18:43:16 +08:00
parent 9e060aa95a
commit 58f9061565
9 changed files with 491 additions and 63 deletions

View File

@ -0,0 +1,78 @@
<form action="{:sysuri()}" id="AddressConfigForm" data-table-id="SenderTable" method="post" data-auto="true" class="layui-form layui-card">
<div class="layui-card-body ta-pl-40">
<fieldset class="layui-form-item layui-bg-gray">
<legend><span class="layui-badge layui-bg-cyan">收货信息</span></legend>
<div class="layui-form-item layui-row layui-col-space10">
<label class="layui-col-xs6 relative block">
<span class="help-label label-required-prev"><b>收货人姓名</b>User Name</span>
<input class="layui-input" name="user_name" vali-name="收货人姓名" placeholder="请输入收货姓名" required value="{$vo.user_name|default=''}">
</label>
<label class="layui-col-xs6 relative block">
<span class="help-label label-required-prev"><b>收货人手机</b>User Mobile</span>
<input class="layui-input" name="user_phone" vali-name="收货人手机" pattern="mobile" placeholder="请输入收货人手机" required value="{$vo.user_phone|default=''}">
</label>
<div class="layui-col-xs12 relative block">
<span class="help-label"><b>收货所在区域</b>(原区域:{$vo.extra.region_prov|default='--'} - {$vo.extra.region_city|default=''} - {$vo.extra.region_area|default=''} </span>
<div class="layui-row layui-col-space10">
<label class="layui-col-xs4"><select class="layui-select" lay-filter="form_prov" name="form_prov"></select></label>
<label class="layui-col-xs4"><select class="layui-select" lay-filter="form_city" name="form_city"></select></label>
<label class="layui-col-xs4"><select class="layui-select" lay-filter="form_area" name="form_area"></select></label>
</div>
</div>
<label class="layui-col-xs12 relative block">
<span class="help-label"><b>收货详细地址</b>(原地址:{$vo.extra.region_addr|default=""} )</span>
<input class="layui-input" name="region_addr" placeholder="请输入收货地址" required value='{$vo.region_addr|default=""}'>
</label>
</div>
</fieldset>
<fieldset class="layui-form-item layui-bg-gray">
<legend>
<span class="layui-badge layui-bg-cyan">快递信息</span>
</legend>
<label class="layui-form-item relative block">
<span class="help-label"><b>快递配送公司</b>Express Company</span>
<input class="layui-input" data-delivery-number vali-name="快递配送公司" name="company_name" placeholder="请输入快递配送公司" required value='{$vo.company_name|default=""}'>
</label>
<label class="layui-form-item relative block">
<span class="help-label"><b>快递配送单号</b>Express Number</span>
<input class="layui-input" data-delivery-number vali-name="快递配送单号" name="express_code" placeholder="请输入快递配送单号" required value='{$vo.express_code|default=""}'>
</label>
<label class="layui-form-item relative block">
<span class="help-label"><b>快递配送描述</b>Express Description</span>
<textarea class="layui-textarea" name="express_remark" placeholder="请输入快递配送描述">{$vo.express_remark|default=""}</textarea>
</label>
</fieldset>
</div>
<div class="hr-line-dashed"></div>
{notempty name='vo.order_no'}<input name='order_no' type='hidden' value='{$vo.order_no}'>{/notempty}
{notempty name='vo.express_time'}<input name='express_time' type='hidden' value='{$vo.express_time}'>{/notempty}
<div class="layui-form-item text-center">
<button class="layui-btn" type='submit'>保存数据</button>
<button class="layui-btn layui-btn-danger" data-close data-confirm="确定要取消编辑吗?" type='button'>取消编辑</button>
</div>
</form>
<script>
require(['pcasunzips'], function () {
(function (prov, city, area, call) {
new PCAS('form_prov', 'form_city', 'form_area', prov, city, area);
$('#AddressConfigForm').parents('.layui-layer-content').css({overflow: 'unset'});
call() && form.on('select(form_prov)', call) && form.on('select(form_city)', call) && form.on('select(form_area)', call);
})('{$vo.region_prov|default=""}', '{$vo.region_city|default=""}', '{$vo.region_area|default=""}', function (data) {
$('select:not([lay-ignore])').next('.layui-form-select').remove();
data && data.elem && $(data.elem).trigger('change');
return layui.form.render('select');
});
});
</script>

View File

@ -0,0 +1,160 @@
{extend name="table"}
{block name="button"}
{/block}
{block name="content"}
<div class="layui-tab layui-tab-card">
<ul class="layui-tab-title notselect">
{foreach ['ta'=>'全部订单','t1'=>'等待发货','t2'=>'已经发货','t3'=>'已经收货'] as $k => $v}
{if isset($type) and 't'.$type eq $k}
<li class="layui-this" data-open="{:url('index')}?type={$k}">{$v}<sup class="layui-badge border-radius">{$total[$k]??0}</sup></li>
{else}
<li data-open="{:url('index')}?type={$k}">{$v}<sup class="layui-badge border-radius">{$total[$k]??0}</sup></li>
{/if}{/foreach}
</ul>
<div class="layui-tab-content">
{include file='sender/index_search'}
<table id="SenderTable" data-line="3" data-url="{:request()->url()}" data-target-search="form.form-search"></table>
</div>
</div>
{/block}
{block name='script'}
<script>
function str2num(v) {
return parseFloat(v);
}
function str2name(v) {
let _ = [];
v.split(';;').forEach(s => _.push(s.split('::').pop()));
return _.join(' ');
}
let tstatus = ['已取消', '待发货', '已发货', '已收货'];
let tstyles = ['layui-bg-gray layui-border-red', 'layui-bg-black', 'layui-bg-blue', 'layui-bg-green'];
$(function () {
$('#SenderTable').layTable({
even: true, height: 'full', sort: {field: 'id', type: 'desc'},
cols: [[
{field: 'headimg', title: '头 像', width: 90, align: 'center', templet: '<div>{{-showTableImage(d.user.headimg,true,"md")}}</div>'},
{
field: 'unid', title: '会员用户', width: 170, templet: function (d) {
let tpls = [];
if (d.user) {
tpls.push('<div>用户昵称:{{d.user.nickname||d.user.username||"-"}}</div>');
tpls.push('<div>用户手机:<b class="font-code">{{d.user.phone}}</b></div>');
} else {
tpls.push('<div class="color-desc ta-pt-10">无用户账号</div>')
}
return laytpl("<div class='nowrap ta-pt-10'>" + tpls.join('') + "</div>").render(d);
}
},
{
field: 'order_no', title: '订单信息', minWidth: 100, templet: function (d) {
let status = laytpl('<span class="layui-badge layui-badge-middle flex-center {{d.style}}">{{d.status}}</span>').render({
status: tstatus[d.status], style: tstyles[d.status]
});
// status += laytpl('<span class="layui-badge layui-badge-middle flex-center {{d.style}}" style="zoom:85%;line-height:15px;padding:3px 4px">{{d.status}}</span>').render({
// status: ostatus[d.main.status], style: ostyles[d.main.status]
// });
let tpls = '订单号 <b class="font-code">{{d.main.order_no}}</b> ';
if (d.main.amount_real > 0) {
if (d.main.status > 3) {
tpls += '<br>已支付 <b class="font-code">{{str2num(d.main.amount_real)}}</b> 元';
} else {
tpls += '<br>需支付 <b class="font-code">{{str2num(d.main.amount_real)}}</b> 元';
}
} else {
tpls += '<br>无需支付';
}
if (d.main.amount_express > 0) {
tpls += ' ( 随减 <b class="font-code">{{str2num(d.main.amount_reduct)}}</b> 元,含邮费 <b class="font-code">{{str2num(d.main.amount_express)}}</b> 元)';
} else {
tpls += ' ( 随减 <b class="font-code">{{str2num(d.main.amount_reduct)}}</b> 元,包邮免费 )';
}
tpls += '<br>'
if (d.main.amount_balance > 0) {
tpls += "余额 " + d.main.amount_balance + " 元,"
} else {
tpls += '未使用余额,'
}
if (d.main.amount_integral > 0) {
tpls += "积分 " + d.main.amount_balance + ""
} else {
tpls += '未使用积分,'
}
if (d.main.coupon_code) {
tpls += "优惠券 " + d.main.coupon_amount + "元,"
} else {
tpls += '未使用优惠券。'
}
return '<div class="flex">' + status + '<div class="nowrap sub-strong-blue">' + laytpl(tpls).render(d) + '</div></div>';
}
},
{
title: '商品详情', templet: function (d) {
let tpls = [];
d.main.items.forEach(function (v) {
tpls.push(laytpl(
'<div class="flex">' +
' <div style="padding-top:3px">{{-showTableImage(d.gcover,false,"md")}}</div>' +
' <div class="ta-pl-5"></div>' +
' <div>' +
' <div>{{d.gcode}}</div>' +
' <div>' +
' <span>{{d.gname}}</span>' +
' <span class="ta-pl-5 color-desc">{{str2name(d.gspec)}}</span><br>' +
' <span>{{d.stock_sales}}件 x {{str2num(d.price_selling)}}元/件,计 {{str2num(d.total_price_selling)}}元</span> ' +
' </div>' +
' </div>' +
'</div>'
).render(v));
});
return tpls.join('<br>');
}
},
{
title: '物流信息', templet: function (d) {
let tpls = [];
if (d.status > 1) {
tpls.push('<b>发货物流:</b><span class="ta-mr-5">{{d.company_name}}</span><b class="color-blue font-code">{{d.express_code}}</b>');
} else {
tpls.push('<b>发货物流:</b><span class="color-desc">未发货</span>');
}
tpls.push('<b>联系方式:</b><span class="ta-mr-5">{{d.user_name}}</span><span class="color-blue font-code">{{d.user_phone}}</span>');
tpls.push('<b>收货地址:</b>{{d.region_prov}} {{d.region_city}} {{d.region_area}} {{d.region_addr}}');
return laytpl(tpls.join('<br>')).render(d);
}
},
{
field: 'id', sort: true, title: '创建时间', minWidth: 170, templet: function (d) {
let tpls = [];
tpls.push('发货时间:{{d.express_time}}');
tpls.push('创建时间:{{d.create_time}}');
tpls.push('更新时间:{{d.update_time}}');
return laytpl(tpls.join('<br>')).render(d)
}
},
/* {if auth('delivery')} */
{toolbar: '#toolbar', title: '操作面板', width: 100, align: 'center', fixed: 'right'},
/* {/if} */
]]
});
});
</script>
<script type="text/html" id="toolbar">
<div class="ta-pt-10"></div>
<!--{if auth('delivery')}-->
{{# if(d.status < 2){ }}
<a class="layui-btn layui-btn-sm" data-title="发货快递管理" data-modal="{:url('delivery')}" data-value="order_no#{{d.order_no}}"> </a>
{{# }else{ }}
<a class="layui-btn layui-btn-sm" data-title="发货快递管理" data-modal="{:url('delivery')}" data-value="order_no#{{d.order_no}}"> </a>
{{# } }}
<!--{/if}-->
</script>
{/block}

View File

@ -0,0 +1,111 @@
<form action="{:sysuri()}" autocomplete="off" class="layui-form layui-form-pane form-search" method="get" onsubmit="return false">
<div class="layui-form-item layui-inline">
<label class="layui-form-label">会员用户</label>
<label class="layui-input-inline">
<input class="layui-input" name="user_keys" placeholder="请输入手机或昵称" value="{$get.user_keys|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">订单单号</label>
<label class="layui-input-inline">
<input class="layui-input" name="order_no" placeholder="请输入订单单号" value="{$get.order_no|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">发货单号</label>
<label class="layui-input-inline">
<input class="layui-input" name="delivery_count" placeholder="请输入发货单号" value="{$get.delivery_count|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">发货状态</label>
<label class="layui-input-inline">
<select class="layui-select" name="status">
<option value="">-- 全部 --</option>
{foreach [1=>'等待发货',2=>'已经发货',3=>'已经收货'] as $k=>$v}
{if isset($get.status) and $get.status eq $k.''}
<option selected value="{$k}">{$v}</option>
{else}
<option value="{$k}">{$v}</option>
{/if}{/foreach}
</select>
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">创建时间</label>
<label class="layui-input-inline">
<input class="layui-input" data-date-range name="create_time" placeholder="请选择创建时间" value="{$get.create_time|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">发货时间</label>
<label class="layui-input-inline">
<input class="layui-input" data-date-range name="express_time" placeholder="请选择发货时间" value="{$get.express_time|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">收货信息</label>
<label class="layui-input-inline">
<input class="layui-input" name="user_name" placeholder="请输入收货信息" value="{$get.user_name|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<label class="layui-form-label">配送地址</label>
<label class="layui-input-inline">
<input class="layui-input" name="address" placeholder="请输入配送地址" value="{$get.address|default=''}">
</label>
</div>
<div class="layui-form-item layui-inline">
<button class="layui-btn layui-btn-primary" type="submit"><i class="layui-icon">&#xe615;</i> 搜 索</button>
<button class="layui-btn layui-btn-primary" data-form-export="{:url('index')}?type={$type|default=''}" type="button">
<i class="layui-icon layui-icon-export"></i>
</button>
</div>
</form>
<script>
require(['excel'], function (excel) {
excel.bind(function (data) {
let rows = [];
data.forEach(function (delivery) {
delivery.main.items.forEach(function (item) {
rows.push([
item.order_no,
item.gname,
item.gsku,
item.gspec,
item.stock_sales,
item.price_selling,
item.total_selling,
'{$address.name|default=""}',
delivery.user_name,
delivery.user_phone,
delivery.region_prov,
delivery.region_city,
delivery.region_area,
delivery.region_addr,
]);
});
});
// 设置表头内容
rows.unshift([
'订单号', '商品名称', '商品SKU编码', '商品规格', '数量', '单价', '总额',
'寄件方', '收货人', '电话', '省份', '城市', '区', '地址'
]);
// 应用表格样式
return this.withStyle(rows);
}, '订单发货记录' + layui.util.toDateString(Date.now(), '_yyyyMMdd_HHmmss'));
});
</script>