Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
罗超
SuperMan
Commits
89e4af2a
Commit
89e4af2a
authored
May 23, 2023
by
沈良进
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
cc0bed6f
9fe3ced7
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1151 additions
and
64 deletions
+1151
-64
Saleshomepage_1920.css
src/assets/css/home/Saleshomepage_1920.css
+9
-4
xiaosouYQ.png
src/assets/img/xiaosouYQ.png
+0
-0
ServiceCommissionUser.vue
...nancialModule/ServiceCommission/ServiceCommissionUser.vue
+25
-10
TicketUserDetails.vue
...nts/FinancialModule/TradeCommission/TicketUserDetails.vue
+28
-26
domesticCommissionUser.vue
src/components/FinancialModule/domesticCommissionUser.vue
+24
-8
HotelManagement.vue
src/components/Hotel/HotelManagement.vue
+13
-7
ExpectedCommission.vue
src/components/sale/ExpectedCommission.vue
+544
-0
OrderList.vue
src/components/sale/components/OrderList.vue
+119
-0
notification.vue
src/components/sale/components/notification.vue
+101
-0
progressComm.vue
src/components/sale/components/progressComm.vue
+209
-0
sale.vue
src/components/sale/sale.vue
+69
-7
config.js
src/router/config.js
+10
-2
No files found.
src/assets/css/home/Saleshomepage_1920.css
View file @
89e4af2a
...
...
@@ -8,15 +8,20 @@
.saleChartCont
{
width
:
100%
;
height
:
95%
;
box-sizing
:
border-box
;}
.personal
{
width
:
100%
;
height
:
100%
;}
.PersonalData
{
width
:
100%
;
height
:
350px
;
background
:
white
;
margin-top
:
10px
}
.PersonalData_l
{
width
:
100%
;
height
:
3
50
px
;
overflow-x
:
auto
;
padding
:
20px
}
.PersonalData_l
.l_top
{
width
:
700px
;
height
:
1
00
px
;}
.PersonalData_l
{
width
:
100%
;
height
:
3
68
px
;
overflow-x
:
auto
;
padding
:
20px
}
.PersonalData_l
.l_top
{
width
:
700px
;
height
:
1
18
px
;}
.l_top
.tx_img
{
width
:
94px
;
height
:
94px
;
border-radius
:
50%
;
overflow
:
hidden
;
float
:
left
}
.l_top
.img
{
width
:
80px
;
height
:
70px
;
margin-left
:
90px
;
float
:
left
;
margin-top
:
15px
}
.l_top
.img
{
width
:
60px
;
height
:
60px
;
margin-left
:
10px
;
/* margin-left: 90px; */
float
:
left
;
margin-top
:
15px
}
.p_name
{
margin-left
:
17px
;
margin-top
:
25px
;
float
:
left
}
.p_name
span
:nth-child
(
1
)
{
font-size
:
18px
;
color
:
#333333
;
display
:
block
}
.p_name
span
:nth-child
(
2
)
{
font-size
:
12px
;
color
:
#333333
;
margin-top
:
5px
;
display
:
block
}
.l_top
.royalty
{
margin-left
:
30px
;
float
:
left
;
margin-top
:
17px
;
display
:
flex
;
flex-direction
:
column
}
.l_top
.royalty
.tc
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
flex-start
}
.l_top
.royalty
.tc
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
flex-start
}
.l_top
.royalty
.tc
span
:nth-child
(
1
)
{
font-size
:
14px
;
color
:
#333333
;
margin-top
:
8px
;
margin-right
:
5px
}
.l_top
.royalty
.tc
span
:nth-child
(
2
)
{
font-size
:
36px
;
color
:
#333333
;
font-weight
:
bold
}
.order
{
width
:
700px
;
height
:
205px
;
background
:
#F5F5F5
;
margin-top
:
5px
;
padding
:
20px
}
...
...
src/assets/img/xiaosouYQ.png
0 → 100644
View file @
89e4af2a
445 Bytes
src/components/FinancialModule/ServiceCommission/ServiceCommissionUser.vue
View file @
89e4af2a
...
...
@@ -26,7 +26,14 @@
<div
class=
"flexOne domesticCommissionUser"
>
<div>
<ul
class=
"opUl"
>
<li>
<em>
期数
</em>
<el-select
v-model=
"msg.PeriodId"
size=
"mini"
@
change=
"handleCurrentChange(1)"
>
<el-option
label=
"不限"
:value=
"0"
></el-option>
<el-option
v-for=
"(item,index) in PeriodsList"
:key=
"item.index"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</li>
<li>
<em>
人员
</em>
<el-select
v-model=
"msg.UserId"
size=
"mini"
@
change=
"handleCurrentChange(1)"
filterable
:disabled=
'disabled'
>
...
...
@@ -68,7 +75,7 @@
</el-select>
</li>
-->
</ul>
</div>
<table
v-loading=
"loading"
class=
"singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
...
...
@@ -147,18 +154,24 @@
let
ActionMenuCode
=
userInfo
.
ActionMenuCode
;
if
(
ActionMenuCode
.
indexOf
(
'home_CommissionSeeAll'
)
!=
-
1
)
{
//是否有看所有人的权限
this
.
disabled
=
false
;
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
Number
(
this
.
$route
.
query
.
UserId
):
-
1
}
else
{
this
.
disabled
=
true
;
this
.
msg
.
UserId
=
Number
(
userInfo
.
EmployeeId
)
// this.msg.UserId = Number(userInfo.EmployeeId)
if
(
!
this
.
$route
.
query
.
UserId
){
this
.
msg
.
UserId
=
Number
(
userInfo
.
EmployeeId
)
}
else
{
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
Number
(
this
.
$route
.
query
.
UserId
):
Number
(
userInfo
.
EmployeeId
)
}
}
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
PeriodId
)
{
this
.
msg
.
PeriodId
=
this
.
$route
.
query
.
PeriodId
}
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
Type
)
{
this
.
msg
.
Type
=
this
.
$route
.
query
.
Type
}
this
.
getList
();
// this.getqishilist()
this
.
getqishilist
()
this
.
getCompanyList
()
//获取公司
this
.
getEmployee
()
//人员
this
.
getDerpartMent
()
//部门
...
...
@@ -218,15 +231,17 @@
},
getqishilist
()
{
this
.
apipost
(
"sellcommission_Get
GN
CommissionPeriodsList"
,
"sellcommission_Get
Dx
CommissionPeriodsList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
PeriodsList
=
res
.
data
.
data
;
if
(
this
.
PeriodsList
&&
this
.
PeriodsList
.
length
>
0
)
{
// this.msg.Periods = Number(this.PeriodsList[0].Id)
if
(
!
this
.
$route
.
query
.
PeriodId
||
this
.
$route
.
query
.
isSale
){
this
.
msg
.
PeriodId
=
this
.
PeriodsList
[
0
].
Id
}
}
this
.
getList
()
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
...
...
@@ -247,7 +262,7 @@
PeriodId
:
this
.
$route
.
query
.
PeriodId
,
UserId
:
item
.
UserId
,
RB_Branch_Id
:
item
.
RB_Branch_Id
,
RB_Department_Id
:
item
.
RB_Department_Id
,
RB_Department_Id
:
item
.
RB_Department_Id
,
blank
:
'y'
,
Type
:
this
.
msg
.
Type
,
tab
:
'单项服务提现详情'
,
...
...
@@ -275,4 +290,4 @@
}
}
</
script
>
\ No newline at end of file
</
script
>
src/components/FinancialModule/TradeCommission/TicketUserDetails.vue
View file @
89e4af2a
...
...
@@ -58,7 +58,7 @@
flex
:
1
;
display
:
flex
;
flex-direction
:
row
;
}
.relative-position
{
flex
:
1
;
...
...
@@ -89,7 +89,7 @@
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
center
;
}
.sanjiao
{
width
:
0
;
...
...
@@ -128,13 +128,13 @@
<ul
class=
"opUl"
>
<li>
<em>
出团公司
</em>
<el-select
filterable
size=
"mini"
v-model=
'msg.OutBranchId'
<el-select
filterable
size=
"mini"
v-model=
'msg.OutBranchId'
@
change=
'handleCurrentChange(1)'
:disabled=
"disabled"
>
<el-option
label=
"不限"
:value=
"-1"
:key=
"-1"
></el-option>
<el-option
v-for=
"item in companyList"
:label=
'item.BName'
:value=
'item.Id'
:label=
'item.BName'
:value=
'item.Id'
:key=
'item.Id'
></el-option>
</el-select>
...
...
@@ -149,24 +149,24 @@
</li>
<li>
<em>
所属公司
</em>
<el-select
filterable
size=
"mini"
v-model=
'msg.RB_Branch_Id'
<el-select
filterable
size=
"mini"
v-model=
'msg.RB_Branch_Id'
@
change=
'getDepartment();handleCurrentChange(1)'
:disabled=
"disabled"
>
<el-option
label=
"不限"
:value=
"-1"
:key=
"-1"
></el-option>
<el-option
v-for=
"item in companyList"
:label=
'item.BName'
:value=
'item.Id'
:label=
'item.BName'
:value=
'item.Id'
:key=
'item.Id'
></el-option>
</el-select>
</li>
<li>
<em>
部门
</em>
<el-select
filterable
size=
"mini"
v-model=
'msg.RB_Department_Id'
<el-select
filterable
size=
"mini"
v-model=
'msg.RB_Department_Id'
@
change=
'getEmployee();handleCurrentChange(1)'
>
<el-option
label=
"不限"
:value=
"-1"
></el-option>
<el-option
v-for=
'item in departmentList'
<el-option
v-for=
'item in departmentList'
:label=
'item.DepartmentName'
:value=
'item.DepartmentID'
:key=
'item.DepartmentID'
>
...
...
@@ -175,7 +175,7 @@
</li>
<li>
<em>
人员
</em>
<el-select
v-model=
"msg.UserId"
size=
"mini"
<el-select
v-model=
"msg.UserId"
size=
"mini"
@
change=
"handleCurrentChange(1)"
:disabled=
"disabled"
filterable
>
<el-option
label=
"不限"
:value=
"-1"
></el-option>
<el-option
label=
"微途"
:value=
"-2"
></el-option>
...
...
@@ -183,12 +183,12 @@
:value=
"item.empId"
></el-option>
</el-select>
</li>
<!--
<li
style=
"position: fixed;right: 0;top: 51px;"
>
<input
type=
"button"
class=
"normalBtn"
value=
"导出"
@
click=
"exportExcel"
>
</li>
-->
</ul>
</div>
<table
v-loading=
"loading"
class=
"singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
...
...
@@ -240,7 +240,7 @@
import
moment
from
"moment"
export
default
{
components
:{
},
data
()
{
return
{
...
...
@@ -256,7 +256,7 @@
RB_Branch_Id
:
-
1
,
//公司ID
OutBranchId
:
-
1
,
//出团公司ID
},
loading
:
false
,
//数据源
dataList
:
[],
...
...
@@ -299,10 +299,10 @@
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
ActionMenuCode
=
userInfo
.
ActionMenuCode
;
this
.
msg
.
PeriodId
=
this
.
$route
.
query
.
PeriodId
?
Number
(
this
.
$route
.
query
.
PeriodId
):
-
1
this
.
msg
.
OutBranchId
=
this
.
$route
.
query
.
RB_Branch_Id
>-
1
?
Number
(
this
.
$route
.
query
.
RB_Branch_Id
):
Number
(
userInfo
.
RB_Branch_id
)
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
Number
(
this
.
$route
.
query
.
UserId
):
Number
(
userInfo
.
EmployeeId
)
if
(
ActionMenuCode
.
indexOf
(
'S_CheckBranchOrder'
)
!=
-
1
||
ActionMenuCode
.
indexOf
(
'S_CheckAllOrder'
)
!=-
1
||
ActionMenuCode
.
indexOf
(
'F_Query_AllIncomPay'
)
!=-
1
)
{
//是否有看所有人的权限
...
...
@@ -310,12 +310,14 @@
this
.
msg
.
OutBranchId
=
-
1
this
.
msg
.
RB_Branch_Id
=
-
1
// this.msg.RB_Department_Id = -1
this
.
msg
.
UserId
=
-
1
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
this
.
$route
.
query
.
UserId
:
-
1
}
else
{
this
.
disabled
=
true
;
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
this
.
$route
.
query
.
UserId
:
Number
(
userInfo
.
EmployeeId
)
}
},
methods
:
{
getDepartment
()
{
...
...
@@ -325,7 +327,7 @@
this
.
departmentList
=
res
.
data
.
data
;
}
},
err
=>
{})
},
getCompany
(){
this
.
apipost
(
'admin_get_BranchGetList'
,
this
.
getCompanyMsg
,
res
=>
{
...
...
@@ -339,7 +341,7 @@
"sellcommission_GetTYSaleCommissionPeriodsList"
,{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
PeroidsList
=
res
.
data
.
data
;
if
(
!
this
.
$route
.
query
.
PeriodId
){
if
(
!
this
.
$route
.
query
.
PeriodId
||
this
.
$route
.
query
.
isSale
){
this
.
msg
.
PeriodId
=
this
.
PeroidsList
[
0
].
Id
}
this
.
getList
()
...
...
@@ -378,7 +380,7 @@
query
:
{
PeriodId
:
this
.
$route
.
query
.
PeriodId
,
// OutBranchId: item.RB_Branch_Id,
UserId
:
item
.
UserId
,
UserId
:
item
.
UserId
,
blank
:
'y'
,
tab
:
'同业提现详情'
}
...
...
@@ -409,4 +411,4 @@
}
}
</
script
>
\ No newline at end of file
</
script
>
src/components/FinancialModule/domesticCommissionUser.vue
View file @
89e4af2a
...
...
@@ -26,7 +26,14 @@
<div
class=
"flexOne domesticCommissionUser"
>
<div>
<ul
class=
"opUl"
>
<li>
<em>
期数
</em>
<el-select
v-model=
"msg.PeriodId"
size=
"mini"
@
change=
"handleCurrentChange(1)"
>
<el-option
label=
"不限"
:value=
"0"
></el-option>
<el-option
v-for=
"(item,index) in PeriodsList"
:key=
"item.index"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</li>
<li>
<em>
人员
</em>
<el-select
v-model=
"msg.UserId"
size=
"mini"
@
change=
"handleCurrentChange(1)"
filterable
:disabled=
'disabled'
>
...
...
@@ -60,7 +67,7 @@
</el-select>
</li>
</ul>
</div>
<table
v-loading=
"loading"
class=
"singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
...
...
@@ -143,15 +150,21 @@
let
ActionMenuCode
=
userInfo
.
ActionMenuCode
;
if
(
ActionMenuCode
.
indexOf
(
'home_CommissionSeeAll'
)
!=
-
1
)
{
//是否有看所有人的权限
this
.
disabled
=
false
;
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
Number
(
this
.
$route
.
query
.
UserId
):
-
1
}
else
{
this
.
disabled
=
true
;
this
.
msg
.
UserId
=
Number
(
userInfo
.
EmployeeId
)
// this.msg.UserId = Number(userInfo.EmployeeId)
if
(
!
this
.
$route
.
query
.
UserId
){
this
.
msg
.
UserId
=
Number
(
userInfo
.
EmployeeId
)
}
else
{
this
.
msg
.
UserId
=
this
.
$route
.
query
.
UserId
?
Number
(
this
.
$route
.
query
.
UserId
):
Number
(
userInfo
.
EmployeeId
)
}
}
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
PeriodId
)
{
this
.
msg
.
PeriodId
=
this
.
$route
.
query
.
PeriodId
}
this
.
get
List
();
// this.getqishilist()
this
.
get
qishilist
()
this
.
getCompanyList
()
//获取公司
this
.
getEmployee
()
//人员
this
.
getDerpartMent
()
//部门
...
...
@@ -217,8 +230,11 @@
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
PeriodsList
=
res
.
data
.
data
;
if
(
this
.
PeriodsList
&&
this
.
PeriodsList
.
length
>
0
)
{
// this.msg.Periods = Number(this.PeriodsList[0].Id)
if
(
!
this
.
$route
.
query
.
PeriodId
||
this
.
$route
.
query
.
isSale
){
this
.
msg
.
PeriodId
=
this
.
PeriodsList
[
0
].
Id
}
}
this
.
getList
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
...
...
@@ -240,7 +256,7 @@
PeriodId
:
this
.
$route
.
query
.
PeriodId
,
UserId
:
item
.
UserId
,
RB_Branch_Id
:
item
.
RB_Branch_Id
,
RB_Department_Id
:
item
.
RB_Department_Id
,
RB_Department_Id
:
item
.
RB_Department_Id
,
blank
:
'y'
,
tab
:
'国内提现详情'
}
...
...
@@ -267,4 +283,4 @@
}
}
</
script
>
\ No newline at end of file
</
script
>
src/components/Hotel/HotelManagement.vue
View file @
89e4af2a
...
...
@@ -280,7 +280,7 @@
<li>
<span>
<em>
{{
$t
(
"system.quety_area"
)
}}
</em>
<el-select
v-model=
"msg.QCountry"
clearable
class=
"w150"
filterable
<el-select
v-model=
"msg.QCountry"
clearable
class=
"w150"
filterable
:disabled=
"isDisableCountry"
@
change=
"getProvinceList(msg.QCountry, 1)"
:placeholder=
"$t('hotel.hotel_country')"
>
<el-option
v-for=
"item in countryList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
></el-option>
</el-select>
...
...
@@ -561,6 +561,7 @@
QFileEndDate
:
""
,
//报价上传结束日期
IsUpFile
:
0
,
//是否上传报价(1-已上传,2-未上传)
},
isDisableCountry
:
false
,
//是否禁用国家查询
};
},
methods
:
{
...
...
@@ -864,11 +865,12 @@
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
getEmployeeList
();
this
.
GetHotelPirceStockAuth
();
this
.
getCountryList
();
this
.
GetHotelTypeList
();
this
.
GetHotelPirceTypeList
();
if
(
this
.
userInfo
.
EmployeeId
==
2604
||
this
.
userInfo
.
EmployeeId
==
2739
||
this
.
userInfo
.
EmployeeId
==
2758
||
this
.
userInfo
.
EmployeeId
==
2773
)
{
this
.
msg
.
QCountry
=
651
;
this
.
isDisableCountry
=
true
;
}
this
.
selectResource
();
},
created
()
{
if
(
this
.
$route
.
query
.
hasOwnProperty
(
"cache"
))
{
...
...
@@ -894,7 +896,11 @@
if
(
id
)
{
this
.
msg
.
ID
=
id
;
}
this
.
selectResource
();
this
.
getEmployeeList
();
this
.
GetHotelPirceStockAuth
();
this
.
getCountryList
();
this
.
GetHotelTypeList
();
this
.
GetHotelPirceTypeList
();
},
};
...
...
src/components/sale/ExpectedCommission.vue
0 → 100644
View file @
89e4af2a
<
style
scoped
>
.ExpectedCommission-form
{
padding
:
10px
20px
0
20px
;
}
.groupTourOrder
{
display
:
flex
;
flex-wrap
:
nowrap
;
flex-grow
:
1
;
}
.groupTourOrder
span
{
/* width: 50%; */
white-space
:
nowrap
;
font-size
:
14px
;
background
:
#DEE1E6
;
color
:
#333333
;
border-radius
:
5px
;
padding
:
5px
10px
;
margin-left
:
20px
;
/* #333333 */
}
.groupTourOrder
span
span
{
color
:
red
;
}
.CommissionLadder-form
{
display
:
flex
;
flex-wrap
:
wrap
;
margin
:
0
20px
;
/* margin-bottom: 10px; */
}
.CommissionLadder
{
flex
:
1
;
padding
:
16px
20px
20px
20px
;
background
:
#ffffff
;
}
.CommissionLadder.Line
{
margin
:
0
0
10px
0
;
}
.CommissionLadder
.title
{
font-size
:
16px
;
font-weight
:
bold
;
padding
:
0
0
5px
0
;
}
.CommissionLadder
p
{
padding
:
5px
0
0px
0
;
font-size
:
15px
;
}
.CommissionInfor
{
padding
:
0
0
10px
0
;
}
.CommissionInfor
span
{
margin-left
:
5px
;
font-size
:
13px
;
}
.CommissionInfor
span
:first-child
{
margin-left
:
0
;
}
.CommissionInfor
span
span
{
color
:
red
;
}
.CommissionLadder
:last-child
{
margin-right
:
0
;
}
.OpenOrder
{
background
:
#ffffff
;
padding
:
10px
20px
20px
20px
;
}
.OpenOrderMore
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
0
0
10px
0
;
cursor
:
0
;
font-size
:
16px
;
font-weight
:
400
;
color
:
#333333
;
}
.OpenOrderMore
span
{
color
:
#999999
;
font-size
:
14px
;
}
</
style
>
<
template
>
<div
style=
"height: 92vh;overflow-y: scroll;"
>
<div
style=
"display: flex;align-items: center; justify-content: space-between;background: #fff;
height: 40px;padding: 0 20px;"
>
<span>
<!-- 总提成:
<span>
{{
CommissionInfor
.
TotalCMoney
}}
</span>
-->
</span>
<div
style=
"display: flex;align-items: center;"
>
<!--
<i
class=
"el-icon-chat-dot-square"
style=
"cursor: pointer;color: #33B3FF;font-size: 31px;margin-right: 10px;"
@
click=
"rightOpen=true"
></i>
-->
<template
v-for=
"(item ,index) in MonthList"
>
<input
type=
"button"
:key=
"index"
:class=
"
{'normalBtn':Month==item.Id,'hollowFixedBtn':Month!=item.Id}"
:value="item.Name"
@click="clickActive(item)">
</input>
</
template
>
</div>
</div>
<div
class=
"CommissionLadder-form"
>
<div
style=
"display: flex;justify-content: space-between; width: 100%;"
>
<div
style=
"display: flex;flex-direction: column;flex-grow: 2;"
>
<div
class=
"CommissionLadder-form"
style=
"margin: 20px 0 10px 0;"
>
<div
class=
"CommissionLadder"
style=
"padding: 10px 20px 10px 0;"
>
<p
style=
"padding: 0;flex-shrink: 0;padding: 0 20px 10px 20px;"
>
公司所有国内出发线路(单团.散拚)
</p>
<div
class=
"groupTourOrder"
>
<span>
销售额:
<span>
{{CommissionInfor.SalesMoney}}
</span></span>
<span>
订单数:
<span>
{{CommissionInfor.SalesOrderNum}}
</span></span>
<span>
人头数:
<span>
{{CommissionInfor.SalesPeopleNum}}
</span></span>
<span>
提成比例:
<span>
{{CommissionInfor.SalesRate}}
</span></span>
<span>
预期提成:
<span>
{{CommissionInfor.SalesCommission}}
</span></span>
</div>
</div>
</div>
<div
style=
"display: flex;"
>
<div
class=
"CommissionLadder Line"
style=
"margin: 0 10px 0 0;"
>
<div
class=
"title"
>
日本小包团、落地团以及单项提成
</div>
<p>
当月个人毛利润
</p>
<div
class=
"CommissionInfor"
>
<span>
订单数量:
<span>
{{CommissionInfor.JapanOrderNum}}
</span>
</span>
<span>
人头数量:
<span>
{{CommissionInfor.JapanPeopleNum}}
</span>
</span>
<span>
预期利润:
<span>
{{CommissionInfor.JapanProfit}}
</span>
</span>
<span>
预期比例:
<span>
{{CommissionInfor.JapanRate}}%
</span>
</span>
<span>
预期提成:
<span>
{{CommissionInfor.JapanCommission}}
</span>
</span>
</div>
<div>
<progressComm
:commissionratioList=
"JapaneseProfit"
></progressComm>
</div>
</div>
<div
class=
"CommissionLadder Line"
style=
"margin: 0 0 0 0;"
>
<div
class=
"title"
>
欧洲小包团、落地团以及单项提成
</div>
<p>
当月个人毛利润
</p>
<div
class=
"CommissionInfor"
>
<span>
订单数量:
<span>
{{CommissionInfor.EuropeOrderNum}}
</span>
</span>
<span>
人头数量:
<span>
{{CommissionInfor.EuropePeopleNum}}
</span>
</span>
<span>
预期利润:
<span>
{{CommissionInfor.EuropeProfit}}
</span>
</span>
<span>
预期比例:
<span>
{{CommissionInfor.EuropeRate}}%
</span>
</span>
<span>
预期提成:
<span>
{{CommissionInfor.EuropeCommission}}
</span>
</span>
</div>
<div>
<progressComm
:commissionratioList=
"EuropeProfit"
></progressComm>
</div>
</div>
</div>
<div
style=
"display: flex;"
>
<div
class=
"CommissionLadder Line"
style=
"margin: 0 10px 10px 0;"
>
<p>
当月人头奖励(不含门票、包车)
</p>
<div
class=
"CommissionInfor"
>
<span>
人头数量:
<span>
{{CommissionInfor.PeopleNum}}
</span>
</span>
<span>
奖励:
<span>
{{CommissionInfor.PeopleMoney}}
</span>
</span>
</div>
<div>
<progressComm
:commissionratioList=
"JapaneseLine"
></progressComm>
</div>
</div>
<div
class=
"CommissionLadder Line"
>
<p>
当月人头奖励(不含门票、包车)
</p>
<div
class=
"CommissionInfor"
>
<span>
人头数量:
<span>
{{CommissionInfor.EuropePNum}}
</span>
</span>
<span>
奖励:
<span>
{{CommissionInfor.EuropeMoney}}
</span>
</span>
</div>
<div>
<progressComm
:commissionratioList=
"EuropeLine"
></progressComm>
</div>
</div>
</div>
<div
style=
"display: flex;"
>
<div
class=
"CommissionLadder Line"
style=
"margin: 0;"
>
<p
style=
"display: flex;justify-content: space-between;padding: 0 0 10px 0;"
>
<span>
年终奖
</span>
<span
style=
"color: red;font-size: 13px;"
>
注:年终奖励从每年3月起始
</span>
</p>
<div
class=
"CommissionInfor"
>
<span>
连续达标
<span
style=
"margin-left: 10px;"
>
{{CommissionInfor.BonusNum}}
</span>
月
</span>
<span><span>
每月人数35人以上
</span></span>
</span>
</div>
<div>
<progressComm
:commissionratioList=
"AnnualBonus"
></progressComm>
</div>
</div>
</div>
</div>
<div
class=
"CommissionLadder Line"
style=
"margin: 20px 0 0 10px;"
>
<p
style=
"padding: 0 0 10px 0;"
>
国内提成
</p>
<div>
<el-table
border
ref=
"multipleTable"
:data=
"DomesticLine.Rlist"
>
<el-table-column
width=
"80"
prop=
"RuleName"
label=
"团队类型"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
RuleName
}}
</
template
>
</el-table-column>
<el-table-column
width=
"70"
prop=
"OrderNum"
label=
"订单数"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
OrderNum
?
scope
.
row
.
OrderNum
:
'-'
}}
</
template
>
</el-table-column>
<el-table-column
width=
"70"
prop=
"PeopleNum"
label=
"报名数"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
PeopleNum
?
scope
.
row
.
PeopleNum
:
'-'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"Way"
label=
"提成方式"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Way
==
2
?
'利润提成'
:
'人头奖励'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"ProfitRate"
label=
"提成"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<template
v-if=
"scope.row.Way==1"
>
{{
scope
.
row
.
Money
+
'/人'
}}
</
template
>
<
template
v-if=
"scope.row.Way==2"
>
{{
scope
.
row
.
ProfitRate
+
'%'
}}
</
template
>
<p
v-if=
"scope.row.Way == 2"
style=
"font-size: 12px;color: #999999;white-space: wrap;"
>
利润比{{scope.row.ProfitRate}}%
利润
<
=
0
时
{{
scope
.
row
.
Money
}}元/人</
p
>
</template>
</el-table-column>
<el-table-column
prop=
"Profit"
label=
"预期利润"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<template
v-if=
"scope.row.Profit
<
=
0
"
>
10/人
</
template
>
<
template
v-else
>
{{
scope
.
row
.
Way
==
2
&&
scope
.
row
.
Profit
?
scope
.
row
.
Profit
:
'-'
}}
</
template
>
</template>
</el-table-column>
<el-table-column
prop=
"Commission"
label=
"预期提成"
show-overflow-tooltip
><
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Commission
}}
</
template
></el-table-column>
</el-table>
</div>
</div>
</div>
</div>
<div
class=
"CommissionLadder-form"
>
</div>
<div
class=
"ExpectedCommission-form"
>
<!-- 未平账单 -->
<div
class=
"OpenOrder"
>
<div
class=
"OpenOrderMore"
>
<div>
帐未平订单
</div>
<span
@
click=
"goMore"
style=
"cursor: pointer;"
>
更多
<i
class=
"el-icon-d-arrow-right"
></i>
</span>
</div>
<OrderList
:OrderList=
"OrderList"
></OrderList>
</div>
<div
style=
"display: flex;justify-content: space-between;"
>
<div
style=
"padding: 10px 0 0 0;color: #E95252;line-height: 30px;width: 50%;white-space: wrap;"
>
<p
style=
"font-weight: bold;"
>
出境提成提醒:
</p>
1.日本线.韩国线.东南亚线.南亚线散拚.与单团提成保持1%提成不变
</br>
2.增加境外散拚提成(日本线.欧洲线分别奖励计算)
</br>
3.增加人头奖励(日本线与其他.欧洲线2种)
</br>
4.所有业绩结算皆以出发日.尾款收齐为基准
</br>
5.人头奖励包含归属各线所有产品(散拚.一日游.多日游.签证等)
</br>
6.人头奖励每月至少20条方可进行奖励!
</br>
7.以上所有核算皆以月为单位.核算基础为出发日或签证收取日算起!
</br>
8.直客部门归属直客业务编制.不参与同业部门业务销售!
</br>
9.单项服务每月人头数与年终人头奖励接按0.5计算
</br>
10.以上制度公司会因市场变动与业务实际情况採取适当因应或调整,敬请注意!!
</div>
<div
style=
"padding: 10px 0 0 0;color: #E95252;line-height: 30px;width: 50%;white-space: wrap;"
>
<p
style=
"font-weight: bold;"
>
关于提成发放流程的补充通知:
</p>
<p>
提成按时发放是公司所有人的期盼,同时也是公司重视的一部份,202
3年04月27日发布文件编号:2023-A-19“关于提成发放流程的通知”文件,在实际
操作过程中还是有部份人员不重视、无公德心,未在规定时间内及时改价或成本录入
未完成,导致5月提成未正常发放,为不影响其他销售的提成,特对提成规则做以下补充:
</p>
1.从2023年5月18日起,行政部会按提成规定对已平账订单进行制单;
</br>
2.未在规定时间内改价平账订单,违反提成规则,该订单报名当事人提成金额为0。
</br>
3.未平账订单继续追溯至下个月,直到全部帐平为止,再放发上月其他订单提成
</br>
4.未结团团期或成本遗漏补录等原因,造成团队利润变动,销售提成会在次月再次验证此团利润,多退少补;
</br>
5.提成工作环环相扣,请所有人员务必有公德心,同时遵守工作流程,尊重他人。
</br>
</div>
</div>
</div>
<!-- 消息通知 -->
<notification
v-if=
"rightOpen"
@
close=
"rightOpen = false"
></notification>
</div>
</template>
<
script
>
import
notification
from
'./components/notification'
import
OrderList
from
'./components/OrderList'
// import OrderList from '../myOrdersAllType/components/OrderList'
import
progressComm
from
'./components/progressComm'
export
default
{
components
:
{
notification
,
OrderList
,
progressComm
,
},
data
()
{
return
{
DomesticLine
:{
type
:
4
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
AnnualBonus
:{
type
:
3
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
EuropeProfit
:{
type
:
2
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
EuropeLine
:{
type
:
1
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
JapaneseProfit
:{
type
:
2
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
JapaneseLine
:{
type
:
1
,
AvgLureNum
:
0
,
AvfOrderNum
:
0
,
CommissionRate
:
0
,
Commission
:
0
,
CommissionProfit
:
0
,
CommissionRateList
:[]
},
dataRuleList
:[],
rightOpen
:
false
,
msg
:{
Month
:
''
},
Month
:
1
,
MonthList
:[
{
Name
:
'上月'
,
Id
:
'0'
},
{
Name
:
'当月'
,
Id
:
'1'
},
],
CommissionInfor
:{},
OrderList
:
[],
loading
:
true
,
YearTime
:
''
,
LastMonthTime
:
''
,
MonthTime
:
''
,
commissionMsg
:{
pageIndex
:
1
,
pageSize
:
6
,
OrderId
:
""
,
//订单id
GuestId
:
0
,
//客人id
EnterId
:
0
,
//业务员id
OrderState
:
'1'
,
//订单状态
Q_IsCollect
:
"2"
,
//收款状态
StartTime
:
""
,
//报名开始日期
EndTime
:
""
,
//报名结束日期
FinishSTime
:
""
,
//完结开始时间
FinishETime
:
""
,
//完结结束时间
DepartSTime
:
""
,
//出发开始
DepartETime
:
""
,
//出发结束
TCNUM
:
""
,
//团号
ProductName
:
""
,
//商品名称
CustomerName
:
""
,
//客户名称
LureEmpId
:
0
,
//引流人员
LineId
:
0
,
//线路
TravelType
:
0
,
//跟团类型 1跟团 2当地游
OrderType
:
"0"
,
//订单类型
IsSelectCRM
:
0
,
//1来源crm
IsMyOrder
:
1
,
//1我的订单
},
};
},
mounted
()
{
this
.
getList
()
},
created
()
{
let
nowdays
=
new
Date
()
this
.
Year
=
new
Date
().
getFullYear
()
this
.
LastMonthTime
=
new
Date
().
getMonth
()
this
.
MonthTime
=
new
Date
().
getMonth
()
+
1
this
.
msg
.
Month
=
this
.
Year
+
'-'
+
(
this
.
MonthTime
>
10
?
this
.
MonthTime
:
'0'
+
this
.
MonthTime
)
this
.
MonthList
[
0
].
Name
=
this
.
MonthList
[
0
].
Name
+
'('
+
this
.
LastMonthTime
+
'月)'
this
.
MonthList
[
1
].
Name
=
this
.
MonthList
[
1
].
Name
+
'('
+
this
.
MonthTime
+
'月)'
this
.
commissionMsg
.
DepartSTime
=
this
.
Year
+
'-'
+
(
this
.
MonthTime
>
10
?
this
.
MonthTime
:
'0'
+
this
.
MonthTime
)
+
'-01'
//出发开始
var
MonthDayNum
=
new
Date
(
this
.
Year
,
this
.
msg
.
Month
,
0
).
getDate
();
//计算当月的天数
this
.
commissionMsg
.
DepartETime
=
this
.
Year
+
'-'
+
(
this
.
MonthTime
>
10
?
this
.
MonthTime
:
'0'
+
this
.
MonthTime
)
+
(
MonthDayNum
>
10
?
MonthDayNum
:
'0'
+
MonthDayNum
)
//出发结束
},
methods
:
{
goMore
(){
this
.
$router
.
push
({
name
:
'erpMyCustomerOrder'
,
query
:
{
blank
:
'y'
}
});
},
clickActive
(
item
){
this
.
Month
=
item
.
Id
if
(
item
.
Id
==
1
){
this
.
msg
.
Month
=
this
.
Year
+
'-'
+
(
this
.
MonthTime
>
10
?
this
.
MonthTime
:
'0'
+
this
.
MonthTime
)
}
else
{
this
.
msg
.
Month
=
this
.
Year
+
'-'
+
(
this
.
LastMonthTime
>
10
?
this
.
LastMonthTime
:
'0'
+
this
.
LastMonthTime
)
}
this
.
getList
()
// this.getData()
},
// 获取规则列表数据
getList
()
{
this
.
apipost
(
"sellcommission_GetTYSaleCommissionRuleList"
,
{},
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataRuleList
=
res
.
data
.
data
[
0
];
this
.
JapaneseLine
.
CommissionRateList
=
this
.
dataRuleList
.
AwardRuleList
this
.
JapaneseProfit
.
CommissionRateList
=
this
.
dataRuleList
.
ProfitRuleList
this
.
EuropeLine
.
CommissionRateList
=
this
.
dataRuleList
.
EuropeAwardRuleList
this
.
EuropeProfit
.
CommissionRateList
=
this
.
dataRuleList
.
EuropeProfitRuleList
this
.
AnnualBonus
.
CommissionRateList
=
this
.
dataRuleList
.
BonusRuleList
this
.
getData
()
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
});
},
// 获取预期数据
getData
(){
this
.
apipost
(
'sellcommission_GetTYSaleExpectCommission'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
this
.
CommissionInfor
=
data
;
// 日本及其他人头奖励
this
.
JapaneseLine
.
AvgLureNum
=
this
.
CommissionInfor
.
PeopleNum
?
this
.
CommissionInfor
.
PeopleNum
:
0
this
.
JapaneseLine
.
Commission
=
this
.
CommissionInfor
.
PeopleMoney
?
this
.
CommissionInfor
.
PeopleMoney
:
0
// 日本及其他提成比例
this
.
JapaneseProfit
.
AvgLureNum
=
this
.
CommissionInfor
.
JapanCommission
?
this
.
CommissionInfor
.
JapanCommission
:
0
this
.
JapaneseProfit
.
AvfOrderNum
=
this
.
CommissionInfor
.
JapanOrderNum
?
this
.
CommissionInfor
.
JapanOrderNum
:
0
this
.
JapaneseProfit
.
CommissionRate
=
this
.
CommissionInfor
.
JapanRate
?
this
.
CommissionInfor
.
JapanRate
:
0
this
.
JapaneseProfit
.
Commission
=
this
.
CommissionInfor
.
JapanCommission
?
this
.
CommissionInfor
.
JapanCommission
:
0
this
.
JapaneseProfit
.
CommissionProfit
=
this
.
CommissionInfor
.
JapanProfit
?
this
.
CommissionInfor
.
JapanProfit
:
0
// 欧洲人头奖励
this
.
EuropeLine
.
AvgLureNum
=
this
.
CommissionInfor
.
EuropePNum
?
this
.
CommissionInfor
.
EuropePNum
:
0
this
.
EuropeLine
.
Commission
=
this
.
CommissionInfor
.
EuropeMoney
?
this
.
CommissionInfor
.
EuropeMoney
:
0
// 欧洲及其他提成比例
this
.
EuropeProfit
.
AvgLureNum
=
this
.
CommissionInfor
.
EuropeCommission
?
this
.
CommissionInfor
.
EuropeCommission
:
0
this
.
EuropeProfit
.
AvfOrderNum
=
this
.
CommissionInfor
.
EuropeOrderNum
?
this
.
CommissionInfor
.
EuropeOrderNum
:
0
this
.
EuropeProfit
.
CommissionRate
=
this
.
CommissionInfor
.
EuropeRate
?
this
.
CommissionInfor
.
EuropeRate
:
0
this
.
EuropeProfit
.
Commission
=
this
.
CommissionInfor
.
EuropeCommission
?
this
.
CommissionInfor
.
EuropeCommission
:
0
this
.
EuropeProfit
.
CommissionProfit
=
this
.
CommissionInfor
.
EuropeProfit
?
this
.
CommissionInfor
.
EuropeProfit
:
0
// 年终奖
this
.
AnnualBonus
.
AvfOrderNum
=
this
.
CommissionInfor
.
BonusNum
?
this
.
CommissionInfor
.
BonusNum
:
0
this
.
AnnualBonus
.
Commission
=
this
.
CommissionInfor
.
BonusPeriods
?
this
.
CommissionInfor
.
BonusPeriods
:
0
console
.
log
(
this
.
CommissionInfor
,
'----'
)
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
this
.
loading
=
false
},
err
=>
{
this
.
loading
=
false
}
);
this
.
apipost
(
'sellcommission_Post_GetGNSaleExpectCommission'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
DomesticLine
=
res
.
data
.
data
}
})
this
.
commissionMsg
.
IsMyOrder
=
'1'
this
.
apipost
(
'CarSingle_post_GetGuestOrderStatisticsPageList'
,
this
.
commissionMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
.
pageData
if
(
data
.
length
>
5
){
for
(
let
i
=
0
;
i
<
6
;
i
++
){
this
.
OrderList
.
push
(
data
[
i
])
}
}
else
{
this
.
OrderList
=
data
}
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
this
.
loading
=
false
},
err
=>
{
this
.
loading
=
false
}
)
}
}
};
</
script
>
src/components/sale/components/OrderList.vue
0 → 100644
View file @
89e4af2a
<
template
>
<div>
<el-table
border
ref=
"multipleTable"
:data=
"OrderList"
:default-sort=
"
{prop: 'null', order: 'null'}"
:sort-by="['Money','Income','PreferTipAmount','PlatformTax','Refund','CostMoney','OrderProfit','DueInMoney']">
<el-table-column
width=
"200"
prop=
"CreateTimeStr"
label=
"订单Id"
show-overflow-tooltip
>
<template
slot-scope=
"scope"
>
<div>
<p
class=
"cursor-pointer c059FF6 fz18 row-c"
@
click=
"goDetails(scope.row)"
>
<el-tag
style=
"margin-right: 5px;"
size=
"mini"
>
{{
scope
.
row
.
OrderTypeName
}}
</el-tag>
<span>
{{
scope
.
row
.
OrderId
}}
</span>
</p>
<p>
{{
scope
.
row
.
CreateTimeStr
}}
</p>
</div>
</
template
>
</el-table-column>
<el-table-column
width=
"200"
prop=
"CreateTimeStr"
label=
"团号"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<div>
<p
class=
" fz14"
:class=
"
{'cursor-pointer c059FF6':scope.row.OrderType==2}"
@click="scope.row.OrderType==2?goTuanDetails(scope.row):''">
{{
scope
.
row
.
TCNUM
}}
</p>
<p>
出发日期:
{{
scope
.
row
.
StartDate
}}
</p>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"客人"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
GuestName
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"SaleName"
label=
"销售"
>
</el-table-column>
<el-table-column
prop=
"LureEmpName"
label=
"引流"
>
</el-table-column>
<el-table-column
label=
"商品名称"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<div
style=
"max-width: 100px;overflow: hidden;text-overflow: ellipsis"
>
{{
scope
.
row
.
Name
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"商品详情"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<div
style=
"max-width: 100px;overflow: hidden;text-overflow: ellipsis"
>
{{
scope
.
row
.
Description
}}
</div>
</
template
>
</el-table-column>
<el-table-column
sortable
prop=
"Money"
label=
"总金额"
min-width=
"100"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Money
}}
 
(
{{
scope
.
row
.
CurrencyName
}}
)
</
template
>
</el-table-column>
<el-table-column
sortable
prop=
"Income"
label=
"实收"
>
</el-table-column>
<el-table-column
sortable
prop=
"PreferTipAmount"
label=
"人头小费"
min-width=
"101"
>
</el-table-column>
<el-table-column
sortable
prop=
"PlatformTax"
label=
"手续费"
min-width=
"100"
>
</el-table-column>
<el-table-column
sortable
prop=
"Refund"
label=
"退款"
>
</el-table-column>
<el-table-column
sortable
prop=
"CostMoney"
label=
"成本"
>
</el-table-column>
<el-table-column
sortable
prop=
"DueInMoney"
label=
"待收"
>
<
template
slot-scope=
"scope"
>
<span
:class=
"
{'red':scope.row.DueInMoney>0}">
{{
scope
.
row
.
DueInMoney
}}
</span>
</
template
>
</el-table-column>
<el-table-column
sortable
prop=
"OrderProfit"
label=
"预期利润"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span
:class=
"
{'red':scope.row.OrderProfit>0}">
{{
scope
.
row
.
OrderProfit
}}
</span>
</
template
>
</el-table-column>
<el-table-column
sortable
prop=
"DiscountsMoney"
label=
"优惠"
>
</el-table-column>
<el-table-column
prop=
"StateName"
label=
"状态"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
StateName
}}
</span>
</
template
>
</el-table-column>
</el-table>
</div>
</template>
<
script
>
export
default
{
props
:
{
OrderList
:
{
type
:
Array
,
require
:
false
},
},
data
()
{
return
{
loading
:
false
,
};
},
watch
:
{
OrderList
:
{
handler
(
val
,
oldVal
)
{
},
deep
:
true
}
},
created
()
{
},
mounted
()
{
},
methods
:
{
}
};
</
script
>
<
style
scoped
>
</
style
>
src/components/sale/components/notification.vue
0 → 100644
View file @
89e4af2a
<
template
>
<div>
<div
class=
"ListCar-form"
></div>
<div
class=
"ListCar-form-box"
>
<div
class=
"ListCar-box"
>
<div
class=
"normalBtn ListCar-close"
@
click=
"close"
>
<i
class=
"el-icon-close"
></i>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
parameters
:
{
type
:
Object
,
require
:
false
},
},
data
()
{
return
{
loading
:
false
,
sysMsgList
:
[],
};
},
watch
:
{
parameters
:
{
handler
:
function
(
val
,
oldVal
)
{
},
deep
:
true
}
},
created
()
{
},
mounted
()
{
},
methods
:
{
// 关闭
close
(){
this
.
$emit
(
'close'
)
},
}
};
</
script
>
<
style
scoped
>
.ListCar-form
{
position
:
fixed
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
background
:
rgba
(
23
,
23
,
23
,
.5
);
z-index
:
3
;
}
.ListCar-form-box
{
position
:
fixed
;
top
:
0
;
right
:
0
;
bottom
:
0
;
width
:
550px
;
background
:
#ffffff
;
z-index
:
100
;
}
.ListCar-box
{
width
:
100%
;
height
:
100%
;
position
:
relative
;
padding
:
15px
0
;
}
.ListCar-close
{
position
:
absolute
;
left
:
-47px
;
top
:
20%
;
line-height
:
26px
;
}
.ListCar-close
i
{
margin-left
:
3px
;
}
.normalBtn.ListCar-close
{
border-top-right-radius
:
0
;
border-bottom-right-radius
:
0
;
padding
:
0
8px
!important
;
}
.ListCar-header
{
border-bottom
:
-
;
}
.ListCar-header-right
{
border-radius
:
3px
;
padding
:
5px
8px
;
background
:
#fff3e0
;
}
</
style
>
src/components/sale/components/progressComm.vue
0 → 100644
View file @
89e4af2a
<
style
scoped
>
.progress-box
{
flex
:
1
;
display
:
flex
;
margin-bottom
:
25px
;
}
.relative-position
{
/* min-width: 80px; */
flex
:
1
;
margin-right
:
0
;
position
:
relative
;
}
.rate-box
{
position
:
absolute
;
top
:
30px
;
left
:
50%
;
transform
:
translateX
(
-50%
);
color
:
#000
;
z-index
:
9
;
display
:
flex
;
flex-wrap
:
wrap
;
justify-content
:
center
;
}
.sanjiao
{
width
:
0
;
height
:
0
;
margin-left
:
5%
;
border-right
:
4px
solid
transparent
;
border-left
:
4px
solid
transparent
;
border-bottom
:
3px
solid
#CACACA
;
}
.rate
{
min-width
:
20px
;
padding
:
2px
6px
;
background-color
:
#CACACA
!important
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
color
:
#666666
;
font-size
:
0.62vw
;
font-family
:
PingFang
SC
;
border-radius
:
7px
;
line-height
:
12px
;
white-space
:
nowrap
;
}
.active-rate
{
background-color
:
#33B3FF
!important
;
color
:
#FFFFFF
!important
;
}
/
deep
/
.relative-position
.el-progress-bar__outer
{
border-radius
:
0
!important
;
}
/
deep
/
.relative-position
.el-progress-bar__inner
{
text-align
:
center
;
border-radius
:
0
!important
;
}
/
deep
/
.relative-position
:first-child
.el-progress
{
border-top-left-radius
:
15px
!important
;
border-bottom-left-radius
:
15px
!important
;
overflow
:
hidden
!important
}
/
deep
/
.relative-position
:last-child
.el-progress
{
border-top-right-radius
:
15px
!important
;
border-bottom-right-radius
:
15px
!important
;
overflow
:
hidden
!important
}
</
style
>
<
template
>
<div>
<div
class=
"progress-box"
>
<!--
{{
commissionratioList
.
AvgLureNum
}}
-
{{
commissionratioList
.
AvfOrderNum
}}
-
{{
commissionratioList
.
CommissionRate
}}
-
{{
commissionratioList
.
Commission
}}
-
{{
commissionratioList
.
CommissionProfit
}}
-->
<div
v-for=
"(item,index) in commissionratioList.CommissionRateList"
:key=
"index"
class=
"relative-position"
>
<!-- :color="commissionratioList.CommissionRate>=item.Rate?colorlists[Math.floor(Math.random()*10)]:colors[Math.floor(Math.random()*10)]" -->
<el-progress
:text-inside=
"true"
:stroke-width=
"20"
:percentage=
"setItemProgress(item)"
:status=
"setItemStatus(item)"
:format=
"setItemText(item)"
:color=
"commissionratioList.AvgLureNum>item.StartValue?customColor[0]:customColor[1]"
>
</el-progress>
<div
class=
"rate-box"
>
<div
class=
"sanjiao"
:style=
"
{'border-bottom-color':commissionratioList.AvgLureNum>item.StartValue?'#33B3FF':'#CACACA'}">
</div>
<div
class=
"rate full-width"
:class=
"
{'active-rate':commissionratioList.AvgLureNum>item.StartValue}">
<i
class=
"el-icon-check"
style=
"font-size:8px"
></i>
{{
item
.
Rate
}}{{
commissionratioList
.
type
==
2
?
'%'
:
''
}}
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
props
:[
'commissionratioList'
],
data
()
{
return
{
customColor
:
[
'rgba(51,179,255,1)'
,
'rgba(222,225,230,1)'
],
colors
:
[
'rgba(42, 48, 54,.2)'
,
'rgba(138, 24, 48,.2)'
,
'rgba(200, 138, 131,.2)'
,
'rgba(84, 221, 226,.2)'
,
'rgba(178, 199, 168,.2)'
,
'rgba(16, 195, 195,.2)'
,
'rgba(0, 21, 68,.2)'
,
'rgba(226, 166, 198,.2)'
,
'rgba(278,17,66,.2)'
,
'rgba(153, 199, 235,.2)'
,
'rgba(34,184,221,.2)'
,
'rgba(221,72,34,.2)'
,
'rgba(204,51,204,.2)'
,
'rgba(255,204,0,.2)'
,
'rgba(77,179,179,.2)'
,
'rgba(196,60,141,.2)'
,
'rgba(195,90,141,.2)'
,
],
colorlists
:
[
'rgba(42, 48, 54, 1)'
,
'rgba(138, 24, 48, 1)'
,
'rgba(200, 138, 131, 1)'
,
'rgba(84, 221, 226, 1)'
,
'rgba(178, 199, 168, 1)'
,
'rgba(16, 195, 195, 1)'
,
'rgba(0, 21, 68, 1)'
,
'rgba(226, 166, 198, 1)'
,
'rgba(278,17,66, 1)'
,
'rgba(153, 199, 235,1)'
,
'rgba(34,184,221,1)'
,
'rgba(221,72,34,1)'
,
'rgba(204,51,204,1)'
,
'rgba(255,204,0,1)'
,
'rgba(77,179,179,1)'
,
'rgba(196,60,141,1)'
,
'rgba(195,90,141,1)'
,
],
};
},
watch
:
{
commissionratioList
:{
handler
(
val
,
oldVal
){
this
.
commissionratioList
=
val
},
deep
:
true
,
immediate
:
true
}
},
mounted
()
{
},
created
()
{
},
methods
:
{
// 设置进度
setItemProgress
(
data
)
{
if
(
this
.
commissionratioList
.
AvgLureNum
>=
data
.
StartValue
&&
this
.
commissionratioList
.
AvfOrderNum
>=
data
.
EndValue
){
return
100
}
else
{
return
100
}
},
// 自定义进度条文字
setItemText
(
row
)
{
if
(
this
.
commissionratioList
.
type
==
2
){
this
.
formatProgress
(
row
)
return
()
=>
{
return
row
.
StartValue2
+
' - '
+
row
.
EndValue2
+
`
${
row
.
StartValue
>=
10000
||
row
.
EndValue
>=
10000
?
'w'
:
''
}
`
}
}
else
if
(
this
.
commissionratioList
.
type
==
1
){
return
()
=>
{
return
`
${
row
.
StartValue
+
' - '
+
row
.
EndValue
}
人`
}
}
else
{
return
()
=>
{
return
`连续
${
row
.
StartValue
}
月`
}
}
},
// 设置当前进度条状态,显示不同颜色
setItemStatus
(
data
)
{
if
(
this
.
commissionratioList
.
AvgLureNum
>=
data
.
StartValue
&&
this
.
commissionratioList
.
AvfOrderNum
>=
data
.
EndValue
){
return
'exception'
}
},
formatProgress
(
data
){
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
data
))
if
(
obj
.
StartValue
>=
10000
)
{
data
.
StartValue2
=
obj
.
StartValue
/
10000
}
else
{
data
.
StartValue2
=
obj
.
StartValue
}
if
(
obj
.
EndValue
>=
10000
)
{
data
.
EndValue2
=
obj
.
EndValue
/
10000
}
else
{
data
.
EndValue2
=
obj
.
EndValue
}
},
}
};
</
script
>
src/components/sale/sale.vue
View file @
89e4af2a
...
...
@@ -53,7 +53,7 @@
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<div
class=
"el-col-div ownScrollbarStyle PersonalData_l"
>
<div
class=
"l_top"
>
<div
class=
"l_top"
style=
"position: relative;"
>
<img
v-if=
"data.icon !=null && data.icon !='' "
:src=
"data.icon"
alt=
""
class=
"tx_img"
:onerror=
'defaultHeadImg'
>
<img
v-else
src=
"../../assets/img/default_head_img.jpg"
alt=
""
alt=
""
class=
"tx_img"
>
...
...
@@ -61,15 +61,21 @@
<span>
{{
data
.
emName
}}
</span>
<span>
{{
data
.
postName
}}
</span>
</div>
<img
src=
"../../assets/img/jinbin@2x.png"
alt=
""
class=
"img"
>
<div
class=
"royalty"
>
<div
style=
"display: flex;justify-content: space-between;"
>
<!--
<img
style=
"cursor: pointer;"
src=
"../../assets/img/jinbin@2x.png"
alt=
""
class=
"img"
@
click=
"goAnticipate(1)"
>
-->
<div
class=
"royalty"
style=
"cursor: pointer;"
@
click=
"goAnticipate(1)"
>
<div
class=
"tc"
>
<span>
¥
</span>
<span>
{{
data
.
totalCommission
}}
</span>
<p>
<span>
¥
</span>
<span>
{{
data
.
totalCommission
}}
</span>
</p>
<p
v-if=
"data.peopelBonus"
>
人头奖励:
{{
data
.
peopelBonus
}}
</p>
<p
style=
"color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;"
>
{{
data
.
periodsName
}}
期
</p>
</div>
<!--
<span>
¥
<p
class=
"tc"
>
{{
data
.
totalCommission
}}
</p></span>
-->
<div
stye=
"font-size: 16px;color: #666666;display: block;display: inline-block;"
>
<span>
本月提成
</span>
<span>
出境提成
</span>
<template
v-if=
"data.comissionGeneralId>0"
>
<span
v-if=
"data.share==1"
class=
"Sale_Share"
style=
"color:#333;cursor:default;"
>
已确认
</span>
<span
v-if=
"data.share==0"
@
click=
"tichengDialog=true"
class=
"Sale_Share"
...
...
@@ -77,6 +83,39 @@
</
template
>
</div>
</div>
<div
style=
"border-left: 1px solid #eeeeee;width: 1px;"
>
</div>
<!-- <img style="cursor: pointer;" src="../../assets/img/jinbin@2x.png" alt="" class="img" @click="goAnticipate(2)"> -->
<div
style=
"cursor: pointer;margin-left: 0;"
class=
"royalty"
@
click=
"goAnticipate(2)"
>
<div
class=
"tc"
>
<p>
<span>
¥
</span>
<span>
{{data.gnSaleCommission}}
</span>
</p>
<p
style=
"color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;"
>
{{data.gnPeriodsName}}期
</p>
</div>
<div
stye=
"font-size: 16px;color: #666666;display: block;display: inline-block;"
>
<span>
国内提成
</span>
</div>
</div>
<div
style=
"border-left: 1px solid #eeeeee;width: 1px;"
>
</div>
<!-- <img style="cursor: pointer;" src="../../assets/img/jinbin@2x.png" alt="" class="img" @click="goAnticipate(3)"> -->
<div
style=
"cursor: pointer;margin-left: 0;"
class=
"royalty"
@
click=
"goAnticipate(3)"
>
<div
class=
"tc"
>
<p>
<span>
¥
</span>
<span>
{{data.dxSaleCommission}}
</span>
</p>
<p
style=
"color: #BDBDBD;font-size: 13px;padding: 0 0 5px 0;"
>
{{data.dxPeriodsName}}期
</p>
</div>
<div
stye=
"font-size: 16px;color: #666666;display: block;display: inline-block;"
>
<span>
历史单项提成
</span>
</div>
</div>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"预期提成"
placement=
"top"
>
<img
src=
"../../assets/img/xiaosouYQ.png"
@
click=
"goAnticipate(4)"
style=
"width: 15px;height: auto; position: absolute;right: -0;top: -10px;cursor: pointer;color: #33B3FF;"
></img>
</el-tooltip>
</div>
</div>
<div
class=
"order"
>
...
...
@@ -599,10 +638,33 @@
}
},
methods
:
{
// 销售预期提成
goAnticipate
(
type
){
let
userInfo
=
this
.
getLocalStorage
();
let
name
if
(
type
==
1
){
name
=
'TradeTicketUserDetails'
}
else
if
(
type
==
2
){
name
=
'domesticCommissionUser'
}
else
if
(
type
==
3
){
name
=
'ServiceCommissionUser'
}
else
if
(
type
==
4
){
name
=
'saleExpectedCommission'
}
this
.
$router
.
push
({
name
:
name
,
query
:
{
UserId
:
Number
(
userInfo
.
EmployeeId
),
isSale
:
1
,
blank
:
'y'
}
});
},
iWorkbench
()
{
this
.
apipost
(
'customerIndex_post_GetMySelfSellInfo'
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
data
=
res
.
data
.
data
;
console
.
log
(
this
.
data
,
'========'
)
this
.
myScore
=
res
.
data
.
data
.
taskCapacityList
;
this
.
myScore
.
forEach
(
item
=>
{
if
(
item
.
score
<
60
)
{
...
...
@@ -825,7 +887,7 @@
},
//锅炉除开标点符号的字数
getFilteredNum
(
val
)
{
//var pattern=new RegExp("[`~%!@#$^=''?~!@#¥……&——‘”“'?*()(),,。.、
<>
《》\\
[
\\
]
【】\\“\\”
{}
=+-|
\
/
:;
;:
]
");
//var pattern=new RegExp("[`~%!@#$^=''?~!@#¥……&——‘”“'?*()(),,。.、
<>
《》\\
[
\\
]
【】\\“\\”
{}
=+-|
\
/
:;
;:
]
");
var pattern = new RegExp("
[
`~%!@#$^=''?~!@#¥……&——‘”“'?*()(),,。.、<>《》:;; +-=\\s]");
//[]内输入你要过滤的字符,这里基本包含全部的标点符号,\\是转义字符
var rs = "";
...
...
src/router/config.js
View file @
89e4af2a
...
...
@@ -8,7 +8,7 @@ import supplierIndex from '../components/SupplierIndex'
import
automaticLogin
from
'../components/automaticLogin'
export
default
{
routes
:
[{
path
:
'/'
,
path
:
'/'
,
name
:
'login'
,
component
:
login
},
...
...
@@ -2266,7 +2266,7 @@ export default {
meta
:
{
title
:
'签证已确认'
},
},
},
{
path
:
'/TravelManager'
,
//团控配置
name
:
'TravelManager'
,
...
...
@@ -5623,6 +5623,14 @@ export default {
title
:
'销售'
}
},
{
path
:
'/saleExpectedCommission'
,
name
:
'saleExpectedCommission'
,
component
:
resolve
=>
require
([
'@/components/sale/ExpectedCommission'
],
resolve
),
meta
:
{
title
:
'销售预期提成'
}
},
{
path
:
'/platformManagement'
,
name
:
'platformManagement'
,
...
...
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