fde2f73d5b86111f14ef7d3e16102128.php 13 KB

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