show.blade.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463
  1. @extends('backend.layouts.app')
  2. @section('content')
  3. <script src='/My97DatePicker/WdatePicker.js'></script>
  4. <div class="card">
  5. <div class="card-header">
  6. <h1 class="h2 fs-16 mb-0">{{ translate('Order Details') }}</h1>
  7. </div>
  8. <div class="card-body">
  9. <div class="row gutters-3">
  10. <div class="col text-md-left text-center">
  11. </div>
  12. @php
  13. $delivery_status = $order->delivery_status;
  14. $payment_status = $order->payment_status;
  15. @endphp
  16. @if ($order->product_storehouse_total > 0)
  17. @if (!$order->freeze_expired_at)
  18. <div class="col-md-2 d-flex flex-nowrap justify-content-end align-items-end ml-auto">
  19. <button type="button" class="btn btn-primary" disabled>{{ translate('Free up frozen funds') }}</button>
  20. </div>
  21. @else
  22. <div class="col-md-2 d-flex flex-nowrap justify-content-end align-items-end ml-auto">
  23. <button id="free_up_btn" type="button" class="btn btn-primary confirm-alert" data-href="{{route('product-storehouse-order-free-up', $order->id)}}" data-target="#free-up-modal">{{ translate('Free up frozen funds') }}</button>
  24. </div>
  25. @endif
  26. @if ($order->product_storehouse_status)
  27. <div class="col-md-2 d-flex flex-nowrap justify-content-end align-items-end ml-auto">
  28. <button type="button" class="btn btn-info" disabled>{{ translate('Picked up') }}</button>
  29. </div>
  30. @else
  31. <div class="col-md-2 d-flex flex-nowrap justify-content-end align-items-end ml-auto">
  32. <button type="button" class="btn btn-info" disabled>{{ translate('Unpaid') }}</button>
  33. </div>
  34. @endif
  35. @endif
  36. <!--Assign Delivery Boy-->
  37. @if (addon_is_activated('delivery_boy'))
  38. <div class="col-md-3 ml-auto">
  39. <label for="assign_deliver_boy">{{ translate('Assign Deliver Boy') }}</label>
  40. @if ($delivery_status == 'pending' || $delivery_status == 'confirmed' || $delivery_status == 'picked_up')
  41. <select class="form-control aiz-selectpicker" data-live-search="true"
  42. data-minimum-results-for-search="Infinity" id="assign_deliver_boy">
  43. <option value="">{{ translate('Select Delivery Boy') }}</option>
  44. @foreach ($delivery_boys as $delivery_boy)
  45. <option value="{{ $delivery_boy->id }}"
  46. @if ($order->assign_delivery_boy == $delivery_boy->id) selected @endif>
  47. {{ $delivery_boy->name }}
  48. </option>
  49. @endforeach
  50. </select>
  51. @else
  52. <input type="text" class="form-control" value="{{ optional($order->delivery_boy)->name }}"
  53. disabled>
  54. @endif
  55. </div>
  56. @endif
  57. <div class="col-md-3 ml-auto">
  58. <label for="update_payment_status">{{ translate('Payment Status') }}</label>
  59. <select class="form-control aiz-selectpicker" data-minimum-results-for-search="Infinity"
  60. id="update_payment_status">
  61. <option value="unpaid" @if ($payment_status == 'unpaid') selected @endif>{{ translate('Unpaid') }}
  62. </option>
  63. <option value="paid" @if ($payment_status == 'paid') selected @endif>{{ translate('Paid') }}
  64. </option>
  65. </select>
  66. </div>
  67. <div class="col-md-3 ml-auto">
  68. <label for="update_delivery_status">{{ translate('Delivery Status') }}</label>
  69. @if ($delivery_status != 'delivered' && $delivery_status != 'cancelled')
  70. <select class="form-control aiz-selectpicker" data-minimum-results-for-search="Infinity"
  71. id="update_delivery_status">
  72. <option value="pending" @if ($delivery_status == 'pending') selected @endif>
  73. {{ translate('Pending') }}</option>
  74. <option value="confirmed" @if ($delivery_status == 'confirmed') selected @endif>
  75. {{ translate('Confirmed') }}</option>
  76. <option value="picked_up" @if ($delivery_status == 'picked_up') selected @endif>
  77. {{ translate('Picked Up') }}</option>
  78. <option value="on_the_way" @if ($delivery_status == 'on_the_way') selected @endif>
  79. {{ translate('On The Way') }}</option>
  80. <option value="delivered" @if ($delivery_status == 'delivered') selected @endif>
  81. {{ translate('Delivered') }}</option>
  82. <option value="cancelled" @if ($delivery_status == 'cancelled') selected @endif>
  83. {{ translate('Cancel') }}</option>
  84. </select>
  85. @else
  86. <input type="text" class="form-control" value="{{ $delivery_status }}" disabled>
  87. @endif
  88. </div>
  89. <div class="col-md-3 ml-auto">
  90. <label for="update_tracking_code">{{ translate('Tracking Code (optional)') }}</label>
  91. <input type="text" class="form-control" id="update_tracking_code"
  92. value="{{ $order->tracking_code }}">
  93. </div>
  94. </div>
  95. <div class="mb-3">
  96. @php
  97. $removedXML = '<?xml version="1.0" encoding="UTF-8"';
  98. @endphp
  99. {!! str_replace([$removedXML, '?>'], '', QrCode::size(100)->generate($order->code)) !!}
  100. </div>
  101. <div class="row gutters-5">
  102. <div class="col text-md-left text-center">
  103. @if(json_decode($order->shipping_address))
  104. <address>
  105. <strong class="text-main">
  106. {{ json_decode($order->shipping_address)->name }}
  107. </strong><br>
  108. {{ json_decode($order->shipping_address)->email }}<br>
  109. {{ json_decode($order->shipping_address)->phone }}<br>
  110. {{ json_decode($order->shipping_address)->address }}, {{ json_decode($order->shipping_address)->city }}, {{ json_decode($order->shipping_address)->postal_code }}<br>
  111. {{ json_decode($order->shipping_address)->country }}
  112. </address>
  113. @else
  114. <address>
  115. <strong class="text-main">
  116. {{ $order->user->name }}
  117. </strong><br>
  118. {{ $order->user->email }}<br>
  119. {{ $order->user->phone }}<br>
  120. </address>
  121. @endif
  122. @if ($order->manual_payment && is_array(json_decode($order->manual_payment_data, true)))
  123. <br>
  124. <strong class="text-main">{{ translate('Payment Information') }}</strong><br>
  125. {{ translate('Name') }}: {{ json_decode($order->manual_payment_data)->name }},
  126. {{ translate('Amount') }}:
  127. {{ single_price(json_decode($order->manual_payment_data)->amount) }},
  128. {{ translate('TRX ID') }}: {{ json_decode($order->manual_payment_data)->trx_id }}
  129. <br>
  130. <a href="{{ uploaded_asset(json_decode($order->manual_payment_data)->photo) }}"
  131. target="_blank"><img
  132. src="{{ uploaded_asset(json_decode($order->manual_payment_data)->photo) }}" alt=""
  133. height="100"></a>
  134. @endif
  135. </div>
  136. <div class="col-md-4 ml-auto">
  137. <table>
  138. <tbody>
  139. <tr>
  140. <td class="text-main text-bold">{{ translate('Order #') }}</td>
  141. <td class="text-info text-bold text-right"> {{ $order->code }}</td>
  142. </tr>
  143. <tr>
  144. <td class="text-main text-bold">{{ translate('Order Status') }}</td>
  145. <td class="text-right">
  146. @if ($delivery_status == 'delivered')
  147. <span
  148. class="badge badge-inline badge-success">{{ translate(ucfirst(str_replace('_', ' ', $delivery_status))) }}</span>
  149. @else
  150. <span
  151. class="badge badge-inline badge-info">{{ translate(ucfirst(str_replace('_', ' ', $delivery_status))) }}</span>
  152. @endif
  153. </td>
  154. </tr>
  155. <tr>
  156. <td class="text-main text-bold">{{ translate('Order Date') }} </td>
  157. <td class="text-right">{{ date('d-m-Y h:i A', $order->date) }}</td>
  158. </tr>
  159. <tr>
  160. <td class="text-main text-bold">
  161. {{ translate('Total amount') }}
  162. </td>
  163. <td class="text-right">
  164. {{ single_price($order->grand_total) }}
  165. </td>
  166. </tr>
  167. <tr>
  168. <td class="text-main text-bold">{{ translate('Payment method') }}</td>
  169. <td class="text-right">
  170. {{ translate(ucfirst(str_replace('_', ' ', $order->payment_type))) }}</td>
  171. </tr>
  172. <tr>
  173. <td class="text-main text-bold">{{ translate('Additional Info') }}</td>
  174. <td class="text-right">{{ $order->additional_info }}</td>
  175. </tr>
  176. </tbody>
  177. </table>
  178. </div>
  179. </div>
  180. <hr class="new-section-sm bord-no">
  181. <div class="row">
  182. <div class="col-lg-12 table-responsive">
  183. <table class="table-bordered aiz-table invoice-summary table">
  184. <thead>
  185. <tr class="bg-trans-dark">
  186. <th data-breakpoints="lg" class="min-col">#</th>
  187. <th width="10%">{{ translate('Photo') }}</th>
  188. <th class="text-uppercase">{{ translate('Description') }}</th>
  189. <th data-breakpoints="lg" class="text-uppercase">{{ translate('Delivery Type') }}</th>
  190. <th data-breakpoints="lg" class="min-col text-uppercase text-center">
  191. {{ translate('Qty') }}
  192. </th>
  193. <th data-breakpoints="lg" class="min-col text-uppercase text-center">
  194. {{ translate('Price') }}</th>
  195. <th data-breakpoints="lg" class="min-col text-uppercase text-right">
  196. {{ translate('Total') }}</th>
  197. </tr>
  198. </thead>
  199. <tbody>
  200. @foreach ($order->orderDetails as $key => $orderDetail)
  201. <tr>
  202. <td>{{ $key + 1 }}</td>
  203. <td>
  204. @if ($orderDetail->product != null && $orderDetail->product->auction_product == 0)
  205. <a href="{{ route('product', $orderDetail->product->slug) }}"
  206. target="_blank"><img height="50"
  207. src="{{ uploaded_asset($orderDetail->product->thumbnail_img) }}"></a>
  208. @elseif ($orderDetail->product != null && $orderDetail->product->auction_product == 1)
  209. <a href="{{ route('auction-product', $orderDetail->product->slug) }}"
  210. target="_blank"><img height="50"
  211. src="{{ uploaded_asset($orderDetail->product->thumbnail_img) }}"></a>
  212. @else
  213. <strong>{{ translate('N/A') }}</strong>
  214. @endif
  215. </td>
  216. <td>
  217. @if ($orderDetail->product != null && $orderDetail->product->auction_product == 0)
  218. <strong><a href="{{ route('product', $orderDetail->product->slug) }}"
  219. target="_blank"
  220. class="text-muted">{{ $orderDetail->product->getTranslation('name') }}</a></strong>
  221. <small>{{ $orderDetail->variation }}</small>
  222. @elseif ($orderDetail->product != null && $orderDetail->product->auction_product == 1)
  223. <strong><a href="{{ route('auction-product', $orderDetail->product->slug) }}"
  224. target="_blank"
  225. class="text-muted">{{ $orderDetail->product->getTranslation('name') }}</a></strong>
  226. @else
  227. <strong>{{ translate('Product Unavailable') }}</strong>
  228. @endif
  229. </td>
  230. <td>
  231. @if ($order->shipping_type != null && $order->shipping_type == 'home_delivery')
  232. {{ translate('Home Delivery') }}
  233. @elseif ($order->shipping_type == 'pickup_point')
  234. @if ($order->pickup_point != null)
  235. {{ $order->pickup_point->getTranslation('name') }}
  236. ({{ translate('Pickup Point') }})
  237. @else
  238. {{ translate('Pickup Point') }}
  239. @endif
  240. @endif
  241. </td>
  242. <td class="text-center">{{ $orderDetail->quantity }}</td>
  243. <td class="text-center">
  244. {{ single_price($orderDetail->price / $orderDetail->quantity) }}</td>
  245. <td class="text-center">{{ single_price($orderDetail->price) }}</td>
  246. </tr>
  247. @endforeach
  248. </tbody>
  249. </table>
  250. </div>
  251. </div>
  252. <div class="clearfix float-right">
  253. <table class="table">
  254. <tbody>
  255. @if ($order->product_storehouse_total > 0)
  256. <tr>
  257. <td>
  258. <strong class="text-muted">{{ translate('Storehouse Price') }} :</strong>
  259. </td>
  260. <td>
  261. {{ single_price($order->product_storehouse_total) }}
  262. </td>
  263. </tr>
  264. <tr>
  265. <td>
  266. <strong class="text-muted">{{ translate('Profit') }} :</strong>
  267. </td>
  268. <td>
  269. {{ single_price($order->grand_total - $order->product_storehouse_total) }}
  270. </td>
  271. </tr>
  272. @endif
  273. <tr>
  274. <td>
  275. <strong class="text-muted">{{ translate('Sub Total') }} :</strong>
  276. </td>
  277. <td>
  278. {{ single_price($order->orderDetails->sum('price')) }}
  279. </td>
  280. </tr>
  281. <tr>
  282. <td>
  283. <strong class="text-muted">{{ translate('Tax') }} :</strong>
  284. </td>
  285. <td>
  286. {{ single_price($order->orderDetails->sum('tax')) }}
  287. </td>
  288. </tr>
  289. <tr>
  290. <td>
  291. <strong class="text-muted">{{ translate('Shipping') }} :</strong>
  292. </td>
  293. <td>
  294. {{ single_price($order->orderDetails->sum('shipping_cost')) }}
  295. </td>
  296. </tr>
  297. <tr>
  298. <td>
  299. <strong class="text-muted">{{ translate('Coupon') }} :</strong>
  300. </td>
  301. <td>
  302. {{ single_price($order->coupon_discount) }}
  303. </td>
  304. </tr>
  305. <tr>
  306. <td>
  307. <strong class="text-muted">{{ translate('TOTAL') }} :</strong>
  308. </td>
  309. <td class="text-muted h5">
  310. {{ single_price($order->grand_total) }}
  311. </td>
  312. </tr>
  313. </tbody>
  314. </table>
  315. <div class="no-print text-right">
  316. <a href="{{ route('invoice.download', $order->id) }}" type="button" class="btn btn-icon btn-light"><i
  317. class="las la-print"></i></a>
  318. </div>
  319. </div>
  320. <style>
  321. #wuliu .form-control{ width:150px; display:inline-block; margin-top:10px;}
  322. #wuliu .btn-add{ margin-left:10px; width:50px;}
  323. </style>
  324. @php error_reporting(0); @endphp
  325. <div class="row gutters-5" id="wuliu">
  326. <div class="col-md-12 ml-auto" style="margin-top:10px;">
  327. <label for="update_tracking_code">物流信息</label>
  328. <!--<textarea class="form-control" id="update_shipping_info" rows="10">{{$order->shipping_info}}</textarea> -->
  329. <div style="border:1px solid #f2f3f8; border-radius:10px;;padding:10px;margin-bottom:10px;" id="expessdiv">
  330. <form id="form1">
  331. <div class="dv">物流公司:<input type="text" class="form-control" name="express_name" value="{{ $express->express_name }}" />
  332. <input type="hidden" name="order_id" value="{{ $order->id }}" />
  333. </div>
  334. <div class="dv">物流单号:<input type="text" class="form-control" name="express_code" value="{{ $express->express_code }}" />
  335. </div>
  336. <div class="dv">
  337. <br><br>
  338. 物流信息:<br><br>
  339. <div class="exp">
  340. @if( $express->express_info )
  341. @foreach ($express->express_info as $key => $ex )
  342. 信息:<input type="text" class="form-control" name="express_info[]" value="{{ $ex }}"/> &nbsp;&nbsp;快递时间:<input class="form-control" onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" readonly type="text" value="{{ $express->express_stime[$key] }}" name="express_stime[]" />&nbsp;&nbsp;显示时间:<input class="form-control" onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" readonly type="text" value="{{ $express->express_time[$key] }}" name="express_time[]" /><input type="button" value="+" onclick="addinfo()" class="btn btn-primary btn-add" />
  343. <br><br>
  344. @endforeach
  345. @else
  346. 信息:<input type="text" class="form-control" name="express_info[]" value="{{ $ex }}"/> &nbsp;&nbsp;&nbsp;&nbsp;显示时间:<input onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" readonly type="text" class="form-control" value="{{ $express->express_stime[$key] }}" name="express_stime[]" />&nbsp;&nbsp;显示时间:<input onclick="WdatePicker({dateFmt:'yyyy:MM:dd HH:mm:ss'})" readonly type="text" class="form-control" value="{{ $express->express_time[$key] }}" name="express_time[]" /><input type="button" value="+" onclick="addinfo()" class="btn btn-primary btn-add" />
  347. <br><br>
  348. @endif
  349. </div>
  350. </div>
  351. <br>
  352. <input type="button" value="保存物流信息" class="btn btn-info" onclick="save_express_info()" />
  353. </form>
  354. </div>
  355. </div>
  356. </div>
  357. </div>
  358. </div>
  359. @endsection
  360. @section('modal')
  361. <div id="free-up-modal" class="modal fade">
  362. <div class="modal-dialog modal-md modal-dialog-centered">
  363. <div class="modal-content">
  364. <div class="modal-header">
  365. <h4 class="modal-title h6">{{translate('Free Up Of Freeze Funds Confirmation')}}</h4>
  366. <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
  367. </div>
  368. <div class="modal-body text-center">
  369. <h5 class="mt-1 text-">{{translate('Are you sure to free this up?')}}</h5>
  370. <button type="button" class="btn btn-link mt-2" data-dismiss="modal">{{translate('Cancel')}}</button>
  371. <a href="" id="comfirm-link" class="btn btn-primary mt-2">{{translate('Free Up')}}</a>
  372. </div>
  373. </div>
  374. </div>
  375. </div>
  376. @endsection
  377. @section('script')
  378. <script type="text/javascript">
  379. function addinfo()
  380. {
  381. var html = '<div>信息:<input type="text" class="form-control" name="express_info[]" /> &nbsp;&nbsp;快递时间:<input class="form-control" type="text" onclick="WdatePicker({dateFmt:\'yyyy:MM:dd HH:mm:ss\'})" name="express_stime[]" readonly />&nbsp;&nbsp;显示时间:<input class="form-control" onclick="WdatePicker({dateFmt:\'yyyy:MM:dd HH:mm:ss\'})" readonly type="text" value="{{ $express->express_time[$key] }}" name="express_time[]" /><input class="btn btn-primary btn-add" type="button" value="+" onclick="addinfo()" /></div>';
  382. $('.exp').append( html );
  383. }
  384. function save_express_info()
  385. {
  386. $.post('{{ route('orders.update_delivery_info') }}', {
  387. _token:'{{ @csrf_token() }}',
  388. data:$("#form1").serialize()
  389. }, function(data){
  390. alert( data )
  391. },'text');
  392. }
  393. $('#assign_deliver_boy').on('change', function() {
  394. var order_id = {{ $order->id }};
  395. var delivery_boy = $('#assign_deliver_boy').val();
  396. $.post('{{ route('orders.delivery-boy-assign') }}', {
  397. _token: '{{ @csrf_token() }}',
  398. order_id: order_id,
  399. delivery_boy: delivery_boy
  400. }, function(data) {
  401. AIZ.plugins.notify('success', '{{ translate('Delivery boy has been assigned') }}');
  402. });
  403. });
  404. $('#update_delivery_status').on('change', function() {
  405. var order_id = {{ $order->id }};
  406. var status = $('#update_delivery_status').val();
  407. $.post('{{ route('orders.update_delivery_status') }}', {
  408. _token: '{{ @csrf_token() }}',
  409. order_id: order_id,
  410. status: status
  411. }, function(data) {
  412. AIZ.plugins.notify('success', '{{ translate('Delivery status has been updated') }}');
  413. });
  414. });
  415. $('#update_payment_status').on('change', function() {
  416. var order_id = {{ $order->id }};
  417. var status = $('#update_payment_status').val();
  418. $.post('{{ route('orders.update_payment_status') }}', {
  419. _token: '{{ @csrf_token() }}',
  420. order_id: order_id,
  421. status: status
  422. }, function(data) {
  423. AIZ.plugins.notify('success', '{{ translate('Payment status has been updated') }}');
  424. });
  425. });
  426. $('#update_tracking_code').on('change', function() {
  427. var order_id = {{ $order->id }};
  428. var tracking_code = $('#update_tracking_code').val();
  429. $.post('{{ route('orders.update_tracking_code') }}', {
  430. _token: '{{ @csrf_token() }}',
  431. order_id: order_id,
  432. tracking_code: tracking_code
  433. }, function(data) {
  434. AIZ.plugins.notify('success', '{{ translate('Order tracking code has been updated') }}');
  435. });
  436. });
  437. </script>
  438. @endsection