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
6785b234
Commit
6785b234
authored
Feb 22, 2022
by
罗超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/confucius
into master
parents
1812c884
8bc5155d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
131 additions
and
21 deletions
+131
-21
stulist.vue
src/components/school/student/stulist.vue
+19
-13
makeupRate.vue
src/pages/sale/makeupRate.vue
+24
-1
visitTransform.vue
src/pages/sale/visitTransform.vue
+55
-5
student.vue
src/pages/school/student.vue
+33
-2
No files found.
src/components/school/student/stulist.vue
View file @
6785b234
...
...
@@ -28,6 +28,7 @@
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
}
.stulistNumber
{
display
:
inline-block
;
width
:
25px
;
...
...
@@ -39,6 +40,7 @@
cursor
:
pointer
;
color
:
#2961FE
;
}
.OCourseTable
{
width
:
400px
;
text-align
:
center
;
...
...
@@ -52,7 +54,6 @@
height
:
40px
;
background-color
:
rgb
(
238
,
238
,
239
);
}
</
style
>
<
template
>
<div
class=
"stuList"
>
...
...
@@ -71,8 +72,8 @@
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"转留学"
:disable=
"selection.length === 0"
@
click=
"transferAbroad"
/>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"add"
label=
"新增学员"
@
click=
"EditStudent(null)"
/>
<q-btn
v-if=
"authObj&&authObj.isShowDownload"
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
label=
"下载"
@
click=
"downloadStudent"
/>
<q-btn
v-if=
"authObj&&authObj.isShowDownload"
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
label=
"下载"
@
click=
"downloadStudent"
/>
</div>
<div
class=
"page-option"
v-if=
"pushMode"
>
<q-btn
color=
"accent"
unelevated
class=
"q-mr-md"
size=
"sm"
icon=
"swap_horiz"
label=
"立即推送"
:loading=
"pushing"
...
...
@@ -131,7 +132,8 @@
<th>
跟进比例
</th>
<th>
跟进备注
</th>
</tr>
<tr
v-for=
"(sItem,sIndex) in props.row.AdvisorList"
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
<tr
v-for=
"(sItem,sIndex) in props.row.AdvisorList"
style=
"border-bottom:1px dashed #d1d1d1;"
:key=
"sIndex"
>
<td>
{{
sItem
.
AdvisorStatusName
}}
</td>
<td>
{{
sItem
.
AdvisorDate
}}
</td>
<td>
{{
sItem
.
AdvisorRate
}}
</td>
...
...
@@ -154,7 +156,8 @@
<
template
v-slot:body-cell-OrderCount=
"props"
>
<q-td
:props=
"props"
v-if=
"props.row.OrderCount == 0"
class=
"text-grey-4"
>
未报名
</q-td>
<q-td
:props=
"props"
v-if=
"props.row.OrderCount > 0"
class=
"bg-negative text-white"
style=
"cursor:pointer;text-decoration:underline;"
@
click=
"getStuRight(props.row,3)"
>
<q-td
:props=
"props"
v-if=
"props.row.OrderCount > 0"
class=
"bg-negative text-white"
style=
"cursor:pointer;text-decoration:underline;"
@
click=
"getStuRight(props.row,3)"
>
已报名
{{
props
.
row
.
OrderCount
}}
单
</q-td>
</
template
>
<
template
v-slot:body-cell-TeacherManager=
"props"
>
...
...
@@ -199,8 +202,9 @@
</q-table>
<student-form
v-if=
"isShowStuForm"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</student-form>
<studentRight-form
v-if=
"isShowStuRight"
:isJudgeTrans=
"isJudgeTrans"
:BelongType=
"BelongType"
:checkType=
"checkType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
@
reload=
"referDataHandler"
>
<studentRight-form
v-if=
"isShowStuRight"
:isJudgeTrans=
"isJudgeTrans"
:BelongType=
"BelongType"
:checkType=
"checkType"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
@
reload=
"referDataHandler"
>
</studentRight-form>
<studentAdd-form
v-if=
"isShowAdd"
:save-obj=
"stuOption"
@
close=
"closeStuForm"
@
success=
"refreshStuList"
>
</studentAdd-form>
...
...
@@ -433,8 +437,9 @@
pushMode
:
false
,
pushing
:
false
,
assistListFormat
:
[],
checkType
:
1
,
isShowAbroad
:
false
checkType
:
1
,
isShowAbroad
:
false
,
userInfo
:
{},
//当前登录人员
};
},
watch
:
{
...
...
@@ -447,12 +452,13 @@
}
},
created
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
formatAssistList
();
this
.
initAuth
();
},
mounted
()
{},
computed
:
{
...
mapGetters
([
"
userInfo"
,
"
logo"
,
"name"
])
...
mapGetters
([
"logo"
,
"name"
])
},
methods
:
{
//下载文件
...
...
@@ -605,11 +611,11 @@
this
.
isShowAbroad
=
false
;
},
//点击学生姓名弹出
getStuRight
(
obj
,
type
)
{
getStuRight
(
obj
,
type
)
{
if
(
obj
)
{
this
.
stuOption
=
obj
;
this
.
BelongType
=
obj
.
BelongType
;
this
.
checkType
=
type
;
this
.
checkType
=
type
;
}
else
{
this
.
stuOption
=
null
;
}
...
...
@@ -632,7 +638,7 @@
this
.
isShowTransfer
=
true
;
},
//转留学
transferAbroad
(){
transferAbroad
()
{
this
.
isShowAbroad
=
true
;
},
getCurseManager
(
row
)
{
...
...
src/pages/sale/makeupRate.vue
View file @
6785b234
...
...
@@ -152,6 +152,11 @@
</
template
>
<
template
v-if=
"item.label=='合计回单'||item.label=='合计到访'||item.label=='合计转化率'"
>
<el-table-column
:prop=
"item.prop"
:label=
"item.label"
fixed=
"right"
sortable
width=
"115"
:key=
"index"
>
<template
slot-scope=
"scope"
>
<a
@
click=
"showDetail(scope.row)"
style=
"color:#67C23A;cursor:pointer;text-decoration:underline;"
>
{{
scope
.
row
[
item
.
prop
]
}}
</a>
</
template
>
</el-table-column>
</template>
<
template
v-if=
"item.SubList&&item.SubList.length>0"
>
...
...
@@ -213,6 +218,7 @@
};
},
created
()
{
this
.
getEmployeeList
();
this
.
CurrentUserInfo
=
this
.
getLocalStorage
();
if
(
this
.
CurrentUserInfo
&&
this
.
CurrentUserInfo
.
ActionMenuList
&&
this
.
CurrentUserInfo
.
ActionMenuList
.
length
>
0
)
{
...
...
@@ -248,13 +254,30 @@
this
.
msg
.
endTime
=
year
+
strLink
+
month
+
strLink
+
day
;
this
.
dateList
.
push
(
year
+
strLink
+
month
+
strLink
+
'01'
);
this
.
dateList
.
push
(
year
+
strLink
+
month
+
strLink
+
day
);
this
.
getEmployeeList
();
this
.
getData
();
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
60
;
},
200
)
},
methods
:
{
//跳转到客户列表
showDetail
(
row
)
{
var
url
=
"/sale/mystu"
;
if
(
this
.
CurrentUserInfo
&&
(
this
.
CurrentUserInfo
.
IsMarket
==
1
||
this
.
CurrentUserInfo
.
IsCourseConsultant
==
1
))
{
url
=
"/sale/mystu"
;
}
else
{
url
=
'/school/student'
;
}
this
.
OpenNewUrl
(
url
,
{
ChannelId
:
0
,
startTime
:
this
.
msg
.
startTime
,
endTime
:
this
.
msg
.
endTime
,
createBy
:
row
.
Id
,
})
},
//下载渠道总表
downloadMarketChannelStudentStatic
()
{
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
this
.
loading
=
true
;
...
...
src/pages/sale/visitTransform.vue
View file @
6785b234
...
...
@@ -17,8 +17,8 @@
<div
class=
"page-search row items-center"
>
<div
class=
"col row wrap q-mr-lg q-col-gutter-md"
>
<div
class=
"col-4 Sysuser_Date"
>
<q-field
filled
>
<template
v-slot:control
>
<q-field
filled
>
<template
v-slot:control
>
<el-date-picker
v-model=
"dateList"
type=
"daterange"
style=
"width:100%"
:picker-options=
"pickerOptions0"
align=
"right"
value-format=
"yyyy-MM-dd"
@
change=
"getData"
unlink-panels
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
...
...
@@ -27,8 +27,8 @@
</q-field>
</div>
<div
class=
"col-3 Sysuser_Date"
>
<q-field
filled
>
<
template
v-slot:control
>
<q-field
filled
>
<
template
v-slot:control
>
<el-select
class=
"topselect"
v-model=
"msg.empList"
@
change=
"getData"
style=
"width:100%;"
collapse-tags
multiple
filterable
placeholder=
"请选择"
>
<el-option
v-for=
"item in EmployeeList"
:key=
"item.Id"
:label=
"item.EmployeeName"
:value=
"item.Id"
>
...
...
@@ -56,10 +56,26 @@
<el-table-column
prop=
"ChannelName"
label=
"渠道名"
>
</el-table-column>
<el-table-column
prop=
"ClueCount"
label=
"回单"
sortable
>
<
template
slot-scope=
"scope"
>
<a
@
click=
"showDetail(scope.row)"
style=
"color:#67C23A;cursor:pointer;text-decoration:underline;"
>
{{
scope
.
row
.
ClueCount
}}
</a>
</
template
>
</el-table-column>
<el-table-column
prop=
"VisitCount"
label=
"到访"
sortable
>
<
template
slot-scope=
"scope"
>
<a
@
click=
"showDetail(scope.row)"
style=
"color:#67C23A;cursor:pointer;text-decoration:underline;"
>
{{
scope
.
row
.
VisitCount
}}
</a>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"OrderCount"
label=
"合同数"
sortable
>
<
template
slot-scope=
"scope"
>
<a
@
click=
"showDetail(scope.row)"
style=
"color:#67C23A;cursor:pointer;text-decoration:underline;"
>
{{
scope
.
row
.
VisitCount
}}
</a>
</
template
>
</el-table-column>
<el-table-column
prop=
"OrderIncome"
label=
"新业绩金额"
sortable
>
</el-table-column>
...
...
@@ -112,6 +128,7 @@
};
},
created
()
{
this
.
getEmployeeList
();
this
.
CurrentUserInfo
=
this
.
getLocalStorage
();
if
(
this
.
CurrentUserInfo
&&
this
.
CurrentUserInfo
.
ActionMenuList
&&
this
.
CurrentUserInfo
.
ActionMenuList
.
length
>
0
)
{
...
...
@@ -138,13 +155,46 @@
this
.
msg
.
endTime
=
year
+
strLink
+
month
+
strLink
+
day
;
this
.
dateList
.
push
(
year
+
strLink
+
month
+
strLink
+
'01'
);
this
.
dateList
.
push
(
year
+
strLink
+
month
+
strLink
+
day
);
this
.
getEmployeeList
();
this
.
getData
();
setTimeout
(()
=>
{
this
.
tableHeight
=
window
.
innerHeight
-
this
.
$refs
.
table
.
$el
.
offsetTop
-
90
;
},
100
)
},
methods
:
{
//跳转到列表
showDetail
(
row
)
{
var
url
=
"/sale/mystu"
;
if
(
this
.
CurrentUserInfo
&&
(
this
.
CurrentUserInfo
.
IsMarket
==
1
||
this
.
CurrentUserInfo
.
IsCourseConsultant
==
1
))
{
url
=
"/sale/mystu"
;
}
else
{
url
=
'/school/student'
;
}
var
CreateType
=
2
;
//同行渠道
if
(
this
.
msg
.
top_Check
==
1
)
{
CreateType
=
2
;
}
//内部渠道
if
(
this
.
msg
.
top_Check
==
2
)
{
CreateType
=
3
;
}
//学校渠道
if
(
this
.
msg
.
top_Check
==
3
)
{
CreateType
=
2
;
}
//转介绍渠道
if
(
this
.
msg
.
top_Check
==
4
)
{
CreateType
=
4
;
}
this
.
OpenNewUrl
(
url
,
{
CreateType
:
CreateType
,
StuSourceId
:
row
.
ChannelId
,
startTime
:
this
.
msg
.
startTime
,
endTime
:
this
.
msg
.
endTime
,
})
},
//下载同行渠道
downloadMarketCreateType
()
{
var
msg
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
msg
));
var
fileName
=
"同行渠道.xls"
;
...
...
src/pages/school/student.vue
View file @
6785b234
...
...
@@ -61,6 +61,11 @@
v-model=
"msg.AdvisorStatus"
ref=
"AdvisorStatus"
:options=
"consultList"
clearable
label=
"当前状态"
class=
"col-6 q-pb-lg"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
stack-label
option-value=
"Id"
@
input=
"resetSearch"
dense
option-label=
"Name"
v-model=
"msg.StuChannel"
ref=
"AdvisorStatus"
:options=
"channelList"
clearable
label=
"渠道"
class=
"col-6 q-pb-lg"
emit-value
map-options
/>
</div>
</div>
</div>
<div
class=
"page-content"
>
...
...
@@ -94,6 +99,9 @@
import
{
GetStudentAdvisorConfigList
}
from
"../../api/customerstudent/customerstudent"
;
import
{
GetStuChannelList
}
from
"../../api/sale/sale"
;
import
stulist
from
'../../components/school/student/stulist'
import
{
mapGetters
...
...
@@ -126,7 +134,10 @@
StuType
:
''
,
QStudentStatus
:
1
,
//客户状态 1有效 2无效
AdvisorStatus
:
''
,
//当前状态
StuChannel
:
""
,
StuChannel
:
""
,
CreateIds
:
[],
CreateType
:
""
,
//来源类型
StuSourceId
:
""
,
//来源人编号
},
dateArray
:
[],
//日期数组
pageCount
:
0
,
...
...
@@ -138,7 +149,9 @@
AuthObj
:
{
isShowDownload
:
true
,
},
consultList
:
[]
consultList
:
[],
//渠道列表
channelList
:
[],
}
},
computed
:
{
...
...
@@ -148,6 +161,7 @@
this
.
getEmployeeList
();
this
.
getStuStageList
();
this
.
getCustomTypeList
();
this
.
queryChannelList
();
},
mounted
()
{
this
.
currentUrl
=
this
.
$route
.
path
;
...
...
@@ -162,10 +176,27 @@
if
(
this
.
$route
.
query
.
ChannelId
)
{
this
.
msg
.
StuChannel
=
this
.
$route
.
query
.
ChannelId
;
}
if
(
this
.
$route
.
query
.
createBy
)
{
this
.
msg
.
CreateBy
=
Number
(
this
.
$route
.
query
.
createBy
);
}
if
(
this
.
$route
.
query
.
CreateType
)
{
this
.
msg
.
CreateType
=
Number
(
this
.
$route
.
query
.
CreateType
);
}
if
(
this
.
$route
.
query
.
StuSourceId
)
{
this
.
msg
.
StuSourceId
=
Number
(
this
.
$route
.
query
.
StuSourceId
);
}
this
.
getStatusList
();
this
.
getStudent
()
},
methods
:
{
//获取渠道列表
queryChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
channelList
=
res
.
Data
;
}
})
},
//获取跟进状态下拉
getStatusList
()
{
let
msg
=
{
...
...
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