refund_action.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. <style>
  2. .refund-view-list{margin-top:20px;font-size:14px;line-height:20px;color:#323233;color:var(--theme-stroke-1,#323233)}
  3. .refund-transfer-html .refund-view-list{margin-top: 0;}
  4. .refund-transfer-html .refund-view-item-label {width: 98px;text-align: left;display: inline-block;vertical-align: middle;}
  5. .refund-transfer-html .align-top{vertical-align: top;}
  6. .refund-view-item {margin-bottom: 10px;}
  7. /*!*display: -ms-flexbox;*!*//*!*display: flex;*!*/.refund-view-item-label{width:75px; vertical-align: top;}
  8. .refund-view-item-content{display:inline-block}
  9. </style>
  10. <!-- 售后申请同意 -->
  11. <script type="text/html" id="refund_agree_html">
  12. <div style="padding:10px;">
  13. <div class="layui-form refund-agree-html" id='refund_agree'lay-filter="refund_agree">
  14. {if $order_info.pay_type == 'OFFLINE_PAY'}
  15. <div style="color: #666;">注意 : 该笔订单通过线下支付,商家同意后,退款将通过线下原路退回。</div>
  16. {else/}
  17. <div style="color: #666;">注意 : 该笔订单通过在线付款,商家同意后,退款将自动原路退回买家付款账户。</div>
  18. {/if}
  19. <div class="refund-view-list">
  20. <div class="refund-view-item">
  21. <label class="refund-view-item-label">退款方式:</label>
  22. <div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退货退款{/if}</div>
  23. </div>
  24. <div class="refund-view-item">
  25. <label class="refund-view-item-label">退款金额:</label>
  26. <div class="refund-view-item-content">
  27. <span class="refund-money">¥{$detail.refund_apply_money}</span>
  28. </div>
  29. </div>
  30. </div>
  31. <input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
  32. <button class="layui-btn" lay-submit id="submit_agree" lay-filter="submit_agree" style="display:none;">保存</button>
  33. </div>
  34. </div>
  35. </script>
  36. <!-- 售后申请拒绝 -->
  37. <script type="text/html" id="refund_refuse_html">
  38. <div style="padding:10px;">
  39. <div class="layui-form refund-refuse-html" id='refund_refuse'lay-filter="refund_refuse">
  40. <div style="color: #666;">注意 : 建议你与买家协商后,再确定是否拒绝退款。如你拒绝退款后,买家可修改退款申请协议重新发起退款。</div>
  41. <div class="refund-view-list">
  42. <div class="refund-view-item">
  43. <label class="refund-view-item-label">退款方式:</label>
  44. <div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退货退款{/if}</div>
  45. </div>
  46. <div class="refund-view-item">
  47. <label class="refund-view-item-label">退款金额:</label>
  48. <div class="refund-view-item-content">
  49. <span class="refund-money">¥{$detail.refund_apply_money}</span>
  50. </div>
  51. </div>
  52. <div class="refund-view-item">
  53. <label class="refund-view-item-label">拒绝理由:</label>
  54. <div class="refund-view-item-content">
  55. <textarea name="refund_refuse_reason" maxlength="150" placeholder="请填写您的拒绝理由!" class="layui-textarea len-mid" style="overflow: hidden;word-wrap: break-word;resize: horizontal;height: 54px;"></textarea>
  56. </div>
  57. </div>
  58. </div>
  59. <input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
  60. <button class="layui-btn" lay-submit id="submit_refuse" lay-filter="submit_refuse" style="display:none;">保存</button>
  61. </div>
  62. </div>
  63. </script>
  64. <!-- 买家退货接收 -->
  65. <script type="text/html" id="refund_take_delivery_html">
  66. <div style="padding:10px;">
  67. <div class="layui-form refund-take-delivery-html" id='refund_take_delivery'lay-filter="refund_take_delivery">
  68. <div style="color: #666;">注意 : 需你同意退款申请,买家才能退货给你;买家退货后你需再次确认收货后,退款将自动原路退回至买家付款账户。</div>
  69. <div class="refund-view-list">
  70. <div class="refund-view-item">
  71. <label class="refund-view-item-label">退款方式:</label>
  72. <div class="refund-view-item-content">{if $detail.refund_type == 1}仅退款{else/}退货退款{/if}</div>
  73. </div>
  74. <div class="refund-view-item">
  75. <label class="refund-view-item-label">退款金额:</label>
  76. <div class="refund-view-item-content">
  77. <span class="refund-money">¥{$detail.refund_apply_money}</span>
  78. </div>
  79. </div>
  80. <div class="refund-view-item">
  81. <label class="refund-view-item-label">退货地址:</label>
  82. <div class="refund-view-item-content">{$detail.refund_address}</div>
  83. </div>
  84. <div class="refund-view-item">
  85. <label class="refund-view-item-label">是否入库:</label>
  86. <div class="refund-view-item-content">
  87. <input type="radio" name="is_refund_stock" value="0" title="否" lay-skin="primary" checked>
  88. <input type="radio" name="is_refund_stock" value="1" title="是" lay-skin="primary">
  89. </div>
  90. </div>
  91. </div>
  92. <input type="hidden" name="order_goods_id" value="{$detail.order_goods_id}"/>
  93. <button class="layui-btn" lay-submit id="submit_take_delivery" lay-filter="submit_take_delivery" style="display:none;">保存</button>
  94. </div>
  95. </div>
  96. </script>
  97. <!-- 转账退款接收 -->
  98. <script type="text/html" id="refund_transfer_html">
  99. <div style="padding:10px;">
  100. <div class="layui-form refund-transfer-html" id='refund_transfer'lay-filter="refund_transfer">
  101. <!--<div style="color: #666;">注意 : 当你确认转账后,退款将自动原路退回至买家付款账户。</div>-->
  102. <div class="refund-view-list">
  103. <div class="refund-view-item">
  104. <label class="refund-view-item-label">申请退款金额:</label>
  105. <div class="refund-view-item-content">
  106. <span class="refund-money">¥{{ d.order_goods_info.refund_apply_money }}</span>
  107. </div>
  108. </div>
  109. <div class="refund-view-item">
  110. <label class="refund-view-item-label">实际退款金额:</label>
  111. <div class="refund-view-item-content">
  112. {{# if(d.presale_order_info){ }}
  113. <span id="refund_real_money">
  114. {{ d.order_goods_info.refund_apply_money }}
  115. </span>
  116. <input type="hidden" name="refund_real_money" value="{{ d.order_goods_info.refund_apply_money }}" id="refund_real_money_1">
  117. {{# }else{ }}
  118. <input type="number" name="refund_real_money" class="layui-input" lay-verify="required|refundRealMoney" value="{{ d.order_goods_info.refund_apply_money }}">
  119. {{# } }}
  120. </div>
  121. </div>
  122. {{# if(d.order_goods_info.use_point > 0){ }}
  123. <div class="refund-view-item">
  124. <label class="refund-view-item-label">退还积分:</label>
  125. <div class="refund-view-item-content">
  126. <span class="refund-money">{{ d.order_goods_info.use_point }}</span>
  127. </div>
  128. </div>
  129. {{# } }}
  130. {{# if(Object.keys(d.coupon_info).length){ }}
  131. <div class="refund-view-item">
  132. <label class="refund-view-item-label">退还优惠券:</label>
  133. <div class="refund-view-item-content">
  134. {{ d.coupon_info.coupon_name }}
  135. {{# if(d.coupon_info.money > 0){ }}
  136. ¥{{ d.coupon_info.money }}
  137. {{# }else{ }}
  138. {{ d.coupon_info.discount }}折
  139. {{# } }}
  140. </div>
  141. </div>
  142. {{# } }}
  143. <div class="refund-view-item">
  144. <label class="refund-view-item-label">退款方式:</label>
  145. <div class="refund-view-item-content">
  146. <input type="radio" title="原路退款" checked name="refund_money_type" value="1">
  147. <input type="radio" title="线下退款" name="refund_money_type" value="2">
  148. <input type="radio" title="退款到余额" name="refund_money_type" value="3">
  149. <!-- {{# if(d.order_goods_info.refund_mode == 1 && d.order_info.pay_type != 'OFFLINE_PAY'){ }}-->
  150. <!-- <input type="radio" title="原路退款" checked name="refund_money_type" value="1">-->
  151. <!-- <input type="radio" title="线下退款" name="refund_money_type" value="2">-->
  152. <!-- <input type="radio" title="退款到余额" name="refund_money_type" value="3">-->
  153. <!-- {{# }else{ }}-->
  154. <!-- <input type="radio" title="线下退款" checked name="refund_money_type" value="2">-->
  155. <!-- <input type="radio" title="退款到余额" name="refund_money_type" value="3">-->
  156. <!-- {{# } }}-->
  157. <!-- <select name="refund_money_type">-->
  158. <!-- {{# if(d.order_goods_info.refund_mode == 1 && d.order_info.pay_type != 'OFFLINE_PAY'){ }}<option value="1">原路退款</option>{{# } }}-->
  159. <!-- <option value="2">线下退款</option>-->
  160. <!-- </select>-->
  161. </div>
  162. </div>
  163. {{# if(d.presale_order_info){ }}
  164. <div class="refund-view-item" style="margin-bottom: 6px;">
  165. <label class="refund-view-item-label" style="width: 45px; margin-bottom: 4px;">定金:</label>
  166. <div class="refund-view-item-content">
  167. <span class="refund-money">¥{{ d.presale_order_info.presale_deposit_money }}</span>
  168. </div>
  169. <label class="refund-view-item-label" style="width: 45px; margin: 0 0 4px 50px;">尾款:</label>
  170. <div class="refund-view-item-content">
  171. <span class="refund-money">¥{{ d.presale_order_info.final_money }}</span>
  172. </div>
  173. </div>
  174. <div class="refund-view-item">
  175. <label class="refund-view-item-label">是否退定金:</label>
  176. <div class="refund-view-item-content">
  177. <input type="radio" name="is_deposit_back" value="1" lay-filter="deliver_type" checked="checked" title="退定金">
  178. <input type="radio" name="is_deposit_back" value="2" lay-filter="deliver_type" title="不退定金">
  179. </div>
  180. </div>
  181. {{# } }}
  182. <div class="refund-view-item">
  183. <label class="refund-view-item-label align-top">退款说明:</label>
  184. <div class="refund-view-item-content">
  185. <textarea name="shop_refund_remark" class="layui-textarea len-long" maxlength="150"></textarea>
  186. </div>
  187. </div>
  188. </div>
  189. <input type="hidden" name="order_goods_id" value="{{ d.order_goods_info.order_goods_id }}"/>
  190. <button class="layui-btn" lay-submit id="submit_transfer" lay-filter="submit_transfer" style="display:none;">保存</button>
  191. </div>
  192. </div>
  193. </script>
  194. <script>
  195. var laytpl;
  196. var form,
  197. refundData;
  198. //渲染模板引擎
  199. layui.use(['laytpl','form'], function(){
  200. laytpl = layui.laytpl;
  201. form = layui.form;
  202. form.render();
  203. form.verify({
  204. refundRealMoney: function(value){
  205. var money = parseFloat(value);
  206. if (isNaN(money)) return '请输入正确的退款金额';
  207. if (money < 0) return '退款金额不能为负数';
  208. }
  209. });
  210. // 监听单选按钮
  211. form.on('radio(deliver_type)', function(data) {
  212. if (data.value == 1) {
  213. $('#refund_real_money').html(refundData.order_goods_info.refund_apply_money);
  214. $('#refund_real_money_1').val(refundData.order_goods_info.refund_apply_money);
  215. } else {
  216. $('#refund_real_money').html(refundData.presale_order_info.final_money);
  217. $('#refund_real_money_1').val(refundData.presale_order_info.final_money);
  218. }
  219. });
  220. });
  221. /**
  222. * 审核 申请维权
  223. */
  224. function orderRefundAgree(order_goods_id) {
  225. //获取模板
  226. var getTpl = $("#refund_agree_html").html();
  227. var data = [];
  228. //渲染模板
  229. laytpl(getTpl).render(data, function(html) {
  230. layer.open({
  231. type: 1,
  232. shadeClose: true,
  233. shade: 0.3,
  234. offset: 'auto',
  235. scrollbar: true,
  236. fixed: false,
  237. title: "售后维权处理",
  238. area: ['700px', 'auto'],
  239. btn: ['确认退款', '取消'],
  240. yes: function(index, layero){
  241. $("#submit_agree").click();
  242. },
  243. btn2: function(index, layero){
  244. layer.close(index);
  245. },
  246. content: html,
  247. cancel: function(){
  248. //右上角关闭回调
  249. //return false 开启该代码可禁止点击该按钮关闭
  250. },
  251. success: function(layero, index){
  252. var repeat_flag = false;//防重复标识
  253. form.render();
  254. form.on('submit(submit_agree)', function(data){
  255. if(repeat_flag)return;
  256. repeat_flag = true;
  257. $.ajax({
  258. url: ns.url("shop/orderrefund/agree"),
  259. type: "POST",
  260. dataType: "JSON",
  261. async: false,
  262. data: data.field,
  263. success: function (res) {
  264. layer.msg(res.message);
  265. if(res.code == 0){
  266. layer.closeAll();
  267. location.reload();
  268. }else{
  269. repeat_flag = false;
  270. }
  271. }
  272. });
  273. return false;
  274. });
  275. }
  276. });
  277. form.render();
  278. });
  279. }
  280. /**
  281. * 售后拒绝
  282. */
  283. function orderRefundRefuse(order_goods_id) {
  284. //获取模板
  285. var getTpl = $("#refund_refuse_html").html();
  286. var data = [];
  287. //渲染模板
  288. laytpl(getTpl).render(data, function(html) {
  289. layer.open({
  290. type: 1,
  291. shadeClose: true,
  292. shade: 0.3,
  293. offset: 'auto',
  294. scrollbar: true,
  295. fixed: false,
  296. title: "售后维权处理",
  297. area: ['700px', 'auto'],
  298. btn: ['确认拒绝', '取消'],
  299. yes: function(index, layero){
  300. $("#submit_refuse").click();
  301. },
  302. btn2: function(index, layero){
  303. layer.close(index);
  304. },
  305. content: html,
  306. cancel: function(){
  307. //右上角关闭回调
  308. //return false 开启该代码可禁止点击该按钮关闭
  309. },
  310. success: function(layero, index){
  311. var repeat_flag = false;//防重复标识
  312. form.render();
  313. form.on('submit(submit_refuse)', function(data){
  314. if(repeat_flag)return;
  315. repeat_flag = true;
  316. $.ajax({
  317. url: ns.url("shop/orderrefund/refuse"),
  318. type: "POST",
  319. dataType: "JSON",
  320. async: false,
  321. data: data.field,
  322. success: function (res) {
  323. layer.msg(res.message);
  324. if(res.code == 0){
  325. layer.closeAll();
  326. location.reload();
  327. }else{
  328. repeat_flag = false;
  329. }
  330. }
  331. });
  332. return false;
  333. });
  334. }
  335. });
  336. form.render();
  337. });
  338. }
  339. /**
  340. * 买家退货接收
  341. */
  342. function orderRefundTakeDelivery(order_goods_id) {
  343. //获取模板
  344. var getTpl = $("#refund_take_delivery_html").html();
  345. var data = [];
  346. //渲染模板
  347. laytpl(getTpl).render(data, function(html) {
  348. layer.open({
  349. type: 1,
  350. shadeClose: true,
  351. shade: 0.3,
  352. offset: 'auto',
  353. scrollbar: true,
  354. fixed: false,
  355. title: "售后维权处理",
  356. area: ['700px', 'auto'],
  357. btn: ['确认收到退货', '取消'],
  358. yes: function(index, layero){
  359. $("#submit_take_delivery").click();
  360. },
  361. btn2: function(index, layero){
  362. layer.close(index);
  363. },
  364. content: html,
  365. cancel: function(){
  366. //右上角关闭回调
  367. //return false 开启该代码可禁止点击该按钮关闭
  368. },
  369. success: function(layero, index){
  370. var repeat_flag = false;//防重复标识
  371. form.render();
  372. form.on('submit(submit_take_delivery)', function(data){
  373. if(repeat_flag)return;
  374. repeat_flag = true;
  375. $.ajax({
  376. url: ns.url("shop/orderrefund/receive"),
  377. type: "POST",
  378. dataType: "JSON",
  379. async: false,
  380. data: data.field,
  381. success: function (res) {
  382. layer.msg(res.message);
  383. if(res.code == 0){
  384. layer.closeAll();
  385. location.reload();
  386. }else{
  387. repeat_flag = false;
  388. }
  389. }
  390. });
  391. return false;
  392. });
  393. }
  394. });
  395. form.render();
  396. });
  397. }
  398. /**
  399. * 退款转账
  400. */
  401. function orderRefundTransfer(order_goods_id) {
  402. $.ajax({
  403. url: ns.url("shop/orderrefund/getOrderGoodsRefundInfo"),
  404. type: "POST",
  405. dataType: "JSON",
  406. async: false,
  407. data: {order_goods_id:order_goods_id},
  408. success: function (res) {
  409. if(res.code >= 0){
  410. //获取模板
  411. var getTpl = $("#refund_transfer_html").html();
  412. refundData = res.data;
  413. //渲染模板
  414. laytpl(getTpl).render(refundData, function(html) {
  415. layer.open({
  416. type: 1,
  417. shadeClose: true,
  418. shade: 0.3,
  419. offset: 'auto',
  420. scrollbar: true,
  421. fixed: false,
  422. title: "售后维权处理",
  423. area: ['700px', 'auto'],
  424. btn: ['确认转账', '取消'],
  425. yes: function(index, layero){
  426. $("#submit_transfer").click();
  427. },
  428. btn2: function(index, layero){
  429. layer.close(index);
  430. },
  431. content: html,
  432. cancel: function(){
  433. //右上角关闭回调
  434. //return false 开启该代码可禁止点击该按钮关闭
  435. },
  436. success: function(layero, index){
  437. var repeat_flag = false;//防重复标识
  438. form.render();
  439. form.on('submit(submit_transfer)', function(data){
  440. if(repeat_flag)return;
  441. repeat_flag = true;
  442. $.ajax({
  443. url: ns.url("shop/orderrefund/complete"),
  444. type: "POST",
  445. dataType: "JSON",
  446. async: false,
  447. data: data.field,
  448. success: function (res) {
  449. layer.msg(res.message);
  450. if(res.code == 0){
  451. layer.closeAll();
  452. location.reload();
  453. }else{
  454. repeat_flag = false;
  455. }
  456. }
  457. });
  458. return false;
  459. });
  460. }
  461. });
  462. form.render();
  463. });
  464. }else{
  465. layer.msg(res.message);
  466. }
  467. }
  468. });
  469. }
  470. /**
  471. * 关闭维权
  472. * @param order_goods_id
  473. */
  474. function orderRefundClose(order_goods_id){
  475. layer.confirm('确定要关闭本次维权吗?', function() {
  476. $.ajax({
  477. url: ns.url("shop/orderrefund/close"),
  478. data: { order_goods_id: order_goods_id },
  479. dataType: 'JSON',
  480. type: 'POST',
  481. success: function(res) {
  482. layer.msg(res.message);
  483. if (res.code == 0) {
  484. location.href = ns.url("shop/orderrefund/lists");
  485. }
  486. }
  487. });
  488. }, function () {
  489. layer.closeAll();
  490. });
  491. }
  492. </script>