【新增】新增【微信发货信息管理】功能对接。实现微信小程序二次发货功能平移到后台业务,减少繁琐的二次发货操作。

This commit is contained in:
jianweie code
2023-10-08 02:08:22 +08:00
parent ac0cc6c148
commit 55e84b78af
35 changed files with 3329 additions and 33 deletions

View File

@@ -0,0 +1,47 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatShippingDelivery-createForm" id="LAY-app-WeChatShippingDelivery-createForm">
<div class="layui-form-item">
<label for="deliveryId" class="layui-form-label layui-form-required">快递公司编码</label>
<div class="layui-input-block">
<input name="deliveryId" lay-verType="tips" lay-verify="required|verifydeliveryId" class="layui-input" lay-reqText="请输入快递公司编码" placeholder="请输入快递公司编码" />
</div>
</div>
<div class="layui-form-item">
<label for="deliveryName" class="layui-form-label layui-form-required">快递公司名称</label>
<div class="layui-input-block">
<input name="deliveryName" lay-verType="tips" lay-verify="required|verifydeliveryName" class="layui-input" lay-reqText="请输入快递公司名称" placeholder="请输入快递公司名称" />
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatShippingDelivery-createForm-submit" id="LAY-app-WeChatShippingDelivery-createForm-submit" value="确认添加">
</div>
</div>
</script>
<script>
var debug = layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, coreHelper = layui.coreHelper;
form.verify({
verifydeliveryId: [/^.{0,50}$/, '快递公司编码最大只允许输入50位字符'],
verifydeliveryName: [/^.{0,50}$/, '快递公司名称最大只允许输入50位字符'],
});
//重载form
form.render(null, 'LAY-app-WeChatShippingDelivery-createForm');
})
};
</script>

View File

@@ -0,0 +1,54 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<table class="layui-table layui-form" lay-filter="LAY-app-WeChatShippingDelivery-detailsForm" id="LAY-app-WeChatShippingDelivery-detailsForm">
<colgroup>
<col width="100">
<col>
</colgroup>
<tbody>
<tr>
<td>
<label for="id">序列</label>
</td>
<td>
{{ d.params.data.id || '' }}
</td>
</tr>
<tr>
<td>
<label for="deliveryId">快递公司编码</label>
</td>
<td>
{{ d.params.data.deliveryId || '' }}
</td>
</tr>
<tr>
<td>
<label for="deliveryName">快递公司名称</label>
</td>
<td>
{{ d.params.data.deliveryName || '' }}
</td>
</tr>
</tbody>
</table>
</script>
<script>
var debug= layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'coreHelper'], function () {
var $ = layui.$
, setter = layui.setter
, admin = layui.admin
, coreHelper = layui.coreHelper
, form = layui.form;
form.render(null, 'LAY-app-WeChatShippingDelivery-detailsForm');
});
};
</script>

View File

@@ -0,0 +1,48 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatShippingDelivery-editForm" id="LAY-app-WeChatShippingDelivery-editForm">
<input type="hidden" name="id" value="{{d.params.data.id || '' }}" />
<div class="layui-form-item">
<label for="deliveryId" class="layui-form-label layui-form-required">快递公司编码</label>
<div class="layui-input-block">
<input name="deliveryId" lay-verType="tips" lay-verify="required|verifydeliveryId" class="layui-input" placeholder="请输入快递公司编码" lay-reqText="请输入快递公司编码" value="{{d.params.data.deliveryId || '' }}" />
</div>
</div>
<div class="layui-form-item">
<label for="deliveryName" class="layui-form-label layui-form-required">快递公司名称</label>
<div class="layui-input-block">
<input name="deliveryName" lay-verType="tips" lay-verify="required|verifydeliveryName" class="layui-input" placeholder="请输入快递公司名称" lay-reqText="请输入快递公司名称" value="{{d.params.data.deliveryName || '' }}" />
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatShippingDelivery-editForm-submit" id="LAY-app-WeChatShippingDelivery-editForm-submit" value="确认编辑">
</div>
</div>
</script>
<script>
var debug = layui.setter.debug;
layui.data.sendParams = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, coreHelper = layui.coreHelper;
form.verify({
verifydeliveryId: [/^.{0,50}$/, '快递公司编码最大只允许输入50位字符'],
verifydeliveryName: [/^.{0,50}$/, '快递公司名称最大只允许输入50位字符'],
});
//重载form
form.render(null, 'LAY-app-WeChatShippingDelivery-editForm');
})
};
</script>

View File

@@ -0,0 +1,148 @@
<title>微信发货快递公司信息</title>
<!--当前位置开始-->
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
</script>
</div>
</div>
<!--当前位置结束-->
<style>
/* 重写样式 */
</style>
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatShippingDelivery/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
<table id="LAY-app-WeChatShippingDelivery-tableBox" lay-filter="LAY-app-WeChatShippingDelivery-tableBox"></table>
</div>
<script type="text/html" id="LAY-app-WeChatShippingDelivery-toolbar">
<div class="layui-form coreshop-toolbar-search-form">
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label" for="deliveryId">快递公司编码</label>
<div class="layui-input-inline">
<input type="text" name="deliveryId" placeholder="请输入快递公司编码" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label" for="deliveryName">快递公司名称</label>
<div class="layui-input-inline">
<input type="text" name="deliveryName" placeholder="请输入快递公司名称" class="layui-input">
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-WeChatShippingDelivery-search"><i class="layui-icon layui-icon-search"></i></button>
</div>
</div>
</div>
</script>
<script type="text/html" id="LAY-app-WeChatShippingDelivery-pagebar">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm" lay-event="updateCompany"><i class="layui-icon layui-icon-refresh-1"></i></button>
</div>
</script>
<script>
var indexData;
var debug = layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d); }
indexData = d.data;
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper'],
function () {
var $ = layui.$
, admin = layui.admin
, table = layui.table
, form = layui.form
, laydate = layui.laydate
, setter = layui.setter
, coreHelper = layui.coreHelper
, util = layui.util
, view = layui.view;
var searchwhere;
//监听搜索
form.on('submit(LAY-app-WeChatShippingDelivery-search)',
function (data) {
var field = data.field;
searchwhere = field;
//执行重载
table.reloadData('LAY-app-WeChatShippingDelivery-tableBox', { where: field });
});
//数据绑定
table.render({
elem: '#LAY-app-WeChatShippingDelivery-tableBox',
url: layui.setter.apiUrl + 'Api/WeChatShippingDelivery/GetPageList',
method: 'POST',
toolbar: '#LAY-app-WeChatShippingDelivery-toolbar',
pagebar: '#LAY-app-WeChatShippingDelivery-pagebar',
className: 'pagebarbox',
defaultToolbar: ['filter', 'print', 'exports'],
height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
page: true,
limit: 30,
limits: [10, 15, 20, 25, 30, 50, 100, 200],
text: { none: '暂无相关数据' },
cols: [
[
{ type: "checkbox", fixed: "left" },
{ field: 'id', title: '序列', width: 60, sort: false },
{ field: 'deliveryId', title: '快递公司编码', sort: false, width: 205 },
{ field: 'deliveryName', title: '快递公司名称', sort: false, width: 205 },
]
]
});
//监听排序事件
table.on('sort(LAY-app-WeChatShippingDelivery-tableBox)', function (obj) {
table.reloadData('LAY-app-WeChatShippingDelivery-tableBox', {
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
orderField: obj.field, //排序字段
orderDirection: obj.type //排序方式
}
});
});
//头工具栏事件
table.on('pagebar(LAY-app-WeChatShippingDelivery-tableBox)', function (obj) {
var checkStatus = table.checkStatus(obj.config.id);
switch (obj.event) {
case 'updateCompany':
updateCompany();
break;
};
});
//监听工具条
table.on('tool(LAY-app-WeChatShippingDelivery-tableBox)',
function (obj) {
if (obj.event === 'detail') {
doDetails(obj);
} else if (obj.event === 'del') {
doDelete(obj);
} else if (obj.event === 'edit') {
doEdit(obj)
}
});
//刷新数据
function updateCompany(obj) {
layer.confirm('确定刷新吗?刷新后将删除老数据。', function (index) {
coreHelper.Post("Api/WeChatShippingDelivery/DoUpdateCompany", null, function (e) {
if (debug) { console.log(e); } //开启调试返回数据
table.reloadData('LAY-app-WeChatShippingDelivery-tableBox'); //重载表格
layer.msg(e.msg);
});
});
}
//重载form
form.render();
});
};
</script>

View File

@@ -0,0 +1,236 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatShippingOrder-createForm" id="LAY-app-WeChatShippingOrder-createForm">
<input type="hidden" name="transaction_id" value="{{d.params.data.order.transaction_id }}" />
<input type="hidden" name="openid" value="{{d.params.data.order.openid }}" />
<input type="hidden" name="merchant_id" value="{{d.params.data.order.merchant_id }}" />
<input type="hidden" name="merchant_trade_no" value="{{d.params.data.order.merchant_trade_no }}" />
<blockquote class="layui-elem-quote">
商户单号{{d.params.data.order.merchant_trade_no }}<br />
交易单号{{d.params.data.order.transaction_id }}<br />
支付金额¥ {{d.params.data.order.paid_amount / 100 }} <br />
支付时间{{ layui.util.toDateString(d.params.data.order.pay_time * 1000, 'yyyy-MM-dd HH:mm:ss')}}<br />
</blockquote>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">商品信息</label>
<div class="layui-input-block">
<textarea name="item_desc" placeholder="商品信息会向用户展示,请保持和订单信息一致。输入多个商品时用“ ; ”隔开。" class="layui-textarea">{{d.params.data.orderTitle}}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发货方式</label>
<div class="layui-input-block">
{{# layui.each(d.params.data.logisticsType, function(index, item){ }}
<input type="radio" name="logistics_type" value="{{item.value}}" title="{{item.title}}" {{item.value==d.params.data.logisticsTypeValue ? 'checked':''}} lay-filter="logistics-type-filter">
{{# }); }}
</div>
</div>
<div id="logisticsBox">
<div class="layui-form-item">
<label for="matchKey" class="layui-form-label ">
快递信息
</label>
<div class="layui-input-block">
<table class="layui-table">
<thead>
<tr>
<th>物流公司</th>
<th style="width: 250px;">快递单号</th>
<th style="width: 82px;">操作</th>
</tr>
</thead>
<tbody id="logisticsView">
<tr data-id="0">
<td>
<select lay-search="" id="express_company" name="shipping_list.express_company[0]" class="layui-input">
<option value="">请选择可直接输入搜索</option>
{{# layui.each(d.params.data.deliveryCompany, function(index, item){ }}
<option value="{{item.deliveryId}}">{{item.deliveryName}}</option>
{{# }); }}
</select>
</td>
<td class="field_value">
<input type="text" id="tracking_no" name="shipping_list.tracking_no[0]" required value="" placeholder="填写快递单号" autocomplete="off" class="layui-input">
</td>
<td>
<a class="layui-btn layui-btn-xs addfield-class table-button">
添加
</a>
<!--<a class="layui-btn layui-btn-danger layui-btn-xs del-class table-button">
删除
</a>-->
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">全部发货</label>
<div class="layui-input-block">
<input type="checkbox" name="is_all_delivered" lay-skin="switch" lay-filter="switchTest" checked="checked" title="是|否">
</div>
</div>
{{# if(d.params.data.billDeliveryList){ }}
<div class="layui-bg-gray" style="padding: 16px;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">订单发货信息</div>
<div class="layui-card-body">
{{# layui.each(d.params.data.billDeliveryList, function(index, item){ }}
发货快递{{item.logiCode}} 快递编号{{item.logiNo}}
{{# }); }}
</div>
</div>
</div>
</div>
</div>
{{# } }}
</div>
<div id="cityDistributionBox" style="display:none;">
<div class="layui-form-item">
<label for="matchKey" class="layui-form-label">
快递信息
</label>
<div class="layui-input-inline layui-inline-4">
<input name="cityDistributionName" class="layui-input" placeholder="填写同城配送公司名称" />
</div>
<div class="layui-input-inline layui-inline-4">
<input name="cityDistributionNumber" class="layui-input" placeholder="填写快递单号" />
</div>
<div class="layui-form-mid">
如商家自配则该项可选填
</div>
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatShippingOrder-createForm-submit" id="LAY-app-WeChatShippingOrder-createForm-submit" value="确认添加">
</div>
</div>
</script>
<script id="tr_tpl" type="text/html">
<tr data-id="{{ d.id }}">
<td>
<select lay-search="" id="express_company" name="shipping_list.express_company[{{ d.id }}]" class="layui-input">
<option value="">请选择可直接输入搜索</option>
{{# layui.each(d.deliveryCompany, function(index, item){ }}
<option value="{{item.deliveryId}}">{{item.deliveryName}}</option>
{{# }); }}
</select>
</td>
<td class="field_value">
<input type="text" id="tracking_no" name="shipping_list.tracking_no[{{ d.id }}]" required value="" placeholder="填写快递单号" autocomplete="off" class="layui-input">
</td>
<td>
<a class="layui-btn layui-btn-xs addfield-class table-button">
添加
</a>
<a class="layui-btn layui-btn-danger layui-btn-xs del-class table-button">
删除
</a>
</td>
</tr>
</script>
<script>
var data;
var debug = layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
data = d.params.data;
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg', 'laytpl'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, laytpl = layui.laytpl
, coreHelper = layui.coreHelper;
hideBox(d.params.data.logisticsTypeValue);
$(".layui-table").on('click', '.addfield-class', function (e) {
var getTpl = tr_tpl.innerHTML;
var lastId = $(this).parent().parent().parent().find('tr').last().attr('data-id');
console.log(lastId);
var tmpData = {};
tmpData.id = parseInt(lastId) + 1;
tmpData.deliveryCompany = d.params.data.deliveryCompany;
laytpl(getTpl).render(tmpData, function (html) {
$("#logisticsView").append(html);
form.render();
});
});
$(".layui-table").on('click', '.del-class', function (e) {
if ($(".del-class").length > 0) {
$(this).parent().parent().remove();
resetInputNameID();
} else {
layer.msg("至少保留1个物流信息录入框");
}
})
//重置排序
function resetInputNameID() {
$.each($("#logisticsView tr"), function (i, tr) {
$(this).attr('data-id', i);
$(this).find("#express_company").attr("name", "shipping_list.express_company[" + i + "]");
$(this).find("#tracking_no").attr("name", "shipping_list.tracking_no[" + i + "]");
});
}
// radio 事件
form.on('radio(logistics-type-filter)', function (data) {
var elem = data.elem; // 获得 radio 原始 DOM 对象
var value = elem.value; // 获得 radio 值
hideBox(value);
});
function hideBox(value) {
if (value == 1) {
$('#logisticsBox').show();
$('#cityDistributionBox').hide();
} else if (value == 2) {
$('#logisticsBox').hide();
$('#cityDistributionBox').show();
} else {
$('#logisticsBox').hide();
$('#cityDistributionBox').hide();
}
}
form.verify({
verifymatchKey: [/^.{0,100}$/, '匹配字符最大只允许输入100位字符'],
verifyimgTextUrl: [/^.{0,1000}$/, '图片回复图片地址最大只允许输入1000位字符'],
verifyimgTextLink: [/^.{0,1000}$/, '图片回复超链接最大只允许输入1000位字符'],
verifymeidaUrl: [/^.{0,1000}$/, '语音回复地址最大只允许输入1000位字符'],
verifymeidaLink: [/^.{0,1000}$/, '语音回复超链接最大只允许输入1000位字符'],
verifyremark: [/^.{0,1000}$/, '备注最大只允许输入1000位字符'],
verifycreateBy: [/^.{0,100}$/, '创建来源最大只允许输入100位字符'],
verifymodifyBy: [/^.{0,100}$/, '修改来源最大只允许输入100位字符'],
});
//重载form
form.render(null, 'LAY-app-WeChatShippingOrder-createForm');
})
};
</script>

View File

@@ -0,0 +1,104 @@
<script type="text/html" template lay-done="layui.data.done(d);">
<div class="layui-table layui-form" lay-filter="LAY-app-WeChatMessageResponse-detailsForm" id="LAY-app-WeChatMessageResponse-detailsForm">
{{ d.params.data.id || '' }}
<div class="layui-bg-gray" style="padding: 5px;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">发货状态</div>
<div class="layui-card-body">
{{# layui.each(d.params.data.status, function(index, item){ }}
{{# if(d.params.data.order.order_state==item.value) { }}
{{- item.description }}
{{# } }}
{{# }); }}
</div>
</div>
</div>
</div>
</div>
<div class="layui-bg-gray" style="padding: 5px;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">发货状态</div>
<div class="layui-card-body">
商户号{{d.params.data.order.merchant_id }}<br />
商户单号{{d.params.data.order.merchant_trade_no }}<br />
交易单号{{d.params.data.order.transaction_id }}<br />
支付金额¥ {{d.params.data.order.paid_amount / 100 }} <br />
支付时间{{ layui.util.toDateString(d.params.data.order.pay_time * 1000, 'yyyy-MM-dd HH:mm:ss')}}<br />
</div>
</div>
</div>
</div>
</div>
<div class="layui-bg-gray" style="padding: 5px;">
<div class="layui-row layui-col-space15">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">
发货信息
</div>
<div class="layui-card-body">
商品信息{{d.params.data.order.description }}<br />
发货方式
{{# layui.each(d.params.data.logisticsType, function(index, item){ }}
{{d.params.data.order.shipping.logistics_type==item.value ? item.title:''}}
{{# }); }}
<br />
{{# if(d.params.data.order.shipping.logistics_type==1) { }}
{{# layui.each(d.params.data.order.shipping.shipping_list, function(index, itemP){ }}
发货时间{{ layui.util.toDateString(itemP.upload_time * 1000, 'yyyy-MM-dd HH:mm:ss')}}<br />
包裹{{index+1}}
{{# layui.each(d.params.data.deliveryCompany, function(index, item){ }}
{{itemP.express_company==item.deliveryId ? item.deliveryName:''}}
{{# }); }}
{{itemP.tracking_no}}
<br />
{{# }); }}
{{# }; }}
</div>
</div>
</div>
</div>
</div>
</div>
</script>
<script>
var debug = layui.setter.debug;
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'coreHelper'], function () {
var $ = layui.$
, setter = layui.setter
, admin = layui.admin
, coreHelper = layui.coreHelper
, form = layui.form;
form.render(null, 'LAY-app-WeChatMessageResponse-detailsForm');
});
};
</script>

View File

@@ -0,0 +1,387 @@
<title>微信自动回复消息表</title>
<!--当前位置开始-->
<div class="layui-card layadmin-header">
<div class="layui-breadcrumb" lay-filter="breadcrumb">
<script type="text/html" template lay-done="layui.data.updateMainBreadcrumb();">
</script>
</div>
</div>
<!--当前位置结束-->
<style>
/* 重写样式 */
</style>
<script type="text/html" template lay-type="Post" lay-url="Api/WeChatShippingOrder/GetIndex" lay-done="layui.data.done(d);">
</script>
<div class="table-body">
<table id="LAY-app-WeChatShippingOrder-tableBox" lay-filter="LAY-app-WeChatShippingOrder-tableBox"></table>
<div id="demo-laypage-pn-show"></div>
</div>
<script type="text/html" id="LAY-app-WeChatShippingOrder-toolbar">
<div class="layui-form coreshop-toolbar-search-form">
<div class="layui-form-item">
<div class="layui-inline">
<div class="layui-input-inline">
<select name="status">
<option value="">请选择订单状态</option>
{{# layui.each(indexData.status, function(index, item){ }}
<option value="{{item.value}}">{{- item.description}}</option>
{{# }); }}
</select>
</div>
</div>
<div class="layui-inline">
<button class="layui-btn layui-btn-sm" lay-submit lay-filter="LAY-app-WeChatShippingOrder-search"><i class="layui-icon layui-icon-search"></i></button>
</div>
</div>
</div>
</script>
<script type="text/html" id="LAY-app-WeChatShippingOrder-tableBox-bar">
<!--<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">关联订单</a>-->
{{# if(d.order_state>1){ }}
<a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">发货详情</a>
{{# } }}
{{# if(d.order_state==1){ }}
<a class="layui-btn layui-btn-xs" lay-event="addData">立即发货</a>
{{# } else if(d.order_state==2){ }}
<a class="layui-btn layui-bg-blue layui-btn-xs" lay-event="updateData">重新发货</a>
{{# } }}
</script>
<script>
var _this = this;
var indexData;
var debug = layui.setter.debug;
var has_more = false;
var last_index = "";
layui.data.done = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d); }
indexData = d.data;
layui.use(['index', 'table', 'laydate', 'util', 'coredropdown', 'coreHelper', 'laypage'],
function () {
var $ = layui.$
, admin = layui.admin
, table = layui.table
, form = layui.form
, laydate = layui.laydate
, setter = layui.setter
, coreHelper = layui.coreHelper
, util = layui.util
, laypage = layui.laypage
, view = layui.view;
var searchwhere;
//监听搜索
form.on('submit(LAY-app-WeChatShippingOrder-search)',
function (data) {
var field = data.field;
searchwhere = field;
//执行重载
table.reloadData('LAY-app-WeChatShippingOrder-tableBox', { where: field });
});
//数据绑定
table.render({
elem: '#LAY-app-WeChatShippingOrder-tableBox',
url: layui.setter.apiUrl + 'Api/WeChatShippingOrder/GetPageList',
method: 'POST',
where: { last_index: last_index, has_more: has_more },
toolbar: '#LAY-app-WeChatShippingOrder-toolbar',
//pagebar: '#LAY-app-WeChatShippingOrder-pagebar',
className: 'pagebarbox',
defaultToolbar: ['filter', 'print', 'exports'],
//height: 'full-127',//面包屑142px,搜索框4行172,3行137,2行102,1行67
page: false,
limit: 10,
limits: [10, 15, 20, 25, 30, 50, 100, 200],
text: { none: '暂无相关数据' },
cols: [
[
{ type: "checkbox", fixed: "left" },
//{ field: 'merchant_id', title: '商户号', align: 'center', width: 100, sort: false },
//{ field: 'sub_merchant_id', title: '二级商户号', width: 80, sort: false },
{ field: 'transaction_id', title: '微信订单号', sort: false, width: 205 },
{ field: 'merchant_trade_no', title: '支付单号', sort: false, width: 125 },
{
field: 'order_state', title: '发货单状态', sort: false, align: 'center', width: 80, templet: function (data) {
for (var i = 0; i < d.data.status.length; i++) {
if (d.data.status[i].value == data.order_state) {
return d.data.status[i].description;
}
}
return "";
}
},
{
field: 'logistics_type', title: '发货模式', sort: false, align: 'center', width: 80, templet: function (data) {
for (var i = 0; i < d.data.logisticsType.length; i++) {
if (d.data.logisticsType[i].value == data.shipping.logistics_type) {
return d.data.logisticsType[i].description;
}
}
return "";
}
},
{ field: 'description', title: '发货商品描述', sort: false },
{
field: 'paid_amount', title: '实际支付', sort: false, align: 'center', width: 80, templet: function (data) {
return '<div>' + (data.paid_amount / 100) + '元' + '</div>';
}
},
{ field: 'openid', title: 'openid', sort: false, width: 220 },
{
field: 'trade_create_time', title: '交易创建时间', sort: false, width: 130, templet: function (data) {
return util.toDateString(data.trade_create_time * 1000, 'yyyy-MM-dd HH:mm:ss');;
}
},
{
field: 'pay_time', title: '支付时间', sort: false, width: 130, templet: function (data) {
return util.toDateString(data.pay_time * 1000, 'yyyy-MM-dd HH:mm:ss');
}
},
{ field: 'in_complaint', title: '交易纠纷中', width: 85, templet: '#switch_in_complaint', align: 'center', sort: false, unresize: true },
{ width: 220, align: 'center', title: '操作', fixed: 'right', toolbar: '#LAY-app-WeChatShippingOrder-tableBox-bar' }
]
],
done: function (res, curr, count, origin) {
console.log(res); // 得到当前渲染的数据
console.log(curr); // 得到当前页码
console.log(count); // 得到数据总量
console.log(res.otherData.has_more);
if (res.code == 0) {
has_more = res.otherData.has_more;
if (res.otherData.has_more) {
last_index = res.otherData.last_index;
} else {
last_index = "";
}
}
},
});
//监听排序事件
table.on('sort(LAY-app-WeChatShippingOrder-tableBox)', function (obj) {
table.reloadData('LAY-app-WeChatShippingOrder-tableBox', {
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
where: { //请求参数(注意:这里面的参数可任意定义,并非下面固定的格式)
orderField: obj.field, //排序字段
orderDirection: obj.type //排序方式
}
});
});
//监听工具条
table.on('tool(LAY-app-WeChatShippingOrder-tableBox)',
function (obj) {
if (obj.event === 'detail') {
doDetails(obj);
} else if (obj.event === 'updateData') {
doUpdate(obj)
} else if (obj.event === 'addData') {
doCreate(obj)
}
});
//执行创建操作
function doCreate(obj) {
coreHelper.Post("Api/WeChatShippingOrder/GetCreate", { data: obj.data.transaction_id, id: obj.data.merchant_trade_no }, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '创建数据',
area: ['800px', '90%'],
id: 'LAY-popup-WeChatShippingOrder-create',
success: function (layero, index) {
view(this.id).render('wechatshipping/order/create', { data: e.data }).done(function () {
//监听提交
form.on('submit(LAY-app-WeChatShippingOrder-createForm-submit)',
function (data) {
var field = data.field; //获取提交的字段
field.is_all_delivered = field.is_all_delivered == 'on';
var keys = Object.keys(field);
var keysCount = 0;
for (var i = 0; i < keys.length; i++) {
if (keys[i].indexOf('shipping_list.express_company') != -1) {
keysCount++;
}
}
var items = [];
if (keysCount > 0) {
for (var i = 0; i < keysCount; i++) {
var item = {};
item.express_company = field['shipping_list.express_company[' + i + ']'];
item.tracking_no = field['shipping_list.tracking_no[' + i + ']'];
items.push(item);
}
}
field.shipping_list = items;
if (debug) { console.log(field); } //开启调试返回数据
//提交 Ajax 成功后,关闭当前弹层并重载表格
coreHelper.Post("Api/WeChatShippingOrder/DoCreate", field, function (e) {
console.log(e)
if (e.code === 0) {
layui.table.reloadData('LAY-app-WeChatShippingOrder-tableBox'); //重载表格
layer.close(index); //再执行关闭
layer.msg(e.msg);
} else {
layer.msg(e.msg);
}
});
});
});
// 禁止弹窗出现滚动条
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {
layero.contents().find("#LAY-app-WeChatShippingOrder-createForm-submit").click();
}
});
} else {
layer.msg(e.msg);
}
});
}
//执行编辑操作
function doUpdate(obj) {
coreHelper.Post("Api/WeChatShippingOrder/GetUpdate", { data: obj.data.transaction_id, id: obj.data.merchant_trade_no }, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '编辑数据',
area: ['800px', '90%'],
id: 'LAY-popup-WeChatShippingOrder-update',
success: function (layero, index) {
view(this.id).render('wechatshipping/order/update', { data: e.data }).done(function () {
//监听提交
form.on('submit(LAY-app-WeChatMessageResponse-updateForm-submit)',
function (data) {
var field = data.field; //获取提交的字段
field.is_all_delivered = field.is_all_delivered == 'on';
var keys = Object.keys(field);
var keysCount = 0;
for (var i = 0; i < keys.length; i++) {
if (keys[i].indexOf('shipping_list.express_company') != -1) {
keysCount++;
}
}
var items = [];
if (keysCount > 0) {
for (var i = 0; i < keysCount; i++) {
var item = {};
item.express_company = field['shipping_list.express_company[' + i + ']'];
item.tracking_no = field['shipping_list.tracking_no[' + i + ']'];
items.push(item);
}
}
field.shipping_list = items;
if (debug) { console.log(field); } //开启调试返回数据
//提交 Ajax 成功后,关闭当前弹层并重载表格
coreHelper.Post("Api/WeChatShippingOrder/DoCreate", field, function (e) {
console.log(e)
if (e.code === 0) {
layui.table.reloadData('LAY-app-WeChatShippingOrder-tableBox'); //重载表格
layer.close(index); //再执行关闭
layer.msg(e.msg);
} else {
layer.msg(e.msg);
}
});
});
})
// 禁止弹窗出现滚动条
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
, btn: ['确定', '取消']
, yes: function (index, layero) {
layero.contents().find("#LAY-app-WeChatMessageResponse-updateForm-submit").click();
}
});
} else {
layer.msg(e.msg);
}
});
}
//执行预览操作
function doDetails(obj) {
coreHelper.Post("Api/WeChatShippingOrder/GetDetails", { data: obj.data.transaction_id, id: obj.data.merchant_trade_no }, function (e) {
if (e.code === 0) {
admin.popup({
shadeClose: false,
title: '查看详情',
area: ['800px', '600px'],
id: 'LAY-popup-WeChatShippingOrder-details',
success: function (layero, index) {
view(this.id).render('wechatshipping/order/details', { data: e.data }).done(function () {
form.render();
});
// 禁止弹窗出现滚动条
//$(layero).children('.layui-layer-content').css('overflow', 'visible');
}
});
} else {
layer.msg(e.msg);
}
});
}
// 只显示上一页、下一页、当前页
laypage.render({
elem: 'demo-laypage-pn-show',
count: 99999,
groups: 1,
first: '首页',
last: false,
layout: ['first', 'page', 'next'],
jump: function (obj, first) {
// 首次不执行
if (!first) {
layer.msg('第 ' + obj.curr + ' 页');
if (has_more) {
table.reloadData('LAY-app-WeChatShippingOrder-tableBox', {
where: { last_index: last_index },
scrollPos: true,
});
} else {
layer.msg('没有更多内容了');
}
if (obj.curr == 1) {
last_index = '';
table.reloadData('LAY-app-WeChatShippingOrder-tableBox', {
where: { last_index: '' },
scrollPos: true,
});
}
}
}
});
//重载form
form.render();
});
};
</script>
<!--设置是否启用-->
<script type="text/html" id="switch_in_complaint">
<input type="checkbox" name="switch_in_complaint" value="{{d.in_complaint}}" lay-skin="switch" lay-text="是|否" disabled="disabled">
</script>

View File

@@ -0,0 +1,241 @@
<script type="text/html" template lay-done="layui.data.sendParams(d);">
<div class="layui-form coreshop-form layui-form-pane" lay-filter="LAY-app-WeChatMessageResponse-updateForm" id="LAY-app-WeChatMessageResponse-updateForm">
<input type="hidden" name="transaction_id" value="{{d.params.data.order.transaction_id }}" />
<input type="hidden" name="openid" value="{{d.params.data.order.openid }}" />
<input type="hidden" name="merchant_id" value="{{d.params.data.order.merchant_id }}" />
<input type="hidden" name="merchant_trade_no" value="{{d.params.data.order.merchant_trade_no }}" />
<blockquote class="layui-elem-quote">
商户单号{{d.params.data.order.merchant_trade_no }}<br />
交易单号{{d.params.data.order.transaction_id }}<br />
支付金额¥ {{d.params.data.order.paid_amount / 100 }} <br />
支付时间{{ layui.util.toDateString(d.params.data.order.pay_time * 1000, 'yyyy-MM-dd HH:mm:ss')}}<br />
</blockquote>
<div class="layui-form-item layui-form-text">
<label class="layui-form-label">商品信息</label>
<div class="layui-input-block">
<textarea name="item_desc" placeholder="商品信息会向用户展示,请保持和订单信息一致。输入多个商品时用“ ; ”隔开。" class="layui-textarea">{{d.params.data.order.description}}</textarea>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">发货方式</label>
<div class="layui-input-block">
{{# layui.each(d.params.data.logisticsType, function(index, item){ }}
<input type="radio" name="logistics_type" value="{{item.value}}" title="{{item.title}}" {{d.params.data.order.shipping.logistics_type==item.value ? 'checked':''}} lay-filter="logistics-type-filter">
{{# }); }}
</div>
</div>
<div id="logisticsBox">
<div class="layui-form-item">
<label for="matchKey" class="layui-form-label ">
快递信息
</label>
<div class="layui-input-block">
<table class="layui-table">
<thead>
<tr>
<th>物流公司</th>
<th style="width: 250px;">快递单号</th>
<th style="width: 82px;">操作</th>
</tr>
</thead>
<tbody id="logisticsView">
{{# if(d.params.data.order.shipping.logistics_type==1) { }}
{{# layui.each(d.params.data.order.shipping.shipping_list, function(index, itemP){ }}
<tr data-id="{{index}}">
<td>
<select lay-search="" id="express_company" name="shipping_list.express_company[0]" class="layui-input">
<option value="">请选择可直接输入搜索</option>
{{# layui.each(d.params.data.deliveryCompany, function(index, item){ }}
<option value="{{item.deliveryId}}" {{itemP.express_company==item.deliveryId ? 'selected="selected"':''}}>{{item.deliveryName}}</option>
{{# }); }}
</select>
</td>
<td class="field_value">
<input type="text" id="tracking_no" name="shipping_list.tracking_no[0]" required value="{{itemP.tracking_no}}" placeholder="填写快递单号" autocomplete="off" class="layui-input">
</td>
<td>
<a class="layui-btn layui-btn-xs addfield-class table-button">
添加
</a>
</td>
</tr>
{{# }); }}
{{# } else { }}
<tr data-id="0">
<td>
<select lay-search="" id="express_company" name="shipping_list.express_company[0]" class="layui-input">
<option value="">请选择可直接输入搜索</option>
{{# layui.each(d.params.data.deliveryCompany, function(index, item){ }}
<option value="{{item.deliveryId}}">{{item.deliveryName}}</option>
{{# }); }}
</select>
</td>
<td class="field_value">
<input type="text" id="tracking_no" name="shipping_list.tracking_no[0]" required value="" placeholder="填写快递单号" autocomplete="off" class="layui-input">
</td>
<td>
<a class="layui-btn layui-btn-xs addfield-class table-button">
添加
</a>
</td>
</tr>
{{# }; }}
</tbody>
</table>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">全部发货</label>
<div class="layui-input-block">
<input type="checkbox" name="is_all_delivered" lay-skin="switch" lay-filter="switchTest" checked="checked" title="是|否">
</div>
</div>
</div>
<div id="cityDistributionBox" style="display:none;">
<div class="layui-form-item">
<label for="matchKey" class="layui-form-label">
快递信息
</label>
<div class="layui-input-inline layui-inline-4">
<input name="cityDistributionName" class="layui-input" placeholder="填写同城配送公司名称" value="{{d.params.data.order.shipping.logistics_type==2 ? d.params.data.order.shipping.shipping_list[0].express_company : ''}}" />
</div>
<div class="layui-input-inline layui-inline-4">
<input name="cityDistributionNumber" class="layui-input" placeholder="填写快递单号" value="{{d.params.data.order.shipping.logistics_type==2 ? d.params.data.order.shipping.shipping_list[0].tracking_no : ''}}" />
</div>
<div class="layui-form-mid">
如商家自配则该项可选填
</div>
</div>
</div>
<div class="layui-form-item text-right core-hidden">
<input type="button" class="layui-btn" lay-submit lay-filter="LAY-app-WeChatMessageResponse-updateForm-submit" id="LAY-app-WeChatMessageResponse-updateForm-submit" value="确认编辑">
</div>
</div>
</script>
<script id="tr_tpl" type="text/html">
<tr data-id="{{ d.id }}">
<td>
<select lay-search="" id="express_company" name="shipping_list.express_company[{{ d.id }}]" class="layui-input">
<option value="">请选择可直接输入搜索</option>
{{# layui.each(d.deliveryCompany, function(index, item){ }}
<option value="{{item.deliveryId}}">{{item.deliveryName}}</option>
{{# }); }}
</select>
</td>
<td class="field_value">
<input type="text" id="tracking_no" name="shipping_list.tracking_no[{{ d.id }}]" required value="" placeholder="填写快递单号" autocomplete="off" class="layui-input">
</td>
<td>
<a class="layui-btn layui-btn-xs addfield-class table-button">
添加
</a>
<a class="layui-btn layui-btn-danger layui-btn-xs del-class table-button">
删除
</a>
</td>
</tr>
</script>
<script>
var debug = layui.setter.debug;
layui.data.sendParams = function (d) {
//开启调试情况下获取接口赋值数据
if (debug) { console.log(d.params.data); }
layui.use(['admin', 'form', 'laydate', 'upload', 'coreHelper', 'cropperImg', 'laytpl'],
function () {
var $ = layui.$
, form = layui.form
, admin = layui.admin
, laydate = layui.laydate
, upload = layui.upload
, cropperImg = layui.cropperImg
, laytpl = layui.laytpl
, coreHelper = layui.coreHelper;
hideBox(d.params.data.order.shipping.logistics_type);
$(".layui-table").on('click', '.addfield-class', function (e) {
var getTpl = tr_tpl.innerHTML;
var lastId = $(this).parent().parent().parent().find('tr').last().attr('data-id');
console.log(lastId);
var tmpData = {};
tmpData.id = parseInt(lastId) + 1;
tmpData.deliveryCompany = d.params.data.deliveryCompany;
laytpl(getTpl).render(tmpData, function (html) {
$("#logisticsView").append(html);
form.render();
});
});
$(".layui-table").on('click', '.del-class', function (e) {
if ($(".del-class").length > 0) {
$(this).parent().parent().remove();
resetInputNameID();
} else {
layer.msg("至少保留1个物流信息录入框");
}
})
//重置排序
function resetInputNameID() {
$.each($("#logisticsView tr"), function (i, tr) {
$(this).attr('data-id', i);
$(this).find("#express_company").attr("name", "shipping_list.express_company[" + i + "]");
$(this).find("#tracking_no").attr("name", "shipping_list.tracking_no[" + i + "]");
});
}
// radio 事件
form.on('radio(logistics-type-filter)', function (data) {
var elem = data.elem; // 获得 radio 原始 DOM 对象
var value = elem.value; // 获得 radio 值
hideBox(value);
});
function hideBox(value) {
if (value == 1) {
$('#logisticsBox').show();
$('#cityDistributionBox').hide();
} else if (value == 2) {
$('#logisticsBox').hide();
$('#cityDistributionBox').show();
} else {
$('#logisticsBox').hide();
$('#cityDistributionBox').hide();
}
}
form.verify({
verifymatchKey: [/^.{0,100}$/, '匹配字符最大只允许输入100位字符'],
verifyimgTextUrl: [/^.{0,1000}$/, '图片回复图片地址最大只允许输入1000位字符'],
verifyimgTextLink: [/^.{0,1000}$/, '图片回复超链接最大只允许输入1000位字符'],
verifymeidaUrl: [/^.{0,1000}$/, '语音回复地址最大只允许输入1000位字符'],
verifymeidaLink: [/^.{0,1000}$/, '语音回复超链接最大只允许输入1000位字符'],
verifyremark: [/^.{0,1000}$/, '备注最大只允许输入1000位字符'],
verifycreateBy: [/^.{0,100}$/, '创建来源最大只允许输入100位字符'],
verifymodifyBy: [/^.{0,100}$/, '修改来源最大只允许输入100位字符'],
});
//重载form
form.render(null, 'LAY-app-WeChatMessageResponse-updateForm');
})
};
</script>