Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xoadoPlatform
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yaohui
xoadoPlatform
Commits
1156383c
Commit
1156383c
authored
Apr 12, 2022
by
吕海涛
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
运营管理
parent
d101f8f0
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
964 additions
and
63 deletions
+964
-63
.env.development
.env.development
+12
-11
.env.production
.env.production
+11
-11
index.js
src/port/orderOperation/index.js
+42
-0
set-request.js
src/port/set-request.js
+7
-1
index.js
src/router/index.js
+7
-0
driverPhone.vue
src/views/operation/driverPhone.vue
+382
-0
orderDetail.vue
src/views/operation/orderDetail.vue
+503
-40
No files found.
.env.development
View file @
1156383c
ENV = 'development'
# base api
VUE_APP_BASE_API1 = 'https://apps.xoado.com'
VUE_APP_BASE_API2 = 'https://core.xoado.com'
VUE_APP_BASE_API2_ = 'https://core.xoado.com'
VUE_APP_BASE_API3 = 'https://api.xoado.com'
VUE_APP_BASE_API4 = 'https://
aitransport
.xoado.com'
VUE_APP_BASE_API5 = 'http
s://aitransport.xoado.com/brand
'
VUE_APP_BASE_API6 = 'http
s://projects.xoado.com
/transport'
VUE_APP_BASE_API7 = 'http
s://projects.xoado.com
/operate'
VUE_APP_BASE_API8 = 'http
s://projects.xoado.com
/trace'
VUE_APP_BASE_API9 = 'http
s://account.xoado.com
/payment/'
VUE_APP_BASE_API10 = 'http
s://account.xoado.com
/payment/v1/'
VUE_APP_BASE_API4 = 'https://
xiaoduochuxing
.xoado.com'
VUE_APP_BASE_API5 = 'http
://xoado.tpddns.cn:10001/brandtt
'
VUE_APP_BASE_API6 = 'http
://xoado.tpddns.net:10001
/transport'
VUE_APP_BASE_API7 = 'http
://xoado.tpddns.net:10001
/operate'
VUE_APP_BASE_API8 = 'http
://xoado.tpddns.net:10001
/trace'
VUE_APP_BASE_API9 = 'http
://xoado.tpddns.net:10001
/payment/'
VUE_APP_BASE_API10 = 'http
://xoado.tpddns.net:10001
/payment/v1/'
VUE_APP_BASE_API11 = 'https://oss.xoado.com/v1/'
VUE_APP_BASE_API12 = 'http
s://payment.sdk.xoado.com
'
VUE_APP_BASE_API13 = 'http
s://projects.xoado.com/invoice
'
VUE_APP_BASE_API14 = 'http
s://projects.xoado.com/message
'
VUE_APP_BASE_API15 = 'http
s://aitransport.xoado.com/smart
'
VUE_APP_BASE_API12 = 'http
://xoado.tpddns.net:10001
'
VUE_APP_BASE_API13 = 'http
://xoado.tpddns.net:10001/anc
'
VUE_APP_BASE_API14 = 'http
://xoado.tpddns.cn:10001/xoadotravel
'
VUE_APP_BASE_API15 = 'http
://xoado.tpddns.net:10001/brand
'
.env.production
View file @
1156383c
...
...
@@ -5,15 +5,15 @@ VUE_APP_BASE_API1 = 'https://apps.xoado.com'
VUE_APP_BASE_API2 = 'https://core.xoado.com'
VUE_APP_BASE_API2_ = 'https://core.xoado.com'
VUE_APP_BASE_API3 = 'https://api.xoado.com'
VUE_APP_BASE_API4 = 'https://
aitransport
.xoado.com'
VUE_APP_BASE_API5 = 'http
s://aitransport.xoado.com/brand
'
VUE_APP_BASE_API6 = 'http
s://projects.xoado.com
/transport'
VUE_APP_BASE_API7 = 'http
s://projects.xoado.com
/operate'
VUE_APP_BASE_API8 = 'http
s://projects.xoado.com
/trace'
VUE_APP_BASE_API9 = 'http
s://account.xoado.com
/payment/'
VUE_APP_BASE_API10 = 'http
s://account.xoado.com
/payment/v1/'
VUE_APP_BASE_API4 = 'https://
xiaoduochuxing
.xoado.com'
VUE_APP_BASE_API5 = 'http
://xoado.tpddns.cn:10001/brandtt
'
VUE_APP_BASE_API6 = 'http
://xoado.tpddns.net:10001
/transport'
VUE_APP_BASE_API7 = 'http
://xoado.tpddns.net:10001
/operate'
VUE_APP_BASE_API8 = 'http
://xoado.tpddns.net:10001
/trace'
VUE_APP_BASE_API9 = 'http
://xoado.tpddns.net:10001
/payment/'
VUE_APP_BASE_API10 = 'http
://xoado.tpddns.net:10001
/payment/v1/'
VUE_APP_BASE_API11 = 'https://oss.xoado.com/v1/'
VUE_APP_BASE_API12 = 'http
s://payment.sdk.xoado.com
'
VUE_APP_BASE_API13 = 'http
s://projects.xoado.com/invoice
'
VUE_APP_BASE_API14 = 'http
s://projects.xoado.com/message
'
VUE_APP_BASE_API15 = 'http
s://aitransport.xoado.com/smart
'
VUE_APP_BASE_API12 = 'http
://xoado.tpddns.net:10001
'
VUE_APP_BASE_API13 = 'http
://xoado.tpddns.net:10001/anc
'
VUE_APP_BASE_API14 = 'http
://xoado.tpddns.cn:10001/xoadotravel
'
VUE_APP_BASE_API15 = 'http
://xoado.tpddns.net:10001/brand
'
src/port/orderOperation/index.js
0 → 100644
View file @
1156383c
import
{
post
,
get
}
from
"@/request/http"
;
/*
*取消订单
*/
export
function
CancelOrder
(
id
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API15
+
`/xoado/order/cancelNew/
${
id
}
`
;
return
get
(
url
,
{})
}
/*
*强制完单
*/
export
function
updateBatchOrder
(
data
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API15
+
`/xoado/order/update/batch`
;
return
post
(
url
,
data
)
}
/*
*推送司机信息
*/
export
function
pushDriver
(
data
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API15
+
`/xoado/order/pushDriver`
;
return
post
(
url
,
data
)
}
/*
*根据订单号查询支付记录
*/
export
function
getpayInfo
(
data
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API6
+
`/waybill/payment/record?paymentId=&orderId=
${
data
.
orderId
}
&status=1`
;
return
get
(
url
)
}
/*
*更改支付状态
*/
export
function
paymentchannel
(
data
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API15
+
`/xoado/order/channel/payment`
;
return
post
(
url
,
data
)
}
\ No newline at end of file
src/port/set-request.js
View file @
1156383c
...
...
@@ -437,7 +437,7 @@ export function seachDividedInto(data) {
/* 投诉列表查询 */
export
function
getAllcomplainList
(
data
,
u
)
{
const
url
=
(
u
?
u
+
'/brand'
:
targetBaseUrl
)
+
'/complaint/condition'
const
url
=
(
u
?
u
+
'/brand'
:
targetBaseUrl
)
+
'/complaint/condition'
return
post
(
url
,
data
)
}
...
...
@@ -1166,3 +1166,8 @@ export function PutvoicePage(data) {
const
url
=
process
.
env
.
VUE_APP_BASE_API6
+
`/dispatchconfig/driver/mesconf`
return
put
(
url
,
data
)
}
/* 投诉原因---修改 */
export
function
updateMobilenoCaptCha
(
data
)
{
const
url
=
process
.
env
.
VUE_APP_BASE_API6
+
`/driver/updateMobile/noCaptCha`
return
put
(
url
,
data
)
}
\ No newline at end of file
src/router/index.js
View file @
1156383c
...
...
@@ -373,6 +373,13 @@ export const routes = [{
meta
:
{
title
:
'订单运维管理'
,
icon
:
'el-icon-s-home'
}
},
{
path
:
'driverPhone'
,
name
:
'driverPhone'
,
component
:
()
=>
import
(
'@/views/operation/driverPhone.vue'
),
meta
:
{
title
:
'更改司机手机号码'
,
icon
:
'el-icon-s-home'
}
},
{
path
:
'to-be-sent'
,
name
:
'toBeSent'
,
component
:
()
=>
...
...
src/views/operation/driverPhone.vue
0 → 100644
View file @
1156383c
<
template
>
<el-card>
<el-dialog
title=
"更改手机号"
:visible
.
sync=
"dialogFormVisible"
width=
"30%"
>
<el-form
:model=
"dataform"
style=
"margin: -30px"
>
<el-form-item
label=
"姓名:"
:label-width=
"formLabelWidth"
>
<span>
{{
dataform
.
driverName
}}
</span>
</el-form-item>
<el-form-item
label=
"手机号:"
:label-width=
"formLabelWidth"
>
<span>
{{
dataform
.
driverMobile
}}
</span>
</el-form-item>
<el-form-item
label=
"新手机号:"
:label-width=
"formLabelWidth"
>
<el-input
v-model=
"newPhone"
autocomplete=
"off"
style=
"width: 200px"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"updateMobile"
>
确 定
</el-button>
</div>
</el-dialog>
<el-row>
<div
class=
"title-left"
style=
"padding-left: 10px; font-weight: 800"
>
更改司机手机号
</div>
</el-row>
<el-form
class=
"search-form"
>
<el-row>
<el-col
:span=
"5"
>
<el-form-item>
<el-input
suffix-icon=
"el-icon-search"
v-model=
"selectResult.searchStr"
style=
"max-width: 302px"
placeholder=
"请输入车牌号或者车主姓名"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"6"
style=
"margin-bottom: 5px"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"searchByInfo"
>
查询
</el-button
>
</el-col>
</el-row>
</el-form>
<el-table
:data=
"data"
stripe
border
v-loading=
"tableLoading"
:header-cell-style=
"tableHeaderColor"
@
row-dblclick=
"carDetail"
style=
"width: 100%"
>
<el-table-column
type=
"index"
label=
"序号"
align=
"center"
width=
"50"
>
</el-table-column>
<el-table-column
label=
"所属运力"
align=
"center"
:show-overflow-tooltip=
"true"
>
<template
slot-scope=
"
{ row }">
<span
style=
"margin-left: 10px"
>
{{
row
.
operateOrgName
?
row
.
operateOrgName
:
"/"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"姓名"
align=
"center"
width=
"120"
>
<
template
slot-scope=
"{ row }"
>
<span
style=
"color: #43a1fc"
>
{{
row
.
driverName
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"司机类型"
align=
"center"
width=
"120"
>
<
template
slot-scope=
"{ row }"
>
<span
style=
"margin-left: 10px"
>
{{
row
.
driverType
==
1
?
"专职司机"
:
"兼职司机"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"idCardNo"
label=
"身份证号码"
align=
"center"
width=
"180"
>
</el-table-column>
<el-table-column
prop=
"driverMobile"
label=
"联系方式"
align=
"center"
width=
"120"
>
</el-table-column>
<el-table-column
prop=
"createTime"
label=
"入驻时间"
align=
"center"
width=
"180"
>
<!-- :show-overflow-tooltip=true-->
</el-table-column>
<el-table-column
prop=
"hasNetworkPapers"
label=
"网络驾驶证"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<span>
{{
row
.
hasNetworkPapers
?
"已上传"
:
"未上传"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"服务状态"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<span
style=
"margin-left: 10px"
>
{{
serverStatusText
(
row
.
runStatus
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"运营状态"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<span>
{{
runStatusText
(
row
.
serviceStatus
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"name"
label=
"操作"
align=
"center"
width=
"100"
>
<
template
slot-scope=
"{ row }"
>
<el-link
type=
"primary"
:underline=
"false"
@
click=
"setPhone(row)"
>
更改手机号
</el-link
>
</
template
>
</el-table-column>
<!-- <el-table-column-->
<!-- prop="name"-->
<!-- label="审核状态"-->
<!-- align="center"-->
<!-- width="100">-->
<!-- <template slot-scope="{row}">-->
<!-- <span v-html="auditStatus(row.auditStatus)"></span>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
<div
class=
"pagination"
v-if=
"total > 10"
>
<el-pagination
background
layout=
"prev, pager, next, jumper, total"
:current-page=
"page"
@
current-change=
"current_change"
:total=
"total"
>
</el-pagination>
</div>
</el-card>
</template>
<
script
>
import
Selects
from
"@/components/Selects"
;
import
dataSource
from
"@/libs/screen"
;
import
JudgeType
from
"@/mixins/judgeType"
;
import
{
getAllprovinceAndCity
,
updateMobilenoCaptCha
,
}
from
"@/port/set-request"
;
import
{
driverQuery
,
getAllTransport
}
from
"@/port/carOrDriver/carOrDriver"
;
export
default
{
name
:
"driver"
,
components
:
{
Selects
,
},
mixins
:
[
JudgeType
],
data
()
{
return
{
newPhone
:
""
,
dataform
:
[],
formLabelWidth
:
"130px"
,
dialogFormVisible
:
false
,
dataSource
:
dataSource
,
props
:
{
checkStrictly
:
true
,
lazy
:
true
,
lazyLoad
(
node
,
resolve
)
{
const
{
level
}
=
node
;
console
.
log
(
node
);
let
parent
;
if
(
level
==
0
)
{
parent
=
100000
;
}
else
{
parent
=
node
.
value
;
}
getAllprovinceAndCity
(
parent
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
let
list
=
res
.
data
;
const
nodes
=
list
.
map
((
item
)
=>
{
return
{
value
:
item
.
id
,
label
:
item
.
fullname
,
leaf
:
level
>=
2
,
disabled
:
parent
==
100000
?
true
:
false
,
};
});
resolve
(
nodes
);
}
});
},
},
data
:
[],
tableLoading
:
false
,
page
:
1
,
size
:
10
,
total
:
0
,
transportData
:
[],
areaCodeData
:
[],
// 参数集合
selectResult
:
{
transportList
:
[],
driverTypeList
:
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
10
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
],
auditStatusList
:
[
1
,
2
],
serviceStatusList
:
[
1
,
2
,
3
],
runStatus
:
[
1
,
2
,
3
,
4
],
positiveImageUrl
:
""
,
reverseImageUrl
:
""
,
carPositiveImageUrl
:
""
,
areaCodeList
:
""
,
networkPaperStatus
:
"0"
,
searchStr
:
""
,
},
};
},
async
created
()
{
await
this
.
getTransport
();
// 获取所有运力
await
this
.
initTable
();
},
methods
:
{
setPhone
(
d
)
{
this
.
dataform
=
d
;
this
.
newPhone
=
""
;
this
.
dialogFormVisible
=
true
;
},
carDetail
(
row
)
{
this
.
$router
.
push
({
path
:
"/transports/driver-detail"
,
query
:
{
id
:
row
.
userId
,
type
:
row
},
});
},
updateMobile
()
{
if
(
!
/
(
^1
[
3|4|5|6|7|8|9
][
0-9
]{9}
$
)
/
.
test
(
this
.
newPhone
))
{
return
this
.
$message
.
info
(
"手机号码格式不正确!"
);
}
let
d
=
this
.
dataform
;
let
json
=
{
driverId
:
d
.
userId
,
beforPhone
:
d
.
driverMobile
,
afterPhone
:
this
.
newPhone
,
// beforPhone: this.newPhone,
// afterPhone: d.driverMobile,
};
updateMobilenoCaptCha
(
json
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
initTable
();
this
.
dialogFormVisible
=
false
this
.
$message
({
type
:
"success"
,
message
:
"操作成功!"
,
});
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
},
searchByInfo
()
{
this
.
page
=
1
;
this
.
initTable
();
},
handlechangeList
(
val
)
{
let
source
=
JSON
.
parse
(
JSON
.
stringify
(
val
));
let
type
=
source
.
type
;
let
data
=
this
.
filftersFun
(
source
.
data
);
this
.
selectResult
[
type
]
=
data
;
},
async
getTransport
()
{
await
getAllTransport
({}).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
let
data
=
res
.
data
;
let
transportIdList
=
[];
let
transportIdListArr
=
[];
data
.
forEach
((
item
,
index
)
=>
{
transportIdListArr
.
push
({
id
:
String
(
item
.
transportId
),
name
:
item
.
transportName
,
});
transportIdList
.
push
(
String
(
item
.
transportId
));
});
this
.
selectResult
.
transportList
=
transportIdList
;
this
.
transportData
=
transportIdListArr
;
}
});
},
current_change
(
page
)
{
this
.
page
=
page
;
this
.
initTable
();
},
async
initTable
()
{
let
json
=
{
commercialTypeList
:
this
.
selectResult
.
auditStatusList
,
operateOrgIdList
:
this
.
selectResult
.
transportList
,
runStatus
:
this
.
selectResult
.
serviceStatusList
,
serviceStatus
:
this
.
selectResult
.
runStatus
,
driverTypeList
:
this
.
selectResult
.
driverTypeList
,
searchStr
:
this
.
selectResult
.
searchStr
,
pageVo
:
{
page
:
this
.
page
,
rows
:
this
.
size
,
},
platformId
:
this
.
$store
.
getters
.
platformId
,
operateCode
:
this
.
selectResult
.
areaCodeList
.
length
>
0
?
this
.
selectResult
.
areaCodeList
[
this
.
selectResult
.
areaCodeList
.
length
-
1
]
:
""
,
networkPaperStatus
:
this
.
selectResult
.
networkPaperStatus
,
};
this
.
tableLoading
=
true
;
await
driverQuery
(
json
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
!!
res
.
data
)
{
res
.
data
.
content
.
forEach
((
item
)
=>
{
if
(
item
.
status
==
"5"
||
item
.
status
==
"1"
)
{
return
(
item
.
operatingStatus
=
"停运"
);
}
else
return
(
item
.
operatingStatus
=
"上线"
);
});
this
.
data
=
res
.
data
.
content
;
this
.
total
=
res
.
data
.
total
;
}
}
else
{
this
.
$message
.
error
(
res
.
msg
);
}
this
.
tableLoading
=
false
;
});
},
tableRowStyle
({
row
,
rowIndex
})
{
if
(
rowIndex
%
2
!==
0
)
{
return
{
"background-color"
:
"#e3f4ff"
};
}
},
// table变色,头
tableHeaderColor
({
row
,
column
,
rowIndex
,
columnIndex
})
{
return
{
"background-color"
:
"#0099ff"
,
color
:
"#ffffff"
};
},
},
};
</
script
>
<
style
scoped
lang=
"scss"
>
.search-form
{
margin
:
5px
0
5px
0
;
.el-form-item
{
margin-bottom
:
5px
;
}
}
.el-form-item
{
margin-bottom
:
5px
;
}
.pagination
{
margin-top
:
16px
;
text-align
:
right
;
}
</
style
>
src/views/operation/orderDetail.vue
View file @
1156383c
...
...
@@ -78,16 +78,323 @@
</el-timeline-item>
</el-timeline>
</el-aside>
<el-dialog
title=
"更改订单支付状态"
:visible
.
sync=
"paystatus"
width=
"30%"
>
<div
style=
"margin: -30px 0"
>
<div
style=
"
color: #f59a23;
background: rgba(250, 205, 145, 0.3);
padding: 8px;
border-radius: 5px;
border: 1px solid rgba(245, 154, 35, 1);
"
>
温馨提示:订单支付状态修改后,不可撤回,请谨慎操作
</div>
<div>
<div
class=
"orderpaydialog orderpaydialogContent"
>
<div
style=
"display: flex; padding: 0 10px"
>
<span
style=
"
min-width: 85px;
display: inline-block;
text-align: right;
"
>
订单编号:
</span
><span>
{{
payData
.
orderId
}}
</span>
</div>
<div>
司机:
{{
payData
.
driverName
}}
(
{{
payData
.
driverPhone
}}
)
</div>
</div>
<div
class=
"orderpaydialog orderpaydialogContent"
>
<div
style=
"display: flex; padding: 0 10px"
>
<span
style=
"
min-width: 85px;
display: inline-block;
text-align: right;
"
>
订单来源:
</span
>
{{
orderSources
(
payData
.
orderSource
)
}}{{
payData
.
channelNumber
}}
</div>
<div>
车牌号:
{{
payData
.
tplateNumber
}}
</div>
</div>
<div
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
上车地点:
</div>
{{
payData
.
startAddress
}}
</div>
<div
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
下车地点:
</div>
{{
payData
.
endAddress
}}
</div>
<div
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
订单价格 :
</div>
{{
!!
payData
.
trealMoney
&&
payData
.
runType
!=
6
?
payData
.
trealMoney
+
"元"
+
(
payData
.
valuationType
==
"3"
?
" 协定价"
:
" 一口价"
)
:
payData
.
estimateMoney
+
"元"
+
(
payData
.
runType
==
6
?
" 套餐价"
:
" 预估价"
)
}}
</div>
<div
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
支付状态:
</div>
{{
payData
.
tpaymentStatus
==
2
?
"已支付"
:
"未支付"
}}
</div>
<div
style=
"display: flex; align-items: center"
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
支付方式:
</div>
<div>
<el-select
v-model=
"value"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</div>
</div>
<div
v-if=
"value * 1 != 1"
style=
"display: flex; align-items: center"
class=
"orderpaydialogContent"
>
<div
style=
"min-width: 85px; text-align: right"
>
商户订单号:
</div>
<div>
<el-input
v-model=
"input"
></el-input>
</div>
<el-link
type=
"primary"
:underline=
"false"
style=
"padding-left: 10px"
@
click=
"getpayInfoFun"
>
获取
</el-link
>
</div>
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"paystatus = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"setpaystatusBtn"
>
确定更改
</el-button
>
</div>
</el-dialog>
<el-dialog
title=
"同步司机信息"
:visible
.
sync=
"driverStatus"
width=
"30%"
>
<div
style=
"margin: -30px 0"
>
<div>
此操作将会再次同步系统运单所派司机信息(最新),推送至第三方渠道、乘客端,确定执行。
</div>
<div
style=
"padding: 10px 0"
>
<div
class=
"demo-input-suffix"
style=
"
display: flex;
width: 60%;
align-items: center;
padding: 5px 0;
"
>
<div
style=
"white-space: nowrap; min-width: 80px"
>
司机姓名:
</div>
<el-input
disabled
v-model=
"driverdata.driverName"
>
</el-input>
</div>
<div
class=
"demo-input-suffix"
style=
"
display: flex;
width: 60%;
align-items: center;
padding: 5px 0;
"
>
<div
style=
"white-space: nowrap; min-width: 80px"
>
联系方式:
</div>
<el-input
disabled
v-model=
"driverdata.driverPhone"
>
</el-input>
</div>
<div
class=
"demo-input-suffix"
style=
"
display: flex;
width: 60%;
align-items: center;
padding: 5px 0;
"
>
<div
style=
"white-space: nowrap; min-width: 80px"
>
车牌号:
</div>
<el-input
disabled
v-model=
"driverdata.tplateNumber"
>
</el-input>
</div>
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"driverStatus = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"pushDrive"
>
确定
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"强制完单"
:visible
.
sync=
"finishStatus"
width=
"30%"
>
<div
style=
"margin: -30px 0"
>
<div
style=
"
padding: 10px;
background: rgba(51, 153, 255, 0.3);
border-radius: 10px;
border: 1px solid rgba(129, 211, 248, 1);
margin-bottom: 20px;
"
>
<div>
用车时间:
{{
finishdata
.
appointmentTime
|
formatDates
}}
</div>
<div>
上车地点:
{{
finishdata
.
startAddress
}}
</div>
<div>
下车地点:
{{
finishdata
.
endAddress
}}
</div>
</div>
<div>
<div
style=
"margin-bottom: 10px"
>
<span
><span
style=
"
width: 100px;
display: inline-block;
text-align: right;
"
>
司机姓名:
</span
>
{{
finishdata
.
driverName
}}
</span
>
</div>
<div
style=
"margin-bottom: 10px"
>
<span
><span
style=
"
width: 100px;
display: inline-block;
text-align: right;
"
>
司机手机号:
</span
>
{{
finishdata
.
driverPhone
}}
</span
>
</div>
<div
style=
"margin-bottom: 10px"
>
<span
><span
style=
"
width: 100px;
display: inline-block;
text-align: right;
"
>
车牌号:
</span
>
{{
finishdata
.
tplateNumber
}}
</span
>
</div>
<div
style=
"margin-bottom: 10px"
>
<span
><span
style=
"
width: 100px;
display: inline-block;
text-align: right;
"
>
操作人:
</span
>
{{
userInfo
.
name
}}
</span
>
</div>
</div>
<div
style=
"color: #aaaaaa; font-size: 15px"
>
<span
style=
"color: red"
>
*
</span
>
外部司机非系统内司机,无法推送渠道车辆位置信息,点击完成后不可改派,不可取消,请仔细确认
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"finishStatus = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"updataBatch"
>
强制完单
</el-button
>
</div>
</el-dialog>
<!-- JJNTFZ_20220406164108046_4908288 -->
<el-main>
<div
class=
"containers"
>
<el-card
class=
"box-card"
>
<div
class=
"clearfix"
>
<span
class=
"title"
>
订单详情
</span>
<div>
<el-button
type=
"danger"
size=
"mini"
>
取消订单
</el-button>
<el-button
type=
"primary"
size=
"mini"
>
同步司机信息
</el-button>
<el-button
type=
"warning"
size=
"mini"
>
强制完单
</el-button>
<el-button
type=
"warning"
size=
"mini"
>
更改支付状态
</el-button>
<el-button
type=
"danger"
size=
"mini"
@
click=
"cancelOrder()"
v-if=
"dataSource.status * 1
<
3
"
>
取消订单
</el-button
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"driverInfo()"
v-if=
"dataSource.status * 1 == 2"
>
同步司机信息
</el-button
>
<el-button
type=
"warning"
size=
"mini"
v-if=
"
dataSource.status * 1
<
6
&&
dataSource
.
status
*
1
>
= 1
"
@click="finishOrder()"
>强制完单
</el-button
>
<el-button
type=
"warning"
size=
"mini"
@
click=
"setpaystatus"
v-if=
"
dataSource.status * 1 >= 6 &&
(dataSource.orderSource * 1 == 6 ||
dataSource.orderSource * 1 == 4 ||
dataSource.orderSource * 1 == 7)
"
>
更改支付状态
</el-button
>
<!-- orderSource=6 4 7 -->
<!-- 完单 未支付 自营 -->
<!--
<span
v-html=
"renderfun(dataSource)"
></span>
-->
</div>
</div>
...
...
@@ -430,6 +737,14 @@ import {
OrderDetailsSelect
,
soundRecording
,
}
from
"@/port/set-request"
;
import
{
platformInfosList
}
from
"@/port/platfrom/setting"
;
import
{
CancelOrder
,
updateBatchOrder
,
pushDriver
,
getpayInfo
,
paymentchannel
,
}
from
"@/port/orderOperation"
;
import
maps
from
"./maps"
;
import
CopyIcon
from
"./components/CopyIcon"
;
import
{
mapGetters
}
from
"vuex"
;
...
...
@@ -459,72 +774,75 @@ export default {
optionsx
:
[
{
brandUrl
:
"https://hgxd.99zcx.com"
,
testurl
:
"http://xoado.tpddns.cn:10001/"
,
value
:
"61fdff1d455c4ab8a2efc564c245b905"
,
label
:
"玖玖华安"
,
},
{
value
:
"ea72c5a2563d3e3b16181c416ebbdf72"
,
brandUrl
:
"https://liubei.xoado.com"
,
testurl
:
"http://xoado.tpddns.cn:10001/"
,
label
:
"刘备出行"
,
},
{
value
:
"dad52b5719e3202e32a6619e14d0ccec"
,
brandUrl
:
"https://linghang.xoado.com"
,
testurl
:
"http://xoado.tpddns.cn:10001/"
,
label
:
"领航约车"
,
},
{
value
:
"8a4d80da79fe27a17c4db92a0c4cb5f6"
,
brandUrl
:
"https://xcserver.jncxchina.com"
,
testurl
:
"http://xoado.tpddns.cn:10001/"
,
label
:
"江南出行"
,
},
{
value
:
"12c75685f26941caf275d19dff0c3399"
,
brandUrl
:
"https://tuotuo.xoado.com"
,
testurl
:
"http://xoado.tpddns.cn:10001/"
,
label
:
"妥妥E行"
,
},
],
optionse
:
"61fdff1d455c4ab8a2efc564c245b905"
,
orderid
:
""
,
// orderid: "JJNTFZ_20220406164108046_4908288",//强制完单
orderid
:
""
,
//同步司机信息
inputStatus
:
false
,
dialogVisible
:
false
,
sOrF
:
1
,
// orderInfoForm: {
// status: "",
// startAddress: "",
// endAddress: "",
// reason: "3",
// appointmentTime: "",
// passengerNumber: "",
// passengerName: "",
// passengerMobile: "",
// },
// orderid: "JJNTZY_20220403093127043_8459289",
finishStatus
:
false
,
driverStatus
:
false
,
paystatus
:
false
,
driverdata
:
[],
finishdata
:
[],
payData
:
[],
userInfo
:
JSON
.
parse
(
this
.
$store
.
getters
.
userInfo
),
options
:
[
{
value
:
"0"
,
label
:
"线上支付"
,
},
{
value
:
"1"
,
label
:
"线下支付"
,
},
],
value
:
"0"
,
orderrecord
:
""
,
getOrderLogList
:
[],
// dataSource: {},
// flag: false,
// type: false,
// count: 1,
// map: null,
input
:
""
,
polylines
:
[],
// startLat: "",
// startLng: "",
// endLat: "",
// endLng: "",
// loadings: false,
// options: [],
// options1: [],
// tableData: [],
// startAddressItem: {}, // 起点数据
// endAddressItem: {}, // 终点数据
leftLogData
:
[],
// 左侧日志
};
},
created
()
{},
created
()
{
platformInfosList
({})
.
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
// optionsx
}
})
.
catch
(()
=>
{});
},
methods
:
{
Inquire
()
{
...
...
@@ -546,7 +864,141 @@ export default {
this
.
getOrderInfo
(
json
);
this
.
seeLeftLog
(
json
);
},
finishOrder
()
{
this
.
finishdata
=
this
.
dataSource
;
this
.
finishStatus
=
true
;
},
updataBatch
()
{
let
json
=
[{
orderid
:
this
.
finishdata
.
orderId
,
status
:
6
}];
updateBatchOrder
(
json
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
finishStatus
=
false
;
this
.
$message
({
type
:
"success"
,
message
:
"操作成功!"
,
});
this
.
Inquire
();
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
},
driverInfo
()
{
this
.
driverdata
=
this
.
dataSource
;
this
.
driverStatus
=
true
;
},
setpaystatusBtn
()
{
if
(
this
.
value
<
1
&&
!
this
.
input
)
{
this
.
$message
({
type
:
"info"
,
message
:
"商户订单号不能为空!"
,
});
return
;
}
let
data
=
this
.
payData
;
let
a
=
this
.
datainput
;
let
json
=
{
orderId
:
data
.
orderId
,
tPaymentId
:
this
.
value
<
1
?
a
.
businessId
:
""
,
tPaymentStatus
:
1
,
tPaymentType
:
this
.
value
<
1
?
a
.
executeStatus
:
"4"
,
tRealMoney
:
this
.
value
<
1
?
a
.
businessInfo
.
totalFee
:
!!
data
.
trealMoney
&&
data
.
runType
!=
6
?
data
.
trealMoney
:
data
.
estimateMoney
,
};
paymentchannel
(
json
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
paystatus
=
false
;
this
.
$message
({
type
:
"success"
,
message
:
"操作成功!"
,
});
this
.
Inquire
();
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
},
pushDrive
()
{
let
json
=
{
platformId
:
this
.
driverdata
.
platformId
,
orderId
:
this
.
driverdata
.
orderId
,
};
pushDriver
(
json
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
driverStatus
=
false
;
this
.
$message
({
type
:
"success"
,
message
:
"操作成功!"
,
});
this
.
Inquire
();
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
},
cancelOrder
()
{
this
.
$confirm
(
"操作不可撤回,确定取消该订单?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(()
=>
{
// 取消订单
CancelOrder
(
this
.
orderid
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
$message
({
type
:
"success"
,
message
:
"操作成功!"
,
});
this
.
Inquire
();
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"info"
,
message
:
"已取消操作"
,
});
});
},
setpaystatus
()
{
this
.
payData
=
this
.
dataSource
;
this
.
paystatus
=
true
;
},
getpayInfoFun
()
{
// let json={
// orderId:"20210301095247903_1H2wew42w7T2w"
// }
getpayInfo
(
this
.
payData
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
input
=
res
.
data
[
0
].
businessSerial
;
this
.
datainput
=
res
.
data
[
0
];
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
msg
,
});
}
});
},
chooseSOrF
(
s
)
{
this
.
sOrF
=
s
;
this
.
$refs
.
audio
.
playbackRate
=
s
;
...
...
@@ -575,7 +1027,7 @@ export default {
this
.
$refs
.
audio
.
pause
();
},
getOrderInfo
(
obj
)
{
getThisorderInfo
([
obj
.
orderId
],
obj
.
brandU
rl
,
obj
.
platformId
).
then
(
getThisorderInfo
([
obj
.
orderId
],
obj
.
testu
rl
,
obj
.
platformId
).
then
(
(
res
)
=>
{
if
(
res
.
status
==
200
)
{
this
.
inputStatus
=
true
;
...
...
@@ -639,7 +1091,6 @@ export default {
this
.
getOrderLog
(
obj
);
},
getOrderLog
(
obj
)
{
console
.
log
(
obj
);
let
json
=
{
loadings
:
false
,
businessId
:
obj
.
orderId
,
...
...
@@ -658,7 +1109,7 @@ export default {
options1
:
[],
};
userLog
(
json
,
obj
.
brandU
rl
,
obj
.
platformId
).
then
((
res
)
=>
{
userLog
(
json
,
obj
.
testu
rl
,
obj
.
platformId
).
then
((
res
)
=>
{
if
(
res
.
status
==
200
)
{
if
(
res
.
data
)
{
this
.
getOrderLogList
=
res
.
data
.
content
;
...
...
@@ -1041,4 +1492,16 @@ html
.orangeColor
{
color
:
#ff9901
;
}
.orderpaydialog
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.orderpaydialog
>
div
{
flex
:
1
;
}
.orderpaydialogContent
{
margin
:
10px
0
;
display
:
flex
;
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment