Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CRM
Project
Project
Details
Activity
Releases
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
华国豪
CRM
Commits
86ae5328
Commit
86ae5328
authored
May 09, 2022
by
zhengke
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/huaguohao/crm
parents
68414f37
0e68134a
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
536 additions
and
5 deletions
+536
-5
customerOrder.vue
src/components/customerManage/customerOrder.vue
+4
-0
orderList.vue
src/components/customerManage/orderList.vue
+2
-3
ticketOrder.vue
src/components/guestManagement/ticketOrder.vue
+2
-2
index.vue
src/components/planeTicketOrder/index.vue
+519
-0
router.js
src/router.js
+9
-0
No files found.
src/components/customerManage/customerOrder.vue
View file @
86ae5328
...
@@ -259,6 +259,10 @@
...
@@ -259,6 +259,10 @@
let
data
=
JSON
.
parse
(
this
.
$route
.
query
.
erpOrderObj
)
let
data
=
JSON
.
parse
(
this
.
$route
.
query
.
erpOrderObj
)
this
.
msg
.
OrderId
=
data
.
OrderId
this
.
msg
.
OrderId
=
data
.
OrderId
}
}
//接收订单统计传过来的参数
if
(
this
.
$route
.
query
.
OrderId
){
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
}
this
.
Employee
()
//业务员
this
.
Employee
()
//业务员
this
.
GetTicketStatusEnumList
()
//出票枚举
this
.
GetTicketStatusEnumList
()
//出票枚举
let
$this
=
this
let
$this
=
this
...
...
src/components/customerManage/orderList.vue
View file @
86ae5328
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<th
width=
"12%"
>
单号
</th>
<th
width=
"12%"
>
单号
</th>
<th
width=
"8.5%"
>
客人
</th>
<th
width=
"8.5%"
>
客人
</th>
<th
width=
"6.5%"
>
人数
</th>
<th
width=
"6.5%"
>
人数
</th>
<th
width=
"8.5%"
>
起始城市
</th>
<th
width=
"8.5%"
>
出行概述
</th>
<th
width=
"6.5%"
>
应收
</th>
<th
width=
"6.5%"
>
应收
</th>
<th
width=
"6.5%"
>
实收
</th>
<th
width=
"6.5%"
>
实收
</th>
<th
width=
"6.5%"
>
退款
</th>
<th
width=
"6.5%"
>
退款
</th>
...
@@ -70,8 +70,7 @@
...
@@ -70,8 +70,7 @@
</td>
</td>
<td
style=
"border:none"
>
{{
item
.
GuestCount
}}
人
</td>
<td
style=
"border:none"
>
{{
item
.
GuestCount
}}
人
</td>
<td
style=
"border:none"
>
<td
style=
"border:none"
>
{{
item
.
StartCityName
}}
->
{{
item
.
StartCityName
}}
{{
item
.
EndCityName
}}
</td>
</td>
<td
style=
"border:none"
>
<td
style=
"border:none"
>
<p
@
click=
"editOrderAmount(item)"
class=
"cp"
<p
@
click=
"editOrderAmount(item)"
class=
"cp"
...
...
src/components/guestManagement/ticketOrder.vue
View file @
86ae5328
...
@@ -631,7 +631,7 @@
...
@@ -631,7 +631,7 @@
<div
v-if=
"name=='凭证图'"
class=
"Credentials-box"
>
<div
v-if=
"name=='凭证图'"
class=
"Credentials-box"
>
<div
class=
"Credentials-text"
>
<div
class=
"Credentials-text"
>
<div
class=
"Credentialstext-box"
>
<div
class=
"Credentialstext-box"
>
<p>
熔断凭证
</p>
<p>
熔断
/取消
凭证
</p>
<div
class=
"Credentialsimg-box"
>
<div
class=
"Credentialsimg-box"
>
<el-image
v-for=
"(items,index) in obj.CancelVoucherList"
:key=
"index"
<el-image
v-for=
"(items,index) in obj.CancelVoucherList"
:key=
"index"
:src=
"domainManager().ViittoFileUrl+items"
></el-image>
:src=
"domainManager().ViittoFileUrl+items"
></el-image>
...
@@ -639,7 +639,7 @@
...
@@ -639,7 +639,7 @@
</div>
</div>
<div
class=
"Credentialstext-box"
>
<div
class=
"Credentialstext-box"
>
<p>
取消
凭证
</p>
<p>
出票
凭证
</p>
<div
class=
"Credentialsimg-box"
>
<div
class=
"Credentialsimg-box"
>
<el-image
v-for=
"(items,index) in obj.TicketVoucherList"
:key=
"index"
<el-image
v-for=
"(items,index) in obj.TicketVoucherList"
:key=
"index"
:src=
"domainManager().ViittoFileUrl+items"
>
:src=
"domainManager().ViittoFileUrl+items"
>
...
...
src/components/planeTicketOrder/index.vue
0 → 100644
View file @
86ae5328
<
template
>
<div
class=
"content"
>
<div
class=
"header"
>
<div
class=
"tools"
>
<h1>
订单核算统计
</h1>
<div
class=
"rightmenu"
>
<el-button
size=
"mini"
type=
"primary"
@
click=
"downLoadExcel"
>
导出
</el-button
>
</div>
</div>
<div
class=
"query-box"
>
<el-row
:gutter=
"20"
>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
订单号
</span>
<el-input
size=
"mini"
class=
"w210"
v-model=
"msg.OrderId"
placeholder=
"订单号"
clearable
@
clear=
"getList"
@
keyup
.
enter
.
native=
"getList"
></el-input>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
客人姓名
</span
>
<el-input
size=
"mini"
class=
"w210"
v-model=
"msg.GusetName"
placeholder=
"客人姓名"
clearable
@
clear=
"getList"
@
keyup
.
enter
.
native=
"getList"
></el-input>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
出行概述
</span
>
<el-input
size=
"mini"
class=
"w210"
v-model=
"msg.StartCityName"
placeholder=
"出行概述"
clearable
@
clear=
"getList"
@
keyup
.
enter
.
native=
"getList"
></el-input>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
业务员
</span>
<el-select
size=
"mini"
filterable
v-model=
"msg.EnterID"
@
change=
"getList"
clearable
placeholder=
"业务员"
>
<el-option
v-for=
"item in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"item.EmployeeId"
>
</el-option>
</el-select>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
出票状态
</span
>
<el-select
size=
"mini"
v-model=
"msg.TicketStatus"
@
change=
"getList"
>
<el-option
v-for=
"(item, index) in ticketingStatusList"
:key=
"index"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
订单状态
</span
>
<el-select
size=
"mini"
v-model=
"msg.OrderStatus"
@
change=
"getList"
>
<el-option
v-for=
"(item, index) in OrderStatusList"
:key=
"index"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-col>
<el-col
:xs=
"7"
:sm=
"6"
:md=
"5"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
收款状态
</span
>
<el-select
size=
"mini"
v-model=
"msg.Q_IsCollect"
@
change=
"getList"
>
<el-option
v-for=
"(item, index) in QIsCollectList"
:key=
"index"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-col>
<el-col
:xs=
"8"
:sm=
"7"
:md=
"6"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
报名开始
</span
>
<el-date-picker
v-model=
"msg.StartTime"
@
change=
"getList"
size=
"mini"
style=
"width: 100%"
format=
"yyyy-MM-dd"
type=
"date"
placeholder=
"开始日期"
>
</el-date-picker>
</el-col>
<el-col
:xs=
"8"
:sm=
"7"
:md=
"6"
:lg=
"4"
:xl=
"3"
>
<span
class=
"font-size-12"
style=
"padding-right: 10px"
>
报名结束
</span
>
<el-date-picker
v-model=
"msg.EndTime"
@
change=
"getList"
size=
"mini"
style=
"width: 100%"
format=
"yyyy-MM-dd"
type=
"date"
placeholder=
"结束日期"
>
</el-date-picker>
</el-col>
</el-row>
</div>
</div>
<div
class=
"table"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
:border=
"true"
:fit=
"true"
v-loading=
"loading"
:cell-style=
"columenStyle"
:header-cell-style=
"getRowClass"
>
<el-table-column
fixed
prop=
"EnterName"
label=
"业务员"
>
<template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
合计
</div>
<div
v-else
>
{{
scope
.
row
.
EnterName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
fixed
prop=
"OrderId"
label=
"订单号"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
---
</div>
<div
v-else
@
click=
"toOrder(scope.row.OrderId)"
class=
"hover"
>
{{
scope
.
row
.
OrderId
}}
</div>
</
template
>
</el-table-column>
<el-table-column
fixed
prop=
"GuestName"
label=
"客人名"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
---
</div>
<div
v-else
>
{{
scope
.
row
.
GuestName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"city"
label=
"性质"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
---
</div>
<div
v-else
>
<span
v-if=
"scope.row.GuestCount == 1"
>
单人
</span>
<span
v-else
>
多人
</span>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"StartCityName"
label=
"行程时间"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
---
</div>
<div
v-else
>
{{
scope
.
row
.
StartCityName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"GuestCount"
label=
"人数"
></el-table-column>
<el-table-column
prop=
"TicketStatusName"
label=
"状态"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.OrderId === 0"
>
---
</div>
<div
v-else
>
{{
scope
.
row
.
TicketStatusName
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"营业收入"
width=
"960"
>
<el-table-column
prop=
"TicketMoney"
label=
"单机票款"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.TicketMoney == 0"
>
---
</p>
<p
v-else
><span>
{{
scope
.
row
.
TicketMoney
}}
</span
>
/
<span
:style=
"
{
color:
scope.row.TicketMoney > scope.row.TicketIncome
? 'red'
: '#000',
}"
>
{{
scope
.
row
.
TicketIncome
}}
</span></p>
</
template
>
</el-table-column>
<el-table-column
label=
"单签证款"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.VisaMoney == 0"
>
---
</p>
<p
v-else
>
<span>
{{
scope
.
row
.
VisaMoney
}}
</span>
/
<span
:style=
"
{
color:
scope.row.VisaMoney > scope.row.VisaIncome ? 'red' : '#000',
}">
{{
scope
.
row
.
VisaIncome
}}
</span>
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"单地接款"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.DiJieMoney == 0"
>
---
</p>
<p
v-else
>
<span>
{{
scope
.
row
.
DiJieMoney
}}
</span
>
/
<span
:style=
"
{
color:
scope.row.DiJieMoney > scope.row.DiJieIncome
? 'red'
: '#000',
}"
>
{{
scope
.
row
.
DiJieIncome
}}
</span
>
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"MealMoney"
label=
"套餐款"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.MealMoney == 0"
>
---
</p>
<p
v-else
>
<span>
{{
scope
.
row
.
MealMoney
}}
</span
>
/
<span
:style=
"
{
color:
scope.row.MealMoney > scope.row.MealIncome ? 'red' : '#000',
}"
>
{{
scope
.
row
.
MealIncome
}}
</span
>
</p>
</
template
>
</el-table-column>
<el-table-column
prop=
"OtherIncome"
label=
"其他收款"
width=
"100"
>
</el-table-column>
<el-table-column
prop=
"Money"
label=
"合计应收款"
width=
"100"
>
</el-table-column>
<el-table-column
prop=
"IncomeMoney"
label=
"已收款"
>
</el-table-column>
<el-table-column
prop=
"DueinMoney"
label=
"未收款"
>
<
template
slot-scope=
"scope"
>
<span
:style=
"
{color:scope.row.DueinMoney>0?'red':'#000'}">
{{
scope
.
row
.
DueinMoney
}}
</span>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"营业成本"
>
<el-table-column
prop=
"TicketCost"
label=
"机票成本"
>
</el-table-column>
<el-table-column
prop=
"TicketCost"
label=
"签证成本"
>
</el-table-column>
<el-table-column
prop=
"DiJieCost"
label=
"地接成本"
>
</el-table-column>
<el-table-column
prop=
"MealCost"
label=
"套餐成本"
>
</el-table-column>
<el-table-column
prop=
"OtherCost"
label=
"其他成本"
>
</el-table-column>
<el-table-column
prop=
"MealCost"
label=
"合计数"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"BackMoney"
label=
"退款费用"
>
</el-table-column>
<el-table-column
prop=
"TaxMoney"
label=
"平台费用"
>
</el-table-column>
<el-table-column
prop=
"Profit"
label=
"订单毛利"
>
<
template
slot-scope=
"scope"
>
<span
:style=
"
{color:scope.row.Profit
<
=
0
?'
red
'
:
'#
000
'}"
>
{{
scope
.
row
.
Profit
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"ProfitRate"
label=
"毛利率"
>
<
template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
ProfitRate
}}
%
</div
>
</
template
>
</el-table-column>
</el-table>
<el-pagination
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:page-sizes=
"[30, 60,90,100]"
:page-size=
"msg.pageSize"
layout=
"total,prev,sizes,pager,next"
:total=
"total"
style=
"margin-top: 12px; float: right"
>
</el-pagination>
</div>
</div>
</template>
<
script
>
export
default
{
created
()
{
// erp自动登陆传过来的参数
if
(
this
.
$route
.
query
.
erpOrderObj
)
{
let
data
=
JSON
.
parse
(
this
.
$route
.
query
.
erpOrderObj
);
this
.
msg
.
OrderId
=
data
.
OrderId
;
}
this
.
Employee
();
//业务员
this
.
GetTicketStatusEnumList
();
//出票枚举
//监听
let
$this
=
this
;
this
.
MsgBus
.
$on
(
"closeGetList"
,
function
()
{
$this
.
getList
();
});
this
.
getList
();
},
data
()
{
return
{
loading
:
false
,
ticketingStatusList
:
[],
// 出票状态
total
:
0
,
msg
:
{
pageIndex
:
1
,
pageSize
:
30
,
OrderId
:
""
,
//订单id
GusetName
:
""
,
//客人姓名
GuestId
:
""
,
//客人id
StartCityName
:
""
,
//出行概述
EnterID
:
""
,
//业务员id
TicketStatus
:
"0"
,
//出票状态
OrderStatus
:
"1"
,
//订单状态
Q_IsCollect
:
"0"
,
//收款状态
StartTime
:
""
,
EndTime
:
""
,
},
OrderStatusList
:
[
{
Name
:
"正常"
,
Id
:
"1"
},
{
Name
:
"取消"
,
Id
:
"2"
},
],
QIsCollectList
:
[
{
Name
:
"不限"
,
Id
:
"0"
},
{
Name
:
"已收齐"
,
Id
:
"1"
},
{
Name
:
"未收齐"
,
Id
:
"2"
},
],
EmployeeList
:
[],
tableData
:
[],
StatModel
:[]
};
},
methods
:
{
// 获取业务员
Employee
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
msg
=
{
RB_Group_id
:
userInfo
.
RB_Group_id
,
BranchId
:
-
1
,
DepartmentId
:
0
,
PostId
:
0
,
IsLeave
:
0
,
};
this
.
apipost2
(
"admin_get_EmployeeGetList"
,
msg
,
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
}
else
{
}
},
(
err
)
=>
{}
);
},
// 获取出票状态枚举
GetTicketStatusEnumList
()
{
this
.
apipost
(
"/api/Order/GetTicketStatusEnumList"
,
{},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
ticketingStatusList
=
res
.
data
.
data
;
let
data
=
{
Name
:
"全部"
,
Id
:
"0"
,
};
this
.
ticketingStatusList
.
unshift
(
data
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
});
},
//获取表格数据
getList
()
{
this
.
loading
=
true
;
this
.
apipost
(
"/api/Order/GetCRMGuestOrderCheckPageList_v2"
,
this
.
msg
,
(
res
)
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
.
pageData
;
this
.
tableData
=
data
;
this
.
msg
.
pageSize
=
res
.
data
.
data
.
pageSize
console
.
log
(
this
.
msg
.
pageSize
)
this
.
total
=
res
.
data
.
data
.
count
;
console
.
log
(
this
.
total
)
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
}
);
},
//分页
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
handleSizeChange
(
val
)
{
this
.
msg
.
pageSize
=
val
;
this
.
getList
();
},
//导出
downLoadExcel
()
{
if
(
!
this
.
msg
.
StartTime
||
!
this
.
msg
.
EndTime
)
{
let
tips
=
"请选择开始时间、结束时间!"
;
this
.
$confirm
(
tips
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(()
=>
{})
.
catch
(()
=>
{});
return
;
}
this
.
GetLocalFile
(
"/api/Order/GetCRMGuestOrderCheckToExcel"
,
this
.
msg
,
"订单表.xls"
);
},
//订单跳转
toOrder
(
val
){
this
.
$router
.
push
({
path
:
'/customerOrder'
,
query
:{
OrderId
:
val
}})
},
//改变状态背景颜色
columenStyle
({
columnIndex
}){
if
(
columnIndex
==
6
){
return
"background:#f0f5fb"
}
},
//表格居中
getRowClass
({
rowIndex
,
columnIndex
})
{
return
"text-align:center"
;
},
},
};
</
script
>
<
style
lang=
"less"
scoped
>
.content {
.header {
.tools {
display: flex;
justify-content: space-between;
margin: 10px 0;
}
.query-box {
.el-row {
.el-col {
display: flex;
align-items: center;
margin-bottom: 15px;
span {
flex-shrink: 0;
}
}
}
}
}
.hover:hover{
cursor: pointer;
color: skyblue;
}
}
</
style
>
src/router.js
View file @
86ae5328
...
@@ -19,6 +19,7 @@ import customerConfiguration from "./components/customerManage/customerConfigura
...
@@ -19,6 +19,7 @@ import customerConfiguration from "./components/customerManage/customerConfigura
import
customerOrder
from
"./components/customerManage/customerOrder"
import
customerOrder
from
"./components/customerManage/customerOrder"
import
myCustomerOrder
from
"./components/customerManage/myCustomerOrder"
import
myCustomerOrder
from
"./components/customerManage/myCustomerOrder"
import
automaticLogin
from
'./views/automaticLogin'
import
automaticLogin
from
'./views/automaticLogin'
import
planeTicketOrder
from
'./components/planeTicketOrder/index'
Vue
.
use
(
Router
);
Vue
.
use
(
Router
);
export
default
new
Router
({
export
default
new
Router
({
...
@@ -455,6 +456,14 @@ export default new Router({
...
@@ -455,6 +456,14 @@ export default new Router({
meta
:
{
meta
:
{
title
:
"我的订单"
title
:
"我的订单"
}
}
},
{
path
:
"/planeTicketOrder"
,
name
:
"planeTicketOrder"
,
component
:
planeTicketOrder
,
meta
:
{
title
:
"订单核算统计"
}
}
}
]
]
},
},
...
...
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