Authored by 李靖

订单详情页改版

@@ -53,6 +53,7 @@ exports.orderDetailData = (req, res, next) => { @@ -53,6 +53,7 @@ exports.orderDetailData = (req, res, next) => {
53 pageFooter: true, 53 pageFooter: true,
54 orderDetail: orderDetail, 54 orderDetail: orderDetail,
55 refundReason: refundReason, 55 refundReason: refundReason,
  56 + width750: true,
56 localCss: true, 57 localCss: true,
57 }); 58 });
58 }).catch(next); 59 }).catch(next);
@@ -35,13 +35,9 @@ module.exports = class extends global.yoho.BaseModel { @@ -35,13 +35,9 @@ module.exports = class extends global.yoho.BaseModel {
35 _assignExpressInfo(showLogistics, order) { 35 _assignExpressInfo(showLogistics, order) {
36 let data = {}; 36 let data = {};
37 37
38 - if (showLogistics && order.expressCompany && order.expressCompany.caption) {  
39 - data = {  
40 - logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.orderCode}),  
41 - logisticsCompany: order.expressCompany.caption,  
42 - logisticsNum: order.expressNumber || ''  
43 - };  
44 - } 38 + data = {
  39 + logisticsUrl: helpers.urlFormat('/home/logistic', {order_code: order.orderCode})
  40 + };
45 41
46 return data; 42 return data;
47 } 43 }
@@ -59,6 +55,10 @@ module.exports = class extends global.yoho.BaseModel { @@ -59,6 +55,10 @@ module.exports = class extends global.yoho.BaseModel {
59 55
60 let attribute = _.parseInt(order.attribute); 56 let attribute = _.parseInt(order.attribute);
61 57
  58 + order = _.assign(order, {
  59 + orderCode: _.get(order, 'orderExtInfo.orderCode')
  60 + });
  61 +
62 if (attribute === 9 || attribute === 11) { 62 if (attribute === 9 || attribute === 11) {
63 /* 预售商品,不能进行任何操作 */ 63 /* 预售商品,不能进行任何操作 */
64 orderBtn.push({ 64 orderBtn.push({
@@ -68,9 +68,9 @@ module.exports = class extends global.yoho.BaseModel { @@ -68,9 +68,9 @@ module.exports = class extends global.yoho.BaseModel {
68 } 68 }
69 69
70 /* 倒计时时间 订单详情页倒计时不在同一级*/ 70 /* 倒计时时间 订单详情页倒计时不在同一级*/
71 - if (order.counterFlag === 'Y' && parseInt(order.payLefttime, 10)) { 71 + if (_.get(order, 'orderDetailInfo.ext.payLefttime') && parseInt(order.orderDetailInfo.ext.payLefttime, 10)) {
72 orderBtn.push({ 72 orderBtn.push({
73 - leftTimeTop: order.payLefttime * 1000 73 + leftTimeTop: order.orderDetailInfo.ext.payLefttime * 1000
74 }); 74 });
75 } 75 }
76 76
@@ -87,9 +87,9 @@ module.exports = class extends global.yoho.BaseModel { @@ -87,9 +87,9 @@ module.exports = class extends global.yoho.BaseModel {
87 link: helpers.urlFormat('/home/orders/addressModify', { 87 link: helpers.urlFormat('/home/orders/addressModify', {
88 relation: order.relateOrderCode === 'Y', // 判断是否有关联订单 88 relation: order.relateOrderCode === 'Y', // 判断是否有关联订单
89 orderCode: order.orderCode, 89 orderCode: order.orderCode,
90 - areaCode: _.get(order, 'deliveryAddress.areaCode', ''),  
91 - provinceAreaCode: order.isSupportChangeProvince !== 'Y' &&  
92 - _.get(order, 'deliveryAddress.provinceAreaCode', '') || ''// 如果不允许修改省 90 + areaCode: _.get(order, 'deliveryInfo.deliveryAddress.areaCode', ''),
  91 + provinceAreaCode: _.get(order, 'deliveryInfo.isSupportChangeProvince') !== 'Y' &&
  92 + _.get(order, 'deliveryInfo.deliveryAddress.provinceAreaCode', '') || ''// 如果不允许修改省
93 }) 93 })
94 }); 94 });
95 break; 95 break;
@@ -166,18 +166,31 @@ module.exports = class extends global.yoho.BaseModel { @@ -166,18 +166,31 @@ module.exports = class extends global.yoho.BaseModel {
166 let offlinestore; // 线下店订单 166 let offlinestore; // 线下店订单
167 let deliveryOffline; // 门店取货 167 let deliveryOffline; // 门店取货
168 168
169 - orderDetail = _.assign(orderDetail, status); 169 + orderDetail = _.assign(orderDetail, status, {orderCode: orderCode});
170 170
171 - if (parseInt(orderDetail.attribute, 10) === 3) { 171 + if (parseInt(_.get(orderDetail, 'orderExtInfo.attribute'), 10) === 3) {
172 orderDetail = _.assign(orderDetail, { 172 orderDetail = _.assign(orderDetail, {
173 isVirtual: true, 173 isVirtual: true,
174 - mobile: result.data.mobile 174 + mobile: _.get(orderDetail, 'deliveryInfo.mobile')
175 }); 175 });
176 } 176 }
177 177
178 - orderDetail = _.assign(orderDetail, {  
179 - addressAll: orderDetail.area + orderDetail.address  
180 - }); 178 + if (orderDetail.deliveryInfo) {
  179 + orderDetail = _.assign(orderDetail, {
  180 + addressAll: orderDetail.deliveryInfo.area + orderDetail.deliveryInfo.address
  181 + });
  182 + }
  183 +
  184 + if (orderDetail.links) {
  185 + _.forEach(orderDetail.links, (val) => {
  186 + if (val === 'getExpress') {
  187 + orderDetail = _.assign(orderDetail, {
  188 + expressUrl: helpers.urlFormat('/home/logistic', {order_code: orderCode})
  189 + });
  190 + return;
  191 + }
  192 + });
  193 + }
181 194
182 _.forEach(orderDetail.orderGoods, function(data) { 195 _.forEach(orderDetail.orderGoods, function(data) {
183 let obj = {}; 196 let obj = {};
@@ -333,8 +346,8 @@ module.exports = class extends global.yoho.BaseModel { @@ -333,8 +346,8 @@ module.exports = class extends global.yoho.BaseModel {
333 method: 'app.SpaceOrders.close', 346 method: 'app.SpaceOrders.close',
334 uid: uid, 347 uid: uid,
335 order_code: orderCode, 348 order_code: orderCode,
336 - reasonId: reasonId,  
337 - reasons: reason, 349 + reason_id: reasonId,
  350 + reason: reason,
338 gender: gender, 351 gender: gender,
339 yh_channel: channel 352 yh_channel: channel
340 } 353 }
@@ -3,6 +3,21 @@ @@ -3,6 +3,21 @@
3 3
4 {{> fraud}} 4 {{> fraud}}
5 5
  6 + <a class="base-status clearfix" {{#if expressUrl}}href="{{expressUrl}}"{{/if}}>
  7 + {{#if orderDetailInfo}}
  8 + {{#orderDetailInfo}}
  9 + <div class="status-c">
  10 + <div class="status-title">{{value}}</div>
  11 + <div class="status-body">{{ext.desc}}</div>
  12 + <div class="status-time">{{ext.pay_expire}}</div>
  13 + </div>
  14 + {{#if ../expressUrl}}
  15 + <span class="iconfont">&#xe614;</span>
  16 + {{/if}}
  17 + {{/orderDetailInfo}}
  18 + {{/if}}
  19 + </a>
  20 +
6 <div id="order-detail" data-id="{{orderCode}}"> 21 <div id="order-detail" data-id="{{orderCode}}">
7 {{#unless deliveryOffline}} 22 {{#unless deliveryOffline}}
8 {{#if isVirtual}} 23 {{#if isVirtual}}
@@ -17,8 +32,8 @@ @@ -17,8 +32,8 @@
17 <span class="iconfont">&#xe637;</span> 32 <span class="iconfont">&#xe637;</span>
18 <div class="beside-icon"> 33 <div class="beside-icon">
19 <p class="name-phone"> 34 <p class="name-phone">
20 - {{userName}}  
21 - <span>{{mobile}}</span> 35 + {{deliveryInfo.userName}}
  36 + <span>{{deliveryInfo.mobile}}</span>
22 </p> 37 </p>
23 <p class="address"> 38 <p class="address">
24 {{addressAll}} 39 {{addressAll}}
@@ -26,52 +41,7 @@ @@ -26,52 +41,7 @@
26 </div> 41 </div>
27 </section> 42 </section>
28 {{/if}} 43 {{/if}}
29 - <div class="range"></div>  
30 {{/unless}} 44 {{/unless}}
31 - <section class="order-status block">  
32 - <div class="status sub">  
33 - <span class="iconfont">&#xe632;</span>  
34 -  
35 - <p class="beside-icon sub-content">  
36 - <span class="sub-title">订单编号:{{orderCode}}</span>  
37 - <span >订单状态:{{statusStr}}</span>  
38 - <span>下单时间:<b class="createTime">{{createTime}}</b></span>  
39 - {{#if paymentName}}  
40 - <span>支付方式:{{paymentName}}</span>  
41 - {{/if}}  
42 - {{#if offlinestore}}  
43 - <span>下单门店: {{offlinestore}}</span>  
44 - {{/if}}  
45 - </p>  
46 - <a href="{{serviceUrl}}" target="_blank" class="iconfont icon-right">&#xe63c;</a>  
47 - </div>  
48 - {{# orderBtn}}  
49 - {{#if getExpress}}  
50 - <a class="logistics sub" href="{{logisticsUrl}}">  
51 - <span class="iconfont">&#xe630;</span>  
52 - <p class="beside-icon sub-content">  
53 - <span class="sub-title">物流信息</span>  
54 - <span>物流公司:{{logisticsCompany}}</span>  
55 - {{#if logisticsNum}}  
56 - <span>快递单号:{{logisticsNum}}</span>  
57 - {{/if}}  
58 - </p>  
59 - <span class="iconfont icon-right">&#xe614;</span>  
60 - </a>  
61 - {{/if}}  
62 - {{/orderBtn}}  
63 -  
64 - {{#if deliveryOffline}}  
65 - <div class="offline-delivery">  
66 - <span class="delivery-img"></span>  
67 - <p class="beside-left">  
68 -  
69 - <span class="delivery-title">配送信息</span>  
70 - <span class="delivery-content">配送方式:门店取货</span>  
71 - </p>  
72 - </div>  
73 - {{/if}}  
74 - </section>  
75 45
76 <section class="goods block"> 46 <section class="goods block">
77 {{> jit-more}} 47 {{> jit-more}}
@@ -81,17 +51,23 @@ @@ -81,17 +51,23 @@
81 {{/ goods}} 51 {{/ goods}}
82 </section> 52 </section>
83 53
  54 + {{#orderAmountInfo}}
84 <ul class="cost block"> 55 <ul class="cost block">
85 {{#each promotionFormulas}} 56 {{#each promotionFormulas}}
86 <li> {{promotion}}: 57 <li> {{promotion}}:
87 <span>{{promotionAmount}}</span> 58 <span>{{promotionAmount}}</span>
88 </li> 59 </li>
89 {{/each}} 60 {{/each}}
  61 + </ul>
  62 + <ul class="real-amount">
  63 + {{#realAmount}}
90 <li> 64 <li>
91 - {{#if isPayonline}}实付金额{{else}}应付金额{{/if}}  
92 - <span>{{amount}}</span> 65 + {{promotion}}:
  66 + <span>{{promotionAmount}}</span>
93 </li> 67 </li>
  68 + {{/realAmount}}
94 </ul> 69 </ul>
  70 + {{/orderAmountInfo}}
95 {{#if yohoGiveCoin}} 71 {{#if yohoGiveCoin}}
96 <p class="dollar"> 72 <p class="dollar">
97 <span class="bg-dollar"></span> 73 <span class="bg-dollar"></span>
@@ -140,6 +116,16 @@ @@ -140,6 +116,16 @@
140 {{!-- 申请售后退换货组件 --}} 116 {{!-- 申请售后退换货组件 --}}
141 {{> order-detail/refund-change-mask}} 117 {{> order-detail/refund-change-mask}}
142 118
  119 + {{#if orderBasicInfo}}
  120 +
  121 + <div class="info-table">
  122 + {{#orderBasicInfo}}
  123 + <div class="table-item">{{key}}{{value}}</div>
  124 + {{/orderBasicInfo}}
  125 + <a href="{{serviceUrl}}" target="_blank" class="iconfont">&#xe63c;</a>
  126 + </div>
  127 + {{/if}}
  128 +
143 {{/ orderDetail}} 129 {{/ orderDetail}}
144 130
145 {{!-- 申请退款原因 --}} 131 {{!-- 申请退款原因 --}}
@@ -42,7 +42,7 @@ const domains = { @@ -42,7 +42,7 @@ const domains = {
42 42
43 module.exports = { 43 module.exports = {
44 app: 'h5', 44 app: 'h5',
45 - appVersion: '6.4.0', // 调用api的版本 45 + appVersion: '6.5.1', // 调用api的版本
46 appName: 'yohobuywap-node', 46 appName: 'yohobuywap-node',
47 port: 6001, 47 port: 6001,
48 siteUrl: '//m.yohobuy.com', 48 siteUrl: '//m.yohobuy.com',
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 background: #fff; 2 background: #fff;
3 display: block; 3 display: block;
4 padding: 20px 30px; 4 padding: 20px 30px;
5 - margin-bottom: 30px; 5 + margin-bottom: 20px;
6 border-bottom: 1px solid #e0e0e0; 6 border-bottom: 1px solid #e0e0e0;
7 7
8 .tip-title { 8 .tip-title {
@@ -113,14 +113,6 @@ @@ -113,14 +113,6 @@
113 line-height: 1.5; 113 line-height: 1.5;
114 } 114 }
115 115
116 - .range {  
117 - background-image: resolve("home/rang.png");  
118 - background-size: cover;  
119 - width: 640px;  
120 - height: 20px;  
121 - background-color: #fff;  
122 - }  
123 -  
124 .beside-icon { 116 .beside-icon {
125 margin-left: 60px; 117 margin-left: 60px;
126 } 118 }
@@ -171,27 +163,25 @@ @@ -171,27 +163,25 @@
171 span { 163 span {
172 float: right; 164 float: right;
173 } 165 }
174 -  
175 - &:last-child span {  
176 - color: #f00;  
177 - }  
178 } 166 }
179 } 167 }
180 168
181 .dollar { 169 .dollar {
  170 + margin: 20px 0;
182 background: #fff; 171 background: #fff;
183 - padding: 0.5rem 0.75rem;  
184 - height: 1.5rem;  
185 - line-height: 0.5rem; 172 + padding: 0 30px;
  173 + height: 88px;
  174 + line-height: 88px;
186 font-size: 0.7rem; 175 font-size: 0.7rem;
187 176
188 .bg-dollar { 177 .bg-dollar {
189 display: inline-block; 178 display: inline-block;
190 - width: 0.6rem;  
191 - height: 0.6rem;  
192 - background: url("/home/yoho-coin/dollar.png") center center; 179 + width: 36px;
  180 + height: 36px;
  181 + background: resolve("home/yoho-coin/yoho_icon.png");
193 background-size: 100% 100%; 182 background-size: 100% 100%;
194 - vertical-align: middle; 183 + vertical-align: sub;
  184 + margin-right: 5px;
195 } 185 }
196 } 186 }
197 187
@@ -2,3 +2,4 @@ @@ -2,3 +2,4 @@
2 @import "order"; 2 @import "order";
3 @import "order-detail"; 3 @import "order-detail";
4 @import "fraud"; 4 @import "fraud";
  5 +@import "orderDetail/order-detail-new";
  1 +.base-status {
  2 + background-color: #fff;
  3 + padding: 30px;
  4 + margin-bottom: 20px;
  5 + display: flex;
  6 + align-items: center;
  7 +
  8 + .status-c {
  9 + float: left;
  10 + width: 640px;
  11 + }
  12 +
  13 + .status-title {
  14 + font-size: 34px;
  15 + color: #444;
  16 + line-height: 48px;
  17 + margin-bottom: 10px;
  18 + }
  19 +
  20 + .status-body {
  21 + font-size: 28px;
  22 + color: #b0b0b0;
  23 + line-height: 40px;
  24 + margin-bottom: 5px;
  25 + }
  26 +
  27 + .status-time {
  28 + font-size: 24px;
  29 + color: #b0b0b0;
  30 + line-height: 34px;
  31 + }
  32 +
  33 + .iconfont {
  34 + margin-left: 30px;
  35 + width: 20px;
  36 + float: right;
  37 + color: #e0e0e0;
  38 + font-size: 32px;
  39 + }
  40 +}
  41 +
  42 +.info-table {
  43 + margin: 20px 0;
  44 + padding: 30px 0 30px 30px;
  45 + background-color: #fff;
  46 + position: relative;
  47 +
  48 + .table-item {
  49 + line-height: 50px;
  50 + font-size: 28px;
  51 + color: #444;
  52 + }
  53 +
  54 + .iconfont {
  55 + position: absolute;
  56 + top: 30px;
  57 + right: 30px;
  58 + font-size: 40px;
  59 + }
  60 +}
  61 +
  62 +.real-amount {
  63 + background-color: #fff;
  64 +
  65 + li {
  66 + margin-left: 30px;
  67 + padding-right: 30px;
  68 + font-size: 28px;
  69 + border-top: solid 1px #e0e0e0;
  70 + line-height: 80px;
  71 +
  72 + span {
  73 + float: right;
  74 + }
  75 +
  76 + &:last-child span {
  77 + color: #f00;
  78 + }
  79 + }
  80 +}