oprefund_goods_do.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  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. if($free_tongji==0||$total_quantity==0){
  72. $refund_one_money =0;
  73. }else{
  74. $refund_one_money = round($free_tongji/$total_quantity , 2);
  75. }
  76. ?>
  77. <?php if( !empty( $score_for_money ) && $score_for_money > 0 ){ ?>
  78. <p class="lh30"><label class="w100">积分抵扣:</label>¥{$score_for_money}</p>
  79. <?php } ?>
  80. <p class="lh30"><label class="w100">最多退款:</label>¥{$free_tongji}
  81. <?php if( !empty($presale_info) ){ ?>
  82. <span style="color:red;">&nbsp;&nbsp;&nbsp;&nbsp;预售定金:{$presale_info['presale_for_ordermoney']}元不退款,仅退尾款</span>
  83. <?php } ?>
  84. </p>
  85. <p class="lh30" style="display:none;" >
  86. <label class="w100">选中商品最多退款金额:</label>
  87. <input type="text" style="padding:2px;height:25px;border: 1px solid #ccc;" name="refund_money2" id="refund_money2" placeholder="退款金额" value="0" />
  88. </p>
  89. <p class="lh30">
  90. <label class="w100">退款金额:</label>
  91. <input type="text" style="padding:2px;height:25px;border: 1px solid #ccc;" name="refund_money" id="refund_money" placeholder="退款金额" value="0" />
  92. </p>
  93. <div style="height:8px;"></div>
  94. <input type="hidden" id="is_has_refund_deliveryfree" name="is_has_refund_deliveryfree" value="<?php echo $is_has_refund_deliveryfree;?>"/>
  95. <?php if($is_has_refund_deliveryfree == 1){ ?>
  96. <p class="line_p">
  97. <label class="w100">配送费:</label>
  98. <?php if($shipping_fare <= 0){ ?>
  99. &nbsp;0
  100. <?php }else{ ?>
  101. <input type="checkbox" id="is_refund_shippingfare" name="is_refund_shippingfare" checked value ="1" />&nbsp;
  102. <?php if( $delivery == 'express' ){ ?>
  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 }else if( $delivery == 'localtown_delivery' ){ ?>
  105. 可退“同城配送费” ¥<?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" />
  106. <?php }else if( $delivery == 'tuanz_send' ){ ?>
  107. 可退“团长配送费” ¥<?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" />
  108. <?php } ?>
  109. <?php } ?>
  110. </p>
  111. <?php }else{ ?>
  112. <p class="line_p">
  113. <label class="w100">配送费:&nbsp;&nbsp;&nbsp;&nbsp;后台设置不退配送费</label>
  114. </p>
  115. <?php } ?>
  116. <p class="line_p">
  117. <label class="w100">其他操作:</label>
  118. <input type="checkbox" id="is_back_sellcount" checked name="is_back_sellcount" value ="1" />&nbsp;
  119. 退库存以及减销量&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}个)
  120. <?php if( $use_score > 0 ){ ?>
  121. &nbsp;&nbsp;&nbsp;&nbsp;
  122. <label>
  123. <input type="checkbox" id="is_back_scorecount" name="is_back_scorecount" value ="1" />&nbsp;退<font id="refund_scorecount">{$use_score}</font>积分
  124. </label>
  125. <?php } ?>
  126. </p>
  127. <p style="line-height:26px;font-size:13px;">佣金:<span class="label label-success">{$commiss_state}</span></p>
  128. <p style="margin-top:10px;line-height:16px;font-size:12px;color:#9e9696;">
  129. 备注:1.佣金指社区团购团长提成,团长分销提成,会员分销提成。<br/>
  130. 2.当佣金“未结算”,本页面操作会重新计算佣金金额,计算公式:商品退款金额占商品可退总金额比重*原来应结佣金<br/>
  131. 3.所退配送费计算公式=均摊,退款金额/全部商品金额*运费<br/>
  132. <span style="color:red;">4.当佣金“已结算”,本页面操作不会影响已经结算的所有佣金。<br/></span>
  133. <span style="color:red;">5.已结算后再发生任何退款,所有积分、社区团购团长提成、会员分销提成、团长分销提成、拼团佣金团提成、独立供应商可提现,不会再扣除,不发生任何变化。<br/></span>
  134. </p>
  135. </div>
  136. <div class="modal-footer">
  137. <input type="hidden" id="real_refund_quantity" name="real_refund_quantity" value="0" />
  138. <button class="btn btn-primary" type="submit" id="ck_opgoodsrefund">提交</button>
  139. <button data-dismiss="modal" class="btn btn-default" type="button">取消</button>
  140. </div>
  141. </div>
  142. </form>
  143. <script>
  144. var free_tongji = {$free_tongji};
  145. var shipping_fare = {$shipping_fare};
  146. var use_score = {$use_score};
  147. var total_quantity = {$total_quantity};
  148. var info_quantity = {$order_goods_info['quantity']};
  149. var has_refund_quantity = {$has_refund_quantity};
  150. var refund_one_money = {$refund_one_money};
  151. $(function(){
  152. $('.ref_goods').click(function(){
  153. sum_refund_money_quantity();
  154. })
  155. $('#ck_opgoodsrefund').click(function(){
  156. var loadingIndex = layer.load();
  157. var ck_arr = [];
  158. $('.ref_goods').each(function(){
  159. if( $(this).is(':checked') ) {
  160. ck_arr.push(1);
  161. }
  162. })
  163. if(ck_arr.length <=0 )
  164. {
  165. layer.msg('请选择退款商品');
  166. layer.close(loadingIndex);
  167. return false;
  168. }
  169. if( $('#is_back_sellcount').is(':checked') )
  170. {
  171. var refund_quantity = $('#refund_quantity').val();
  172. refund_quantity = parseInt(refund_quantity);
  173. if( ck_arr.length < refund_quantity)
  174. {
  175. layer.msg('退库存以及销量数量不能大于选中商品数量');
  176. layer.close(loadingIndex);
  177. return false;
  178. }
  179. var refund_money = $('#refund_money').val();
  180. var refund_money2 = $('#refund_money2').val();
  181. if( refund_money - refund_money2 > 0 )
  182. {
  183. layer.msg('退款金额大于选中商品最多退款金额');
  184. layer.close(loadingIndex);
  185. return false;
  186. }
  187. }
  188. $('#real_refund_quantity').val( ck_arr.length );
  189. layer.close(loadingIndex);
  190. })
  191. $('#ckall').click(function(){
  192. var obj = $(this);
  193. if( $(obj).is(':checked') )
  194. {
  195. $(".ref_goods").prop("checked", true);
  196. }else{
  197. $(".ref_goods").prop("checked", false);
  198. }
  199. sum_refund_money_quantity();
  200. })
  201. $('#is_refund_shippingfare').click(function(){
  202. var ck_count = 0;
  203. var ck_arr = [];
  204. $('.ref_goods').each(function(){
  205. if( $(this).is(':checked') ) {
  206. ck_arr.push(1);
  207. }
  208. })
  209. if(ck_arr.length <=0 )
  210. {
  211. layer.msg('请选择退款商品');
  212. return false;
  213. }
  214. ck_count = ck_arr.length;
  215. var refund_count = $('.ref_goods').length;
  216. var refund_money_str = $('#refund_money').val();
  217. var refund_money = parseFloat(refund_money_str);
  218. if(refund_count > 0)
  219. {
  220. if($(this).is(':checked')) {
  221. refund_money = refund_money + (shipping_fare / refund_count) * ck_count;
  222. }else{
  223. refund_money = refund_money - (shipping_fare/refund_count) * ck_count;
  224. }
  225. refund_money = Math.floor( refund_money * 100) / 100;
  226. }else{
  227. refund_money = 0;
  228. }
  229. //$('#refund_money').val(refund_money);
  230. })
  231. })
  232. function sum_refund_money_quantity()
  233. {
  234. var ck_arr = [];
  235. var all_refund_count = $('.ref_goods').length;
  236. $('.ref_goods').each(function(){
  237. if( $(this).is(':checked') ) {
  238. ck_arr.push(1);
  239. }
  240. })
  241. var refund_count = ck_arr.length;
  242. var can_refund_money = (refund_count * (free_tongji/total_quantity) ).toFixed(2);
  243. var can_refund_score = (refund_count * (use_score/info_quantity) ).toFixed(2);
  244. console.log(can_refund_score);
  245. var is_has_refund_deliveryfree = $('#is_has_refund_deliveryfree').val();
  246. if( $('#is_refund_shippingfare').is(':checked') )
  247. {
  248. can_refund_money = can_refund_money + parseFloat(shipping_fare);
  249. if( can_refund_money > free_tongji + shipping_fare )
  250. {
  251. can_refund_money = free_tongji + shipping_fare;
  252. }
  253. }else{
  254. if(is_has_refund_deliveryfree == 0){
  255. can_refund_money = can_refund_money;
  256. }else{
  257. can_refund_money = can_refund_money - (shipping_fare/all_refund_count) * refund_count;
  258. }
  259. if( can_refund_money > free_tongji )
  260. {
  261. can_refund_money = free_tongji;
  262. }
  263. }
  264. /*can_refund_money = Math.floor(can_refund_money *100)/100;
  265. can_refund_score = Math.floor(can_refund_score *100)/100;*/
  266. can_refund_money = Math.floor(accMul(can_refund_money,100))/100;
  267. can_refund_score = Math.floor(accMul(can_refund_score,100))/100;
  268. can_refund_score = parseInt(can_refund_score);
  269. if(refund_count == 0){
  270. select_shipping_fare = 0;
  271. }else{
  272. select_shipping_fare = shipping_fare - (total_quantity + has_refund_quantity - refund_count) * ( 1/( total_quantity + has_refund_quantity) * shipping_fare).toFixed(2);
  273. }
  274. $('#refund_scorecount').html(can_refund_score);
  275. $('#refund_money').val(can_refund_money);
  276. $('#refund_money2').val(can_refund_money);
  277. $('#refund_quantity').val(refund_count);
  278. $('#select_shipping_fare').val(select_shipping_fare);
  279. }
  280. function accMul(num1,num2){
  281. var m=0,s1=num1.toString(),s2=num2.toString();
  282. try{m+=s1.split(".")[1].length}catch(e){};
  283. try{m+=s2.split(".")[1].length}catch(e){};
  284. return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
  285. }
  286. </script>