Commit f1d6fff5 authored by 黄奎's avatar 黄奎

学员跟进调整

parent f97781df
......@@ -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>
......
......@@ -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>
......@@ -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="AdvConfigList"
option-label="Name" option-value="Id" emit-value map-options label="当前状态" clearable />
<q-select filled v-model="msg.QGuestState" dense use-input label="状态" :options="isMyStuList"
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;
}
})
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment