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
f1d6fff5
Commit
f1d6fff5
authored
Apr 09, 2024
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
学员跟进调整
parent
f97781df
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
78 additions
and
175 deletions
+78
-175
stufollowlistNew.vue
src/components/school/student/stufollowlistNew.vue
+4
-0
stuList.vue
src/pages/stuMan/stuList.vue
+48
-9
teacherTrack.vue
src/pages/teacher/teacherTrack.vue
+26
-166
No files found.
src/components/school/student/stufollowlistNew.vue
View file @
f1d6fff5
...
...
@@ -78,6 +78,7 @@
<th
width=
"200"
>
续费课程
</th>
<th
width=
"80"
>
续费级别
</th>
<th
width=
"80"
>
续费金额
</th>
<th
width=
"80"
>
最新进度
</th>
<th
width=
"90"
>
负责人
</th>
</tr>
<template
v-if=
'dataObj&&dataObj.RList && dataObj.RList.length>0'
>
...
...
@@ -163,6 +164,9 @@
<span>
{{sItem.PreferPrice}}
</span>
</div>
</td>
<td>
{{item.NewLesson}}
</td>
<td>
{{ item.CreateByName?item.CreateByName:'-' }}
</td>
...
...
src/pages/stuMan/stuList.vue
View file @
f1d6fff5
...
...
@@ -170,6 +170,7 @@
font-weight
:
600
;
margin-right
:
10px
;
}
</
style
>
<
template
>
<div
:class=
"[
...
...
@@ -290,6 +291,19 @@
:options=
"MyTransListData"
option-label=
"StuName"
@
input=
"resetSearch"
clearable
option-value=
"StuId"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
v-model=
"msg.Teacher_Id"
dense
use-input
label=
"班主任"
:options=
"MyTeacherListData"
option-label=
"EmployeeName"
@
input=
"resetSearch"
@
filter=
"filterTeacher"
clearable
option-value=
"Id"
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>
</div>
<div
class=
"col row wrap q-gutter-x-md"
v-if=
"staticObj && !isComponent"
>
...
...
@@ -426,11 +440,7 @@
<q-item-label
overline
>
添加事件
</q-item-label>
</q-item-section>
</q-item>
<!--
<q-item
dense
clickable
v-close-popup
@
click=
"showChangeCourse(props.row)"
>
<q-item-section>
<q-item-label
overline
>
跳课
</q-item-label>
</q-item-section>
</q-item>
-->
</q-list>
</q-btn-dropdown>
</div>
...
...
@@ -559,7 +569,8 @@
GuestState
:
""
,
//学员状态
CreateType
:
""
,
//客户来源
StuChannelId
:
""
,
//收客渠道
StuSourceId
:
""
StuSourceId
:
""
,
Teacher_Id
:
""
,
//班主任
},
pageCount
:
0
,
columns
:
[{
...
...
@@ -569,7 +580,6 @@
align
:
"left"
,
required
:
true
},
{
name
:
"GuestName"
,
label
:
"姓名"
,
...
...
@@ -812,7 +822,9 @@
courseName
:
""
,
isShowChangeCourse
:
false
,
ChangeCourseObj
:
{},
staticObj
:
{}
//学生统计信息
staticObj
:
{},
//学生统计信息
MyTeacherListData
:
[],
//查询老师列表
AllTeacherList
:
[],
//所有教师列表
};
},
created
()
{
...
...
@@ -864,6 +876,7 @@
this
.
GetStuChannelList
();
this
.
GetCustomerList
();
this
.
getEmployeeList
();
this
.
findData
();
}
else
{
this
.
msg
.
rowsPerPage
=
this
.
pageSize
;
this
.
loading
=
this
.
outLoading
;
...
...
@@ -871,6 +884,18 @@
}
},
methods
:
{
//获取班主任
findData
()
{
queryEmployee
({
AccountTypeStr
:
"2"
,
IsLeave
:
1
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
MyTeacherListData
=
res
.
Data
;
this
.
AllTeacherList
=
res
.
Data
;
}
})
},
//获取收客渠道
GetStuChannelList
()
{
GetStuChannelList
({}).
then
(
res
=>
{
...
...
@@ -1010,6 +1035,18 @@
}
});
},
filterTeacher
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
MyTeacherListData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllTeacherList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
MyTeacherListData
=
this
.
AllTeacherList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
});
},
//筛选课程
filterCourse
(
val
,
update
)
{
update
(()
=>
{
...
...
@@ -1268,7 +1305,9 @@
}
}
};
</
script
>
<
style
lang=
"sass"
>
@import
url('~assets/css/table.sass')
</
style
>
\ No newline at end of file
</
style
>
src/pages/teacher/teacherTrack.vue
View file @
f1d6fff5
...
...
@@ -58,151 +58,26 @@
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.StuRealMobile"
label=
"电话"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.QQ"
label=
"QQ"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-input
@
keyup
.
enter
.
native=
"resetSearch"
dense
clearable
filled
v-model=
"msg.WeChatNo"
label=
"微信号"
maxlength=
"20"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
filled
v-model=
"msg.StuType"
dense
clearable
:options=
"customTypeList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"客户类型"
/>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.School_Id"
:options=
"CompanyList"
emit-value
map-options
label=
"校区"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
v-model=
"msg.AdvisorStatus"
:options=
"AdvConfig
List"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"当前状态"
clearable
/>
<q-select
filled
v-model=
"msg.QGuestState"
dense
use-input
label=
"状态"
:options=
"isMyStu
List"
option-label=
"Name"
@
input=
"resetSearch"
clearable
option-value=
"Id"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
v-model=
"msg.StuPurpose"
dense
@
input=
"resetSearch"
clearable
:options=
"goalsList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
label=
"学习目的"
/>
<q-select
filled
v-model=
"msg.HeadTeacherId"
dense
use-input
label=
"班主任"
:options=
"MyTeacherListData"
option-label=
"EmployeeName"
@
input=
"resetSearch"
clearable
option-value=
"Id"
@
filter=
"filterTeacher"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-field
filled
dense
>
<template
v-slot:control
>
<el-date-picker
v-model=
"dateArray"
size=
"mini"
@
change=
"resetSearch"
value-format=
"yyyy-MM-dd"
type=
"daterange"
style=
"border:none;"
range-separator=
"至"
start-placeholder=
"跟进开始时间"
end-placeholder=
"跟进结束时间"
/>
</
template
>
</q-field>
</div>
<
template
v-if=
"morequery"
>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"SId"
option-label=
"SName"
v-model=
"msg.School_Id"
:options=
"CompanyList"
emit-value
map-options
label=
"校区"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
filled
option-value=
"CourseId"
option-label=
"CourseName"
v-model=
"msg.CourseId"
clearable
emit-value
use-input
:options=
"myCourseList"
label=
"课程"
dense
map-options
@
filter=
"filterFnkec"
/>
</div>
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"Id"
option-label=
"EmployeeName"
v-model=
"msg.ConsultantId"
clearable
:options=
"RoleListData"
emit-value
map-options
label=
"课程顾问"
/>
</div>
<!--
<div
class=
"col-3"
>
<q-select
@
input=
"resetSearch"
dense
filled
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.StuGuestState"
clearable
:options=
"hetongList"
emit-value
map-options
label=
"合同状态"
/>
</div>
-->
<div
class=
"col-3"
>
<q-select
@
input=
"msg.StuSourceId='',msg.StuChannel='',resetSearch()"
dense
clearable
filled
option-value=
"Id"
option-label=
"Name"
v-model=
"msg.CreateType"
:options=
"customFromList"
emit-value
map-options
label=
"客户来源"
/>
</div>
<div
class=
"col-3"
v-if=
"msg.CreateType==1"
>
<q-select
filled
v-model=
"msg.StuChannel"
@
input=
"resetSearch"
label=
"收客渠道"
dense
:options=
"StuChannelList"
option-label=
"Name"
option-value=
"Id"
emit-value
map-options
use-input
clearable
@
filter=
"filterStuChannel"
>
<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"
v-if=
"msg.CreateType==2"
>
<q-select
filled
v-model=
"msg.StuSourceId"
dense
:options=
"customList"
use-input
label=
"关联同行"
@
filter=
"filterFn"
option-label=
"CustomerName"
@
input=
"resetSearch"
clearable
option-value=
"CustomerId"
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"
v-if=
"msg.CreateType==3"
>
<q-select
filled
v-model=
"msg.StuSourceId"
dense
@
filter=
"filterEmployee"
label=
"介绍人"
use-input
:options=
"myEmployeeList"
option-label=
"EmployeeName"
@
input=
"resetSearch"
clearable
option-value=
"Id"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
v-if=
"msg.CreateType==4"
>
<q-select
filled
v-model=
"msg.StuSourceId"
dense
use-input
@
filter=
"filterStudent"
label=
"转介人"
:options=
"MyTransListData"
option-label=
"StuName"
@
input=
"resetSearch"
clearable
option-value=
"StuId"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
<q-select
filled
v-model=
"msg.HeadTeacherId"
dense
use-input
label=
"班主任"
:options=
"MyTeacherListData"
option-label=
"EmployeeName"
@
input=
"resetSearch"
clearable
option-value=
"Id"
emit-value
map-options
/>
</div>
<div
class=
"col-3"
>
(
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"1"
label=
"范围内有跟进记录"
@
input=
'resetSearch'
/>
<q-radio
size=
"xs"
v-model=
"msg.Q_FType"
val=
"2"
label=
"范围内没有跟进记录"
@
input=
'resetSearch'
/>
)
</div>
</template>
</div>
</div>
<div
style=
"width: 100%;text-align: right;padding: 0 20px;margin-bottom: 10px;"
>
<span
@
click=
"morequery=!morequery"
style=
"display:inline-flex;align-items:center;cursor: pointer;"
>
<q-btn
color=
"accent"
class=
"q-mr-md"
size=
"sm"
icon=
"download"
label=
"下载"
v-if=
"isHaveDownLoad"
@
click=
"downloadStudentFollow"
/>
<span
style=
"margin-right:5px;color: #089bab;"
>
高级查询
</span>
<img
v-show=
"!morequery"
style=
"width:12px;height:12px"
src=
"../../assets/images/more.png"
alt=
""
>
<img
v-show=
"morequery"
class=
"roatImg"
style=
"width:12px;height:12px"
src=
"../../assets/images/more.png"
alt=
""
>
</span>
</div>
<!-- <div class="col row wrap q-gutter-x-md" v-if="dataList&&dataList.Stat" >
<div class="col stics">
<span class="stics-name">学生总数</span>
<span>{{dataList.Stat.StuTNum?dataList.Stat.StuTNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">续费数量</span>
<span style="color: #F72E52">{{dataList.Stat.RenewNum?dataList.Stat.RenewNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">新生数量</span>
<span style="color:#2961FE;">{{dataList.Stat.NewNum?dataList.Stat.NewNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">学习中数量</span>
<span>{{dataList.Stat.StudyNum?dataList.Stat.StudyNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">毕业数量</span>
<span>{{dataList.Stat.GraduateNum?dataList.Stat.GraduateNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">停课数量</span>
<span>{{dataList.Stat.SuspendNum?dataList.Stat.SuspendNum:0}}人</span>
</div>
<div class="col stics">
<span class="stics-name">退学数量</span>
<span>{{dataList.Stat.DropOutNum?dataList.Stat.DropOutNum:0}}人</span>
</div>
</div> -->
<div
style=
"width: 100%;margin-top: 20px"
>
<stufollowlist
:dataObj=
"dataList"
:RListlength=
"RListlength"
@
success=
"refreshPage"
:titlelist=
"titlelist"
:loading=
"loading"
ref=
"stuFollowList"
:AuthObj=
"AuthObj"
></stufollowlist>
...
...
@@ -222,7 +97,6 @@
queryEmployee
,
}
from
"../../api/users/user"
;
import
{
queryGuestStateList
,
CreateTypeList
,
GetStuChannelList
,
GetCustomerList
,
...
...
@@ -263,26 +137,10 @@
pageSize
:
10
,
rowsPerPage
:
10
,
StuName
:
""
,
StuRealMobile
:
''
,
QQ
:
''
,
WeChatNo
:
''
,
StuType
:
''
,
//学生类型
StuGuestState
:
'0'
,
//合同状态
SFTime
:
''
,
EFTime
:
''
,
StuStage
:
''
,
//客户状态
Q_FType
:
'1'
,
//跟进类型 1范围内有跟进记录 2范围内没有跟进记录
CreateIds
:
[],
School_Id
:
'-1'
,
//校区
CourseId
:
''
,
//课程
ConsultantId
:
''
,
//课程顾问
CreateType
:
''
,
//客户来源
StuChannel
:
""
,
//收客渠道
StuSourceId
:
''
,
StuPurpose
:
''
,
//学习目的
HeadTeacherId
:
''
,
//老师
QueryTpye
:
2
,
//老师查询
AdvisorStatus
:
""
,
//当前
状态
QGuestState
:
0
,
//学员
状态
},
loading
:
false
,
dataList
:
null
,
//列表数据
...
...
@@ -294,24 +152,12 @@
Name
:
'不限'
},
{
Id
:
'1'
,
Name
:
'是'
},
{
Id
:
'0'
,
Name
:
'否'
},
],
hetongList
:
[{
Id
:
'1'
,
Name
:
'正常'
Name
:
'未毕业'
},
{
Id
:
'2'
,
Name
:
'退学'
},
{
Id
:
'5'
,
Name
:
'停课'
},
{
Id
:
'7'
,
Name
:
'毕业'
},
],
Name
:
'已毕业'
}],
dateArray
:
[],
//日期数组
RListlength
:
0
,
titlelist
:
[],
...
...
@@ -334,6 +180,7 @@
MyTransListData
:
[],
goalsList
:
[],
//学习目的列表
MyTeacherListData
:
[],
//查询老师列表
AllTeacherList
:
[],
//所有教师
AdvConfigList
:
[],
//客户状态列表
AuthObj
:
{
isShowSaleInfo
:
false
,
...
...
@@ -386,6 +233,18 @@
this
.
getList
();
//获取列表
},
methods
:
{
filterTeacher
(
val
,
update
)
{
update
(()
=>
{
if
(
val
===
""
)
{
this
.
MyTeacherListData
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
AllTeacherList
));
}
else
{
const
needle
=
val
.
toLowerCase
();
this
.
MyTeacherListData
=
this
.
AllTeacherList
.
filter
(
v
=>
v
.
EmployeeName
.
toLowerCase
().
indexOf
(
needle
)
>
-
1
);
}
});
},
//获取状态列表
getAdvConfigList
()
{
let
msg
=
{
...
...
@@ -409,6 +268,7 @@
}).
then
(
res
=>
{
if
(
res
.
Code
==
1
)
{
this
.
MyTeacherListData
=
res
.
Data
;
this
.
AllTeacherList
=
res
.
Data
;
}
})
},
...
...
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