Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
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
罗超
confucius
Commits
a0aca35a
Commit
a0aca35a
authored
Nov 11, 2021
by
Mac
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增投稿提成
parent
09bd1eb1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1426 additions
and
1 deletion
+1426
-1
index.js
src/api/finance/index.js
+85
-0
CommissionUserDetailList.vue
...pages/financial/contribution/CommissionUserDetailList.vue
+235
-0
commissionStatistics.vue
src/pages/financial/contribution/commissionStatistics.vue
+349
-0
commissionUserList.vue
src/pages/financial/contribution/commissionUserList.vue
+245
-0
contributeCommission.vue
src/pages/financial/contribution/contributeCommission.vue
+393
-0
toConfigure.vue
src/pages/financial/contribution/toConfigure.vue
+92
-0
routes.js
src/router/routes.js
+27
-1
No files found.
src/api/finance/index.js
View file @
a0aca35a
...
...
@@ -492,6 +492,91 @@ export function createWeChatCodeForReceipt(data) {
data
})
}
//获取投稿提成配置
export
function
getTeacherContributeConfig
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeacherContributeConfig'
,
method
:
'post'
,
data
})
}
//设置投稿提成配置
export
function
setTeacherContributeConfig
(
data
)
{
return
request
({
url
:
'/TeachingRewards/SetTeacherContributeConfig'
,
method
:
'post'
,
data
})
}
//获取投稿提成期数分页列表
export
function
getTeaConCommissionPeriodsPageList
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionPeriodsPageList'
,
method
:
'post'
,
data
})
}
//创建投稿提成
export
function
SetTeaConCommissionInfo
(
data
)
{
return
request
({
url
:
'/TeachingRewards/SetTeaConCommissionInfo'
,
method
:
'post'
,
data
})
}
//获取投稿提成用户列表
export
function
getTeaConCommissionUserList
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionUserList'
,
method
:
'post'
,
data
})
}
//获取投稿提成明细列表
export
function
getTeaConCommissionUserDetailList
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionUserDetailList'
,
method
:
'post'
,
data
})
}
//投稿提成统计
export
function
getTeaConCommissionStatistics
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionStatistics'
,
method
:
'post'
,
data
})
}
//获取投稿提成期数下拉列表
export
function
getTeaConCommissionPeriodsList
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionPeriodsList'
,
method
:
'post'
,
data
})
}
//获取投稿提成发放人员列表
export
function
getTeaConCommissionSendEmployeeList
(
data
)
{
return
request
({
url
:
'/TeachingRewards/GetTeaConCommissionSendEmployeeList'
,
method
:
'post'
,
data
})
}
//设置提成发放人员
export
function
setTeaConCommissionSendEmployee
(
data
)
{
return
request
({
url
:
'/TeachingRewards/SetTeaConCommissionSendEmployee'
,
method
:
'post'
,
data
})
}
src/pages/financial/contribution/CommissionUserDetailList.vue
0 → 100644
View file @
a0aca35a
<
style
>
.baseSet_Title
{
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
}
.userCommissionDetails
.border-bottom
{
/* border-bottom: 1px dashed #EEE; */
padding-bottom
:
5px
;
margin-bottom
:
5px
;
}
.userCommissionDetails
.text-bottom
{
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.userCommissionDetails
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;
}
.userCommissionDetails
._icon_btn
i
{
width
:
30px
;
height
:
30px
;
display
:
inline-block
;
color
:
white
!important
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
30px
;
margin-right
:
10px
;
cursor
:
pointer
;
outline
:
none
;
}
.userCommissionDetails
.el-table
td
,
.el-table
th
{
padding
:
5px
0
;
}
</
style
>
<
template
>
<div
class=
"page-body userCommissionDetails"
>
<div
class=
"page-search row items-center"
>
<div
style=
"margin-right: 10px;"
>
<q-btn
color=
"primary"
size=
"11px"
label=
"返回"
@
click=
"goreturn"
style=
"margin-left:10px"
/>
</div>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"TId"
@
input=
"getList"
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
:options=
"TeacherList"
label=
"老师"
:dense=
"false"
emit-value
map-options
>
<template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
未找到相关数据
</q-item-section>
</q-item>
</
template
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"msg.OrderId"
@
keyup
.
enter
.
native=
"getList()"
label=
"订单号"
/>
</div>
</div>
</div>
<
template
>
<el-table
ref=
"filterTable"
:data=
"tableData"
v-loading=
'loading'
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column
prop=
"SchoolName"
width=
'150'
label=
"校区"
></el-table-column>
<el-table-column
prop=
"DeptName"
label=
"部门"
></el-table-column>
<el-table-column
prop=
"TeacherName"
label=
"教师"
></el-table-column>
<el-table-column
width=
'250'
prop=
"ContributeTitle"
label=
"投稿标题"
>
</el-table-column>
<el-table-column
prop=
"ContributeType"
label=
"投稿类型"
>
</el-table-column>
<el-table-column
prop=
"CommissionMoney"
label=
"提成金额"
>
</el-table-column>
<el-table-column
width=
'90'
prop=
"Periods"
label=
"期数"
>
</el-table-column>
<el-table-column
prop=
"Remark"
width=
'160'
label=
"备注"
>
</el-table-column>
</el-table>
</
template
>
</div>
</template>
<
script
>
import
{
GetClassTypePageList
,
}
from
'../../../api/system/index'
;
import
{
getTeaConCommissionUserDetailList
,
}
from
'../../../api/finance/index'
import
{
getClassDropDownList
,
getTeacherDropDownList
}
from
"../../../api/school/index"
;
export
default
{
meta
:
{
title
:
"用户提成明细"
},
props
:
{},
components
:
{},
data
()
{
return
{
loading
:
false
,
//列表数据参数
msg
:
{
PeriodId
:
0
,
TeacherId
:
0
,
},
pageCount
:
0
,
persistent
:
false
,
listData
:
{},
tableData
:
[],
company
:
[],
department
:
[],
ClassList
:
[],
allClassList
:
[],
TeacherList
:
[],
allTeacherList
:
[],
}
},
created
()
{
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
preriodId
)
{
this
.
msg
.
PeriodId
=
this
.
$route
.
query
.
preriodId
}
this
.
getList
()
// this.setClass()
this
.
GetTeacherList
()
},
methods
:
{
getList
()
{
if
(
this
.
msg
)
this
.
loading
=
true
;
getTeaConCommissionUserDetailList
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
tableData
=
res
.
Data
if
(
this
.
tableData
.
length
>
0
)
{
this
.
getAskfor
()
}
}
})
},
getAskfor
()
{
//求值
let
obj
=
{
SchoolName
:
'合计'
,
CommissionMoney
:
0
,
}
this
.
tableData
.
forEach
((
x
)
=>
{
if
(
x
.
CommissionMoney
)
{
obj
.
CommissionMoney
=
this
.
accAdd
(
x
.
CommissionMoney
,
obj
.
CommissionMoney
)
};
})
this
.
tableData
.
push
(
obj
)
},
accAdd
(
arg1
,
arg2
)
{
//js 加法精确计算
var
r1
,
r2
,
m
;
try
{
r1
=
arg1
.
toString
().
split
(
"."
)[
1
].
length
;
}
catch
(
e
)
{
r1
=
0
;
}
try
{
r2
=
arg2
.
toString
().
split
(
"."
)[
1
].
length
;
}
catch
(
e
)
{
r2
=
0
;
}
m
=
Math
.
pow
(
10
,
Math
.
max
(
r1
,
r2
));
return
(
arg1
*
m
+
arg2
*
m
)
/
m
;
},
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
jsonData
.
unshift
({
TeacherName
:
'不限'
,
TId
:
0
})
// this.allTeacherList = JSON.parse(JSON.stringify(jsonData));;
this
.
TeacherList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
}
})
},
//选择班级
setClass
(
item
)
{
this
.
isShowClass
=
true
;
getClassDropDownList
({
CourseId
:
0
,
IsAddDefault
:
1
,
//添加默认选项
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
allClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
});
},
//筛选老师
filterFn
(
val
,
update
)
{
console
.
log
(
val
)
update
(()
=>
{
if
(
val
===
''
)
{
this
.
TeacherList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allTeacherList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
TeacherList
=
this
.
allTeacherList
.
filter
(
v
=>
v
.
TeacherName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
this
.
$forceUpdate
();
})
},
goreturn
()
{
this
.
$router
.
go
(
-
1
);
},
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/financial/contribution/commissionStatistics.vue
0 → 100644
View file @
a0aca35a
<
style
>
.baseSet_Title
{
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
}
.cycleOrderList
.border-bottom
{
/* border-bottom: 1px dashed #EEE; */
padding-bottom
:
5px
;
margin-bottom
:
5px
;
}
.cycleOrderList
.text-bottom
{
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.cycleOrderList
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;
}
.cycleOrderList
._icon_btn
i
{
width
:
30px
;
height
:
30px
;
display
:
inline-block
;
color
:
white
!important
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
30px
;
margin-right
:
10px
;
cursor
:
pointer
;
outline
:
none
;
}
.cycleOrderList
.el-table
td
,
.el-table
th
{
padding
:
5px
0
;
}
</
style
>
<
template
>
<div
class=
"page-body cycleOrderList"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"getDepartList(msg.School_Id),resetSearch()"
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.School_Id"
ref=
"School_Id"
:options=
"schoolList"
label=
"校区"
:dense=
"false"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<selectTree
:treeData=
'DeptList'
:defaultArray=
"returnString"
nodeKey=
"DeptId"
:multiple=
"false"
labelKey=
"DeptName"
childrenKey=
"ChildList"
tipText=
"选择部门"
@
getChild=
"getChild"
></selectTree>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
input-debounce=
"0"
option-value=
"TId"
@
input=
"resetSearch()"
option-label=
"TeacherName"
v-model=
"msg.TeacherId"
:options=
"TeacherList"
label=
"老师"
:dense=
"false"
emit-value
map-options
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
@
input=
"resetSearch()"
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.PeriodId"
:options=
"PeriodsList"
label=
"周期"
:dense=
"false"
emit-value
map-options
/>
</div>
</div>
</div>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"msg.ContributeId"
@
keyup
.
enter
.
native=
"resetSearch()"
label=
"投稿编号"
/>
</div>
</div>
</div>
<div
class=
"page-search row items-center"
style=
"justify-content: space-between;"
>
<span
style=
"font-size: 20px;font-weight: 400;"
>
提成统计
<span
style=
"font-size: 16px;"
>
(提成总计:
{{
TotalCommission
}}
)
</span>
</span>
<q-btn
color=
"primary"
size=
"11px"
label=
"导出"
@
click=
"tcexport"
style=
"margin-left:10px"
/>
</div>
<template>
<el-table
ref=
"filterTable"
:data=
"tableData"
v-loading=
'loading'
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column
prop=
"SchoolName"
label=
"校区"
width=
'150'
></el-table-column>
<el-table-column
prop=
"DeptName"
label=
"部门"
></el-table-column>
<el-table-column
prop=
"TeacherName"
label=
"教师"
>
</el-table-column>
<el-table-column
prop=
"ContributeType"
label=
"投稿类型"
>
</el-table-column>
<el-table-column
width=
'250'
prop=
"ContributeTitle"
label=
"投稿标题"
>
</el-table-column>
<el-table-column
width=
'200'
prop=
"CommissionMoney"
label=
"提成金额"
>
</el-table-column>
<el-table-column
width=
'85'
prop=
"Periods"
label=
"期数"
>
</el-table-column>
<el-table-column
prop=
"Remark"
width=
'160'
label=
"备注"
>
</el-table-column>
</el-table>
<div
style=
"margin-top: 10px;text-align: center;"
>
<el-pagination
background
@
current-change=
"handleCurrentChanges"
layout=
"total,prev, pager, next, jumper"
:current-page
.
sync=
"msg.PageIndex"
:page-size=
"msg.PageSize"
:total=
'total'
>
</el-pagination>
</div>
</
template
>
</div>
</template>
<
script
>
import
{
getSchoolDropdown
,
getClassDropDownList
,
getTeacherDropDownList
}
from
'../../../api/school/index'
import
{
queryEmployee
}
from
'../../../api/users/user'
import
{
getDeptTree
}
from
'../../../api/system/dept.js'
import
{
getTeaConCommissionStatistics
,
getTeaConCommissionPeriodsList
,
getTeaConCommissionStatisticsToExcel
}
from
'../../../api/finance/index'
import
selectTree
from
'../../../components/common/select-tree'
import
{
EduDownLoad
,
}
from
'../../../api/common/common'
;
export
default
{
meta
:
{
title
:
"投稿提成统计"
},
props
:
{},
components
:
{
selectTree
},
data
()
{
return
{
loading
:
false
,
//列表数据参数
msg
:
{
PageIndex
:
1
,
PageSize
:
10
,
School_Id
:
'-1'
,
Depart_Id
:
0
,
PeriodId
:
0
,
TeacherId
:
0
,
ContributeId
:
''
,
//投稿编号
},
TeacherList
:
[],
pageCount
:
0
,
persistent
:
false
,
listData
:
{},
tableData
:
[],
total
:
0
,
company
:
[],
department
:
[],
ClassList
:
[],
allClassList
:
[],
returnString
:
[],
//默认岗位
see_tcdetailed
:
false
,
schoolList
:
[],
DeptList
:
[],
// 部门下拉
PersionList
:
[],
//员工列表
AllemployeeList
:
[],
//所有员工
PeriodsList
:
[],
//周期列表
TotalCommission
:
0
,
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"see_tcdetailed"
)
{
//判断是否可以查看其他明细
this
.
see_tcdetailed
=
true
;
}
})
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
OrderId
)
{
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
}
this
.
getList
()
this
.
GetTeacherList
()
this
.
getBranchList
()
this
.
getDepartList
(
0
);
// this.getEmployee();
this
.
getPeriodList
()
},
methods
:
{
resetSearch
()
{
this
.
msg
.
PageIndex
=
1
;
this
.
getList
()
},
getList
()
{
if
(
this
.
msg
)
this
.
loading
=
true
;
getTeaConCommissionStatistics
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
tableData
=
res
.
Data
.
PageData
.
List
this
.
TotalCommission
=
res
.
Data
.
PageData
.
TotalCommission
this
.
total
=
res
.
Data
.
Count
}
})
},
unique
(
arr
,
Name
)
{
//数组去重
const
res
=
new
Map
();
return
arr
.
filter
(
(
list
)
=>
!
res
.
has
(
list
.
text
)
&&
res
.
set
(
list
.
text
,
1
)
);
},
handleCurrentChanges
(
val
)
{
this
.
msg
.
PageIndex
=
val
;
this
.
getList
()
},
//获取教师下拉
GetTeacherList
()
{
getTeacherDropDownList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
jsonData
.
unshift
({
TeacherName
:
'不限'
,
TId
:
0
})
// this.allTeacherList = JSON.parse(JSON.stringify(jsonData));;
this
.
TeacherList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
}
})
},
//筛选员工
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allClassList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
ClassList
=
this
.
allClassList
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
})
},
getBranchList
()
{
//获取校区
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
schoolList
=
res
.
Data
;
var
obj
=
{
SName
:
'全部'
,
SId
:
'-1'
}
this
.
schoolList
.
unshift
(
obj
);
}).
catch
(()
=>
{
})
},
//获取部门下拉数据
getDepartList
(
id
)
{
if
(
id
==
-
1
)
{
id
=
0
}
let
msg
=
{
School_Id
:
id
}
getDeptTree
(
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
DeptList
=
res
.
Data
;
}
})
},
getChild
(
deptArray
)
{
var
tempStr
=
""
;
if
(
deptArray
&&
deptArray
!=
''
)
{
tempStr
=
deptArray
;
}
if
(
tempStr
)
{
this
.
msg
.
Depart_Id
=
tempStr
;
}
else
{
this
.
msg
.
Depart_Id
=
0
;
}
this
.
resetSearch
();
},
//筛选员工
filterFn2
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllemployeeList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
PersionList
=
this
.
AllemployeeList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
})
},
//获取员工列表
getEmployee
()
{
var
qMsg
=
{
EmployeeName
:
""
}
queryEmployee
(
qMsg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
let
obj
=
{
EmployeeName
:
'不限'
,
Id
:
0
}
res
.
Data
.
unshift
(
obj
)
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
AllemployeeList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
PersionList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
})
},
getPeriodList
()
{
//获取周期下拉列表
getTeaConCommissionPeriodsList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
PeriodsList
=
res
.
Data
let
obj
=
{
Name
:
'不限'
,
Id
:
0
}
this
.
PeriodsList
.
unshift
(
obj
)
}
})
},
tcexport
()
{
//导出
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
EduDownLoad
(
"/TeachingRewards/GetTeaConCommissionStatisticsToExcel"
,
msg
,
"投稿提成统计.xls"
)
},
goUrlclass
(
path
,
Names
)
{
//班级
let
Name
=
encodeURI
(
Names
)
this
.
OpenNewUrl
(
path
,
{
ClassName
:
Name
,
});
},
goUrlorderList
(
path
,
row
)
{
//订单跳转
this
.
OpenNewUrl
(
path
,
{
OrderId
:
row
.
OrderId
,
});
},
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/financial/contribution/commissionUserList.vue
0 → 100644
View file @
a0aca35a
<
style
>
.baseSet_Title
{
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
}
.CommissionDetail
.border-bottom
{
/* border-bottom: 1px dashed #EEE; */
padding-bottom
:
5px
;
margin-bottom
:
5px
;
}
.CommissionDetail
.text-bottom
{
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.CommissionDetail
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;
}
.CommissionDetail
._icon_btn
i
{
width
:
26px
;
height
:
26px
;
display
:
inline-block
;
color
:
white
!important
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
26px
;
margin-right
:
10px
;
cursor
:
pointer
;
outline
:
none
;
}
.CommissionDetail
.el-table
td
,
.el-table
th
{
padding
:
5px
0
;
}
</
style
>
<
template
>
<div
class=
"page-body CommissionDetail"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<!--
<div
class=
"col-3"
>
<q-select
filled
stack-label
use-input
input-debounce=
"0"
option-value=
"ClassId"
clearable
@
input=
"getList"
option-label=
"ClassName"
v-model=
"msg.ClassId"
:options=
"ClassList"
label=
"班级"
:dense=
"false"
emit-value
map-options
@
filter=
"filterFn"
>
<template
v-slot:no-option
>
<q-item>
<q-item-section
class=
"text-grey"
>
未找到相关数据
</q-item-section>
</q-item>
</
template
>
</q-select>
</div>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"msg.OrderId"
@
keyup
.
enter
.
native=
"getList()"
label=
"订单号"
/>
</div>
-->
<div
class=
"col-3"
>
<q-btn
color=
"primary"
size=
"11px"
label=
"返回"
@
click=
"goreturn"
style=
"margin-left:10px"
/>
</div>
</div>
</div>
<
template
>
<el-table
ref=
"filterTable"
:data=
"tableData"
v-loading=
'loading'
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
<el-table-column
prop=
"SchoolName"
label=
"校区"
:filters=
'SchoolNamelist'
:filter-method=
"filterHandler"
>
</el-table-column>
<el-table-column
prop=
"DeptName"
label=
"部门"
:filters=
'DeptNamelist'
:filter-method=
"filterHandler"
>
</el-table-column>
<el-table-column
prop=
"CommissionMoney"
label=
"提成金额"
sortable
:sort-method=
"CommissionMoney"
>
</el-table-column>
<!--
<el-table-column
prop=
"Periods"
label=
"周期"
>
</el-table-column>
-->
<el-table-column
label=
"操作"
>
<template
slot-scope=
"scope"
>
<div
class=
"_icon_btn"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"查看"
placement=
"top"
>
<i
class=
"iconfont icon-sousuo"
@
click=
"goUrl('contribution/CommissionUserDetailList',scope.row.UserId)"
></i>
</el-tooltip>
</div>
</
template
>
</el-table-column>
</el-table>
</template>
</div>
</template>
<
script
>
import
{
getTeaConCommissionUserList
,
}
from
'../../../api/finance/index'
import
{
getClassDropDownList
,
}
from
"../../../api/school/index"
;
export
default
{
meta
:
{
title
:
"销售提成详情"
},
props
:
{},
components
:
{},
data
()
{
return
{
loading
:
false
,
//列表数据参数
msg
:
{
PeriodId
:
0
,
},
pageCount
:
0
,
persistent
:
false
,
listData
:
{},
tableData
:
[],
company
:
[],
department
:
[],
ClassList
:
[],
allClassList
:
[],
see_tcdetailed
:
false
,
SchoolNamelist
:
[],
DeptNamelist
:
[],
UserNamelist
:
[],
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"see_tcdetailed"
)
{
//判断是否可以查看其他明细
this
.
see_tcdetailed
=
true
;
}
})
},
mounted
()
{
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
id
)
{
this
.
msg
.
PeriodId
=
this
.
$route
.
query
.
id
}
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
School_Id
)
{
this
.
msg
.
School_Id
=
this
.
$route
.
query
.
School_Id
}
this
.
getList
()
// this.setClass()
},
methods
:
{
getList
()
{
if
(
this
.
msg
)
this
.
loading
=
true
;
getTeaConCommissionUserList
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
tableData
=
res
.
Data
;
this
.
SchoolNamelist
=
[];
this
.
DeptNamelist
=
[];
this
.
UserNamelist
=
[];
this
.
tableData
.
forEach
(
x
=>
{
let
obj
=
{
text
:
x
.
SchoolName
,
value
:
x
.
SchoolName
}
let
obj2
=
{
text
:
x
.
DeptName
,
value
:
x
.
DeptName
}
let
obj3
=
{
text
:
x
.
UserName
,
value
:
x
.
UserName
}
this
.
SchoolNamelist
.
push
(
obj
)
this
.
DeptNamelist
.
push
(
obj2
)
this
.
UserNamelist
.
push
(
obj3
)
})
this
.
SchoolNamelist
=
this
.
unique
(
this
.
SchoolNamelist
)
this
.
DeptNamelist
=
this
.
unique
(
this
.
DeptNamelist
)
this
.
UserNamelist
=
this
.
unique
(
this
.
UserNamelist
)
}
})
},
unique
(
arr
,
Name
)
{
//数组去重
const
res
=
new
Map
();
return
arr
.
filter
(
(
list
)
=>
!
res
.
has
(
list
.
text
)
&&
res
.
set
(
list
.
text
,
1
)
);
},
//选择班级
setClass
(
item
)
{
this
.
isShowClass
=
true
;
getClassDropDownList
({
CourseId
:
0
,
IsAddDefault
:
1
,
//添加默认选项
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
var
jsonData
=
res
.
Data
;
if
(
jsonData
&&
jsonData
.
length
>
0
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));
this
.
allClassList
=
JSON
.
parse
(
JSON
.
stringify
(
jsonData
));;
}
}
});
},
//筛选员工
filterFn
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
''
)
{
this
.
ClassList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
allClassList
))
}
else
{
const
needle
=
val
.
toLowerCase
()
this
.
ClassList
=
this
.
allClassList
.
filter
(
v
=>
v
.
ClassName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
)
}
})
},
goUrl
(
path
,
id
)
{
this
.
$router
.
push
({
path
:
'/financial/'
+
path
,
query
:
{
userId
:
id
,
preriodId
:
this
.
$route
.
query
.
id
,
blank
:
'y'
,
}
})
},
filterHandler
(
value
,
row
,
column
)
{
const
property
=
column
[
'property'
];
return
row
[
property
]
===
value
;
},
CommissionMoney
(
a
,
b
)
{
return
a
.
CommissionMoney
-
b
.
CommissionMoney
;
},
goreturn
()
{
this
.
$router
.
go
(
-
1
);
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/financial/contribution/contributeCommission.vue
0 → 100644
View file @
a0aca35a
<
style
>
.baseSet_Title
{
width
:
120px
!important
;
padding
:
18px
0
0
16px
;
text-align
:
right
;
}
.contributeCommission
.border-bottom
{
/* border-bottom: 1px dashed #EEE; */
padding-bottom
:
5px
;
margin-bottom
:
5px
;
}
.contributeCommission
.text-bottom
{
height
:
32px
;
line-height
:
32px
;
margin-bottom
:
10px
;
}
.contributeCommission
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;
}
.contributeCommission
._icon_btn
.icon-add
{
background-color
:
#47BF8C
;
}
.contributeCommission
._icon_btn
i
{
width
:
26px
;
height
:
26px
;
display
:
inline-block
;
color
:
white
!important
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
26px
;
margin-right
:
10px
;
cursor
:
pointer
;
outline
:
none
;
}
.contributeCommission
.el-table
td
,
.el-table
th
{
padding
:
5px
0
;
}
</
style
>
<
template
>
<div
class=
"page-body contributeCommission"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<!--
<div
style=
"margin-right: 20px;"
v-if=
'iscMaker==true'
>
<div
class=
"block"
>
<span
style=
"margin-right: 5px;"
>
校区
</span>
<el-select
v-model=
"msg.SchoolId"
filterable
@
change=
"handleCurrentChanges(1)"
>
<el-option
value=
"-1"
label=
"不限"
></el-option>
<el-option
v-for=
'item in CompanyList'
:label=
'item.SName'
:value=
'item.SId'
:key=
'item.SId'
></el-option>
</el-select>
</div>
</div>
-->
<div
v-if=
'isgenerate==true'
>
<div
class=
"block"
style=
"display:flex"
>
<span
style=
"margin-right: 5px;"
>
选择月份
</span>
<el-date-picker
v-model=
"value2"
type=
"month"
placeholder=
"选择月"
>
</el-date-picker>
<q-btn
:loading=
"loading1"
color=
"primary"
size=
"11px"
label=
"生成提成"
@
click=
"scCommission"
style=
"margin-left:10px"
/>
</div>
</div>
</div>
</div>
<template
>
<el-table
ref=
"filterTable"
:data=
"tableData"
v-loading =
'loading'
:header-cell-style=
"
{backgroundColor:'#f5f6f7', color: '#a8a8b3'}"
border
style="width: 100%">
<!--
<el-table-column
prop=
"Id"
label=
"ID"
></el-table-column>
-->
<el-table-column
prop=
"Periods"
label=
"周期"
></el-table-column>
<el-table-column
prop=
"SumPrice"
label=
"提成总金额"
>
</el-table-column>
<!--
<el-table-column
prop=
"SchooldCommission"
label=
"校区提成总金额"
>
<template
slot-scope=
"scope"
>
<div
style=
"display: flex;flex-wrap: wrap;"
v-if=
'scope.row.SchooldCommission>=0'
>
{{
scope
.
row
.
SchooldCommission
>=
0
?
scope
.
row
.
SchooldCommission
:
'-'
}}
</div>
</
template
>
</el-table-column>
-->
<el-table-column
prop=
"FrIdList"
label=
"财务单据"
>
<
template
slot-scope=
"scope"
>
<div
style=
"display: flex;flex-wrap: wrap;"
v-if=
'scope.row.FrIdList.length>0'
>
<span
v-for=
"(x,y) in scope.row.FrIdList"
@
click=
"gocaiwuxiangq(x)"
style=
"cursor: pointer;text-decoration: underline;margin-right: 5px; color: #409EFF;"
>
{{
x
}}
</span>
</div>
<div
v-else
>
无
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"CreateByName"
label=
"创建人"
>
</el-table-column>
<el-table-column
prop=
"CreateTime"
label=
"创建时间"
>
</el-table-column>
<el-table-column
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<div
class=
"_icon_btn"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"查看"
placement=
"top"
>
<i
class=
"iconfont icon-sousuo"
@
click=
"goUrl('contribution/commissionUserList',scope.row.Id)"
></i>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"制单"
placement=
"top"
v-if=
'iscMaker==true'
>
<i
class=
"iconfont icon-add"
v-if=
'iscMaker==true'
@
click=
"generalFinancacls(scope.row)"
></i>
</el-tooltip>
</div>
</
template
>
</el-table-column>
</el-table>
<div
style=
"margin-top: 10px;text-align: center;"
>
<el-pagination
background
@
current-change=
"handleCurrentChanges"
layout=
"total,prev, pager, next, jumper"
:current-page
.
sync=
"msg.PageIndex"
:page-size=
"msg.PageSize"
:total=
'total'
>
</el-pagination>
</div>
</template>
<el-dialog
title=
"设置发放用户"
width=
"700px"
:visible
.
sync=
"costmode"
center
>
<el-table
:data=
"SendEmployeeList"
border
@
selection-change=
"handleSelectionChange"
style=
"width: 100%"
>
<el-table-column
type=
"selection"
width=
"55"
:selectable=
"checkSelectable"
></el-table-column>
<el-table-column
prop=
"TeacherName"
label=
"老师"
>
</el-table-column>
<el-table-column
prop=
"CommissionMoney"
label=
"应发提成金额"
>
</el-table-column>
<el-table-column
prop=
"IsGiveOut"
label=
"是否已发放"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
'scope.row.IsGiveOut==1'
>
已发放
</span>
<span
v-if=
'scope.row.IsGiveOut==2'
>
未发放
</span>
</
template
>
</el-table-column>
</el-table>
<div
style=
"margin-top: 10px;"
>
金额总额:{{totalAmount}}
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
class=
"hollowFixedBtn"
@
click=
"costmode=false"
>
取消
</el-button>
<el-button
class=
"normalBtn"
type=
"primary"
@
click=
"preservetransaction()"
>
确定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
getSchoolDropdown
}
from
'../../../api/school/index'
import
{
GetClassTypePageList
,
}
from
'../../../api/system/index'
;
import
{
getTeaConCommissionPeriodsPageList
,
SetTeaConCommissionInfo
,
getTeaConCommissionSendEmployeeList
,
setTeaConCommissionSendEmployee
}
from
'../../../api/finance/index'
export
default
{
meta
:
{
title
:
"投稿销售提成列表"
},
props
:
{},
components
:
{},
data
()
{
return
{
loading
:
false
,
loading1
:
false
,
value2
:
''
,
//列表数据参数
msg
:
{
PageIndex
:
1
,
PageSize
:
15
,
Name
:
''
,
SchoolId
:
'-1'
},
pageCount
:
0
,
persistent
:
false
,
listData
:{},
tableData
:[],
total
:
0
,
CompanyList
:[],
isgenerate
:
false
,
//是否有生成的权限
iscMaker
:
false
,
//是否有制单的权限
SendEmployeeList
:[],
//可发放提成的用户列表
costmode
:
false
,
multipleSelection
:[],
totalAmount
:
0
,
//选中的金额总额
CheckID
:
0
,
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"Generate_Commission"
){
//判断是否有生成的权限
this
.
isgenerate
=
true
;
}
if
(
x
.
FunctionCode
==
"Commission_maker"
){
//判断是否有制单的权限
this
.
iscMaker
=
true
;
}
})
var
myDate
=
new
Date
();
myDate
.
setMonth
(
myDate
.
getMonth
()
-
1
);
this
.
value2
=
myDate
.
getFullYear
()
+
"-"
+
(
myDate
.
getMonth
()
+
1
)
},
mounted
()
{
this
.
getList
();
//获取提成周期列表
this
.
getBranchList
()
},
methods
:
{
getList
(){
this
.
loading
=
true
;
getTeaConCommissionPeriodsPageList
(
this
.
msg
).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
loading
=
false
;
this
.
tableData
=
res
.
Data
.
PageData
this
.
total
=
res
.
Data
.
Count
}
})
},
scCommission
(){
//生成提成
if
(
this
.
loading1
==
false
){
this
.
loading1
=
true
;
SetTeaConCommissionInfo
({
Month
:
this
.
value2
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'生成提成成功'
,
position
:
'top'
})
this
.
getList
()
}
this
.
loading1
=
false
;
}).
catch
(
err
=>
{
this
.
loading1
=
false
;
})
}
},
getBranchList
(){
//获取校区
getSchoolDropdown
({}).
then
(
res
=>
{
this
.
CompanyList
=
res
.
Data
;
}).
catch
(()
=>
{
})
},
goUrl
(
path
,
id
)
{
this
.
$router
.
push
({
path
:
'/financial/'
+
path
,
query
:
{
"id"
:
id
,
blank
:
'y'
,
}
})
},
gocaiwuxiangq
(
id
){
this
.
OpenNewUrl
(
"/financial/financalDocument/FinancialDocumentsDetail"
,
{
id
:
id
});
},
generalFinancacls
(
item
)
{
this
.
CheckID
=
item
.
Id
if
(
this
.
msg
.
SchoolId
==
-
1
){
if
(
item
.
SumPrice
>
0
){
this
.
tishi
(
item
.
SumPrice
,
item
.
Id
)
}
else
{
this
.
$message
.
error
(
'提成总金额为0'
)
}
}
else
{
if
(
item
.
SchooldCommission
>
0
){
this
.
goaddFinancial
(
item
.
SchooldCommission
,
item
.
Id
,
''
)
}
else
{
this
.
$message
.
error
(
'校区提成总金额为0'
)
}
}
},
goaddFinancial
(
Money
,
Id
,
EmpIds
){
let
School_Id
=
0
;
let
obj
=
{
CostType
:
316
,
Money
:
Money
,
CurrencyId
:
21
,
XSTC
:
1
,
School_Id
:
this
.
msg
.
SchoolId
==
-
1
?
0
:
this
.
msg
.
SchoolId
,
OtherType
:
47
,
ReFinanceId
:
Id
,
ReFinanceId2
:
this
.
msg
.
SchoolId
,
EduCommissionEmp
:
EmpIds
}
let
query
=
{
blank
:
"y"
,
tab
:
"新增付款单据"
,
Type
:
2
,
IsUploadPic
:
1
,
Name
:
'销售提成单'
,
id
:
143
,
orderObj
:
JSON
.
stringify
(
obj
)
}
this
.
$router
.
push
({
path
:
"/financial/financalDocument/addFinancialDocuments"
,
query
});
},
tishi
(
Money
,
Id
){
let
that
=
this
this
.
$confirm
(
'你正在进行所有校区一起制单操作?'
,
'销售制单'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
getcomSendEmployeeList
(
Id
)
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
},
getcomSendEmployeeList
(
Id
){
//获取可发放提成的用户
getTeaConCommissionSendEmployeeList
({
PeriodId
:
Id
}).
then
(
res
=>
{
this
.
SendEmployeeList
=
res
.
Data
.
Data
;
this
.
costmode
=
true
}).
catch
(()
=>
{
})
},
handleCurrentChanges
(
val
){
this
.
msg
.
PageIndex
=
val
;
this
.
getList
()
},
checkSelectable
(
row
){
return
row
.
IsGiveOut
==
2
},
handleSelectionChange
(
val
)
{
this
.
multipleSelection
=
val
;
let
zong
=
0
this
.
multipleSelection
.
forEach
(
x
=>
{
zong
+=
x
.
CurrentPeriodMoney
})
this
.
totalAmount
=
zong
},
preservetransaction
(){
let
that
=
this
if
(
this
.
multipleSelection
.
length
==
0
){
this
.
$q
.
notify
({
type
:
'negative'
,
position
:
"top"
,
message
:
`请选择您要发放的用户`
})
return
}
this
.
$confirm
(
'确认后无法更改用户制单状态,如果需修改请联系管理员'
,
'设置用户状态'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
let
EmpIds
=
''
;
let
data
=
[]
this
.
multipleSelection
.
forEach
(
x
=>
{
data
.
push
(
x
.
UserId
)
})
EmpIds
=
data
.
join
(
','
)
setTeaConCommissionSendEmployee
({
PeriodId
:
this
.
CheckID
,
EmpIds
:
EmpIds
}).
then
(
res
=>
{
this
.
goaddFinancial
(
this
.
totalAmount
,
this
.
CheckID
,
EmpIds
)
this
.
$message
.
success
(
'设置成功'
);
}).
catch
(()
=>
{
})
}).
catch
(()
=>
{
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
}
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/pages/financial/contribution/toConfigure.vue
0 → 100644
View file @
a0aca35a
<
style
>
</
style
>
<
template
>
<div
class=
"page-body salesRules"
>
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-3"
>
<q-input
filled
v-model=
"Money"
label=
"提成金额"
type=
"number"
/>
</div>
<div>
<q-btn
color=
"accent"
size=
"sm"
v-if=
'isSalerule_preserve == true'
@
click=
"preservation()"
ref=
"addBtn"
label=
"保存规则"
/>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
getTeacherContributeConfig
,
setTeacherContributeConfig
}
from
'../../../api/finance/index'
export
default
{
meta
:
{
title
:
"投稿提成规则"
},
props
:
{},
components
:
{},
data
()
{
return
{
Money
:
0
,
isSalerule_preserve
:
false
}
},
created
()
{
let
userinfo
=
this
.
getLocalStorage
();
userinfo
.
ActionMenuList
.
map
(
x
=>
{
//判断权限
if
(
x
.
FunctionCode
==
"F_Contribution_rule"
){
//判断是否有保存的权限
this
.
isSalerule_preserve
=
true
;
return
}
})
},
mounted
()
{
this
.
getRule
();
//获取规则
},
methods
:
{
getRule
()
{
getTeacherContributeConfig
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
Money
=
res
.
Data
.
Money
}
})
},
preservation
()
{
//保存规则
setTeacherContributeConfig
({
Money
:
this
.
Money
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
$q
.
notify
({
icon
:
'iconfont icon-chenggong'
,
color
:
'accent'
,
timeout
:
2000
,
message
:
'数据保存成功!'
,
position
:
'top'
})
this
.
getTeacherContributeConfig
()
}
})
},
},
}
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
src/router/routes.js
View file @
a0aca35a
...
...
@@ -653,7 +653,33 @@ const routes = [{
component
:
()
=>
import
(
"pages/financial/studyabroad/ordercommission.vue"
)
},
{
path
:
"/financial/contribution/toConfigure"
,
//财务流程 投稿规则
component
:
()
=>
import
(
"pages/financial/contribution/toConfigure.vue"
)
},
{
path
:
"/financial/contribution/contributeCommission"
,
// 工作台 投稿销售提成
component
:
()
=>
import
(
"pages/financial/contribution/contributeCommission.vue"
)
},
{
path
:
"/financial/contribution/commissionUserList"
,
// 工作台 投稿销售提成 用户列表
component
:
()
=>
import
(
"pages/financial/contribution/commissionUserList.vue"
)
},
{
path
:
"/financial/contribution/CommissionUserDetailList"
,
// 工作台 投稿销售提成 用户详情
component
:
()
=>
import
(
"pages/financial/contribution/CommissionUserDetailList.vue"
)
},
{
path
:
"/financial/contribution/commissionStatistics"
,
// 工作台 投稿销售统计
component
:
()
=>
import
(
"pages/financial/contribution/commissionStatistics.vue"
)
},
...
...
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