Authored by 王洪广

删除订单前端相关操作

@@ -17,7 +17,14 @@ @@ -17,7 +17,14 @@
17 <div class="order" data-id="{{orderNum}}"> 17 <div class="order" data-id="{{orderNum}}">
18 <p class="order-title"> 18 <p class="order-title">
19 订单编号:{{orderNum}} 19 订单编号:{{orderNum}}
20 - <span class="right">下单时间:{{orderTime}}</span> 20 + <span class="order-time">下单时间:{{orderTime}}</span>
  21 + {{#if hasDelete}}
  22 + <a class="right order-delete" href="javascript:;" data-deleted="true">彻底删除</a>
  23 + {{^}}
  24 + {{#if canDelete}}
  25 + <a class="right order-delete" href="javascript:;">删除订单</a>
  26 + {{/if}}
  27 + {{/if}}
21 </p> 28 </p>
22 <div class="order-wrap"> 29 <div class="order-wrap">
23 <ul> 30 <ul>
@@ -125,6 +132,9 @@ @@ -125,6 +132,9 @@
125 {{/if}} 132 {{/if}}
126 {{/if}} 133 {{/if}}
127 {{/if}} 134 {{/if}}
  135 + {{#if hasDelete}}
  136 + <span class="op-item restore-order">还原订单</span>
  137 + {{/if}}
128 {{/ operation}} 138 {{/ operation}}
129 </div> 139 </div>
130 </div> 140 </div>
@@ -132,4 +142,5 @@ @@ -132,4 +142,5 @@
132 {{/ orders}} 142 {{/ orders}}
133 {{/if}} 143 {{/if}}
134 </div> 144 </div>
135 -{{> home/order-cancel-tpl}}  
  145 +{{> home/order-cancel-tpl}}
  146 +{{> home/order-delete-confirm}}
1 -<ul class="tabs clearfix">  
2 - {{# tabs}} 1 +<div class="tabs-wrapper">
  2 + <ul class="tabs clearfix">
  3 + {{# tabs}}
3 <li {{#if active}}class="active"{{/if}}> 4 <li {{#if active}}class="active"{{/if}}>
4 - <a href="{{url}}">{{name}}</a> 5 + <a href="{{url}}">{{name}}</a>
5 </li> 6 </li>
6 - {{/ tabs}}  
7 -</ul>  
  7 + {{/ tabs}}
  8 + </ul>
  9 + <div class="recycle-bin"><a href=""><i></i>订单回收站</a></div>
  10 +</div>
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 */ 5 */
6 6
7 var $ = require('yoho.jquery'); 7 var $ = require('yoho.jquery');
  8 +var Handlebars = require('yoho.handlebars');
8 9
9 var dialog = require('../common/dialog'); 10 var dialog = require('../common/dialog');
10 11
@@ -12,7 +13,16 @@ var Dialog = dialog.Dialog; @@ -12,7 +13,16 @@ var Dialog = dialog.Dialog;
12 var Confirm = dialog.Confirm; 13 var Confirm = dialog.Confirm;
13 14
14 var $tpl = $('#cancel-dialog-tpl'); 15 var $tpl = $('#cancel-dialog-tpl');
15 - 16 +var deleteDialog = '<div class="order-delete-confirm">' +
  17 + '<div class="header">' +
  18 + '<p>删除订单</p>' +
  19 + '<a href="javascript:;" title="关闭"></a>' +
  20 + '</div>' +
  21 + '<div class="body">' +
  22 + '<p class="confirm-tip"><i class="icon-doubt"></i>{{deleteMessage}}</p>' +
  23 + '<p class="delete-tip">{{deleteTip}}</p>' +
  24 + '</div>' +
  25 + '</div>';
16 var html = $tpl.html(); 26 var html = $tpl.html();
17 27
18 var active; 28 var active;
@@ -25,7 +35,7 @@ function cancelFactory(id) { @@ -25,7 +35,7 @@ function cancelFactory(id) {
25 id: 'cancel-sure', 35 id: 'cancel-sure',
26 name: '确定并取消订单', 36 name: '确定并取消订单',
27 btnClass: ['cancel-sure'], 37 btnClass: ['cancel-sure'],
28 - cb: function() { 38 + cb: function () {
29 var $checked = $('.cancel-dialog :checked'); 39 var $checked = $('.cancel-dialog :checked');
30 var $tip = $('.cancel-dialog .cancel-tip'); 40 var $tip = $('.cancel-dialog .cancel-tip');
31 41
@@ -41,7 +51,7 @@ function cancelFactory(id) { @@ -41,7 +51,7 @@ function cancelFactory(id) {
41 orderCode: id, 51 orderCode: id,
42 reason: $checked.val() 52 reason: $checked.val()
43 } 53 }
44 - }).then(function(data) { 54 + }).then(function (data) {
45 if (data.code === 200) { 55 if (data.code === 200) {
46 active.close(); 56 active.close();
47 history.go(0); 57 history.go(0);
@@ -55,7 +65,7 @@ function cancelFactory(id) { @@ -55,7 +65,7 @@ function cancelFactory(id) {
55 id: 'cancel-no', 65 id: 'cancel-no',
56 name: '取消', 66 name: '取消',
57 btnClass: ['cancel-no'], 67 btnClass: ['cancel-no'],
58 - cb: function() { 68 + cb: function () {
59 active.close(); 69 active.close();
60 } 70 }
61 } 71 }
@@ -70,34 +80,34 @@ function cancelFactory(id) { @@ -70,34 +80,34 @@ function cancelFactory(id) {
70 $tpl.remove(); 80 $tpl.remove();
71 81
72 //查看物流 82 //查看物流
73 -$('.check-logistics').click(function() { 83 +$('.check-logistics').click(function () {
74 $(this).siblings('.logistics').removeClass('hide'); 84 $(this).siblings('.logistics').removeClass('hide');
75 }); 85 });
76 86
77 -$('.close-logistics').click(function() { 87 +$('.close-logistics').click(function () {
78 $(this).closest('.logistics').addClass('hide'); 88 $(this).closest('.logistics').addClass('hide');
79 }); 89 });
80 90
81 91
82 //订单列表&订单详情【取消订单和确认收货】 92 //订单列表&订单详情【取消订单和确认收货】
83 -$('.me-orders, .order-detail').on('click', '.cancel-order', function(e) { 93 +$('.me-orders, .order-detail').on('click', '.cancel-order', function (e) {
84 94
85 //取消订单 95 //取消订单
86 active = cancelFactory($(this).closest('.order, .order-detail').data('id')); 96 active = cancelFactory($(this).closest('.order, .order-detail').data('id'));
87 active.show(); 97 active.show();
88 -}).on('click', '.confirm-received', function(e) { 98 +}).on('click', '.confirm-received', function (e) {
89 var id = $(this).closest('.order, .order-detail').data('id'); 99 var id = $(this).closest('.order, .order-detail').data('id');
90 100
91 //确认收货 101 //确认收货
92 active = new Confirm({ 102 active = new Confirm({
93 - cb: function() { 103 + cb: function () {
94 $.ajax({ 104 $.ajax({
95 type: 'POST', 105 type: 'POST',
96 url: '/home/orders/confirmorder', 106 url: '/home/orders/confirmorder',
97 data: { 107 data: {
98 orderCode: id 108 orderCode: id
99 } 109 }
100 - }).then(function(data) { 110 + }).then(function (data) {
101 if (data.code === 200) { 111 if (data.code === 200) {
102 active.close(); 112 active.close();
103 history.go(0); 113 history.go(0);
@@ -107,4 +117,56 @@ $('.me-orders, .order-detail').on('click', '.cancel-order', function(e) { @@ -107,4 +117,56 @@ $('.me-orders, .order-detail').on('click', '.cancel-order', function(e) {
107 content: '您确定要确认收货吗?' 117 content: '您确定要确认收货吗?'
108 }); 118 });
109 active.show(); 119 active.show();
110 -});  
  120 +}).on('click', '.order-delete', function () {
  121 + var id = $(this).closest('.order, .order-detail').data('id');
  122 + active = deleteOrder(id, this);
  123 + active.show();
  124 +});
  125 +function deleteOrder(id, obj) {
  126 + // 是否为彻底删除
  127 + var isFullyDelete = $(obj).data("deleted") || false;
  128 + var $order = $(obj).parents("order");
  129 + var deleteMessage = isFullyDelete ? "您确定要永久删除订单吗?" : "您确定要删除订单吗?";
  130 + var deleteTip = isFullyDelete ? "永久删除后,订单将无法恢复,您将无法对该订单的商品申请售后服务,请谨慎操作。" : "删除后,您可以在订单回收站找回该订单,也可以做永久删除。";
  131 + var insert = Handlebars.compile(deleteDialog);
  132 + var html = insert({deleteMessage: deleteMessage, deleteTip: deleteTip})
  133 + var options = {
  134 + mask: false,
  135 + btns: [
  136 + {
  137 + id: 'delete-sure',
  138 + name: '确定',
  139 + btnClass: ['delete-sure'],
  140 + cb: function () {
  141 + $.ajax({
  142 + type: 'POST',
  143 + url: '/home/orders/deleteOrder',
  144 + data: {
  145 + orderCode: id,
  146 + isFullyDelete: isFullyDelete,
  147 + }
  148 + }).then(function (data) {
  149 + if (data.code === 200) {
  150 + active.close();
  151 + $order.addClass("deleted-easeout");//执行动画后移除元素
  152 + setTimeout(function(){
  153 + $order.remove();
  154 + },2e2)
  155 + }
  156 + });
  157 + }
  158 + },
  159 + {
  160 + id: 'delete-no',
  161 + name: '取消',
  162 + btnClass: ['delete-no'],
  163 + cb: function () {
  164 + active.close();
  165 + }
  166 + }
  167 + ],
  168 + content: html,
  169 + className: 'delete-dialog',
  170 + };
  171 + return new Dialog(options);
  172 +}
@@ -213,10 +213,12 @@ @@ -213,10 +213,12 @@
213 text-align: center; 213 text-align: center;
214 overflow: hidden; 214 overflow: hidden;
215 } 215 }
216 - 216 + .tabs-wrapper{
  217 + position: relative;
  218 + margin:10px;
  219 + }
217 .tabs { 220 .tabs {
218 height: 25px; 221 height: 25px;
219 - margin: 10px;  
220 background: resolve(/home/tab.png) repeat-x 0px -25px; 222 background: resolve(/home/tab.png) repeat-x 0px -25px;
221 font-size: 12px; 223 font-size: 12px;
222 line-height: 25px; 224 line-height: 25px;
@@ -244,6 +246,24 @@ @@ -244,6 +246,24 @@
244 height: 100%; 246 height: 100%;
245 } 247 }
246 } 248 }
  249 + .recycle-bin{
  250 + position: absolute;
  251 + right:0;
  252 + top:0;
  253 + height:25px;
  254 + line-height: 25px;
  255 + i{
  256 + display:inline-block;
  257 + width: 15px;
  258 + height:17px;
  259 + vertical-align: text-bottom;
  260 + background: resolve(/home/recyclebin.png) no-repeat 0 0;
  261 + margin-right:5px;
  262 + }
  263 + a{
  264 + font-size:12px;
  265 + }
  266 + }
247 267
248 .table-header { 268 .table-header {
249 height: 30px; 269 height: 30px;
@@ -32,6 +32,13 @@ @@ -32,6 +32,13 @@
32 background: #efefef; 32 background: #efefef;
33 padding: 0 5px; 33 padding: 0 5px;
34 border-bottom: 1px solid #e6e6e6; 34 border-bottom: 1px solid #e6e6e6;
  35 + .order-time{
  36 + margin-left: 25px;
  37 + }
  38 + .order-delete{
  39 + margin-right:15px;
  40 + color: #999;
  41 + }
35 } 42 }
36 43
37 .order { 44 .order {
@@ -344,4 +351,59 @@ @@ -344,4 +351,59 @@
344 width: 66px; 351 width: 66px;
345 } 352 }
346 } 353 }
  354 +}
  355 +
  356 +/* 删除订单对话框 */
  357 +.delete-dialog{
  358 + padding: 0 0 20px 0;
  359 + border:1px solid #000;
  360 + background:#fff;
  361 + .header{
  362 + padding:0 10px;
  363 + height:32px;
  364 + background: #444;
  365 + line-height:32px;
  366 + color:#fff;
  367 + text-align: left;
  368 + }
  369 + .close{
  370 + color:#fff;
  371 + .iconfont{
  372 + font-size: 20px;
  373 + font-weight:700;
  374 + }
  375 + }
  376 + .order-delete-confirm{
  377 + width:400px;
  378 + line-height:1.5;
  379 + }
  380 + .body{
  381 + padding:20px;
  382 + margin-top: 30px;
  383 + }
  384 + .confirm-tip{
  385 + font-size:18px;
  386 + word-wrap:break-word;
  387 + i{
  388 + display:inline-block;
  389 + width: 30px;
  390 + height:30px;
  391 + margin-right: 12px;
  392 + background: resolve(/home/doubt.png) no-repeat;
  393 + vertical-align:middle;
  394 + }
  395 + }
  396 + .delete-tip{
  397 + padding-left:20px;
  398 + margin:15px 0;
  399 + font-size:13px;
  400 + word-wrap:break-word;
  401 + }
  402 + .delete-sure{
  403 + background:#efefef;
  404 + }
  405 + .delete-no{
  406 + margin-left:60px;
  407 + border-color: #cdcdcd;
  408 + }
347 } 409 }