oprefund_goods_do.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <style>
  2. .line_p{line-height:26px;font-size:13px;margin-top:5px;}
  3. .goods_refund_form th{border: 1px solid #efefef;line-height: 34px;}
  4. .goods_refund_form td{border: 1px solid #efefef;line-height: 34px;}
  5. .w100{width:100px;}
  6. .lh30{line-height:30px;font-size:13px;}
  7. .mrt8{margin-top:8px;}
  8. .blu{color:blue;}
  9. </style>
  10. <form class="form-horizontal form-validate" action="{:U('order/oprefund_goods_do')}" method="post" enctype="multipart/form-data">
  11. <input type='hidden' name='id' value='{$id}' />
  12. <input type='hidden' name='order_goods_id' value='{$order_goods_id}' />
  13. <div class="modal-dialog">
  14. <div class="modal-content">
  15. <div class="modal-header">
  16. <button data-dismiss="modal" class="close" type="button">×</button>
  17. <h4 class="modal-title">退款</h4>
  18. </div>
  19. <div class="modal-body" style = "padding: 10px;" >
  20. <div style="display: flex">
  21. <div class="goods_refund_form" style="width:100%;display: flex;flex-direction: column;justify-content: center;align-items: flex-start;padding-left: 5px">
  22. <table style="border: 1px solid #efefef;width:100%;">
  23. <tr>
  24. <th style="width:40%;text-align:center;">商品标题</th>
  25. <th style="width:20%;text-align:center;">商品数量</th>
  26. <th style="width:30%;text-align:center;">商品价格</th>
  27. </tr>
  28. <tr>
  29. <td style="overflow: visible;text-align:center;padding-top: 10px;">
  30. {$order_goods_info['name']}
  31. </td>
  32. <td style="text-align:center;">
  33. {$total_quantity}个<?php if($has_refund_quantity > 0){ ?>(已退{$has_refund_quantity})<?php } ?>
  34. </td>
  35. <td style="text-align:center;">
  36. ¥{:round($order_goods_info['price'] ,2)}
  37. </td>
  38. </tr>
  39. </table>
  40. </div>
  41. <div style="clear:both;"></div>
  42. </div>
  43. <?php if($payment_code == 'cashon_delivery'){ ?>
  44. <div style="color:red;line-height: 16px;font-size: 12px;margin: 5px;">该订单为“货到付款”订单,订单退款金额只保留记录到订单操作中不作实际退款(不退至用户余额或微信账户),实际退款金额请线下和用户协商解决</div>
  45. <?php } ?>
  46. <p class="lh30 mrt8"><label class="w100">退款数量:</label>可退<b class="blu">{$total_quantity}</b>个<?php if($has_refund_quantity > 0){ ?>(已退{$has_refund_quantity})<?php } ?></p>
  47. <?php if($total_quantity > 0){ ?>
  48. <p class="lh30 ">
  49. <label class="w100">
  50. <label><input type="checkbox" id="ckall" value ="1" />&nbsp;全选</label>
  51. </label>
  52. <?php for( $i =0; $i < $total_quantity; $i++ ){ ?>
  53. <label><input type="checkbox" class="ref_goods" value ="1" />&nbsp;{$order_goods_info['name']}</label>
  54. <?php } ?>
  55. <?php for( $i =0; $i < $has_refund_quantity; $i++ ){ ?>
  56. <label><input type="checkbox" disabled /><font style="text-decoration:line-through;">&nbsp;{$order_goods_info['name']}(已退款)</font></label>
  57. <?php } ?>
  58. </p>
  59. <?php } ?>
  60. <?php
  61. $total = $free_tongji;//-$order_goods_info['voucher_credit']-$order_goods_info['fullreduction_money'];
  62. $score_for_money = $order_goods_info['score_for_money'];
  63. $free_tongji = $total;
  64. if( !empty($presale_info) )
  65. {
  66. $free_tongji = round($free_tongji - $presale_info['presale_for_ordermoney'], 2);
  67. }
  68. if($free_tongji < 0){
  69. $free_tongji = 0;
  70. }
  71. $refund_one_money = round( $free_tongji/$total_quantity , 2);
  72. ?>
  73. <?php if( !empty( $score_for_money ) && $score_for_money > 0 ){ ?>
  74. <p class="lh30"><label class="w100">积分抵扣:</label>¥{$score_for_money}</p>
  75. <?php } ?>
  76. <p class="lh30"><label class="w100">最多退款:</label>¥{$free_tongji}
  77. <?php if( !empty($presale_info) ){ ?>
  78. <span style="color:red;">&nbsp;&nbsp;&nbsp;&nbsp;预售定金:{$presale_info['presale_for_ordermoney']}元不退款,仅退尾款</span>
  79. <?php } ?>
  80. </p>
  81. <p class="lh30" style="display:none;" >
  82. <label class="w100">选中商品最多退款金额:</label>
  83. <input type="text" style="padding:2px;height:25px;border: 1px solid #ccc;" name="refund_money2" id="refund_money2" placeholder="退款金额" value="0" />
  84. </p>
  85. <p class="lh30">
  86. <label class="w100">退款金额:</label>
  87. <input type="text" style="padding:2px;height:25px;border: 1px solid #ccc;" name="refund_money" id="refund_money" placeholder="退款金额" value="0" />
  88. </p>
  89. <div style="height:8px;"></div>
  90. <input type="hidden" id="is_has_refund_deliveryfree" name="is_has_refund_deliveryfree" value="<?php echo $is_has_refund_deliveryfree;?>"/>
  91. <?php if($is_has_refund_deliveryfree == 1){ ?>
  92. <p class="line_p">
  93. <label class="w100">配送费:</label>
  94. <?php if($shipping_fare <= 0){ ?>
  95. &nbsp;0
  96. <?php }else{ ?>
  97. <input type="checkbox" id="is_refund_shippingfare" name="is_refund_shippingfare" checked value ="1" />&nbsp;
  98. <?php if( $delivery == 'express' ){ ?>
  99. 可退“快递配送费” ¥<?php echo $shipping_fare - $has_refund_quantity * round( 1/($total_quantity+$has_refund_quantity) * $shipping_fare,2); ?>,选中退配送费:¥ <input type="text" disabled="disabled" name="select_shipping_fare" id="select_shipping_fare" style="padding:2px;height:25px;border: 0px; background: #fff;width:100px;" value="0" />
  100. <?php }else if( $delivery == 'localtown_delivery' ){ ?>
  101. 可退“同城配送费” ¥<?php echo $shipping_fare - $has_refund_quantity * round( 1/($total_quantity+$has_refund_quantity) * $shipping_fare,2); ?>,选中退配送费:¥ <input type="text" disabled="disabled" name="select_shipping_fare" id="select_shipping_fare" style="padding:2px;height:25px;border: 0px ; background: #fff;width:100px;" value="0" />
  102. <?php }else if( $delivery == 'tuanz_send' ){ ?>
  103. 可退“团长配送费” ¥<?php echo $shipping_fare - $has_refund_quantity * round( 1/($total_quantity+$has_refund_quantity) * $shipping_fare,2); ?>,选中退配送费:¥ <input type="text" disabled="disabled" name="select_shipping_fare" id="select_shipping_fare" style="padding:2px;height:25px;border: 0px ; background: #fff;width:100px;" value="0" />
  104. <?php } ?>
  105. <?php } ?>
  106. </p>
  107. <?php }else{ ?>
  108. <p class="line_p">
  109. <label class="w100">配送费:&nbsp;&nbsp;&nbsp;&nbsp;后台设置不退配送费</label>
  110. </p>
  111. <?php } ?>
  112. <p class="line_p">
  113. <label class="w100">其他操作:</label>
  114. <input type="checkbox" id="is_back_sellcount" checked name="is_back_sellcount" value ="1" />&nbsp;
  115. 退库存以及减销量&nbsp;<input type="text" name="refund_quantity" id="refund_quantity" style="padding:2px;height:25px;border: 1px solid #ccc;width:100px;" value="0" />&nbsp;个(最多可退{$total_quantity}个)
  116. <?php if( $use_score > 0 ){ ?>
  117. &nbsp;&nbsp;&nbsp;&nbsp;
  118. <label>
  119. <input type="checkbox" id="is_back_scorecount" name="is_back_scorecount" value ="1" />&nbsp;退<font id="refund_scorecount">{$use_score}</font>积分
  120. </label>
  121. <?php } ?>
  122. </p>
  123. <p style="line-height:26px;font-size:13px;">佣金:<span class="label label-success">{$commiss_state}</span></p>
  124. <p style="margin-top:10px;line-height:16px;font-size:12px;color:#9e9696;">
  125. 备注:1.佣金指社区团购团长提成,团长分销提成,会员分销提成。<br/>
  126. 2.当佣金“未结算”,本页面操作会重新计算佣金金额,计算公式:商品退款金额占商品可退总金额比重*原来应结佣金<br/>
  127. 3.所退配送费计算公式=均摊,退款金额/全部商品金额*运费<br/>
  128. <span style="color:red;">4.当佣金“已结算”,本页面操作不会影响已经结算的所有佣金。<br/></span>
  129. <span style="color:red;">5.已结算后再发生任何退款,所有积分、社区团购团长提成、会员分销提成、团长分销提成、拼团佣金团提成、独立供应商可提现,不会再扣除,不发生任何变化。<br/></span>
  130. </p>
  131. </div>
  132. <div class="modal-footer">
  133. <input type="hidden" id="real_refund_quantity" name="real_refund_quantity" value="0" />
  134. <button class="btn btn-primary" type="submit" id="ck_opgoodsrefund">提交</button>
  135. <button data-dismiss="modal" class="btn btn-default" type="button">取消</button>
  136. </div>
  137. </div>
  138. </form>
  139. <script>
  140. var free_tongji = {$free_tongji};
  141. var shipping_fare = {$shipping_fare};
  142. var use_score = {$use_score};
  143. var total_quantity = {$total_quantity};
  144. var info_quantity = {$order_goods_info['quantity']};
  145. var has_refund_quantity = {$has_refund_quantity};
  146. var refund_one_money = {$refund_one_money};
  147. $(function(){
  148. $('.ref_goods').click(function(){
  149. sum_refund_money_quantity();
  150. })
  151. $('#ck_opgoodsrefund').click(function(){
  152. var loadingIndex = layer.load();
  153. var ck_arr = [];
  154. $('.ref_goods').each(function(){
  155. if( $(this).is(':checked') ) {
  156. ck_arr.push(1);
  157. }
  158. })
  159. if(ck_arr.length <=0 )
  160. {
  161. layer.msg('请选择退款商品');
  162. layer.close(loadingIndex);
  163. return false;
  164. }
  165. if( $('#is_back_sellcount').is(':checked') )
  166. {
  167. var refund_quantity = $('#refund_quantity').val();
  168. refund_quantity = parseInt(refund_quantity);
  169. if( ck_arr.length < refund_quantity)
  170. {
  171. layer.msg('退库存以及销量数量不能大于选中商品数量');
  172. layer.close(loadingIndex);
  173. return false;
  174. }
  175. var refund_money = $('#refund_money').val();
  176. var refund_money2 = $('#refund_money2').val();
  177. if( refund_money - refund_money2 > 0 )
  178. {
  179. layer.msg('退款金额大于选中商品最多退款金额');
  180. layer.close(loadingIndex);
  181. return false;
  182. }
  183. }
  184. $('#real_refund_quantity').val( ck_arr.length );
  185. layer.close(loadingIndex);
  186. })
  187. $('#ckall').click(function(){
  188. var obj = $(this);
  189. if( $(obj).is(':checked') )
  190. {
  191. $(".ref_goods").prop("checked", true);
  192. }else{
  193. $(".ref_goods").prop("checked", false);
  194. }
  195. sum_refund_money_quantity();
  196. })
  197. $('#is_refund_shippingfare').click(function(){
  198. var ck_count = 0;
  199. var ck_arr = [];
  200. $('.ref_goods').each(function(){
  201. if( $(this).is(':checked') ) {
  202. ck_arr.push(1);
  203. }
  204. })
  205. if(ck_arr.length <=0 )
  206. {
  207. layer.msg('请选择退款商品');
  208. return false;
  209. }
  210. ck_count = ck_arr.length;
  211. var refund_count = $('.ref_goods').length;
  212. var refund_money_str = $('#refund_money').val();
  213. var refund_money = parseFloat(refund_money_str);
  214. if(refund_count > 0)
  215. {
  216. if($(this).is(':checked')) {
  217. refund_money = refund_money + (shipping_fare / refund_count) * ck_count;
  218. }else{
  219. refund_money = refund_money - (shipping_fare/refund_count) * ck_count;
  220. }
  221. refund_money = Math.floor( refund_money * 100) / 100;
  222. }else{
  223. refund_money = 0;
  224. }
  225. //$('#refund_money').val(refund_money);
  226. })
  227. })
  228. function sum_refund_money_quantity()
  229. {
  230. var ck_arr = [];
  231. var all_refund_count = $('.ref_goods').length;
  232. $('.ref_goods').each(function(){
  233. if( $(this).is(':checked') ) {
  234. ck_arr.push(1);
  235. }
  236. })
  237. var refund_count = ck_arr.length;
  238. var can_refund_money = (refund_count * (free_tongji/total_quantity) ).toFixed(2);
  239. var can_refund_score = (refund_count * (use_score/info_quantity) ).toFixed(2);
  240. console.log(can_refund_score);
  241. var is_has_refund_deliveryfree = $('#is_has_refund_deliveryfree').val();
  242. if( $('#is_refund_shippingfare').is(':checked') )
  243. {
  244. can_refund_money = can_refund_money + parseFloat(shipping_fare);
  245. if( can_refund_money > free_tongji + shipping_fare )
  246. {
  247. can_refund_money = free_tongji + shipping_fare;
  248. }
  249. }else{
  250. if(is_has_refund_deliveryfree == 0){
  251. can_refund_money = can_refund_money;
  252. }else{
  253. can_refund_money = can_refund_money - (shipping_fare/all_refund_count) * refund_count;
  254. }
  255. if( can_refund_money > free_tongji )
  256. {
  257. can_refund_money = free_tongji;
  258. }
  259. }
  260. /*can_refund_money = Math.floor(can_refund_money *100)/100;
  261. can_refund_score = Math.floor(can_refund_score *100)/100;*/
  262. can_refund_money = Math.floor(accMul(can_refund_money,100))/100;
  263. can_refund_score = Math.floor(accMul(can_refund_score,100))/100;
  264. can_refund_score = parseInt(can_refund_score);
  265. if(refund_count == 0){
  266. select_shipping_fare = 0;
  267. }else{
  268. select_shipping_fare = shipping_fare - (total_quantity + has_refund_quantity - refund_count) * ( 1/( total_quantity + has_refund_quantity) * shipping_fare).toFixed(2);
  269. }
  270. $('#refund_scorecount').html(can_refund_score);
  271. $('#refund_money').val(can_refund_money);
  272. $('#refund_money2').val(can_refund_money);
  273. $('#refund_quantity').val(refund_count);
  274. $('#select_shipping_fare').val(select_shipping_fare);
  275. }
  276. function accMul(num1,num2){
  277. var m=0,s1=num1.toString(),s2=num2.toString();
  278. try{m+=s1.split(".")[1].length}catch(e){};
  279. try{m+=s2.split(".")[1].length}catch(e){};
  280. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
  281. }
  282. </script>