Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录
切换导航
S
shop-new
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
王天霸
shop-new
Commits
d66dffda
提交
d66dffda
authored
9月 06, 2021
作者:
huaxinzhu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
云仓订单接口对接80%
上级
b9e75490
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
750 行增加
和
312 行删除
+750
-312
order.js
src/api/module/order.js
+55
-9
orderDetail.vue
src/views/system/order/components/orderDetail.vue
+381
-177
index.vue
src/views/system/order/index.vue
+314
-126
没有找到文件。
src/api/module/order.js
浏览文件 @
d66dffda
import
request
from
'@/utils/request'
import
request
from
'@/utils/request'
// 查询 订单 四种状态和总数量
export
function
getOrderTabData
(
query
)
{
return
request
({
url
:
'/system/order/statusCount'
,
method
:
'get'
,
params
:
query
})
}
// 查询order列表
// 查询order列表
export
function
listOrder
(
query
)
{
export
function
listOrder
(
query
)
{
return
request
({
return
request
({
url
:
'/system/order/getOrderList'
,
url
:
'/system/order/getOrder
Seller
List'
,
method
:
'get'
,
method
:
'get'
,
params
:
query
params
:
query
})
})
...
@@ -12,25 +21,25 @@ export function listOrder(query) {
...
@@ -12,25 +21,25 @@ export function listOrder(query) {
// 查询order详细
// 查询order详细
export
function
orderInfo
(
query
)
{
export
function
orderInfo
(
query
)
{
return
request
({
return
request
({
url
:
'/system/order/getOrderInfo'
,
url
:
'/system/order/getOrder
SellerList
Info'
,
method
:
'get'
,
method
:
'get'
,
params
:
query
params
:
query
})
})
}
}
// order发货
// order发货
export
function
sendOrder
(
data
)
{
/*
export function sendOrder(data) {
return request({
return request({
url: '/system/order/sendOrde',
url: '/system/order/sendOrde',
method: 'post',
method: 'post',
data: data
data: data
})
})
}
}
*/
//查看物流
//查看物流
export
function
expressInfoNew
(
params
){
export
function
expressInfoNew
(
params
){
return
request
({
return
request
({
url
:
'/system/order/get
ExpressInfoNew
'
,
url
:
'/system/order/get
OrderInfoDeliver
'
,
method
:
'get'
,
method
:
'get'
,
params
params
})
})
...
@@ -39,7 +48,7 @@ export function expressInfoNew(params){
...
@@ -39,7 +48,7 @@ export function expressInfoNew(params){
// 修改订单收货信息
// 修改订单收货信息
export
function
orderInfoEdit
(
data
){
export
function
orderInfoEdit
(
data
){
return
request
({
return
request
({
url
:
'/system/order/order
InfoEdit
'
,
url
:
'/system/order/order
UpdateAddress
'
,
method
:
'post'
,
method
:
'post'
,
data
:
data
data
:
data
})
})
...
@@ -48,7 +57,7 @@ export function orderInfoEdit(data){
...
@@ -48,7 +57,7 @@ export function orderInfoEdit(data){
//订单备注
//订单备注
export
function
remarkOrder
(
data
){
export
function
remarkOrder
(
data
){
return
request
({
return
request
({
url
:
'/system/order/
remarkOrder
'
,
url
:
'/system/order/
orderListRemark
'
,
method
:
'post'
,
method
:
'post'
,
data
:
data
data
:
data
})
})
...
@@ -90,14 +99,22 @@ export function delOrder(ids) {
...
@@ -90,14 +99,22 @@ export function delOrder(ids) {
})
})
}
}
// 订单导出
// 订单导出
-按搜索条件,全部导出
export
function
exportOrder
(
query
)
{
export
function
exportOrder
(
query
)
{
return
request
({
return
request
({
url
:
'/system/order/
batchDeliveryGoodsOu
t'
,
url
:
'/system/order/
unSendOrderGoodsExpor
t'
,
method
:
'get'
,
method
:
'get'
,
params
:
query
params
:
query
})
})
}
}
// old
// export function exportOrder(query) {
// return request({
// url: '/system/order/getOrderListExport',
// method: 'get',
// params: query
// })
// }
// 批量发货
// 批量发货
export
function
deliveryOrder
(
data
)
{
export
function
deliveryOrder
(
data
)
{
...
@@ -107,3 +124,32 @@ export function deliveryOrder(data) {
...
@@ -107,3 +124,32 @@ export function deliveryOrder(data) {
data
:
data
data
:
data
})
})
}
}
// 订单 右上角的 批量发货接口 /system/order/batchDeliveryGoodsOut 老接口
// 批量 去发货
export
function
deliveryOrderOne
(
data
)
{
return
request
({
url
:
'/system/order/orderListSend'
,
method
:
'post'
,
data
:
data
})
}
// 批量 补单发货
export
function
deliveryOrderTwo
(
data
)
{
return
request
({
url
:
'/system/order/orderListAllSend'
,
method
:
'post'
,
data
:
data
})
}
//
// // 单商品订单 补单发货
// export function toReissueOrderData(data) {
// return request({
// url: '/system/order/orderListAgainSend',
// method: 'post',
// data: data
// })
// }
src/views/system/order/components/orderDetail.vue
浏览文件 @
d66dffda
...
@@ -21,19 +21,19 @@
...
@@ -21,19 +21,19 @@
</el-row>
</el-row>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
下单时间
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
下单时间
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
formatter
(
orderDetail
.
addtime
)
:
''
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
formatter
(
orderDetail
.
created_time
)
:
''
}}
</el-col>
</el-row>
</el-row>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
商品数量
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
商品数量
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsNum
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
goods_total
:
''
}}
</el-col>
</el-row>
</el-row>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
商品总价
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
商品总价
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsPrice
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
goods_price
/
100
:
''
}}
</el-col>
</el-row>
</el-row>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
运费
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
运费
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
goodsFreight
}}
元
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
dispatch_price
/
100
:
''
}}
</el-col>
</el-row>
</el-row>
</div>
</div>
</div>
</div>
...
@@ -43,18 +43,18 @@
...
@@ -43,18 +43,18 @@
<img
class=
"icon"
src=
"@/assets/image/order/icon2.png"
alt=
""
>
<img
class=
"icon"
src=
"@/assets/image/order/icon2.png"
alt=
""
>
<span>
买家信息
</span>
<span>
买家信息
</span>
</div>
</div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"modifyinfo"
:disabled=
"orderDetail && orderDetail.status >
2"
>
修改收货
信息
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"modifyinfo"
:disabled=
"orderDetail && orderDetail.status >
1"
>
修改买家
信息
</el-button>
</div>
</div>
<div>
<div>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
收货人姓名
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
收货人姓名
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
shipping_name
:
''
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
real_name
:
''
}}
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
联系电话
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
联系电话
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
phone
:
''
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
mobile
:
''
}}
</el-col>
</el-row>
</el-row>
<el-row
class=
"row-title"
>
<el-row
class=
"row-title"
>
<el-col
:span=
"3"
class=
"text-r"
>
收货地址
</el-col>
<el-col
:span=
"3"
class=
"text-r"
>
收货地址
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
provi
nce
+
orderDetail
.
city
+
orderDetail
.
county
+
orderDetail
.
town
+
orderDetail
.
address
:
''
}}
</el-col>
<el-col
:span=
"6"
class=
"text-l"
>
{{
orderDetail
?
orderDetail
.
provi
ce
+
orderDetail
.
city
+
orderDetail
.
district
+
orderDetail
.
street
+
orderDetail
.
address
:
''
}}
</el-col>
<el-col
:span=
"3"
class=
"text-r"
></el-col>
<el-col
:span=
"3"
class=
"text-r"
></el-col>
<el-col
:span=
"6"
class=
"text-l"
></el-col>
<el-col
:span=
"6"
class=
"text-l"
></el-col>
</el-row>
</el-row>
...
@@ -67,52 +67,52 @@
...
@@ -67,52 +67,52 @@
<span>
商品信息
</span>
<span>
商品信息
</span>
</div>
</div>
<div>
<div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"goShipping(1)"
:disabled=
"orderDetail && orderDetail.status > 1"
>
去发货
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"goShipping(1)"
>
去发货
</el-button>
<el-button
size=
"mini"
@
click=
"goShipping(2)"
:disabled=
"orderDetail && orderDetail.status != 2"
>
补单发货
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"goShipping(2)"
>
补单发货
</el-button>
</div>
</div>
</div>
</div>
<el-table
:data=
"orderDetail ? orderDetail.item : []"
style=
"border: 1px solid #eee;"
@
selection-change=
"handleSelectionChange"
>
<el-table
:data=
"orderGoodsDetail"
style=
"border: 1px solid #eee;"
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
></el-table-column>
<el-table-column
label=
"订单号"
prop=
"order_sn"
/>
<el-table-column
label=
"订单号"
prop=
"goods_order_sn"
align=
"center"
></el-table-column>
<el-table-column
label=
"商品名称"
>
<el-table-column
label=
"商品名称"
prop=
"title"
align=
"center"
></el-table-column>
<el-table-column
label=
"下单时间"
prop=
"created_time"
align=
"center"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
title
}}
{{
scope
.
row
.
created_time
?
formatter
(
scope
.
row
.
created_time
)
:
''
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
商品规格
"
>
<el-table-column
label=
"
规格/数量/单价"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
goods_option_title
}}
{{
scope
.
row
.
goods_option_title
}}
<br/>
{{
scope
.
row
.
total
}}
<br/>
{{
scope
.
row
.
goods_price
/
100
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
单价
"
>
<el-table-column
label=
"
商品订单状态"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
price
}}
{{
goodsStatusFormatter
(
scope
.
row
.
goods_status
)
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
数量
"
>
<el-table-column
label=
"
快递公司"
prop=
"express_company_name"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
num
}}
{{
scope
.
row
.
express_company_name
?
scope
.
row
.
express_company_name
:
'—'
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
商品状态
"
>
<el-table-column
label=
"
快递单号"
prop=
"express_sn"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
goods_status
==
0
?
'未发货'
:
'已发货'
}}
{{
scope
.
row
.
express_sn
?
scope
.
row
.
express_sn
:
'—'
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
快递公司
"
>
<el-table-column
label=
"
发货时间"
prop=
"send_time"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
deliver_Name
}}
{{
scope
.
row
.
send_time
?
scope
.
row
.
send_time
:
'—'
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"
快递单号"
prop=
"Tel
"
>
<el-table-column
label=
"
操作"
class-name=
"small-padding fixed-width"
align=
"center
"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_list
[
0
].
deliver_no
}}
<span
style=
"font-size:12px;padding: 0 15px 0 0;"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '已补单'"
>
已补单
</span>
</
template
>
<el-button
size=
"mini"
type=
"text"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去补单'"
@
click=
"goShipping(4,scope.row.id)"
>
去补单
</el-button>
</el-table-column>
<el-button
size=
"mini"
type=
"text"
v-if=
"deliveryTypeText(scope.row.goods_status,scope.row.is_reissue) == '去发货'"
@
click=
"goShipping(3,scope.row.id)"
>
去发货
</el-button>
<el-table-column
label=
"操作"
class-name=
"small-padding fixed-width"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"getExpressInfoNew(scope.row)"
>
查看物流
</el-button>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"goShipping(3, scope.row.goods_list[0].goods_id)"
:disabled=
"scope.row.goods_list[0].goods_status > 0"
>
{{
getStatus
(
scope
.
row
.
goods_list
[
0
].
goods_status
,
scope
.
row
.
goods_list
[
0
].
is_reissue
)
}}
</el-button>
<el-button
v-if=
"scope.row.goods_list[0].goods_status > 0"
size=
"mini"
type=
"text"
@
click=
"getExpressInfoNew(scope.row.order_sn, scope.row.goods_list[0].goods_id, scope.row.goods_list[0].sku_id)"
>
查看物流
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -136,30 +136,44 @@
...
@@ -136,30 +136,44 @@
</div>
</div>
<el-button
size=
"mini"
type=
"primary"
@
click=
"addRemark"
>
添加备注
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"addRemark"
>
添加备注
</el-button>
</div>
</div>
<div
style=
"width: 75%; min-height: 100px; border: 1px solid #eee; padding: 10px;"
>
{{orderDetail ? orderDetail.remark : ''}}
</div>
<div
style=
"width: 75%; min-height: 100px; border: 1px solid #eee; padding: 10px;"
>
<dl
v-for=
"(item, index) in orderDetail.remark_list"
:key=
"index"
class=
"remark-con"
>
<dt>
item.date_time
</dt>
<dd>
item.content
</dd>
</dl>
</div>
</div>
</div>
</div>
</div>
</el-card>
</el-card>
<!-- 修改买家信息 -->
<el-dialog
<el-dialog
title=
"修改买家信息"
title=
"修改买家信息"
:visible
.
sync=
"modifyinfoDialog"
:visible
.
sync=
"modifyinfoDialog"
width=
"
25
%"
width=
"
30
%"
:modal-append-to-body=
"false"
:modal-append-to-body=
"false"
:close-on-click-modal=
"false"
:close-on-click-modal=
"false"
:append-to-body=
"true"
:append-to-body=
"true"
center
>
>
<div
style=
"margin: 0
10%
"
>
<div
style=
"margin: 0
20px;
"
>
<el-form
ref=
"addressForm"
:model=
"addressForm"
label-width=
"100px"
>
<el-form
ref=
"addressForm"
:model=
"addressForm"
label-width=
"100px"
>
<el-form-item
label=
"收货人姓名:"
>
<el-form-item
label=
"收货人姓名:"
>
<el-input
size=
"mini"
v-model=
"addressForm.name"
placeholder=
"请输入收货人姓名"
></el-input>
<el-input
size=
"mini"
v-model=
"addressForm.
shipping_
name"
placeholder=
"请输入收货人姓名"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"联系电话:"
>
<el-form-item
label=
"联系电话:"
>
<el-input
size=
"mini"
v-model=
"addressForm.
mobile
"
placeholder=
"请输入联系电话"
></el-input>
<el-input
size=
"mini"
v-model=
"addressForm.
tel
"
placeholder=
"请输入联系电话"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"收货地址:"
>
<el-form-item
label=
"收货地址:"
>
<el-cascader
v-model=
"addressForm.areaList"
:props=
'props'
placeholder=
"请选择具体的省市区"
style=
"width:100%"
></el-cascader>
<el-cascader
v-model=
"addressForm.areaList"
:props=
'props'
ref=
"ssqCascader"
placeholder=
"请选择具体的省市区"
style=
"width:100%"
></el-cascader>
<el-input
size=
"mini"
v-model=
"addressForm.street_name"
placeholder=
"请输入街道"
></el-input>
</el-form-item>
<el-input
size=
"mini"
v-model=
"addressForm.address"
placeholder=
"请输入收货地址"
></el-input>
<el-form-item
label=
"街道:"
>
<el-input
size=
"mini"
v-model=
"addressForm.street"
placeholder=
"请输入街道"
></el-input>
</el-form-item>
<el-form-item
label=
"详细地址:"
>
<el-input
size=
"mini"
v-model=
"addressForm.address"
placeholder=
"请输入详细地址"
></el-input>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
</div>
</div>
...
@@ -168,6 +182,7 @@
...
@@ -168,6 +182,7 @@
<el-button
size=
"mini"
type=
"primary"
@
click=
"handleModifyInfo"
>
确 定
</el-button>
<el-button
size=
"mini"
type=
"primary"
@
click=
"handleModifyInfo"
>
确 定
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
<!-- 发货 -->
<el-dialog
<el-dialog
:title=
"titleInfo"
:title=
"titleInfo"
:visible
.
sync=
"goShippingDialog"
:visible
.
sync=
"goShippingDialog"
...
@@ -245,14 +260,19 @@
...
@@ -245,14 +260,19 @@
</template>
</template>
<
script
>
<
script
>
import
{
orderInfo
,
sendOrder
,
expressInfoNew
,
remarkOrder
,
orderInfoEdit
}
from
'@/api/module/order'
import
{
orderInfo
,
sendOrder
,
expressInfoNew
,
remarkOrder
,
orderInfoEdit
,
deliveryOrderOne
,
deliveryOrderTwo
,
toReissueOrderData
}
from
'@/api/module/order'
import
{
dateFormat
}
from
'@/utils'
import
{
dateFormat
}
from
'@/utils'
import
{
getAreaList
}
from
'@/api/module/retreat/address'
import
{
getAreaList
}
from
'@/api/module/retreat/address'
export
default
{
export
default
{
props
:
{
props
:
{
// 订单信息
orderDetail
:
{
orderDetail
:
{
type
:
Object
type
:
Object
},
},
// 商品订单 信息
orderGoodsDetail
:
{
type
:
Array
,
},
expressLists
:
{
expressLists
:
{
type
:
Array
type
:
Array
}
}
...
@@ -268,10 +288,10 @@ export default {
...
@@ -268,10 +288,10 @@ export default {
dialogCheck
:
false
,
dialogCheck
:
false
,
titleInfo
:
''
,
titleInfo
:
''
,
addressForm
:
{
addressForm
:
{
name
:
''
,
shipping_
name
:
''
,
mobile
:
''
,
tel
:
''
,
address
:
''
,
address
:
''
,
street
_name
:
''
,
street
:
''
,
areaList
:
[]
// 省市区
areaList
:
[]
// 省市区
},
},
activities
:
[],
activities
:
[],
...
@@ -284,87 +304,299 @@ export default {
...
@@ -284,87 +304,299 @@ export default {
label
:
'name'
,
label
:
'name'
,
leaf
:
'leaf'
leaf
:
'leaf'
},
},
goShippingNum
:
0
,
goShippingNum
:
0
,
// 发货类型
goods_ids
:
null
goods_ids
:
null
,
// 发货的商品订单 id
}
}
},
},
computed
:
{
created
()
{
goodsFreight
()
{
let
freight
=
0
if
(
this
.
orderDetail
)
{
this
.
orderDetail
.
item
.
map
(
item
=>
{
freight
+=
item
.
freight
})
}
return
freight
},
},
goodsPrice
()
{
mounted
()
{
let
price
=
0
if
(
this
.
orderDetail
)
{
this
.
orderDetail
.
item
.
map
(
item
=>
{
price
+=
item
.
goods_list
[
0
].
price
})
}
return
price
},
},
goodsNum
()
{
computed
:
{
let
goodsNum
=
0
// goodsFreight() {
if
(
this
.
orderDetail
)
{
// let freight = 0
this
.
orderDetail
.
item
.
map
(
item
=>
{
// // if (this.orderDetail) {
goodsNum
+=
item
.
goods_list
[
0
].
num
// // this.orderDetail.item.map(item => {
})
// // freight += item.freight
}
// // })
return
goodsNum
// // }
}
// return freight
// },
// goodsPrice() {
// let price = 0
// if (this.orderDetail) {
// this.orderDetail.item.map(item => {
// price += item.goods_list[0].price
// })
// }
// return price
// },
// goodsNum() {
// let goodsNum = 0
// if (this.orderDetail) {
// this.orderDetail.item.map(item => {
// goodsNum += item.goods_list[0].num
// })
// }
// return goodsNum
// }
},
},
methods
:
{
methods
:
{
getStatus
(
status
,
is_reissue
)
{
/** 商品 发货状态 */
return
status
==
0
?
'去发货'
:
status
==
1
&&
is_reissue
==
1
?
'已补单'
:
status
==
1
&&
is_reissue
==
0
?
'已发货'
:
'已完成'
goodsStatusFormatter
(
status
)
{
let
res
=
'—'
;
if
(
status
==
0
)
{
res
=
'未发货'
}
else
if
(
status
==
1
)
{
res
=
'已发货'
}
else
if
(
status
==
2
)
{
res
=
'已收货'
}
else
if
(
status
==
3
)
{
res
=
'配货中'
}
else
if
(
status
==
4
)
{
res
=
'拒收'
}
return
res
},
},
/**
* 商品订单 操作类型
* gs:goods_status ir:is_reissue
* 返回值有三种情况:去发货,补单,已补单(不可点击)
* */
deliveryTypeText
(
gs
,
ir
)
{
return
gs
==
0
?
'去发货'
:
ir
==
0
?
'去补单'
:
'已补单'
},
/**
* 时间戳转换为日期格式
* 项目中,后台一般均返回10位数的时间戳,在公用的封装方法dateFormat中,第一个入参,需要*1000 ,具体参考 new Date(时间戳) 方法
* */
formatter
(
time
)
{
formatter
(
time
)
{
return
dateFormat
(
time
,
'Y-m-d H:i:s'
)
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
},
},
/**
* 发货
* val 发货类型:1-商品的批量发货;2-批量补单发货;3-单商品发货;4-单格个商品订单 补单发货
* */
// 发货,补单,补单发货
goShipping
(
val
,
id
)
{
goShipping
(
val
,
id
)
{
//console.log(361,this.multipleSelection);
this
.
goShippingNum
=
val
this
.
goShippingNum
=
val
this
.
goods_ids
=
id
this
.
goods_ids
=
[]
this
.
expressNum
=
''
this
.
expressNum
=
''
this
.
express_sn
=
''
this
.
express_sn
=
''
let
isContinue
=
true
;
if
(
this
.
multipleSelection
.
length
==
0
&&
val
!=
3
)
{
// 批量发货
this
.
$message
({
if
(
this
.
goShippingNum
===
1
)
{
type
:
'warning'
,
if
(
this
.
multipleSelection
.
length
===
0
)
{
message
:
'请选择需要发货的商品'
this
.
$message
({
type
:
'warning'
,
message
:
'请先选择需要发货的商品'
});
})
return
return
}
}
for
(
let
i
=
0
;
i
<
this
.
multipleSelection
.
length
;
i
++
)
{
// 批量发货 goods_status 0:未发货,1:已发货,2:已收货,3:配货中,4:拒收
if
(
this
.
multipleSelection
[
i
].
goods_status
>
0
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'所选商品中部分已发货,请重新选择'
});
isContinue
=
false
break
;
}
else
{
let
idNum
=
Number
(
this
.
multipleSelection
[
i
].
id
);
this
.
goods_ids
.
push
(
idNum
);
}
}
if
(
!
isContinue
)
{
// 批量发货时候,goods_ids 为数组 [3,4,5]
this
.
goods_ids
=
[]
return
;
}
switch
(
val
)
{
case
1
:
this
.
titleInfo
=
'去发货'
this
.
titleInfo
=
'去发货'
this
.
goShippingDialog
=
true
this
.
goShippingDialog
=
true
}
// 批量补单
if
(
this
.
goShippingNum
===
2
)
{
if
(
this
.
multipleSelection
.
length
===
0
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请先选择需要补单发货的商品'
});
return
}
for
(
let
i
=
0
;
i
<
this
.
multipleSelection
.
length
;
i
++
)
{
// 批量补单 is_reissue 1-已补发;2-未补发
// 首先,先发货了,才能补单
if
(
this
.
multipleSelection
[
i
].
goods_status
>
0
)
{
if
(
this
.
multipleSelection
[
i
].
is_reissue
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'所选商品中部分已补单,请重新选择'
});
isContinue
=
false
;
break
;
}
else
{
let
idObj
=
{
id
:
Number
(
this
.
multipleSelection
[
i
].
id
)};
this
.
goods_ids
.
push
(
idObj
);
}
}
else
{
isContinue
=
false
;
this
.
$message
({
type
:
'warning'
,
message
:
'所选商品中部分未发货,不能进行补单操作,请重新选择'
});
break
break
case
2
:
}
}
if
(
!
isContinue
)
{
this
.
goods_ids
=
[]
return
;
}
this
.
titleInfo
=
'补单发货'
this
.
titleInfo
=
'补单发货'
this
.
goShippingDialog
=
true
this
.
goShippingDialog
=
true
break
}
case
3
:
// 单商品订单 发货
if
(
this
.
goShippingNum
===
3
)
{
this
.
goods_ids
=
id
;
this
.
titleInfo
=
'去发货'
this
.
titleInfo
=
'去发货'
this
.
goShippingDialog
=
true
this
.
goShippingDialog
=
true
break
default
:
break
}
}
// 单格个商品订单 补单发货
if
(
this
.
goShippingNum
===
4
)
{
this
.
goods_ids
=
id
;
this
.
titleInfo
=
'去补单'
this
.
goShippingDialog
=
true
}
//
//console.log(5555555,this.goods_ids);
},
/** ReissueOrder*/
/** 批量发货,批量补单发货,单个发货,单个补单发货 */
handleGoShipping
()
{
if
(
!
this
.
expressNum
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请选择快递公司'
})
return
}
if
(
!
this
.
express_sn
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请输入快递单号'
})
return
}
// 物流公司,名称
let
expressName
=
''
this
.
expressLists
.
map
((
item
)
=>
{
if
(
item
.
value
==
this
.
expressNum
)
{
expressName
=
item
.
label
}
})
// 批量 去发货
if
(
this
.
goShippingNum
===
1
)
{
let
paramsObj
=
{
order_goods_ids
:
this
.
goods_ids
,
express_company_name
:
expressName
,
// 快递公司 名称
express_sn
:
this
.
express_sn
,
// 快递单号
//express_code: ''
}
//console.log(11111,paramsObj);
deliveryOrderOne
(
paramsObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'发货成功'
});
this
.
goShippingDialog
=
false
this
.
handleInfo
()
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'发货失败'
});
}
});
}
// 批量 补单发货
if
(
this
.
goShippingNum
===
2
)
{
let
listObj
=
{
list
:
[]
}
this
.
goods_ids
.
forEach
((
item
,
index
)
=>
{
item
[
'express_name'
]
=
expressName
;
item
[
'express_sn'
]
=
this
.
express_sn
})
listObj
.
list
=
this
.
goods_ids
;
//console.log("批量补单发货",listObj);
deliveryOrderTwo
(
listObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'补单发货成功'
});
this
.
goShippingDialog
=
false
this
.
handleInfo
()
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'补单发货失败'
});
}
});
}
// 单商品订单 发货
if
(
this
.
goShippingNum
===
3
)
{
let
paramsObj
=
{
order_goods_ids
:
[],
//this.goods_ids,
express_company_name
:
expressName
,
// 快递公司 名称
express_sn
:
this
.
express_sn
,
// 快递单号
//express_code: ''
}
paramsObj
.
order_goods_ids
.
push
(
this
.
goods_ids
);
//console.log(11111,paramsObj);
deliveryOrderOne
(
paramsObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'发货成功'
});
this
.
goShippingDialog
=
false
this
.
handleInfo
()
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'发货失败'
});
}
});
}
// 单个商品订单 补单发货
if
(
this
.
goShippingNum
===
4
)
{
let
singleOrderObj
=
{
list
:
[]};
let
orderObj
=
{
id
:
0
,
express_name
:
''
,
express_sn
:
''
}
orderObj
.
id
=
this
.
goods_ids
;
orderObj
.
express_name
=
expressName
;
orderObj
.
express_sn
=
this
.
express_sn
;
singleOrderObj
.
list
.
push
(
orderObj
);
deliveryOrderTwo
(
singleOrderObj
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'补单发货成功'
});
this
.
goShippingDialog
=
false
this
.
handleInfo
()
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'补单发货失败'
});
}
});
}
// sendOrder(params).then(res => {})
},
},
// 订单详情
// 订单详情
handleInfo
()
{
handleInfo
()
{
this
.
detailDialog
=
true
this
.
detailDialog
=
true
// let order_sn = '20200318e095e2d09354'
let
order_id
=
this
.
orderDetail
.
id
let
order_sn
=
this
.
orderDetail
.
parent_order_sn
orderInfo
({
order_id
:
order_id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
orderInfo
({
order_sn
:
order_sn
}).
then
(
res
=>
{
this
.
orderDetail
=
res
.
data
.
order
if
(
res
.
code
==
1
)
{
this
.
orderGoodsDetail
=
res
.
data
.
order_goods_detail
?
res
.
data
.
order_goods_detail
:
[];
this
.
orderDetail
=
res
.
data
}
}
})
})
},
},
...
@@ -372,25 +604,30 @@ export default {
...
@@ -372,25 +604,30 @@ export default {
handleSelectionChange
(
val
)
{
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
this
.
multipleSelection
=
val
;
},
},
/** 修改 买家信息 */
modifyinfo
()
{
modifyinfo
()
{
this
.
addressForm
=
{
this
.
addressForm
=
{
name
:
''
,
shipping_
name
:
''
,
mobile
:
''
,
tel
:
''
,
address
:
''
,
address
:
''
,
street
_name
:
''
street
:
''
}
}
this
.
modifyinfoDialog
=
true
this
.
modifyinfoDialog
=
true
},
},
/
/ 修改买家信息
/
** 保存 买家信息 */
handleModifyInfo
()
{
handleModifyInfo
()
{
if
(
!
this
.
addressForm
.
name
)
{
// console.log(555,this.addressForm.areaList);
// let ssqLabelList = this.$refs['ssqCascader'].getCheckedNodes()[0].pathLabels;
// console.log(444,ssqLabelList)
if
(
!
this
.
addressForm
.
shipping_name
)
{
this
.
$message
({
this
.
$message
({
type
:
'warning'
,
type
:
'warning'
,
message
:
'请输入收货人姓名'
message
:
'请输入收货人姓名'
})
})
return
return
}
}
if
(
!
this
.
addressForm
.
mobile
)
{
if
(
!
this
.
addressForm
.
tel
)
{
this
.
$message
({
this
.
$message
({
type
:
'warning'
,
type
:
'warning'
,
message
:
'请输入联系电话'
message
:
'请输入联系电话'
...
@@ -399,7 +636,7 @@ export default {
...
@@ -399,7 +636,7 @@ export default {
}
}
// 手机号码格式校验
// 手机号码格式校验
const
reg
=
/^1
[
3456789
]\d{9}
$/
;
const
reg
=
/^1
[
3456789
]\d{9}
$/
;
if
(
!
reg
.
test
(
this
.
addressForm
.
mobile
))
{
if
(
!
reg
.
test
(
this
.
addressForm
.
tel
))
{
this
.
$message
({
this
.
$message
({
type
:
'warning'
,
type
:
'warning'
,
message
:
'手机号码格式有误'
message
:
'手机号码格式有误'
...
@@ -413,7 +650,7 @@ export default {
...
@@ -413,7 +650,7 @@ export default {
})
})
return
return
}
}
if
(
!
this
.
addressForm
.
street
_name
)
{
if
(
!
this
.
addressForm
.
street
)
{
this
.
$message
({
this
.
$message
({
type
:
'warning'
,
type
:
'warning'
,
message
:
'请输入街道'
message
:
'请输入街道'
...
@@ -428,16 +665,23 @@ export default {
...
@@ -428,16 +665,23 @@ export default {
return
return
}
}
// 省市区 转化
let
ssqLabelList
=
[];
if
(
this
.
addressForm
.
areaList
&&
this
.
addressForm
.
areaList
.
length
>
1
)
{
ssqLabelList
=
this
.
$refs
[
'ssqCascader'
].
getCheckedNodes
()[
0
].
pathLabels
;
}
let
params
=
{
let
params
=
{
id
:
this
.
orderDetail
.
parent_order_sn
,
order_sn
:
this
.
orderDetail
.
order_sn
,
shipping_name
:
this
.
addressForm
.
name
,
shipping_name
:
this
.
addressForm
.
shipping_name
,
mobile
:
this
.
addressForm
.
mobile
,
province_name
:
ssqLabelList
[
0
]
?
ssqLabelList
[
0
]
:
''
,
street_name
:
this
.
addressForm
.
street_name
,
city_name
:
ssqLabelList
[
1
]
?
ssqLabelList
[
1
]
:
''
,
district_name
:
ssqLabelList
[
2
]
?
ssqLabelList
[
2
]
:
''
,
street_name
:
this
.
addressForm
.
street
,
address
:
this
.
addressForm
.
address
,
address
:
this
.
addressForm
.
address
,
province_name
:
this
.
addressForm
.
areaList
[
0
],
tel
:
this
.
addressForm
.
tel
,
city_name
:
this
.
addressForm
.
areaList
[
1
],
district_name
:
this
.
addressForm
.
areaList
[
2
]
}
}
orderInfoEdit
(
params
).
then
(
res
=>
{
orderInfoEdit
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
this
.
$message
({
...
@@ -449,76 +693,31 @@ export default {
...
@@ -449,76 +693,31 @@ export default {
}
}
})
})
},
},
// 去发货
/** 查看 商品订单 物流信息 */
handleGoShipping
()
{
getExpressInfoNew
(
row
)
{
if
(
!
this
.
expressNum
)
{
// 如果 商品订单没有发货,则不用请求了
this
.
$message
({
if
(
row
.
goods_status
==
0
)
{
type
:
'warning'
,
this
.
$message
({
type
:
'warning'
,
message
:
'您还未发货,暂无物流信息'
});
message
:
'请选择快递公司'
})
return
}
if
(
!
this
.
express_sn
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请输入快递单号'
})
return
return
}
}
let
expressName
=
''
this
.
expressLists
.
map
((
item
,
index
)
=>
{
if
(
item
.
value
==
this
.
expressNum
)
{
expressName
=
item
.
label
}
})
let
goods_ids
=
[]
if
(
this
.
goShippingNum
!=
3
)
{
this
.
multipleSelection
.
map
(
item
=>
{
goods_ids
.
push
(
item
.
goods_list
[
0
].
goods_id
)
})
}
else
{
goods_ids
=
[
this
.
goods_ids
]
}
let
params
=
{
order_goods_ids
:
goods_ids
,
express_company_name
:
expressName
,
express_sn
:
this
.
express_sn
,
express_code
:
this
.
expressNum
}
sendOrder
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
this
.
$message
({
type
:
'success'
,
message
:
'商品已发货'
})
this
.
goShippingDialog
=
false
this
.
handleInfo
()
}
})
},
// 查看物流
getExpressInfoNew
(
sn
,
goodsId
,
skuId
)
{
this
.
dialogCheck
=
true
this
.
dialogCheck
=
true
let
params
=
{
let
params
=
{
order_sn
:
sn
,
goods_order_sn
:
row
.
goods_order_sn
,
goods_id
:
goodsId
,
sku_id
:
row
.
goods_option_id
sku_id
:
skuId
}
}
expressInfoNew
(
params
).
then
(
res
=>
{
expressInfoNew
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
this
.
activities
=
res
.
data
.
order
Track
this
.
activities
=
res
.
data
.
order
_track
?
res
.
data
.
order_track
:
[];
}
}
})
})
},
},
/** 添加备注 */
addRemark
()
{
addRemark
()
{
this
.
remark
=
''
this
.
remark
=
''
this
.
addRemarkDialog
=
true
this
.
addRemarkDialog
=
true
},
},
/
/ 订单备注
/
** 订单备注 */
getRemarkOrder
()
{
getRemarkOrder
()
{
if
(
!
this
.
remark
)
{
if
(
!
this
.
remark
)
{
this
.
$message
({
this
.
$message
({
...
@@ -529,7 +728,7 @@ export default {
...
@@ -529,7 +728,7 @@ export default {
}
}
let
params
=
{
let
params
=
{
order_
id
:
this
.
orderDetail
.
item
[
0
]
.
order_sn
,
order_
sn
:
this
.
orderDetail
.
order_sn
,
remark
:
this
.
remark
remark
:
this
.
remark
}
}
remarkOrder
(
params
).
then
(
res
=>
{
remarkOrder
(
params
).
then
(
res
=>
{
...
@@ -662,4 +861,9 @@ export default {
...
@@ -662,4 +861,9 @@ export default {
height
:
600px
;
height
:
600px
;
overflow-y
:
auto
;
overflow-y
:
auto
;
}
}
/* 留言框样式 */
.remark-con
{
border
:
1px
solid
#eee
;
}
</
style
>
</
style
>
src/views/system/order/index.vue
浏览文件 @
d66dffda
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<el-card
class=
"box-card"
>
<el-card
class=
"box-card
box-cardone
"
>
<div
style=
"position: relative;"
>
<div
style=
"position: relative;"
class=
"clearfixall"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
name=
"first"
>
<el-tab-pane
name=
"first"
>
<div
slot=
"label"
>
待发货
{{
activeName
==
'first'
?
'('
+
total1
+
')'
:
''
}}
</div>
<!--
<div
slot=
"label"
>
待发货
{{
activeName
==
'first'
?
'('
+
total1
+
')'
:
'(0)'
}}
</div>
-->
<div
slot=
"label"
>
待发货
{{
'('
+
total1
+
')'
}}
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
name=
"second"
>
<el-tab-pane
name=
"second"
>
<div
slot=
"label"
>
已发货
{{
activeName
==
'second'
?
'('
+
total2
+
')'
:
''
}}
</div>
<div
slot=
"label"
>
已发货
{{
'('
+
total2
+
')'
}}
</div>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"已完成"
name=
"third"
></el-tab-pane>
<el-tab-pane
label=
"已完成"
name=
"third"
></el-tab-pane>
<el-tab-pane
label=
"全部订单"
name=
"fourth"
></el-tab-pane>
<el-tab-pane
label=
"全部订单"
name=
"fourth"
></el-tab-pane>
</el-tabs>
</el-tabs>
<div
style=
"position: absolute; top: -5px; right: 0;"
>
<div
v-show=
"this.activeName == 'first' "
style=
"position: absolute; top: -5px; right: 0;"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"handleExport"
>
导出订单
</el-button>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-download"
@
click=
"handleExport"
>
导出订单
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-position"
@
click=
"isDeliveryOpen = true"
>
批量发货
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-position"
@
click=
"isDeliveryOpen = true"
>
批量发货
</el-button>
</div>
</div>
</div>
</div>
<div
class=
"scollbox"
>
<div
class=
"form-box"
>
<div
class=
"form-box"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"85px"
>
<el-form
class=
"form-params"
ref=
"form"
:model=
"form"
label-width=
"85px"
>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"space-around"
>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"space-around"
>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"订单号:"
>
<el-form-item
label=
"订单号:"
>
<el-input
size=
"mini"
v-model=
"form.order_sn"
placeholder=
"请输入订单号"
/>
<el-input
size=
"mini"
v-model=
"form.order_sn"
placeholder=
"请输入订单号"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"商品名称:"
>
<el-form-item
label=
"商品名称:"
>
<el-input
size=
"mini"
v-model=
"form.GoodsName"
placeholder=
"请输入商品名称"
/>
<el-input
size=
"mini"
v-model=
"form.GoodsName"
placeholder=
"请输入商品名称"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"收货人:"
>
<el-form-item
label=
"收货人:"
>
<el-input
size=
"mini"
v-model=
"form.shipname"
placeholder=
"请输入收货人"
/>
<el-input
size=
"mini"
v-model=
"form.shipname"
placeholder=
"请输入收货人"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"space-around"
>
<el-row
type=
"flex"
class=
"row-bg"
justify=
"space-around"
>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-form-item
label=
"联系电话:"
>
<el-form-item
label=
"联系电话:"
>
<el-input
size=
"mini"
v-model=
"form.Tel"
placeholder=
"请输入联系电话"
/>
<el-input
size=
"mini"
v-model=
"form.Tel"
placeholder=
"请输入联系电话"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
...
@@ -51,7 +51,7 @@
...
@@ -51,7 +51,7 @@
v-model=
"form.dateTime"
v-model=
"form.dateTime"
type=
"daterange"
type=
"daterange"
align=
"left"
align=
"left"
un
l
ink-panels
un
aL
ink-panels
range-separator=
"至"
range-separator=
"至"
start-placeholder=
"开始日期"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
end-placeholder=
"结束日期"
...
@@ -59,42 +59,77 @@
...
@@ -59,42 +59,77 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"6"
>
<el-col
:span=
"6"
>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-search"
style=
"margin-left: 20px;"
@
click=
"getListOrder"
>
搜索
</el-button>
<el-button
size=
"mini"
type=
"primary"
icon=
"el-icon-search"
style=
"margin-left: 20px;"
@
click=
"getListOrder"
>
搜索
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-refresh"
@
click=
"resetBtn(true)"
>
重置
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-refresh"
@
click=
"resetBtn(true)"
>
重置
</el-button>
</el-col>
</el-col>
</el-row>
</el-row>
</el-form>
</el-form>
</div>
</div>
<el-table
:data=
"tableData"
max-height=
"1080"
>
<!-- 表头 -->
<el-table-column
type=
"selection"
width=
"55"
/>
<div
class=
"table-header-spe"
>
<el-table-column
label=
"订单号"
align=
"center"
prop=
"order_sn"
width=
"255"
/>
<el-table
class=
"title_table hxz-el-table"
align=
"center"
>
<el-table-column
label=
"下单时间"
align=
"center"
prop=
"Updatetime"
width=
"155"
>
<el-table-column
align=
"center"
width=
"55"
>
<template
slot=
"header"
slot-scope=
"scope"
>
<el-checkbox
v-model=
"allTablesChecked"
></el-checkbox>
</
template
>
</el-table-column>
<el-table-column
label=
"订单号"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"商品名称"
align=
"center"
></el-table-column>
<el-table-column
label=
"规格/数量/金额"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"下单时间"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"收货人"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"联系电话"
align=
"center"
width=
"180"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"140"
></el-table-column>
</el-table>
<div
class=
"hxz-el-table-check"
></div>
</div>
<div
class=
"table-all-con box-card"
>
<el-card
v-for=
"(item, index) in tableDataList"
:key=
"index"
class=
"card1 text item"
>
<div
slot=
"header"
class=
"el-card-header-spe"
>
<div><span>
订单状态:
</span><span>
{{ orderStatusFormatter(item.order.status) }}
</span></div>
</div>
<div
class=
"item-table"
>
<el-table
border
:show-header=
"false"
:span-method=
"arraySpanMethod"
:data=
"item.order_goods"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
></el-table-column>
<el-table-column
prop=
"goods_order_sn"
label=
"订单号"
width=
"180"
align=
"center"
></el-table-column>
<el-table-column
prop=
"goods_option_title"
label=
"商品名称"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
formatter
(
scope
.
row
.
Updatetime
)
}}
<img
style=
"width:60px;height:60px;"
:src=
"scope.row.thumb"
/>
<div>
{{
scope
.
row
.
goods_option_title
}}
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"数量"
align=
"center"
prop=
"goods_total"
/>
<el-table-column
label=
"规格/数量/金额"
width=
"180"
align=
"center"
>
<el-table-column
label=
"订单金额"
align=
"center"
prop=
"goods_price"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
goods_price
/
100
}}
{{
scope
.
row
.
goods_option_title
}}
<br/>
{{
scope
.
row
.
total
}}
<br/>
{{
scope
.
row
.
goods_price
/
100
}}
<br/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"收货人"
align=
"center"
prop=
"real_name"
/>
<el-table-column
prop=
"created_time"
label=
"下单时间"
width=
"180"
align=
"center"
>
<el-table-column
label=
"联系电话"
align=
"center"
prop=
"mobile"
/>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
{{
formatter
(
scope
.
row
.
created_time
)
}}
size=
"mini"
</
template
>
type=
"text"
</el-table-column>
@
click=
"handleInfo(scope.row)"
<el-table-column
prop=
"phone"
width=
"180"
label=
"收货人"
align=
"center"
></el-table-column>
>
<el-table-column
prop=
"real_name"
label=
"联系电话"
width=
"180"
align=
"center"
></el-table-column>
详情
<el-table-column
label=
"操作"
width=
"140"
align=
"center"
>
</el-button>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
@
click=
"handleInfo(scope.row)"
>
详情
</el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</div>
</el-card>
</div>
</div>
<!-- 分页 -->
<div
class=
"footer_pagination"
>
<div
class=
"footer_pagination"
>
<el-pagination
<el-pagination
background
background
...
@@ -108,9 +143,10 @@
...
@@ -108,9 +143,10 @@
</el-pagination>
</el-pagination>
</div>
</div>
</el-card>
</el-card>
<el-dialog
title=
"订单详情"
width=
"85%"
:close-on-click-modal=
"false"
:destroy-on-close=
"true"
:visible
.
sync=
"detailDialog"
center
:before-close=
"handleClose"
>
<el-dialog
title=
"订单详情"
width=
"85%"
:close-on-click-modal=
"false"
:destroy-on-close=
"true"
:visible
.
sync=
"detailDialog"
center
:before-close=
"handleClose"
>
<div
style=
"height:100%;"
>
<div
style=
"height:100%;"
>
<order-detail
:order-detail=
"order_detail"
:express-lists=
"expressLists"
/>
<order-detail
:order-detail=
"order_detail"
:
order-goods-detail=
"order_goods_detail"
:
express-lists=
"expressLists"
/>
</div>
</div>
</el-dialog>
</el-dialog>
<!-- 批量发货 -->
<!-- 批量发货 -->
...
@@ -137,12 +173,13 @@
...
@@ -137,12 +173,13 @@
action=
""
action=
""
class=
"upload-demo"
class=
"upload-demo"
:auto-upload=
"false"
:auto-upload=
"false"
:limit
=
"1"
:limit
=
"1"
accept=
"*/*"
accept=
"*/*"
:on-change=
"importExcel"
:on-change=
"importExcel"
:on-remove=
"removeDevExcel"
:on-remove=
"removeDevExcel"
ref=
"upload"
ref=
"upload"
><el-button
size=
"small"
type=
"primary"
>
上传批量发货Excel表单
</el-button>
>
<el-button
size=
"small"
type=
"primary"
>
上传批量发货Excel表单
</el-button>
</el-upload>
</el-upload>
</div>
</div>
<div
class=
"delivery-tips-con"
>
<div
class=
"delivery-tips-con"
>
...
@@ -164,10 +201,11 @@
...
@@ -164,10 +201,11 @@
</template>
</template>
<
script
>
<
script
>
import
{
listOrder
,
exportOrder
,
orderInfo
,
deliveryOrder
,
expressList
}
from
'@/api/module/order'
import
{
listOrder
,
exportOrder
,
orderInfo
,
deliveryOrder
,
expressList
,
getOrderTabData
}
from
'@/api/module/order'
import
{
dateFormat
}
from
'@/utils'
import
{
dateFormat
}
from
'@/utils'
import
OrderDetail
from
'./components/orderDetail.vue'
import
OrderDetail
from
'./components/orderDetail.vue'
import
XLSX
from
"xlsx"
import
XLSX
from
"xlsx"
export
default
{
export
default
{
components
:
{
components
:
{
OrderDetail
OrderDetail
...
@@ -177,8 +215,8 @@
...
@@ -177,8 +215,8 @@
currentPage
:
1
,
currentPage
:
1
,
pageSize
:
20
,
pageSize
:
20
,
total
:
0
,
total
:
0
,
total1
:
''
,
//待发货
total1
:
''
,
//待发货
total2
:
''
,
//已发货
total2
:
''
,
//已发货
activeName
:
'first'
,
activeName
:
'first'
,
form
:
{
form
:
{
order_sn
:
''
,
order_sn
:
''
,
...
@@ -188,21 +226,88 @@
...
@@ -188,21 +226,88 @@
dateTime
:
[],
dateTime
:
[],
},
},
goodsStatus
:
1
,
goodsStatus
:
1
,
tableData
:
[],
tableData
List
:
[],
// 后台返回所有数据
detailDialog
:
false
,
detailDialog
:
false
,
isDeliveryOpen
:
false
,
isDeliveryOpen
:
false
,
excelList
:
[],
excelList
:
[],
order_detail
:
null
,
order_detail
:
null
,
// 订单信息
expressLists
:
[]
order_goods_detail
:
[],
// 订单商品信息
expressLists
:
[],
fullHeight
:
''
,
tableHeight
:
null
,
allTablesChecked
:
false
,
// 订单导出 入参
exportParams
:
{
order_sn
:
''
,
goods_name
:
''
,
real_name
:
''
,
tel
:
0
,
created_start_time
:
0
,
created_end_time
:
0
,
}
}
}
},
},
watch
:
{
// fullHeight(val, oldval) {
// const contheight = document.getElementsByClassName('box-cardone')[0].clientHeight
// this.tableHeight = contheight - val - 250;
// // const heights = contheight
// // document.getElementsByClassName('cardHeight')[0].style.height = heights + 'px'
// }
},
created
()
{
// this.$nextTick(() => {
// this.fullHeight = document.getElementsByClassName('clearfixall')[0].clientHeight
// })
},
mounted
()
{
mounted
()
{
// 获取 订单 状态对应数量
this
.
getOrderTab
()
// 订单列表 搜索
this
.
getListOrder
()
this
.
getListOrder
()
//
this
.
getExpressList
()
this
.
getExpressList
()
},
},
methods
:
{
methods
:
{
checkSelectable
(
row
,
index
)
{
},
// 表格合并 列单元格
arraySpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
columnIndex
>
5
)
{
// 用于设置要合并开始的列号
if
(
rowIndex
===
0
)
{
// 用于设置合并开始的行号
return
{
rowspan
:
100
,
// 合并的行数
colspan
:
1
// 合并的列数,设为0则直接不显示
}
}
else
{
return
{
rowspan
:
0
,
colspan
:
0
}
}
}
},
formatter
(
time
)
{
formatter
(
time
)
{
return
dateFormat
(
time
,
'Y-m-d H:i:s'
)
return
dateFormat
(
time
*
1000
,
'Y-m-d H:i:s'
)
},
/** 订单状态 */
orderStatusFormatter
(
status
)
{
if
(
status
===
-
1
)
{
return
'订单取消'
}
else
if
(
status
===
0
)
{
return
'待付款'
}
else
if
(
status
===
1
)
{
return
'待发货'
}
else
if
(
status
===
2
)
{
return
'待收货'
}
else
if
(
status
===
3
)
{
return
'已完成'
}
else
if
(
status
===
4
)
{
return
'已结算'
}
else
{
return
''
// 保险,返回空
}
},
},
// 重置
// 重置
resetBtn
(
iscall
)
{
resetBtn
(
iscall
)
{
...
@@ -223,7 +328,7 @@
...
@@ -223,7 +328,7 @@
handleClick
(
tab
,
event
)
{
handleClick
(
tab
,
event
)
{
this
.
total
=
0
this
.
total
=
0
switch
(
this
.
activeName
)
{
switch
(
this
.
activeName
)
{
case
'first'
:
case
'first'
:
this
.
goodsStatus
=
1
this
.
goodsStatus
=
1
break
break
...
@@ -247,10 +352,25 @@
...
@@ -247,10 +352,25 @@
this
.
detailDialog
=
false
this
.
detailDialog
=
false
this
.
getListOrder
()
this
.
getListOrder
()
},
},
/** 获取 订单 状态对应数量 */
getOrderTab
()
{
getOrderTabData
().
then
(
res
=>
{
//console.log("获取订单状态和对应订单数量",res);
if
(
res
.
code
===
1
&&
res
.
data
.
length
>
0
)
{
// 1 表示 代发货;2 表示 已发货
for
(
let
i
=
0
;
i
<
res
.
data
.
length
;
i
++
)
{
if
(
res
.
data
[
i
].
Status
===
1
)
{
this
.
total1
=
res
.
data
[
i
].
Count
>
999
?
'999+'
:
res
.
data
[
i
].
Count
;
}
else
if
(
res
.
data
[
i
].
Status
===
2
)
{
this
.
total2
=
res
.
data
[
i
].
Count
>
999
?
'999+'
:
res
.
data
[
i
].
Count
;
}
}
}
});
},
// 获取订单列表
// 获取订单列表
getListOrder
()
{
getListOrder
()
{
this
.
tableData
=
[]
this
.
tableDataList
=
[]
let
params
=
{
let
params
=
{
page
:
this
.
currentPage
,
page
:
this
.
currentPage
,
limit
:
this
.
pageSize
,
limit
:
this
.
pageSize
,
...
@@ -264,29 +384,53 @@
...
@@ -264,29 +384,53 @@
}
}
listOrder
(
params
).
then
(
res
=>
{
listOrder
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
1
)
{
if
(
res
.
code
==
1
)
{
// 每次订单 查询成功,保存查询参数,供商品导出接口使用(入参)
this
.
exportParams
.
order_sn
=
params
.
order_sn
;
this
.
exportParams
.
goods_name
=
params
.
goods_name
;
this
.
exportParams
.
real_name
=
params
.
real_name
;
this
.
exportParams
.
tel
=
params
.
tel
;
this
.
exportParams
.
created_start_time
=
params
.
created_start_time
;
this
.
exportParams
.
created_end_time
=
params
.
created_end_time
;
this
.
total
=
res
.
data
.
count
||
0
this
.
total
=
res
.
data
.
count
||
0
if
(
this
.
goodsStatus
==
1
){
this
.
tableDataList
=
res
.
data
.
data
this
.
total1
=
res
.
data
.
count
||
0
}
}
if
(
this
.
goodsStatus
==
2
){
})
this
.
total2
=
res
.
data
.
count
||
0
},
// 合并数据
// listSpanMethod() {
//
// },
// row 当前行 column 当前列 rowIndex 当前行号, columnIndex 当前列号
listSpanMethod
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
columnIndex
===
1
)
{
if
(
rowIndex
%
2
===
0
)
{
return
{
rowspan
:
2
,
colspan
:
1
};
}
else
{
return
{
rowspan
:
0
,
colspan
:
0
};
}
}
this
.
tableData
=
res
.
data
.
data
}
}
})
},
},
// 订单导出
// 订单导出
handleExport
(
row
)
{
handleExport
()
{
let
query
=
{
page
:
1
,
limit
:
100
}
exportOrder
(
this
.
exportParams
).
then
(
res
=>
{
exportOrder
(
query
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
if
(
res
.
code
===
1
)
{
const
aLink
=
document
.
createElement
(
'a'
);
const
link
=
document
.
createElement
(
'a'
);
aLink
.
href
=
res
.
data
.
file_url
;
link
.
href
=
res
.
data
;
//aLink.download = '订单.xls'; //下载的文件名
//link.download = '订单.xls'; //下载的文件名
aLink
.
style
.
display
=
'none'
;
link
.
style
.
display
=
'none'
;
document
.
body
.
appendChild
(
aLink
);
document
.
body
.
appendChild
(
link
);
aLink
.
click
();
link
.
click
();
document
.
body
.
removeChild
(
aLink
);
document
.
body
.
removeChild
(
link
);
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
?
res
.
message
:
'导出失败'
});
}
}
});
});
},
},
...
@@ -299,7 +443,7 @@
...
@@ -299,7 +443,7 @@
// xlsxJson就是解析出来的json数据,数据格式如下
// xlsxJson就是解析出来的json数据,数据格式如下
// [{sheetName: sheet1, sheet: sheetData }]
// [{sheetName: sheet1, sheet: sheetData }]
if
(
item
[
0
]
&&
item
[
0
].
sheet
&&
item
[
0
].
sheet
.
length
)
{
if
(
item
[
0
]
&&
item
[
0
].
sheet
&&
item
[
0
].
sheet
.
length
)
{
//_this.tableData = item[0].sheet //把数据塞到表格预览
//_this.tableData
List
= item[0].sheet //把数据塞到表格预览
// this.excelList = item[0].sheet
// this.excelList = item[0].sheet
item
[
0
].
sheet
.
map
((
item
,
index
)
=>
{
item
[
0
].
sheet
.
map
((
item
,
index
)
=>
{
this
.
excelList
.
push
({
this
.
excelList
.
push
({
...
@@ -317,9 +461,9 @@
...
@@ -317,9 +461,9 @@
* @param {Object} file
* @param {Object} file
*/
*/
file2Xce
(
file
)
{
file2Xce
(
file
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
return
new
Promise
(
function
(
resolve
,
reject
)
{
const
reader
=
new
FileReader
();
const
reader
=
new
FileReader
();
reader
.
onload
=
function
(
e
)
{
reader
.
onload
=
function
(
e
)
{
const
data
=
e
.
target
.
result
;
const
data
=
e
.
target
.
result
;
this
.
wb
=
XLSX
.
read
(
data
,
{
this
.
wb
=
XLSX
.
read
(
data
,
{
type
:
"binary"
type
:
"binary"
...
@@ -341,34 +485,36 @@
...
@@ -341,34 +485,36 @@
},
},
// 提交导入数据
// 提交导入数据
subDelivery
()
{
subDelivery
()
{
if
(
this
.
excelList
.
length
===
0
)
{
if
(
this
.
excelList
.
length
===
0
)
{
this
.
$message
({
type
:
'warning'
,
message
:
'请先上传填写好的表格数据'
});
this
.
$message
({
type
:
'warning'
,
message
:
'请先上传填写好的表格数据'
});
return
return
}
}
if
(
this
.
excelList
.
length
>
0
&&
this
.
excelList
[
0
].
id
&&
this
.
excelList
[
0
].
express_name
&&
this
.
excelList
[
0
].
express_sn
)
{
if
(
this
.
excelList
.
length
>
0
&&
this
.
excelList
[
0
].
id
&&
this
.
excelList
[
0
].
express_name
&&
this
.
excelList
[
0
].
express_sn
)
{
deliveryOrder
(
this
.
excelList
).
then
(
res
=>
{
deliveryOrder
(
this
.
excelList
).
then
(
res
=>
{
if
(
res
.
code
===
1
)
{
if
(
res
.
code
===
1
)
{
this
.
isDeliveryOpen
=
false
;
this
.
isDeliveryOpen
=
false
;
this
.
$message
({
type
:
'success'
,
message
:
'批量发货成功'
});
this
.
$message
({
type
:
'success'
,
message
:
'批量发货成功'
});
this
.
getList
();
this
.
getList
();
}
else
{
}
else
{
let
msg
=
res
.
message
||
'批量发货失败'
let
msg
=
res
.
message
||
'批量发货失败'
this
.
$message
({
type
:
'error'
,
message
:
msg
});
this
.
$message
({
type
:
'error'
,
message
:
msg
});
}
}
});
});
}
else
{
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
'导入表格数据有误'
});
this
.
$message
({
type
:
'error'
,
message
:
'导入表格数据有误'
});
}
}
},
},
// 订单详情
// 订单详情
handleInfo
(
row
)
{
handleInfo
(
row
)
{
this
.
detailDialog
=
true
this
.
detailDialog
=
true
// let order_sn = '20200318e095e2d09354'
let
order_id
=
row
.
order_id
let
order_sn
=
row
.
parent_order_sn
orderInfo
({
order_id
:
order_id
}).
then
(
res
=>
{
if
(
res
.
code
==
1
&&
res
.
data
)
{
orderInfo
({
order_sn
:
order_sn
}).
then
(
res
=>
{
// order 对象 订单信息 order_goods_detail-订单商品信息数组
if
(
res
.
code
==
1
)
{
this
.
order_detail
=
res
.
data
.
order
this
.
order_detail
=
res
.
data
this
.
order_goods_detail
=
res
.
data
.
order_goods_detail
?
res
.
data
.
order_goods_detail
:
[];
//console.log("详情数据",this.order_goods_detail);
// this.$router.push({path: '/system/goods/management'});
}
}
})
})
},
},
...
@@ -393,35 +539,77 @@
...
@@ -393,35 +539,77 @@
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
/
deep
/
.el-range-editor.el-input__inner
{
/
deep
/
.el-range-editor.el-input__inner
{
width
:
100%
;
width
:
100%
;
}
}
/
deep
/
.el-card__body
{
height
:
calc
(
100%
-
50px
);
/
deep
/
.el-card__body
{
}
height
:
calc
(
100%
-
50px
);
.scollbox
{
}
.scollbox
{
height
:
calc
(
100%
-
50px
);
height
:
calc
(
100%
-
50px
);
overflow-y
:
scroll
;
overflow-y
:
hidden
;
}
}
.form-box
{
.form-box
{
background-color
:
#F7F8FA
;
background-color
:
#F7F8FA
;
margin-bottom
:
20px
;
/*margin-bottom: 20px;*/
padding-top
:
22px
;
padding-top
:
20px
;
}
}
.footer_pagination
{
text-align
:
right
;
.form-params
{
}
.footer_pagination
{
text-align
:
center
;
margin-top
:
15px
;
margin-top
:
15px
;
}
}
.delivery-tips-con
,
.delivery-data-con
{
.delivery-tips-con
,
.delivery-data-con
{
width
:
80%
;
width
:
80%
;
margin
:
5px
auto
;
margin
:
5px
auto
;
font-weight
:
bold
;
font-weight
:
bold
;
}
}
.delivery-data-con
{
.delivery-data-con
{
height
:
100px
;
height
:
100px
;
margin
:
20px
auto
;
margin
:
20px
auto
;
}
}
.upload-demo
{
text-align
:
center
;
.upload-demo
{
}
text-align
:
center
;
}
/* 订单卡片 样式 */
.card1
{
margin-bottom
:
20px
;
}
.table-header-spe
{
background-color
:
#F7F8FA
;
margin
:
10px
0
10px
;
}
/
deep
/
.title_table
{
width
:
calc
(
100%
-
94px
)
!important
;
margin
:
0
40px
;
}
/
deep
/
.title_table
.el-table__body-wrapper
{
display
:
none
!important
;
height
:
0
!important
;
}
/
deep
/
.title_table
tr
th
{
border-bottom
:
0
!important
;
}
/
deep
/
.title_table
::before
{
height
:
0
;
}
.table-all-con
{
height
:
calc
(
100%
-
250px
);
overflow-y
:
auto
;
padding
:
0
20px
;
}
</
style
>
</
style
>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论