初始上传
This commit is contained in:
23
addon/cashier/shop/view/index/cashier.html
Executable file
23
addon/cashier/shop/view/index/cashier.html
Executable file
@@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
var prefix = '{$root}'.replace(/(http:\/\/)|(https:\/\/)/g, '') + '_';
|
||||
|
||||
{if isset($token) && $store_id > 0}
|
||||
localStorage.setItem(prefix + 'cashierToken', '{$token}');
|
||||
localStorage.setItem(prefix + 'siteId', '{:request()->siteid()}');
|
||||
localStorage.setItem(prefix + 'globalStoreId', '{$store_id}');
|
||||
{else/}
|
||||
localStorage.removeItem(prefix + 'cashierToken');
|
||||
localStorage.removeItem(prefix + 'siteId');
|
||||
localStorage.removeItem(prefix + 'globalStoreId');
|
||||
{/if}
|
||||
location.href = '{$store_id ? $url : $url."/pages/login/login"}';
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
643
addon/cashier/shop/view/order/detail.html
Executable file
643
addon/cashier/shop/view/order/detail.html
Executable file
@@ -0,0 +1,643 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/order_detail.css"/>
|
||||
<link rel="stylesheet" href="SHOP_CSS/package.css"/>
|
||||
|
||||
<!-- 订单详情、订单状态 -->
|
||||
<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 layui-card-body order-information-bottom">
|
||||
<div class="order-information-contentOne">
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">交易流水号:</div>
|
||||
<div class="contentOne-content-text text-num">{$order_detail['out_trade_no']}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">订单编号:</div>
|
||||
<div class="contentOne-content-text text-num">{$order_detail['order_no']}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">订单类型:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['order_type_name']}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">订单来源:</div>
|
||||
<div class="contentOne-content-text">收银台</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">来源门店:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['store_name']}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">买家:</div>
|
||||
<div class="contentOne-content-text">
|
||||
{if $order_detail.member_id}
|
||||
<a class="text-color" href="javascript:toMemberDetail();">{$order_detail.nickname}</a>
|
||||
{else/}
|
||||
散客
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">付款方式:</div>
|
||||
<div class="contentOne-content-text">{$order_detail.pay_type_name}</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="order-information-contentTwo">-->
|
||||
<!-- <div class="contentOne-content">-->
|
||||
<!-- <div class="contentOne-content-title">配送方式:</div>-->
|
||||
<!-- <div class="contentOne-content-text">{$order_detail['delivery_type_name']}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="contentOne-content">-->
|
||||
<!-- <div class="contentOne-content-title">收货人:</div>-->
|
||||
<!-- <div class="contentOne-content-text">{$order_detail['name']}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="contentOne-content">-->
|
||||
<!-- <div class="contentOne-content-title">联系电话:</div>-->
|
||||
<!-- <div class="contentOne-content-text">{$order_detail['mobile']}</div>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div class="contentOne-content">-->
|
||||
<!-- <div class="contentOne-content-title">收货地址:</div>-->
|
||||
<!-- <input type="text" class="address" id="address" value="{$order_detail['full_address']}-{$order_detail['address']}">-->
|
||||
<!-- <div class="contentOne-content-text contentOne-content-text-die" title="{$order_detail['full_address']}-{$order_detail['address']}">{$order_detail['full_address']}-{$order_detail['address']}</div>-->
|
||||
<!-- <div class="copy-icon-box"><a href="javascript:ns.copy('address');" class="iconfont iconfuzhi" style="margin-top: 4px"></a></div>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<div class="order-information-contentTwo">
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">营销活动:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['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_detail['buyer_message'] == ""}
|
||||
-
|
||||
{else/}
|
||||
{$order_detail['buyer_message']}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">备注:</div>
|
||||
<div class="contentOne-content-text">
|
||||
{if $order_detail['remark'] == ""}
|
||||
-
|
||||
{else/}
|
||||
{$order_detail['remark']}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</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">{$order_detail.order_status_name}</div>
|
||||
</div>
|
||||
<div class="contentTow-operation">
|
||||
<div class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" onclick="orderRemark('{$order_detail.order_id}')">备注</div>
|
||||
{php}
|
||||
$order_json_data = json_decode($order_detail['order_status_action'], true);
|
||||
$action = $order_json_data['action'] ?? [];
|
||||
{/php}
|
||||
{if !empty($action)}
|
||||
{foreach $action as $action_k => $action_item}
|
||||
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" href="javascript:orderAction('{$action_item.action}', '{$order_detail.order_id}')">{$action_item.title}</a>
|
||||
{/foreach}
|
||||
{/if}
|
||||
{if $order_detail.order_type == 1 && in_array($order_detail.order_status, [0,1,3,4,10])}
|
||||
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" href="javascript:printDeliverOrder('{$order_detail.order_id}');" >打印发货单</a>
|
||||
{/if}
|
||||
{if $order_detail.order_type == 1 && $order_detail.order_status == 1}
|
||||
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" href="javascript:orderPrintElectronicsheet('{$order_detail.order_id}');" >打印电子面单</a>
|
||||
{/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>
|
||||
|
||||
{if isset($order_detail.form)}
|
||||
<!-- 表单信息 -->
|
||||
<div class="formFields">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">表单信息</span>
|
||||
</div>
|
||||
<div class="order-information order-formFields layui-card-body">
|
||||
{foreach name="$order_detail.form" item="vo"}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">{$vo.value.title}:</div>
|
||||
<div class="contentOne-content-text">
|
||||
{if $vo.controller == 'Img'}
|
||||
{foreach name="$vo.img_lists" item="io"}
|
||||
<div class="form-img">
|
||||
<div class="form-img-wrap">
|
||||
<img src="{:img($io)}" layer-src>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{else/}
|
||||
{if isset($vo.val)}
|
||||
{$vo.val}
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{if $order_detail['is_invoice'] == 1}
|
||||
<!-- 发票信息 -->
|
||||
<div class="formFields">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">发票信息</span>
|
||||
</div>
|
||||
<div class="order-information order-formFields layui-card-body">
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票类型:</div>
|
||||
<div class="contentOne-content-text">{if $order_detail['invoice_type'] == 1}纸质{else/}电子{/if}{if $order_detail['is_tax_invoice'] == 1}专票{else/}普票{/if}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票抬头:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['invoice_title']}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票抬头类型:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['invoice_title_type'] == 1 ? '个人' : '企业'}</div>
|
||||
</div>
|
||||
{if $order_detail['invoice_title_type'] == 2}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">纳税人识别号:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['taxpayer_number']}</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票内容:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['invoice_content']}</div>
|
||||
</div>
|
||||
{if $order_detail['invoice_type'] == 1}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票邮寄地址:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['invoice_full_address']}</div>
|
||||
</div>
|
||||
{else/}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票接收邮件:</div>
|
||||
<div class="contentOne-content-text">{$order_detail['invoice_email']}</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票费用:</div>
|
||||
<div class="contentOne-content-text">¥{$order_detail.invoice_money}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票税率:</div>
|
||||
<div class="contentOne-content-text">{$order_detail.invoice_rate}%</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<div class="contentOne-content-title">发票邮寄费用:</div>
|
||||
<div class="contentOne-content-text">¥{$order_detail.invoice_delivery_money}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
|
||||
{if !empty($order_detail['package_list'])}
|
||||
<!-- 物流信息 -->
|
||||
<div class="distribution layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">物流信息</span>
|
||||
</div>
|
||||
<div class="order-information layui-card-body">
|
||||
<div class="order-information-contentOne order-package">
|
||||
<ul class="package-list">
|
||||
{foreach $order_detail['package_list'] as $package_k => $package_v}
|
||||
<li {if $package_k == 0}class="text-color bg-color-light-9 border-color-light-9"{/if}>{$package_v.package_name}</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
<div class="order-package-content">
|
||||
{foreach $order_detail['package_list'] as $package_k => $package_v}
|
||||
<div class="layui-tab-item{if $package_k == 0} layui-show{/if}">
|
||||
<div class="package-inner">
|
||||
<div class="package-head">
|
||||
<div class="contentOne-content">
|
||||
<label class="contentOne-content-title">发货时间:</label>
|
||||
<div class="contentOne-content-text">{:time_to_date($package_v["delivery_time"])}</div>
|
||||
</div>
|
||||
{if $order_detail.delivery_type == 'express' && $package_v.delivery_type == 1}
|
||||
<div class="contentOne-content">
|
||||
<label class="contentOne-content-title">物流公司:</label>
|
||||
<div class="contentOne-content-text">{$package_v.express_company_name}</div>
|
||||
</div>
|
||||
<div class="contentOne-content">
|
||||
<label class="contentOne-content-title">运单号:</label>
|
||||
<div class="contentOne-content-text">{$package_v.delivery_no}</div>
|
||||
</div>
|
||||
{/if}
|
||||
<div class="contentOne-content">
|
||||
{php}
|
||||
$packageV = json_encode($package_v);
|
||||
{/php}
|
||||
{if in_array($order_detail.order_status,[1,3])}
|
||||
<a class="contentTow-operation-content bg-color-light-9 contentTow-operation-new" onclick="logisticsOperation('{$order_detail.order_id}','{$package_v.id}',{$packageV})">修改物流</a>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="package-body">
|
||||
<div class="goods-list">
|
||||
{foreach $package_v['goods_list'] as $goods_k => $goods_v }
|
||||
<div class="goods-item">
|
||||
<div class="package-inner-goods-item-inner">
|
||||
<div class="package-inner-goods-item-image"><img layer-src src="{:img($goods_v.sku_image,'')}"></div>
|
||||
<div class="package-inner-goods-item-info">
|
||||
<p class="package-inner-goods-item-name multi-line-hiding" title="{:$goods_v.sku_name}">{:$goods_v.sku_name}</p>
|
||||
<p class="package-inner-goods-item-name">数量:{$goods_v.num}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="package-inner-express">
|
||||
<div class="package-inner-content-item">
|
||||
<div class="package-head">
|
||||
{if $order_detail.delivery_type == 'express' && $package_v.delivery_type == 1}
|
||||
<div class="contentOne-content" style="padding-right: 20px;">
|
||||
<label class="contentOne-content-title">物流状态:</label>
|
||||
<div class="contentOne-content-text">
|
||||
{if $package_v.trace.success}
|
||||
{$package_v.trace.status_name}
|
||||
{else/}
|
||||
{$package_v.trace.reason}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{if $package_v.type == 'electronicsheet'}
|
||||
<div class="contentOne-content">
|
||||
<a onclick="printElectronicsheet({order_detail.order_id})" class="contentTow-operation-content bg-color-light-9 contentTow-operation-new">重新打印电子面单</a>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{if $package_v.trace.success}
|
||||
<div class="shop-operation-time">
|
||||
<ul class="layui-timeline">
|
||||
{foreach $package_v.trace.list as $trace_k => $trace_v}
|
||||
<li class="layui-timeline-item">
|
||||
<div class="layui-time-left">
|
||||
<p>{:date('Y-m-d', strtotime($trace_v.datetime))}</p>
|
||||
<p>{:date('H:i:s', strtotime($trace_v.datetime))}</p>
|
||||
</div>
|
||||
<div class="layui-icon layui-timeline-axis">
|
||||
<span class="layui-icon-center"></span>
|
||||
</div>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">{$trace_v.remark}</div>
|
||||
</div>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- 商品信息、订单操作日志 -->
|
||||
<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'}">数量</th>
|
||||
<th lay-data="{field:'total_money'}">小计(元)</th>
|
||||
<th lay-data="{field:'refund_status'}">退款状态</th>
|
||||
<th lay-data="{field:'shipping_status'}">状态</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $order_detail['order_goods'] as $list_k => $order_goods_item}
|
||||
<tr class="table-trTow">
|
||||
<td>{$order_goods_item.sku_name}</td>
|
||||
<td>{$order_goods_item.price}</td>
|
||||
<td>{$order_goods_item.num}</td>
|
||||
<td>{$order_goods_item.goods_money}</td>
|
||||
<td>
|
||||
{if $order_goods_item.refund_status != 0}
|
||||
<div><a class="" href='{:href_url("shop/orderrefund/detail?order_goods_id=".$order_goods_item["order_goods_id"])}'>{$order_goods_item.refund_status_name}</a></div>
|
||||
{php}
|
||||
$refund_money = $order_goods_item['shop_active_refund_money']+$order_goods_item['refund_real_money'];
|
||||
$refund_money = sprintf("%.2f",$refund_money);
|
||||
{/php}
|
||||
{if $refund_money > 0}
|
||||
<div style="color:red;">¥{$refund_money}</div>
|
||||
{/if}
|
||||
{/if}
|
||||
</td>
|
||||
<td>{$order_goods_item.delivery_status_name}</td>
|
||||
</tr>
|
||||
{if isset($order_goods_item.form)}
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<div class="order-goods-form">
|
||||
{foreach name="$order_goods_item.form" item="vo"}
|
||||
<div class="form-item">
|
||||
<div class="field-title">{$vo.value.title}:</div>
|
||||
<div class="field-content">
|
||||
{if $vo.controller == 'Img'}
|
||||
{foreach name="$vo.img_lists" item="io"}
|
||||
<div class="form-img">
|
||||
<div class="form-img-wrap">
|
||||
<img src="{:img($io)}" layer-src>
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
{else/}
|
||||
{if isset($vo.val)}
|
||||
{$vo.val}
|
||||
{/if}
|
||||
{/if}
|
||||
</div>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="table-trThree table-trFour">
|
||||
<div>
|
||||
<p>商品总额:<span>¥{$order_detail["goods_money"]}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p>店铺优惠券:<span>¥{$order_detail["coupon_money"]}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p>店铺优惠:<span>¥{$order_detail["promotion_money"]}</span></p>
|
||||
</div>
|
||||
{if $order_detail["point_money"] > 0}
|
||||
<div>
|
||||
<p>积分抵扣:<span>¥{$order_detail["point_money"]}</span></p>
|
||||
</div>
|
||||
{/if}
|
||||
{if $order_detail["balance_money"] > 0}
|
||||
<div>
|
||||
<p>余额:<span>¥{$order_detail["balance_money"]}</span></p>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div>
|
||||
<p>订单调价:<span>¥{$order_detail["adjust_money"]}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p>配送费用:<span>¥{$order_detail["delivery_money"]}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p>发票费用:<span>¥{$order_detail["invoice_money"]}</span></p>
|
||||
</div>
|
||||
<div>
|
||||
<p>发票邮寄费用:<span>¥{$order_detail["invoice_delivery_money"]}</span></p>
|
||||
</div>
|
||||
{if $order_detail["member_card_money"] > 0}
|
||||
<div>
|
||||
<p>会员卡:<span>¥{$order_detail["member_card_money"]}</span></p>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="table-settlement">
|
||||
订单共<span>{$order_detail["goods_num"]}</span>件商品,共计<span>¥{$order_detail["order_money"]}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{notempty name="$order_detail.order_log"}
|
||||
<!-- 订单操作 -->
|
||||
<div class="shop-operation layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">订单操作日志</span>
|
||||
</div>
|
||||
<div class="shop-operation-time layui-card-body">
|
||||
<ul class="layui-timeline">
|
||||
{foreach name="$order_detail.order_log" item="vo"}
|
||||
<li class="layui-timeline-item">
|
||||
<div class="layui-time-left">
|
||||
<p>{:date('Y-m-d', $vo.action_time)}</p>
|
||||
<p>{:date('H:i:s', $vo.action_time)}</p>
|
||||
</div>
|
||||
<div class="layui-icon layui-timeline-axis">
|
||||
<span class="layui-icon-center"></span>
|
||||
</div>
|
||||
<div class="layui-timeline-content layui-text">
|
||||
<div class="layui-timeline-title">{$vo.action}</div>
|
||||
</div>
|
||||
</li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{/notempty}
|
||||
|
||||
{include file="app/shop/view/order/order_common_action.html" /}
|
||||
<!-- 修改订单收货地址 -->
|
||||
{include file="app/shop/view/order/order_action.html" /}
|
||||
<!-- 发货 -->
|
||||
{include file="app/shop/view/order/order_delivery_action.html" /}
|
||||
|
||||
<!-- 主动退款 -->
|
||||
{include file="app/shop/view/order/shop_active_refund.html" /}
|
||||
<!--打印相关-->
|
||||
{include file="app/shop/view/electronicsheet/print_html.html" /}
|
||||
|
||||
<script src="SHOP_JS/lodop_funcs.js"></script>
|
||||
<script>
|
||||
$('.package-list li').click(function(){
|
||||
$(this).addClass('text-color bg-color-light-9 border-color-light-9').siblings('li').removeClass('text-color bg-color-light-9 border-color-light-9');
|
||||
$('.order-package-content .layui-tab-item:eq('+ $(this).index() +')').addClass('layui-show').siblings('.layui-tab-item').removeClass('layui-show');
|
||||
});
|
||||
|
||||
function printElectronicsheet(order_id,template_id)
|
||||
{
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: ns.url("shop/delivery/printElectronicsheet"),
|
||||
dataType: 'JSON',
|
||||
data:{
|
||||
order_id:order_id,
|
||||
template_id:template_id
|
||||
},
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
if (res.code >= 0){
|
||||
expressSheet(res.data.PrintTemplate);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function logisticsOperation(orderId,packageId,dataJson) {
|
||||
//获取模板
|
||||
var getTpl = $("#logistics_html").html();
|
||||
var data = {};
|
||||
data.dataJson = dataJson;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: ns.url("shop/express/getShopExpressCompanyList"),
|
||||
dataType: 'json',
|
||||
async: false,
|
||||
success: function (res) {
|
||||
if (res.code == 0) {
|
||||
data.express_company = res.data;
|
||||
}
|
||||
}
|
||||
});
|
||||
laytpl(getTpl).render(data, function (html) {
|
||||
layer.open({
|
||||
type: 1,
|
||||
shadeClose: true,
|
||||
shade: 0.3,
|
||||
fixed: false,
|
||||
scrollbar: false,
|
||||
title: "修改物流信息",
|
||||
area: '800px',
|
||||
content: html,
|
||||
cancel: function (index, layero) {
|
||||
//右上角关闭回调
|
||||
layer.close(index);
|
||||
//return false 开启该代码可禁止点击该按钮关闭
|
||||
},
|
||||
success: function (layero, index) {
|
||||
form.render();
|
||||
form.on('radio(delivery_type)', function (data) {
|
||||
if (data.value == 1) {
|
||||
$(".express-type").removeClass("layui-hide");
|
||||
} else {
|
||||
$(".express-type").addClass("layui-hide");
|
||||
}
|
||||
|
||||
});
|
||||
var submitting = false;
|
||||
form.on('submit(button_logistics_order)', function (data) {
|
||||
var express_company_id = data.field.express_company_id;
|
||||
if (data.field.delivery_type == 1 && express_company_id <= 0) {
|
||||
layer.msg('请选择物流公司', {time: 2000, icon: 5});
|
||||
return;
|
||||
}
|
||||
if (data.field.delivery_no == "" && data.field.delivery_type == 1) {
|
||||
layer.msg('物流单号不能为空', {time: 2000, icon: 5});
|
||||
return;
|
||||
}
|
||||
|
||||
if (submitting) return false;
|
||||
submitting = true;
|
||||
|
||||
data.field.order_id = orderId;
|
||||
data.field.package_id = packageId;
|
||||
$.ajax({
|
||||
type: "post",
|
||||
url: ns.url('shop/delivery/editOrderDelivery'),
|
||||
async: true,
|
||||
dataType: 'json',
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
layer.msg(res.message);
|
||||
if(res.code == 0){
|
||||
layer.close(layer.index - 1);
|
||||
reloadList();
|
||||
}
|
||||
submitting = false;
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
}
|
||||
function toMemberDetail(){
|
||||
let member_id = '{$order_detail.member_id}';
|
||||
window.open(ns.href("shop/member/editmember", {member_id:member_id}));
|
||||
}
|
||||
</script>
|
||||
<script type="text/html" id="logistics_html">
|
||||
<div class="order-delivery">
|
||||
<div class="layui-form">
|
||||
<input type="hidden" name="type" value="manual">
|
||||
<div class="layui-form-item delivery-type">
|
||||
<label class="layui-form-label">发货方式:</label>
|
||||
<div class="layui-input-block">
|
||||
{{# if(d.dataJson.delivery_type == 1){ }}
|
||||
<input type="radio" lay-filter="delivery_type" name="delivery_type" value="1" title="物流发货" checked>
|
||||
<input type="radio" lay-filter="delivery_type" name="delivery_type" value="0" title='无需物流'>
|
||||
{{# }else{ }}
|
||||
<input type="radio" lay-filter="delivery_type" name="delivery_type" value="1" title="物流发货">
|
||||
<input type="radio" lay-filter="delivery_type" name="delivery_type" value="0" title='无需物流' checked>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{# if(d.dataJson.delivery_type == 1){ }}
|
||||
<div class="express-type">
|
||||
{{# }else{ }}
|
||||
<div class="express-type layui-hide">
|
||||
{{# } }}
|
||||
<div class="layui-form-item logistics-company">
|
||||
<label class="layui-form-label">物流公司:</label>
|
||||
<div class="layui-input-block len-mid">
|
||||
<select name="express_company_id" lay-search lay-filter="express_company">
|
||||
<option value="">请选择物流公司</option>
|
||||
{{# layui.each(d.express_company, function(index, item){ }}
|
||||
{{# if(item.company_id == d.dataJson.express_company_id){ }}
|
||||
<option value="{{ item.company_id }}" selected>{{ item.company_name }}</option>
|
||||
{{# }else{ }}
|
||||
<option value="{{ item.company_id }}">{{ item.company_name }}</option>
|
||||
{{# } }}
|
||||
{{# }); }}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item express-number">
|
||||
<label class="layui-form-label">快递单号:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="delivery_no" placeholder="" autocomplete="off" class="layui-input len-mid" value="{{d.dataJson.delivery_no}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<button type="button" class="layui-btn" lay-submit lay-filter="button_logistics_order">保存</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
563
addon/cashier/shop/view/order/lists.html
Executable file
563
addon/cashier/shop/view/order/lists.html
Executable file
@@ -0,0 +1,563 @@
|
||||
<link rel="stylesheet" href="SHOP_CSS/order_list.css"/>
|
||||
<style>
|
||||
.layui-tab-content .order-operation-btn{display: flex;align-items: center;margin-top: 10px}
|
||||
.layui-tab-content .order-operation-all-btn{width: 4%;text-align: center; }
|
||||
.layui-tab-content .btn-box{ width: 96%;}
|
||||
.layui-tab-content .order-operation-btn .btn-box span{padding: 0px 5px;font-size: 12px;line-height: 2;height: auto;display: inline-block; border: 1px solid #C9C9C9;cursor: pointer;}
|
||||
.sub-selected-checkbox{display: flex;justify-content: center;align-items: center;}
|
||||
.layui-layout-admin .layui-table-cell{height: 32px; line-height: 32px;}
|
||||
.layui-layout-admin .layui-form-item .layui-input-inline{background-color: #fff;}
|
||||
</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">
|
||||
<select name="order_label" >
|
||||
{foreach $order_label_list as $k => $label_val}
|
||||
<option value="{$k}">{$label_val}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid"> </div>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search" autocomplete="off" class="layui-input" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">来源门店</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="store_id">
|
||||
<option value="">请选择来源门店</option>
|
||||
{foreach $store_list as $item}
|
||||
<option value="{$item.store_id}">{$item.store_name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单来源</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="order_from">
|
||||
<option value="">全部</option>
|
||||
{foreach $order_from_list as $order_from_k => $order_from_v}
|
||||
<option value="{$order_from_k}">{$order_from_v['name']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">付款方式</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="pay_type" >
|
||||
<option value="">全部</option>
|
||||
{foreach pay_type_list as $pay_type_k => $pay_type_v}
|
||||
<option value="{$pay_type_k}">{$pay_type_v}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">订单类型</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="cashier_order_type" >
|
||||
<option value="">全部</option>
|
||||
{foreach $cashier_order_type_list as $cashier_order_type_k => $cashier_order_type_v}
|
||||
<option value="{$cashier_order_type_k}">{$cashier_order_type_v}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-inline">
|
||||
<label class="layui-form-label">下单时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<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 date-picker-btn-seven" onclick="datePick(7, this);return false;">近7天</button>
|
||||
<button class="layui-btn layui-btn-primary date-picker-btn date-picker-btn-thirty" onclick="datePick(30, this);return false;">近30天</button>
|
||||
</div>
|
||||
<div class="layui-inline layui-hide" id="delivery_time_box">
|
||||
<label class="layui-form-label">自提时间</label>
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" class="layui-input" name="delivery_start_time" placeholder="开始时间" id="delivery_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="delivery_end_time" placeholder="结束时间" id="delivery_end_time" readonly>
|
||||
<i class=" iconrili iconfont calendar"></i>
|
||||
</div>
|
||||
</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_order_goods">导出订单商品</button>
|
||||
<button class="layui-btn layui-btn-primary" lay-submit lay-filter="batch_export_order" >导出订单</button>
|
||||
<a class="layui-btn layui-btn-primary" href="{:href_url('shop/order/export')}" target="_blank">查看导出记录</a>
|
||||
</div>
|
||||
<input type="hidden" name="order_scene" value="cashier">
|
||||
<input type="hidden" name="status"/>
|
||||
<input type="hidden" name="page"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-tab table-tab" lay-filter="order_tab">
|
||||
<div class="layui-tab-content">
|
||||
<!-- 列表 -->
|
||||
<div class="layui-form order-operation-btn all-selected-checkbox" style="display: none">
|
||||
<div class="order-operation-all-btn">
|
||||
<input type="checkbox" name="" lay-skin="primary" lay-filter="allCheckbox">
|
||||
<input type="hidden" name="allOrderId">
|
||||
</div>
|
||||
<div class="btn-box">
|
||||
<span class="btn-deliver">批量收货</span>
|
||||
</div>
|
||||
</div>
|
||||
<div id="order_list"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="order_page"></div>
|
||||
<div id="order_operation"></div>
|
||||
|
||||
{include file="app/shop/view/order/order_common_action.html" /}
|
||||
<!-- 修改订单收货地址 -->
|
||||
{include file="app/shop/view/order/order_action.html" /}
|
||||
<!-- 主动退款 -->
|
||||
{include file="app/shop/view/order/shop_active_refund.html" /}
|
||||
<script src="CASHIER_JS/order_list.js?time=20241121"></script>
|
||||
<script>
|
||||
var laypage,element, form;
|
||||
var is_refresh = false;
|
||||
var laypage_util;
|
||||
var orderIdAll = [];
|
||||
var order_type_status_json = {:json_encode($order_type_list)};
|
||||
|
||||
// 通过hash获取页数
|
||||
function getHashPage(){
|
||||
var page = 1;
|
||||
var startTime = '';
|
||||
var endTime = '';
|
||||
var hash_arr = getHashArr();
|
||||
$.each(hash_arr,function(index, itemobj){
|
||||
var item_arr = itemobj.split("=");
|
||||
if(item_arr.length == 2){
|
||||
switch(item_arr[0]){
|
||||
case "page":
|
||||
page = item_arr[1];
|
||||
break;
|
||||
case "start_time":
|
||||
startTime = ns.date_to_time(item_arr[1].split("%")[0]);
|
||||
break;
|
||||
case "end_time":
|
||||
endTime = ns.date_to_time(item_arr[1].split("%")[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var _time = (endTime - startTime) / (24 * 60 * 60);
|
||||
if (_time == 6) {
|
||||
$(".date-picker-btn-seven").addClass("selected");
|
||||
$(".date-picker-btn-thirty").removeClass("selected");
|
||||
} else if (_time == 29) {
|
||||
$(".date-picker-btn-thirty").addClass("selected");
|
||||
$(".date-picker-btn-seven").removeClass("selected");
|
||||
} else {
|
||||
$(".date-picker-btn-seven").removeClass("selected");
|
||||
$(".date-picker-btn-thirty").removeClass("selected");
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
//从hash中获取数据
|
||||
function getHashData() {
|
||||
var hash_arr = getHashArr();
|
||||
var form_json = {
|
||||
"end_time": "",
|
||||
"delivery_end_time": "",
|
||||
"order_from": "",
|
||||
"order_label": $("select[name=order_label]").val(),
|
||||
"order_name": "",
|
||||
"order_status": "",
|
||||
"promotion_type": "",
|
||||
"pay_type": "",
|
||||
"search": "",
|
||||
"start_time": "",
|
||||
"delivery_start_time": "",
|
||||
"order_type": 'all',
|
||||
'page_size': '',
|
||||
"page": "",
|
||||
"store_id": $("select[name=store_id]").val(),
|
||||
'cashier_order_type': ''
|
||||
};
|
||||
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] == key) {
|
||||
form_json[key] = item_arr[1];
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
resetOrderStatus(form_json.order_type, 2);
|
||||
form.val("order_list", form_json);
|
||||
switchOrderType(form_json.order_type);
|
||||
setOrderStatusTab(form_json.order_status);
|
||||
return form_json;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取哈希值order_type
|
||||
*/
|
||||
function getHashOrderType(){
|
||||
var hash_arr = getHashArr();
|
||||
var order_type = "all";
|
||||
if(hash_arr.length > 0){
|
||||
$.each(hash_arr,function(index, itemobj){
|
||||
var item_arr = itemobj.split("=");
|
||||
if(item_arr.length == 2){
|
||||
if(item_arr[0].indexOf("order_type") != "-1") {
|
||||
order_type = item_arr[1];
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
return order_type;
|
||||
}
|
||||
|
||||
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");
|
||||
}
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#delivery_start_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
|
||||
laydate.render({
|
||||
elem: '#delivery_end_time'
|
||||
,type: 'datetime'
|
||||
,change: function(value, date, endDate){
|
||||
$(".date-picker-btn").removeClass("selected");
|
||||
}
|
||||
});
|
||||
|
||||
//监听筛选事件
|
||||
form.on('submit(btn_search)', function(data){
|
||||
is_refresh = true;
|
||||
data.field.page = 1;
|
||||
setHashOrderList(data.field);
|
||||
setOrderStatusTab(data.field.order_status);
|
||||
return false;
|
||||
});
|
||||
|
||||
//批量导出(订单项)
|
||||
form.on('submit(batch_export_order_goods)', function(data){
|
||||
data.field.order_ids = orderIdAll.toString(); // 选择要导出的订单
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
url: ns.url("shop/order/exportordergoods"),
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
}
|
||||
});
|
||||
window.open(ns.href("shop/order/export",{}));
|
||||
return false;
|
||||
});
|
||||
|
||||
//批量导出(订单)
|
||||
form.on('submit(batch_export_order)', function(data){
|
||||
data.field.order_ids = orderIdAll.toString(); // 选择要导出的订单
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
dataType: 'json',
|
||||
url: ns.url("shop/order/exportorder"),
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
|
||||
}
|
||||
});
|
||||
window.open(ns.href("shop/order/export",{}));
|
||||
return false;
|
||||
});
|
||||
|
||||
//订单类型
|
||||
form.on('select(order_type)', function(data){
|
||||
switchOrderType(data.value);
|
||||
resetOrderStatus(data.value, 1);
|
||||
return false;
|
||||
});
|
||||
|
||||
//监听Tab切换,以改变地址hash值
|
||||
element.on('tab(order_tab)', function(){
|
||||
$(".all-selected-checkbox input").prop("checked",false);
|
||||
var status = this.getAttribute('lay-id');
|
||||
form.val("order_list", {"order_status":status});
|
||||
|
||||
var hash_data = getHashList();
|
||||
hash_data.order_status = status;
|
||||
hash_data.page = 1;
|
||||
setHashOrderList(hash_data);
|
||||
});
|
||||
getHashData();
|
||||
getOrderList();//筛选
|
||||
});
|
||||
|
||||
function switchOrderType(value){
|
||||
if(value == 2 || value == 3){
|
||||
var time_type = value == 2 ? '要求自提时间:': '要求送达时间:';
|
||||
$("#delivery_time_box").removeClass('layui-hide').find('label').text(time_type);
|
||||
}else{
|
||||
$("#delivery_time_box").addClass('layui-hide');
|
||||
}
|
||||
}
|
||||
|
||||
function setOrderStatusTab(order_status){
|
||||
$(".layui-tab-title li").removeClass("layui-this");
|
||||
$(".layui-tab-title li").each(function(){
|
||||
var status = $(this).attr("lay-id");
|
||||
if(status == order_status){
|
||||
$(this).addClass("layui-this")
|
||||
}
|
||||
});
|
||||
}
|
||||
//重置状态tab 选项卡
|
||||
function resetOrderStatus(order_type, is_tab){
|
||||
var hash_order_type = getHashOrderType();
|
||||
if(hash_order_type != order_type || is_refresh == false){
|
||||
if(is_tab != 1 || is_refresh == false) {
|
||||
$(".layui-tab-title li").not(':first').remove();
|
||||
$(".layui-tab-title li").find(":first").addClass("layui-this");
|
||||
}
|
||||
if(is_tab != 2 || is_refresh == false){
|
||||
$("select[name=order_status] option").not(':first').remove();
|
||||
}
|
||||
var status_item = order_type_status_json[order_type]["status"];
|
||||
$.each(status_item,function(index, itemobj){
|
||||
if(is_tab != 1 || is_refresh == false) {
|
||||
$(".layui-tab-title").append('<li lay-id="' + index + '">' + itemobj + '</li>');
|
||||
}
|
||||
if(is_tab != 2 || is_refresh == false) {
|
||||
$("select[name=order_status]").append('<option value="' + index + '">' + itemobj + '</option>');
|
||||
}
|
||||
});
|
||||
form.render('select');
|
||||
}
|
||||
}
|
||||
|
||||
//哈希值 订单数据
|
||||
function setHashOrderList(data){
|
||||
localStorage.setItem('formSubmit','search'); // 表单搜索标识,防止页面重新加载
|
||||
var hash = ['url=cashier://shop/order/lists'];
|
||||
for (var 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" : "",
|
||||
"delivery_end_time" : "",
|
||||
"order_from" : "",
|
||||
"order_label" : $("select[name=order_label]").val(),
|
||||
"order_name" : "",
|
||||
"order_status" : "",
|
||||
"promotion_type" : "",
|
||||
"pay_type" : "",
|
||||
"search" : "",
|
||||
"start_time" : "",
|
||||
"delivery_start_time" : "",
|
||||
"order_type" : 'all',
|
||||
'page_size':'',
|
||||
"page" : "",
|
||||
"store_id" : $("select[name=store_id]").val(),
|
||||
'cashier_order_type':''
|
||||
};
|
||||
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;
|
||||
}
|
||||
|
||||
var order = new Order();
|
||||
function getOrderList(){
|
||||
var url = ns.url("cashier://shop/order/lists", getHashArr().join('&'));
|
||||
|
||||
$.ajax({
|
||||
type : 'get',
|
||||
dataType: 'json',
|
||||
url :url,
|
||||
success : function(res){
|
||||
if(res.code == 0){
|
||||
setOrderInfo(res.data.list);
|
||||
order.setData(res.data);
|
||||
$("#order_list").html(order.fetch());
|
||||
|
||||
if(res.data.order_status == 3){
|
||||
$(".order-operation-btn.all-selected-checkbox").show();
|
||||
} else{
|
||||
$(".order-operation-btn.all-selected-checkbox").hide();
|
||||
}
|
||||
|
||||
form.render();
|
||||
//批量选择
|
||||
form.on('checkbox(allCheckbox)', function(data){
|
||||
$(".sub-selected-checkbox input").prop("checked",data.elem.checked);
|
||||
$(".all-selected-checkbox input").prop("checked",data.elem.checked);
|
||||
|
||||
$(".sub-selected-checkbox input").each(function(index,item){
|
||||
if($(item).attr('disabled') == 'disabled'){
|
||||
$(item).prop("checked",false);
|
||||
}
|
||||
});
|
||||
form.render("checkbox");
|
||||
getOrderId();
|
||||
});
|
||||
|
||||
//全选选择
|
||||
form.on('checkbox(subCheckbox)', function(data){
|
||||
var subLen = $(".sub-selected-checkbox input:checked").length;
|
||||
$(".all-selected-checkbox input").prop("checked",false);
|
||||
if (subLen == 10){
|
||||
$(".all-selected-checkbox input").prop("checked",true);
|
||||
}
|
||||
|
||||
$(".sub-selected-checkbox input").each(function(index,item){
|
||||
if($(item).attr('disabled') == 'disabled'){
|
||||
$(item).prop("checked",false);
|
||||
}
|
||||
});
|
||||
|
||||
form.render("checkbox");
|
||||
getOrderId();
|
||||
});
|
||||
|
||||
//获取选中的id
|
||||
function getOrderId(){
|
||||
var lists = $(".sub-selected-checkbox input:checked");
|
||||
orderIdAll = [];
|
||||
lists.each(function(index,item){
|
||||
if($(item).parents(".sub-selected-checkbox").attr("disabled") != "disabled"){
|
||||
orderIdAll.push(JSON.parse($(item).parents(".sub-selected-checkbox").attr("data-id")));
|
||||
}
|
||||
});
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
//批量收货
|
||||
$("body").off("click",".layui-tab-content .btn-deliver").on("click",".layui-tab-content .btn-deliver", function () {
|
||||
var subLen = $(".sub-selected-checkbox input:checked").length;
|
||||
if (subLen <=0 ) {
|
||||
layer.msg("请选择订单");
|
||||
return false;
|
||||
}
|
||||
takeDelivery(orderIdAll.toString(), 1);
|
||||
});
|
||||
</script>
|
||||
421
addon/cashier/shop/view/printer/change_shifts.html
Executable file
421
addon/cashier/shop/view/printer/change_shifts.html
Executable file
@@ -0,0 +1,421 @@
|
||||
<style>
|
||||
.printer-box{display: flex;}
|
||||
.printer-box > .layui-form{flex: 1;}
|
||||
.printer-box .preview{width: 310px;margin: 0 20px;}
|
||||
.printer-box .preview .layui-card-body{margin: 20px;padding: 0 10px;border: 1px solid #ededed;-webkit-border-radius: 5px;-moz-border-radius: 5px;border-radius: 5px;}
|
||||
.printer-box .preview .layui-card-body div{font-size: 12px;color: #333;}
|
||||
.printer-box .preview .layui-card-body div ~ div{border-top: 1px dashed #ededed ;}
|
||||
.printer-box .preview .receipt-name{text-align: center;line-height: 40px;}
|
||||
.printer-box .preview .shopping-name{line-height: 40px;font-size: 16px !important;text-align: center;}
|
||||
.printer-box .preview .order-info, .printer-box .preview .goods-info, .printer-box .preview .price-info, .printer-box .preview .buyer-info, .printer-box .preview .shopping-info{padding: 8px 0;}
|
||||
.printer-box .preview .order-info span{display: block;line-height: 2.5;}
|
||||
.printer-box .preview .goods-info table{width: 100%;}
|
||||
.printer-box .preview .goods-info table tr{line-height: 2.5;}
|
||||
.printer-box .preview .goods-info table th{font-weight: normal;}
|
||||
.printer-box .preview .price-info p{display: flex;line-height: 2.5;justify-content: space-between;}
|
||||
.printer-box .preview .price-info p:first-child {font-size: 16px}
|
||||
.printer-box .preview .buyer-info span, .printer-box .preview .shopping-info span{display: block;line-height: 2;}
|
||||
.printer-box .preview .buyer-message,.printer-box .preview .merchant-message{padding: 10px 0;line-height: 1.5;}
|
||||
.preview .button-info{height: 40px;line-height: 40px;text-align: center}
|
||||
.preview .shopping-code{text-align: center;}
|
||||
.preview .shopping-code img{width: 100px;height: 100px;margin: 10px 0;}
|
||||
.commodity-type-box{display: flex;}
|
||||
.commodity-type-item{margin-right: 15px;padding: 0px 20px;display: flex;justify-content: center;align-items: center;flex-direction: column;border: 1px solid #e5e5e5;cursor: pointer;}
|
||||
.goods_code_show td{line-height: 1;padding-bottom: 5px}
|
||||
</style>
|
||||
|
||||
<div class="layui-collapse tips-wrap">
|
||||
<div class="layui-colla-item">
|
||||
<h2 class="layui-colla-title">操作提示</h2>
|
||||
<ul class="layui-colla-content layui-show">
|
||||
<li>管理员可以在此页操作打印模板</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="printer-box">
|
||||
<div class="layui-form form-wrap">
|
||||
<div class="layui-card card-common card-brief">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">模板信息</span>
|
||||
</div>
|
||||
<div class="layui-card-body">
|
||||
{if empty($info)}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>模板类型:</label>
|
||||
<div class="layui-input-block commodity-type-box">
|
||||
{foreach $template_type as $k => $v}
|
||||
<div class="commodity-type-item {if $type == $k} border-color{/if}" onclick="location.hash = ns.hash('printer://shop/template/add', {'type' : '{$v['type']}'})">
|
||||
<span class="{if $type == $k} text-color{/if}">{$v['type_name']}</span>
|
||||
</div>
|
||||
{/foreach}
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="type_name" value="{$template_type[$type]['type_name']}">
|
||||
<input type="hidden" name="type" value="{$type}">
|
||||
{/if}
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required"></span>模板名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="template_name" lay-verify="required" {if !empty($info)} value="{$info['template_name']}" {/if} autocomplete="off" class="layui-input len-long">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-card card-common card-brief">
|
||||
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">打印信息</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">小票名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="text" name="title" {if !empty($info)} value="{$info['title']}"{else/} value="小票名称" {/if} lay-verify="required" autocomplete="off" class="layui-input len-long">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">商城名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" lay-filter="shop_name" name="head" value="1" title="显示" {if (!empty($info) && $info['head'] == 1) || empty($info) } checked {/if} autocomplete="off" class="layui-input len-long">
|
||||
<input type="radio" lay-filter="shop_name" name="head" value="0" title="不显示" {if !empty($info) && !$info['head']} checked {/if} autocomplete="off" class="layui-input len-long">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{if !empty($info)}
|
||||
<input type="hidden" name="template_id" value="{$info['template_id']}">
|
||||
{/if}
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backPrinterTemplateList()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="preview">
|
||||
<div class="layui-card card-common card-brief">
|
||||
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">预览图</span>
|
||||
</div>
|
||||
|
||||
<div class="layui-card-body">
|
||||
<div class="receipt-name">小票名称</div>
|
||||
<div class="shopping-name">商城名称</div>
|
||||
<div class="order-info">
|
||||
<span>交班员工:***</span>
|
||||
<span>上班时间:2022-11-17 08:00:00</span>
|
||||
<span>交班时间:2022-11-17 12:00:00</span>
|
||||
</div>
|
||||
<div class="price-info">
|
||||
<p>
|
||||
<span>销售</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>开单销售</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>售卡销售</span>
|
||||
<span>¥95</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="price-info">
|
||||
<p>
|
||||
<span>会员充值</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>会员充值</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="price-info">
|
||||
<p>
|
||||
<span>应收金额</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>开单销售</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>售卡销售</span>
|
||||
<span>¥95</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>会员充值</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>订单退款</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="price-info">
|
||||
<p>
|
||||
<span>支付统计</span>
|
||||
</p>
|
||||
<p>
|
||||
<span>现金收款</span>
|
||||
<span>¥100</span>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
layui.use(['form'], function() {
|
||||
var form = layui.form,
|
||||
repeat_flag = false;
|
||||
|
||||
form.render();
|
||||
|
||||
/**
|
||||
* 表单验证
|
||||
*/
|
||||
form.verify({
|
||||
time: function(value) {
|
||||
var now_time = (new Date()).getTime();
|
||||
var start_time = (new Date($("#start_time").val())).getTime();
|
||||
var end_time = (new Date(value)).getTime();
|
||||
if (now_time > end_time) {
|
||||
return '结束时间不能小于当前时间!'
|
||||
}
|
||||
if (start_time > end_time) {
|
||||
return '结束时间不能小于开始时间!';
|
||||
}
|
||||
},
|
||||
flnum: function(value) {
|
||||
var arrMen = value.split(".");
|
||||
var val = 0;
|
||||
if (arrMen.length == 2) {
|
||||
val = arrMen[1];
|
||||
}
|
||||
if (val.length > 2) {
|
||||
return '保留小数点后两位!'
|
||||
}
|
||||
},
|
||||
int: function(value) {
|
||||
if (value <= 1 || value % 1 != 0) {
|
||||
return '请输入大于1的正整数!'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
form.on('checkbox(shop_qrcode)', function(data){
|
||||
|
||||
var value = data.elem.checked;
|
||||
if(value == true){
|
||||
$(".preview .shopping-code").removeClass("layui-hide");
|
||||
$(".qrcode_url").removeClass('layui-hide');
|
||||
$("input[name='qrcode_url']").attr("lay-verify", "required");
|
||||
}else{
|
||||
$(".preview .shopping-code").addClass("layui-hide");
|
||||
$(".qrcode_url").addClass('layui-hide');
|
||||
$("input[name='qrcode_url']").attr("lay-verify", "");
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 表单提交
|
||||
*/
|
||||
form.on('submit(save)', function(data){
|
||||
var field = data.field;
|
||||
if(repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
var url = ns.url("printer://shop/template/add");
|
||||
if(parseInt(field.template_id) > 0 ) url = ns.url("printer://shop/template/edit");
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
dataType: 'JSON',
|
||||
url: url,
|
||||
data: field,
|
||||
async: false,
|
||||
success: function(res){
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('操作成功', {
|
||||
title:'操作提示',
|
||||
btn: ['返回列表', '{$info ? "继续编辑" : "继续添加"}'],
|
||||
closeBtn: 0,
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("printer://shop/template/lists");
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// 小票打印
|
||||
$("input[name='title']").bind("input propertychange",function(event){
|
||||
$(".preview .receipt-name").text($("input[name='title']").val());
|
||||
});
|
||||
|
||||
//商城名称
|
||||
form.on('radio(shop_name)', function(data){
|
||||
if (parseInt(data.value)) $(".shopping-name").removeClass("layui-hide");
|
||||
else $(".shopping-name").addClass("layui-hide");
|
||||
});
|
||||
//商品价格
|
||||
form.on('checkbox(goods_price_show)', function(data){
|
||||
if (data.elem.checked) {
|
||||
$(".goods_price_show").removeClass("layui-hide");
|
||||
$('.goods_price_type').removeClass("layui-hide");
|
||||
}else {
|
||||
$('.goods_price_type').addClass("layui-hide");
|
||||
$(".goods_price_show").addClass("layui-hide");
|
||||
}
|
||||
});
|
||||
//商品编码
|
||||
form.on('checkbox(goods_code_show)', function(data){
|
||||
if (data.elem.checked) $(".goods_code_show").removeClass("layui-hide");
|
||||
else $(".goods_code_show").addClass("layui-hide");
|
||||
});
|
||||
//表单
|
||||
form.on('checkbox(form_show)', function(data){
|
||||
if (data.elem.checked) $(".form_show").removeClass("layui-hide");
|
||||
else $(".form_show").addClass("layui-hide");
|
||||
});
|
||||
//买家留言
|
||||
form.on('checkbox(buyer_message)', function(data){
|
||||
if(data.elem.checked)
|
||||
$(".buyer-message").removeClass("layui-hide");
|
||||
else
|
||||
$(".buyer-message").addClass("layui-hide");
|
||||
});
|
||||
//卖家留言
|
||||
form.on('checkbox(merchant_message)', function(data){
|
||||
if(data.elem.checked)
|
||||
$(".merchant-message").removeClass("layui-hide");
|
||||
else
|
||||
$(".merchant-message").addClass("layui-hide");
|
||||
});
|
||||
|
||||
var buyerName = true,buyerPhone=true,buyerAddres=true;
|
||||
//买家姓名
|
||||
form.on('checkbox(buyer_name)', function(data){
|
||||
buyerName = data.elem.checked;
|
||||
|
||||
if(data.elem.checked)
|
||||
$(".buyer-info .name").removeClass("layui-hide");
|
||||
else
|
||||
$(".buyer-info .name").addClass("layui-hide");
|
||||
|
||||
buyerFn();
|
||||
});
|
||||
//买家手机号
|
||||
form.on('checkbox(buyer_phone)', function(data){
|
||||
buyerPhone = data.elem.checked;
|
||||
|
||||
if(data.elem.checked)
|
||||
$(".buyer-info .phone").removeClass("layui-hide");
|
||||
else
|
||||
$(".buyer-info .phone").addClass("layui-hide");
|
||||
|
||||
buyerFn();
|
||||
});
|
||||
//买家地址
|
||||
form.on('checkbox(buyer_addres)', function(data){
|
||||
buyerAddres= data.elem.checked;
|
||||
if(data.elem.checked)
|
||||
$(".buyer-info .addres").removeClass("layui-hide");
|
||||
else
|
||||
$(".buyer-info .addres").addClass("layui-hide");
|
||||
buyerFn();
|
||||
});
|
||||
|
||||
function buyerFn() {
|
||||
if (!buyerName )
|
||||
$(".buyer-info").addClass("layui-hide");
|
||||
else
|
||||
$(".buyer-info").removeClass("layui-hide");
|
||||
}
|
||||
|
||||
// 底部信息
|
||||
$("input[name='bottom']").bind("input propertychange",function(event){
|
||||
$(".preview .button-info").text($("input[name='bottom']").val());
|
||||
});
|
||||
});
|
||||
|
||||
function backPrinterTemplateList() {
|
||||
location.hash = ns.hash("printer://shop/template/lists");
|
||||
}
|
||||
|
||||
</script>
|
||||
{if !empty($info)}
|
||||
<script>
|
||||
var shop_qrcode = {$info['shop_qrcode']};
|
||||
if(shop_qrcode){
|
||||
$(".preview .shopping-code").removeClass("layui-hide");
|
||||
$(".qrcode_url").removeClass('layui-hide');
|
||||
$("input[name='qrcode_url']").attr("lay-verify", "required");
|
||||
}else{
|
||||
$(".preview .shopping-code").addClass("layui-hide");
|
||||
$(".qrcode_url").addClass('layui-hide');
|
||||
$("input[name='qrcode_url']").attr("lay-verify", "");
|
||||
}
|
||||
|
||||
var head = {$info['head']};
|
||||
if (head) {
|
||||
$(".shopping-name").removeClass("layui-hide");
|
||||
}else {
|
||||
$(".shopping-name").addClass("layui-hide");
|
||||
}
|
||||
|
||||
var goods_price_show = {$info['goods_price_show']};
|
||||
if (goods_price_show) {
|
||||
$(".goods_price_show").removeClass("layui-hide");
|
||||
$('.goods_price_type').removeClass("layui-hide");
|
||||
}else {
|
||||
$('.goods_price_type').addClass("layui-hide");
|
||||
$(".goods_price_show").addClass("layui-hide");
|
||||
}
|
||||
|
||||
var goods_code_show = {$info['goods_code_show']};
|
||||
if (goods_code_show) $(".goods_code_show").removeClass("layui-hide");
|
||||
else $(".goods_code_show").addClass("layui-hide");
|
||||
|
||||
var form_show = {$info['form_show']};
|
||||
if (form_show) $(".form_show").removeClass("layui-hide");
|
||||
else $(".form_show").addClass("layui-hide");
|
||||
|
||||
var buy_notes = {$info['buy_notes']};
|
||||
if(buy_notes) $(".buyer-message").removeClass("layui-hide");
|
||||
else $(".buyer-message").addClass("layui-hide");
|
||||
|
||||
var seller_notes = {$info['seller_notes']};
|
||||
if(seller_notes) $(".merchant-message").removeClass("layui-hide");
|
||||
else $(".merchant-message").addClass("layui-hide");
|
||||
|
||||
buyerName = {$info['buy_name']},buyerPhone={$info['buy_mobile']},buyerAddres={$info['buy_address']};
|
||||
if(buyerName) $(".buyer-info .name").removeClass("layui-hide");
|
||||
else $(".buyer-info .name").addClass("layui-hide");
|
||||
|
||||
if(buyerPhone) $(".buyer-info .phone").removeClass("layui-hide");
|
||||
else $(".buyer-info .phone").addClass("layui-hide");
|
||||
|
||||
if(buyerAddres) $(".buyer-info .addres").removeClass("layui-hide");
|
||||
else $(".buyer-info .addres").addClass("layui-hide");
|
||||
|
||||
if (!buyerName ) $(".buyer-info").addClass("layui-hide");
|
||||
else $(".buyer-info").removeClass("layui-hide");
|
||||
|
||||
</script>
|
||||
{/if}
|
||||
38
addon/cashier/shop/view/printer/printer_template.html
Executable file
38
addon/cashier/shop/view/printer/printer_template.html
Executable file
@@ -0,0 +1,38 @@
|
||||
<style>
|
||||
.change_shifts-box .layui-card-header .layui-form-switch{
|
||||
margin-top: -4px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
</style>
|
||||
<div class="layui-card card-common card-brief change_shifts-box">
|
||||
<div class="layui-card-header">
|
||||
<span class="card-title">收银交班打印
|
||||
<input type="checkbox" name="change_shifts_open" lay-filter="change_shifts_open" value="1" lay-skin="switch" {if empty($printer_info) || (!empty($printer_info) && $printer_info['change_shifts_open'])} checked {/if} />
|
||||
</span>
|
||||
</div>
|
||||
<div class="layui-card-body change_shifts-content {if (!empty($printer_info) && !$printer_info['change_shifts_open'])} layui-hide {/if}">
|
||||
<div class="layui-form-item express_company change_shifts_item">
|
||||
<label class="layui-form-label"><span class="required">*</span>打印模板:</label>
|
||||
<div class="layui-input-block len-short">
|
||||
<select name="change_shifts_template_id" {if empty($printer_info) || (!empty($printer_info) && $printer_info['change_shifts_open'])} lay-verify="required" {/if} lay-filter="change_shifts_template_id">
|
||||
<option value="">请选择</option>
|
||||
{foreach $template_list as $k=>$v}
|
||||
{if $v['type'] == 'change_shifts'}
|
||||
<option value="{$v.template_id}" {if !empty($printer_info) && $printer_info['change_shifts_template_id'] == $v['template_id']} selected {/if}>{$v.template_name}</option>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item change_shifts_item">
|
||||
<label class="layui-form-label"><span class="required">*</span>打印联数:</label>
|
||||
<div class="layui-input-block">
|
||||
<input type="radio" name="change_shifts_print_num" value="1" {if empty($printer_info) || $printer_info['change_shifts_print_num'] == 1} checked {/if} lay-verify="required" autocomplete="off" title="1" class="layui-input len-long">
|
||||
<input type="radio" name="change_shifts_print_num" value="2" {if !empty($printer_info) && $printer_info['change_shifts_print_num'] == 2} checked {/if} lay-verify="required" autocomplete="off" title="2" class="layui-input len-long">
|
||||
<input type="radio" name="change_shifts_print_num" value="3" {if !empty($printer_info) && $printer_info['change_shifts_print_num'] == 3} checked {/if} lay-verify="required" autocomplete="off" title="3" class="layui-input len-long">
|
||||
<input type="radio" name="change_shifts_print_num" value="4" {if !empty($printer_info) && $printer_info['change_shifts_print_num'] == 4} checked {/if} lay-verify="required" autocomplete="off" title="4" class="layui-input len-long">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
404
addon/cashier/shop/view/public/js/order_list.js
Executable file
404
addon/cashier/shop/view/public/js/order_list.js
Executable file
@@ -0,0 +1,404 @@
|
||||
/**
|
||||
* 渲染订单列表
|
||||
*/
|
||||
Order = function () {
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置数据集
|
||||
*/
|
||||
Order.prototype.setData = function (data) {
|
||||
Order.prototype.data = data;
|
||||
};
|
||||
|
||||
/**
|
||||
* 列名数据
|
||||
*/
|
||||
Order.prototype.cols = [
|
||||
{
|
||||
type: 'checkbox',
|
||||
fixed: 'left',
|
||||
width: '3%',
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
var json = {};
|
||||
json.order_id = order.order_id;
|
||||
json.order_no = order.order_no;
|
||||
json.full_address = order.full_address;
|
||||
if(order.order_type == 4 && order.order_data_status == 3){
|
||||
var h = '<div class="sub-selected-checkbox" data-json='+ JSON.stringify(json) +' data-id='+ order.order_id +' disabled>';
|
||||
h += '<input type="checkbox" lay-skin="primary" lay-filter="subCheckbox" name="" disabled>';
|
||||
h += '</div>';
|
||||
}else{
|
||||
var h = '<div class="sub-selected-checkbox" data-json='+ JSON.stringify(json) +' data-id='+ order.order_id +' >';
|
||||
h += '<input type="checkbox" lay-skin="primary" lay-filter="subCheckbox" name="" >';
|
||||
h += '</div>';
|
||||
}
|
||||
return h;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '<span>商品</span>',
|
||||
width: "25%",
|
||||
className: "product-info",
|
||||
template: function (orderitem, order) {
|
||||
var h = '<div class="img-block">';
|
||||
if(order.cashier_order_type == 'recharge'){
|
||||
h += '<img layer-src="' + ns.img(orderitem.sku_image) + '" src="' + ns.img(orderitem.sku_image) + '">';
|
||||
}else{
|
||||
h += '<img layer-src="' + ns.img(orderitem.sku_image,'big') + '" src="' + ns.img(orderitem.sku_image,'small') + '">';
|
||||
}
|
||||
h += '</div>';
|
||||
h += '<div class="info">';
|
||||
h += '<a href="' + ns.href("shop/order/detail", {order_id: orderitem.order_id}) + '" target="_blank" title="' + orderitem.sku_name + '" class="multi-line-hiding text-color-sub">' + orderitem.sku_name + '</a>';
|
||||
if(orderitem.sku_no){
|
||||
h += '<span class="text-tile" title="' + orderitem.sku_no + '" >' + orderitem.sku_no + '</span>';
|
||||
}
|
||||
h += '</div>';
|
||||
return h;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "单价(元) / 数量",
|
||||
width: "8%",
|
||||
align: "right",
|
||||
className: "order-price",
|
||||
template: function (orderitem, order) {
|
||||
var h = '<div style="padding-right: 15px;">';
|
||||
h += '<div>';
|
||||
h += '<span>' + orderitem.price + '</span>';
|
||||
h += '</div>';
|
||||
h += '<div>';
|
||||
h += '<span>' + orderitem.num + '件</span>';
|
||||
h += '</div>';
|
||||
h += '</div>';
|
||||
return h;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "维权",
|
||||
width: "8%",
|
||||
align: "right",
|
||||
className: "order-price",
|
||||
template: function (orderitem, order) {
|
||||
var refund_money = (Number(orderitem.shop_active_refund_money) + Number(orderitem.refund_real_money)).toFixed(2);
|
||||
var html = '';
|
||||
if (orderitem.refund_status != 0) {
|
||||
html += '<div><a href="' + ns.href("shop/orderrefund/detail", {order_goods_id: orderitem.order_goods_id}) + '" target="_blank" >' + orderitem.refund_status_name + '</a></div>';
|
||||
if(refund_money > 0){
|
||||
html += '<div style="color:red;">¥'+ refund_money +'</div>';
|
||||
}
|
||||
}else{
|
||||
if((order.order_status == 1 ||order.order_status == 2 ) && order.is_enable_refund == 1 && order.promotion_type != 'blindbox'){
|
||||
html += '<button class="layui-btn" onclick="shopActiveRefund('+ orderitem.order_goods_id +')" >主动退款</button>';
|
||||
}
|
||||
}
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "实付金额(元)",
|
||||
width: "10%",
|
||||
align: "right",
|
||||
className: "order-money",
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
var h = '<div style="padding-right: 15px;">';
|
||||
h += '<span>' + order.pay_money + '</span>';
|
||||
h += '</div>';
|
||||
return h;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "买家",
|
||||
width: "15%",
|
||||
align: "center",
|
||||
className: "buyers",
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
var h = '';
|
||||
if (order.member_id) {
|
||||
h += '<p>';
|
||||
h += '<a class="text-color" target="_blank" href="' + ns.href("shop/member/editmember?member_id=") + order.member_id + '">' + order.nickname + '</a>';
|
||||
h += '</p>';
|
||||
} else {
|
||||
h += '<p>';
|
||||
h += '<a class="text-color" href="javascript:;">散客</a>';
|
||||
h += '</p>';
|
||||
}
|
||||
return h;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "来源门店",
|
||||
width: "9%",
|
||||
align: "center",
|
||||
className: "transaction-status",
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
var html = '<div>' + order.store_name + '</div>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "交易状态",
|
||||
width: "10%",
|
||||
align: "center",
|
||||
className: "transaction-status",
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
// console.log("orderitem",order);
|
||||
// if(order.order_status_name == '待支付'){
|
||||
//
|
||||
// }else if(order.order_status_name == '待发货'){
|
||||
//
|
||||
// }
|
||||
|
||||
var html = '<div>' + order.order_status_name + '</div>';
|
||||
html += '<div>' + order.promotion_type_name;
|
||||
html += order.promotion_status_name != '' ? '(' + order.promotion_status_name + ')' : '';
|
||||
html += '</div>';
|
||||
return html;
|
||||
}
|
||||
},
|
||||
// {
|
||||
// title : "下单时间",
|
||||
// width : "10%",
|
||||
// align : "center",
|
||||
// className : "create-time",
|
||||
// merge : true,
|
||||
// template : function(orderitem,order){
|
||||
// return '<div>' + ns.time_to_date(order.create_time) + '</div>';
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// title : "结算状态",
|
||||
// width : "10%",
|
||||
// align : "center",
|
||||
// className : "settlement",
|
||||
// merge : true,
|
||||
// template : function(orderitem,order){
|
||||
// var settlement_name = order.is_settlement == 1 ? "已结算" : "待结算";
|
||||
// return '<div>'+settlement_name+'</div>';
|
||||
// }
|
||||
// },
|
||||
{
|
||||
title: "操作",
|
||||
align: "right",
|
||||
className: "operation",
|
||||
width:"11%",
|
||||
merge: true,
|
||||
template: function (orderitem, order) {
|
||||
var url = "shop/order/detail";
|
||||
var html = '';
|
||||
var action_json = order.order_status_action;
|
||||
var action_arr = JSON.parse(action_json);
|
||||
var action = action_arr.action;
|
||||
if (action && action.length) {
|
||||
html += '<div class="table-btn operation-type">';
|
||||
for (var k = 0; k < action.length; k++) {
|
||||
//视频号订单不能改价
|
||||
if (order.is_video_number == 1) {
|
||||
if (action[k].action != "orderAdjustMoney") {
|
||||
html += '<a class="layui-btn text-color" href="javascript:orderAction(\'' + action[k].action + '\', ' + order.order_id + ')">' + action[k].title + '</a>';
|
||||
}
|
||||
} else {
|
||||
html += '<a class="layui-btn text-color" href="javascript:orderAction(\'' + action[k].action + '\', ' + order.order_id + ')">' + action[k].title + '</a>';
|
||||
}
|
||||
|
||||
}
|
||||
// if (orderitem.refund_status_name != '') {
|
||||
// html += '<a href="javascript:orderAction(\'' + action[k].action + '\', ' + order.order_id + ')">' + action[k].title + '</a>';
|
||||
// html += '<a class="layui-btn" href="' + ns.href("shop/orderrefund/detail", {order_goods_id: orderitem.order_goods_id}) + '" target="_blank">' + orderitem.refund_status_name + '</a>';
|
||||
// }
|
||||
// html += '<a class="layui-btn" href="'+ns.href(url,{order_id:order.order_id})+'" class="default" target="_blank">查看详情</a>';//默认存在
|
||||
// html += '<a class="layui-btn" href="javascript:;" class="default" onclick="orderRemark('+order.order_id+')">备注</a> ';//默认存在
|
||||
if (order.order_type == 2 && order.order_status == 2) {
|
||||
html += '<a class="layui-btn" href="javascript:storeOrderTakedelivery(' + order.order_id + ')">提货</a>';
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
}
|
||||
return html;
|
||||
|
||||
}
|
||||
}
|
||||
];
|
||||
/**
|
||||
* 渲染表头
|
||||
*/
|
||||
Order.prototype.header = function (hasThead) {
|
||||
var colgroup = '<colgroup>';
|
||||
var thead = '';
|
||||
if (hasThead) thead = '<thead><tr>';
|
||||
|
||||
for (var i = 0; i < this.cols.length; i++) {
|
||||
var align = this.cols[i].align ? "text-align:" + this.cols[i].align : "";
|
||||
|
||||
colgroup += '<col width="' + this.cols[i].width + '">';
|
||||
if (hasThead) {
|
||||
thead += '<th style="' + align + '" class="' + (this.cols[i].className || "") + '">';
|
||||
thead += '<div class="layui-table-cell">';
|
||||
if(this.cols[i].type){
|
||||
thead += '<div class="all-selected-checkbox">';
|
||||
thead += '<input type="checkbox" lay-skin="primary" lay-filter="allCheckbox" name="">';
|
||||
thead += '</div>';
|
||||
}else{
|
||||
thead += this.cols[i].title;
|
||||
}
|
||||
thead += '</div>';
|
||||
thead += '</th>';
|
||||
}
|
||||
}
|
||||
colgroup += '</colgroup>';
|
||||
if (hasThead) thead += '</tr></thead>';
|
||||
return colgroup + thead;
|
||||
};
|
||||
|
||||
/**
|
||||
* 渲染内容
|
||||
*/
|
||||
Order.prototype.tbody = function () {
|
||||
|
||||
var tbody = '<tbody>';
|
||||
for (var i = 0; i < this.data.list.length; i++) {
|
||||
|
||||
var order = this.data.list[i];
|
||||
var orderitemList = order.order_goods;
|
||||
var pay_type_name = order.pay_type_name != '' ? order.pay_type_name : "";
|
||||
var order_type = order.order_type;
|
||||
if (i > 0) {
|
||||
//分割行
|
||||
tbody += '<tr class="separation-row">';
|
||||
tbody += '<td colspan="' + this.cols.length + '"></td>';
|
||||
tbody += '</tr>';
|
||||
}
|
||||
|
||||
//订单项头部
|
||||
tbody += '<tr class="header-row">';
|
||||
tbody += '<td colspan="7">';
|
||||
tbody += '<span class="order-item-header" style="margin-right:10px;">订单号:' + order.order_no + '</span>';
|
||||
tbody += '<span class="order-item-header text-color more" style="margin-right:50px;" onclick="showMore(' + order.order_id + ')">更多';
|
||||
tbody += '<div class="more-operation" data-order-id="' + order.order_id + '">';
|
||||
tbody += '<span>支付流水号:' + order.out_trade_no + '</span>';
|
||||
tbody += '</div></span>';
|
||||
|
||||
tbody += '<span class="order-item-header" style="margin-right:50px;">支付时间:' + ns.time_to_date(order.pay_time) + '</span>';
|
||||
|
||||
tbody += '<span class="order-item-header" style="margin-right:50px;">订单来源:收银台</span>';
|
||||
|
||||
// tbody += '<span class="order-item-header" style="margin-right:50px;">订单类型:' + order.order_type_name + '</span>';
|
||||
if (pay_type_name) tbody += '<span class="order-item-header"style="margin-right:50px;">支付方式:' + pay_type_name +'</span>';
|
||||
|
||||
if (order.cashier_order_type_name) tbody += '<span class="order-item-header">订单类型:' + order.cashier_order_type_name +'</span>';
|
||||
|
||||
if (order_type == 2) {
|
||||
tbody += '<span class="order-item-header" style="margin-left:50px;">要求自提时间:' + order.buyer_ask_delivery_time + '</span>';
|
||||
}
|
||||
if (order_type == 3) {
|
||||
tbody += '<span class="order-item-header" style="margin-left:50px;">要求送达时间:' + order.buyer_ask_delivery_time + '</span>';
|
||||
}
|
||||
tbody += '</td>';
|
||||
tbody += '<td colspan="2">';
|
||||
tbody += '<div class="table-btn order-list-top-line" style="align:right;">';
|
||||
if (order.order_type == 1 && (order.order_status == 0 || order.order_status == 1 || order.order_status == 3 || order.order_status == 4 || order.order_status == 10)) {
|
||||
tbody += '<a class="layui-btn" href="javascript:printDeliverOrder(' + order.order_id + ');" >打印发货单</a>';
|
||||
// tbody += '<a href="'+ ns.href('shop/order/printOrder',{order_id:order.order_id}) +'" target="_blank" class="layui-btn">打印发货单</a>';
|
||||
}
|
||||
|
||||
if(printer_addon_is_exit == 1 && [1,2,3].indexOf(parseInt(order.order_type)) != -1 && [1,2,3,10].indexOf(parseInt(order.order_status)) != -1) {
|
||||
tbody += '<a class="layui-btn" href="javascript:printTicket(' + order.order_id + ');" >打印小票</a>';
|
||||
}
|
||||
|
||||
if (order.order_status == 0) {
|
||||
// tbody += '<a class="layui-btn" href="javascript:offlinePay(' + order.order_id + ');">线下支付</a> ';
|
||||
}
|
||||
tbody += '<a class="layui-btn" href="' + ns.href("cashier://shop/order/detail", {order_id: order.order_id}) + '" target="_blank">详情</a>';
|
||||
|
||||
if (order.order_status == -1) {
|
||||
tbody += '<a class="layui-btn" href="javascript:orderDelete(' + order.order_id + ');" >删除</a>';
|
||||
}
|
||||
tbody += '<a class="layui-btn" href="javascript:orderRemark(' + order.order_id + ');">备注</a> ';
|
||||
|
||||
tbody += '</div>';
|
||||
tbody += '</td>';
|
||||
tbody += '</tr>';
|
||||
|
||||
// tbody += '<tr class="separation-row"><td colspan="6"><hr /></td></tr>';
|
||||
|
||||
var orderitemHtml = '';
|
||||
loadImgMagnify();
|
||||
for (var j = 0; j < orderitemList.length; j++) {
|
||||
var orderitem = orderitemList[j];
|
||||
orderitemHtml += '<tr class="content-row">';
|
||||
for (var k = 0; k < this.cols.length; k++) {
|
||||
|
||||
if (j == 0 && this.cols[k].merge && this.cols[k].template) {
|
||||
|
||||
orderitemHtml += '<td class="' + (this.cols[k].className || "") + '" align="' + (this.cols[k].align || "") + '" style="' + (this.cols[k].style || "") + '" rowspan="' + orderitemList.length + '">';
|
||||
orderitemHtml += this.cols[k].template(orderitem, order);
|
||||
orderitemHtml += '</td>';
|
||||
|
||||
} else if (this.cols[k].template && !this.cols[k].merge) {
|
||||
|
||||
orderitemHtml += '<td class="' + (this.cols[k].className || "") + '" align="' + (this.cols[k].align || "") + '" style="' + (this.cols[k].style || "") + '">';
|
||||
orderitemHtml += this.cols[k].template(orderitem, order);
|
||||
orderitemHtml += '</td>';
|
||||
|
||||
}
|
||||
}
|
||||
orderitemHtml += '</tr>';
|
||||
}
|
||||
tbody += orderitemHtml;
|
||||
|
||||
if(order.buyer_message != '') {
|
||||
//订单项底部
|
||||
tbody += '<tr class="bottom-row">';
|
||||
tbody += '<td colspan="9">';
|
||||
tbody += '<span class="order-item-header" style="margin-right:10px;">买家备注:' + order.buyer_message + '</span>';
|
||||
tbody += '</td>';
|
||||
tbody += '</tr>';
|
||||
}
|
||||
|
||||
if (order.remark != '') {
|
||||
tbody += '<tr class="remark-row">';
|
||||
tbody += '<td colspan="9">卖家备注:' + order.remark + '</td>';
|
||||
tbody += '</tr>';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
tbody += '</tbody>';
|
||||
return tbody;
|
||||
};
|
||||
|
||||
/**
|
||||
* 渲染表格
|
||||
*/
|
||||
Order.prototype.fetch = function () {
|
||||
if (this.data.list.length > 0) {
|
||||
return '<table class="layui-table layui-form">' + this.header(true) + '</table><table class="layui-table order-list-table layui-form">' + this.header(false) + this.tbody() + '</table>';
|
||||
} else {
|
||||
return '<table class="layui-table order-list-table layui-form">' + this.header(true) + '</table>' + '<div class="order-no-data-block"><ul><li><i class="layui-icon layui-icon-tabs"></i> </li><li>暂无订单</li></ul></div>';
|
||||
}
|
||||
};
|
||||
|
||||
function showMore(order_id) {
|
||||
$(".more-operation[data-order-id]").hide();
|
||||
$(".more-operation[data-order-id='" + order_id + "']").show();
|
||||
$("body").bind('click',function (e) {
|
||||
if (!$(e.target).closest(".order-item-header.more").length) {
|
||||
$(".more-operation[data-order-id='" + order_id + "']").hide();
|
||||
$("body").unbind('click');
|
||||
}
|
||||
});
|
||||
}
|
||||
$(".layui-colla-title").on("click", function(){
|
||||
if($(".layui-colla-title>i").hasClass("layui-icon-down") === false && $(".layui-colla-title>i").hasClass("layui-icon-up") === false){
|
||||
$(".layui-colla-title .put-open").html("展开");
|
||||
}else if($(".layui-colla-title>i").hasClass("layui-icon-down") === true){
|
||||
$(".layui-colla-title .put-open").html("展开");
|
||||
}else if($(".layui-colla-title>i").hasClass("layui-icon-up") === true){
|
||||
$(".layui-colla-title .put-open").html("收起");
|
||||
}
|
||||
})
|
||||
153
addon/cashier/shop/view/user/add_group.html
Executable file
153
addon/cashier/shop/view/user/add_group.html
Executable file
@@ -0,0 +1,153 @@
|
||||
<style type="text/css">
|
||||
.tree-line {
|
||||
padding: 10px 0;
|
||||
background: #ededed;
|
||||
margin-bottom: 2px;
|
||||
line-height: 1.8;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
|
||||
.tree-line .layui-form {
|
||||
padding-left: 10px !important;
|
||||
}
|
||||
|
||||
.tree-line .layui-form-checkbox {
|
||||
margin: 0 10px !important;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.group-tree-block .layui-table tbody tr:hover {
|
||||
background-color: white;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap" lay-filter="save">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>角色名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input autocomplete="off" class="layui-input len-long" lay-verify="required" name="group_name" placeholder="请输入角色名称" required type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">适用门店:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
<select name="store_id" lay-filter="store_id">
|
||||
{foreach $store_list as $val}
|
||||
<option value="{$val.store_id}">{$val.store_name}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="word-aux"><p>适用门店添加后无法修改,请慎重选择</p></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">描述:</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea class="layui-textarea len-long" maxlength="150" name="desc" placeholder="请输入角色的相关描述"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>设置权限:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline group-tree-block" id="tree_box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 表单操作 -->
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-filter="save" lay-submit>保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backCashierUserGroup()">返回</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var all_tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}');
|
||||
var tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}'),
|
||||
form,
|
||||
repeat_flag = false; //防重复标识
|
||||
var store_list = {:json_encode($store_list)};
|
||||
if(store_list.length > 0 && store_list[0].tree_data){
|
||||
tree_data = store_list[0].tree_data;
|
||||
}
|
||||
|
||||
layui.use('form', function () {
|
||||
form = layui.form;
|
||||
form.render();
|
||||
|
||||
form.on('select(store_id)', function (data){
|
||||
let store_id = data.value;
|
||||
store_list.forEach((item)=>{
|
||||
if(item.store_id == store_id){
|
||||
if(item.tree_data){
|
||||
tree_data = ns.deepclone(item.tree_data);
|
||||
}else{
|
||||
tree_data = ns.deepclone(all_tree_data);
|
||||
}
|
||||
initTreeBox();
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
data.field.store_name = $("select[name=store_id] option:selected").text();
|
||||
var obj = $("#tree_box input:checked"),
|
||||
group_array = [];
|
||||
|
||||
for (var i = 0; i < obj.length; i++) {
|
||||
group_array.push(obj.eq(i).val());
|
||||
}
|
||||
|
||||
data.field.menu_array = group_array.toString();
|
||||
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "JSON",
|
||||
url: ns.url("cashier://shop/user/addgroup"),
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('添加成功', {
|
||||
title: '操作提示',
|
||||
btn: ['返回列表', '继续添加'],
|
||||
closeBtn: 0,
|
||||
yes: function (index, layero) {
|
||||
location.hash = ns.hash("cashier://shop/user/group")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function (index, layero) {
|
||||
listenerHash(); // 刷新页面
|
||||
layer.close(index);
|
||||
}
|
||||
})
|
||||
} else {
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
form.verify({
|
||||
title: function (value) {
|
||||
if (value.length == 0) {
|
||||
return '请输入角色名称';
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function backCashierUserGroup() {
|
||||
location.hash = ns.hash("cashier://shop/user/group");
|
||||
}
|
||||
</script>
|
||||
<script src="SHOP_JS/tree.js?time=20250315"></script>
|
||||
|
||||
122
addon/cashier/shop/view/user/edit_group.html
Executable file
122
addon/cashier/shop/view/user/edit_group.html
Executable file
@@ -0,0 +1,122 @@
|
||||
<style type="text/css">
|
||||
.tree-line{padding:10px 0;background:#ededed;margin-bottom:2px;line-height: 1.8;}
|
||||
.tree-line .layui-form{padding-left: 10px !important;}
|
||||
.tree-line .layui-form-checkbox{margin:0 10px !important;vertical-align:middle;}
|
||||
.group-tree-block .layui-table tbody tr:hover {background-color: white;}
|
||||
</style>
|
||||
|
||||
<div class="layui-form form-wrap">
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">创建用户:</label>
|
||||
<div class="layui-input-inline">
|
||||
{php}$create_user_data = json_decode($group_info['create_user_data'], true);{/php}
|
||||
{:join(' -> ', array_column($create_user_data, 'name'))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>角色名称:</label>
|
||||
<div class="layui-input-block">
|
||||
<input name="group_name" type="text" lay-verify="required" class="layui-input len-long" placeholder="请输入角色名称" value="{$group_info.group_name}" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">适用门店:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline">
|
||||
{$group_info.store_name}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">描述:</label>
|
||||
<div class="layui-input-block">
|
||||
<textarea name ="desc" class="layui-textarea len-long" placeholder="请输入角色的相关描述" maxlength="150">{$group_info.desc}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"><span class="required">*</span>设置权限:</label>
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-input-inline group-tree-block" id="tree_box"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 操作 -->
|
||||
<div class="form-row">
|
||||
<button class="layui-btn" lay-submit lay-filter="save">保存</button>
|
||||
<button class="layui-btn layui-btn-primary" onclick="backCashierUserGroup()">返回</button>
|
||||
</div>
|
||||
|
||||
<!-- 隐藏域 -->
|
||||
<input name="group_id" type="text" class="layui-input layui-hide" value="{$group_id}">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var tree_data = JSON.parse('{:json_encode($tree_data, JSON_UNESCAPED_UNICODE)}'),
|
||||
form,
|
||||
repeat_flag = false;//防重复标识
|
||||
|
||||
layui.use('form', function() {
|
||||
form = layui.form;
|
||||
form.render();
|
||||
|
||||
form.on('submit(save)', function (data) {
|
||||
|
||||
var obj = $("#tree_box input:checked"),
|
||||
group_array = [];
|
||||
|
||||
for (var i = 0; i < obj.length; i++) {
|
||||
group_array.push(obj.eq(i).val());
|
||||
}
|
||||
|
||||
data.field.menu_array = group_array.toString();
|
||||
|
||||
if (repeat_flag) return;
|
||||
repeat_flag = true;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
dataType: "JSON",
|
||||
url: ns.url("cashier://shop/user/editgroup"),
|
||||
data: data.field,
|
||||
success: function (res) {
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
layer.confirm('编辑成功', {
|
||||
title:'操作提示',
|
||||
btn: ['返回列表', '继续编辑'],
|
||||
yes: function(index, layero) {
|
||||
location.hash = ns.hash("cashier://shop/user/group")
|
||||
layer.close(index);
|
||||
},
|
||||
btn2: function(index, layero) {
|
||||
layer.close(index);
|
||||
}
|
||||
})
|
||||
}else{
|
||||
layer.msg(res.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
form.verify({
|
||||
title: function (value) {
|
||||
if (value.length == 0) {
|
||||
return '请输入角色名称';
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function backCashierUserGroup() {
|
||||
location.hash = ns.hash("cashier://shop/user/group");
|
||||
}
|
||||
</script>
|
||||
<script src="SHOP_JS/tree.js"></script>
|
||||
|
||||
152
addon/cashier/shop/view/user/group_list.html
Executable file
152
addon/cashier/shop/view/user/group_list.html
Executable file
@@ -0,0 +1,152 @@
|
||||
<style>
|
||||
.system-tag {padding: 3px 5px;font-size: 12px;border: 1px solid #ddd;color: #999;border-radius: 4px;margin-left: 3px;}
|
||||
</style>
|
||||
|
||||
<!-- 搜索框 -->
|
||||
<div class="single-filter-box">
|
||||
<button class="layui-btn" onclick="add()">添加角色</button>
|
||||
|
||||
<div class="layui-form">
|
||||
<div class="layui-input-inline">
|
||||
<input type="text" name="search_keys" placeholder="请输入角色名称" autocomplete="off" class="layui-input">
|
||||
<button type="button" class="layui-btn layui-btn-primary" lay-filter="search" lay-submit>
|
||||
<i class="layui-icon"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 列表 -->
|
||||
<table id="group_list" lay-filter="group_list"></table>
|
||||
|
||||
<!-- 工具栏操作 -->
|
||||
<script type="text/html" id="operation">
|
||||
<div class="table-btn">
|
||||
{{# if(d.keyword != ''){ }}
|
||||
<span class="cursor">系统角色不可编辑</span>
|
||||
{{# }else if(curr_user_group_ids.indexOf(d.group_id) > -1){ }}
|
||||
<span class="cursor">所属角色不可编辑</span>
|
||||
{{# }else{ }}
|
||||
<a class="layui-btn" lay-event="edit">编辑</a>
|
||||
<a class="layui-btn" lay-event="delete">删除</a>
|
||||
{{# } }}
|
||||
</div>
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var curr_user_group_ids = {:json_encode($curr_user_group_ids)};
|
||||
layui.use('form', function() {
|
||||
var table,
|
||||
form = layui.form,
|
||||
repeat_flag = false; //防重复标识
|
||||
form.render();
|
||||
|
||||
/**
|
||||
* 加载表格
|
||||
*/
|
||||
table = new Table({
|
||||
elem: '#group_list',
|
||||
url: ns.url("cashier://shop/user/group"), //数据接口
|
||||
cols: [
|
||||
[{
|
||||
field: 'group_name',
|
||||
title: '角色名称',
|
||||
width: '20%',
|
||||
unresize: 'false',
|
||||
templet: function (data) {
|
||||
var h = data.group_name;
|
||||
if (data.keyword) h += '<span class="system-tag">系统</span>'
|
||||
return h;
|
||||
}
|
||||
}, {
|
||||
field: 'desc',
|
||||
title: '描述',
|
||||
width: '40%',
|
||||
unresize: 'false',
|
||||
},{
|
||||
field: 'store_name',
|
||||
title: '适用门店',
|
||||
width: '12%',
|
||||
unresize: 'false',
|
||||
},{
|
||||
field: 'create_user_data',
|
||||
title: '创建用户',
|
||||
width: '8%',
|
||||
unresize: 'false',
|
||||
templet: function (data){
|
||||
let create_user_data = JSON.parse(data.create_user_data);
|
||||
if(create_user_data.length > 0){
|
||||
return '<div class="text">'+create_user_data[create_user_data.length-1].name+'</div>';
|
||||
}else{
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}, {
|
||||
title: '操作',
|
||||
toolbar: '#operation',
|
||||
unresize: 'false',
|
||||
align:'right'
|
||||
}]
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 监听工具栏操作
|
||||
*/
|
||||
table.tool(function(obj) {
|
||||
var data = obj.data;
|
||||
switch (obj.event) {
|
||||
case 'edit': //编辑
|
||||
location.hash = ns.hash("cashier://shop/user/editGroup", {"group_id": data.group_id});
|
||||
break;
|
||||
case 'delete': //删除
|
||||
deleteGroup(data.group_id);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*/
|
||||
function deleteGroup(group_id) {
|
||||
layer.confirm('确定要删除该员工角色吗?', function(index) {
|
||||
if (repeat_flag) return false;
|
||||
repeat_flag = true;
|
||||
layer.close(index);
|
||||
$.ajax({
|
||||
dataType: 'JSON',
|
||||
type: 'POST',
|
||||
url: ns.url("cashier://shop/user/deleteGroup"),
|
||||
data: {group_id},
|
||||
success: function(res) {
|
||||
layer.msg(res.message);
|
||||
repeat_flag = false;
|
||||
|
||||
if (res.code == 0) {
|
||||
table.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, function () {
|
||||
layer.close();
|
||||
repeat_flag = false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 搜索功能
|
||||
*/
|
||||
form.on('submit(search)', function(data) {
|
||||
table.reload({
|
||||
page: {
|
||||
curr: 1
|
||||
},
|
||||
where: data.field
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function add() {
|
||||
location.hash = ns.hash("cashier://shop/user/addGroup");
|
||||
}
|
||||
</script>
|
||||
Reference in New Issue
Block a user