Commit e8a60285 authored by zhengke's avatar zhengke

修改

parent abd9a177
...@@ -15,33 +15,33 @@ ...@@ -15,33 +15,33 @@
<div class="page-search row items-center"> <div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<q-input @change="resetSearch" clearable dense standout="bg-primary text-white" v-model="msg.OrderId" label="订单号" <q-input @change="resetSearch" clearable dense filled v-model="msg.OrderId" label="订单号"
@clear="resetSearch" maxlength="10" /> @clear="resetSearch" maxlength="10" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense standout="bg-primary text-white" v-model="msg.CourseSubject" <q-select @input="resetSearch" dense filled v-model="msg.CourseSubject"
:options="CourseSubjectList" option-label="SubjectName" option-value="Id" emit-value map-options label="所属科目" :options="CourseSubjectList" option-label="SubjectName" option-value="Id" emit-value map-options label="所属科目"
clearable /> clearable />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @change="resetSearch" dense clearable standout="bg-primary text-white" v-model="msg.GuestName" label="学生名称" <q-input @change="resetSearch" dense clearable filled v-model="msg.GuestName" label="学生名称"
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @change="resetSearch" dense clearable standout="bg-primary text-white" v-model="msg.ClassName" label="班级名称" <q-input @change="resetSearch" dense clearable filled v-model="msg.ClassName" label="班级名称"
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @change="resetSearch" dense clearable standout="bg-primary text-white" v-model="msg.ClassNo" label="班号" <q-input @change="resetSearch" dense clearable filled v-model="msg.ClassNo" label="班号"
@clear="resetSearch" maxlength="20" /> @clear="resetSearch" maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense standout="bg-primary text-white" option-value="CourseId" <q-select @input="resetSearch" dense filled @filter="filterCourse" use-input clearable option-value="CourseId"
option-label="CourseName" v-model="msg.CouseId" :options="CourseList" emit-value map-options label="学习课程" /> option-label="CourseName" v-model="msg.CouseId" :options="CourseList" emit-value map-options label="学习课程" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select dense @input="msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()" <q-select dense @input="msg.OrderState==0?(msg.Q_OrderState = 1):msg.Q_OrderState=0,resetSearch()"
standout="bg-primary text-white" option-value="Id" option-label="Name" v-model="msg.OrderState" filled option-value="Id" option-label="Name" v-model="msg.OrderState"
:options="OrderStateList" emit-value map-options label="订单状态" /> :options="OrderStateList" emit-value map-options label="订单状态" />
</div> </div>
<div class="col-3"> <div class="col-3">
...@@ -69,12 +69,12 @@ ...@@ -69,12 +69,12 @@
</q-field> </q-field>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense standout="bg-primary text-white" option-value="Id" option-label="EmployeeName" <q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName"
v-model="msg.EnterID" :options="EmployeeList" emit-value map-options label="业务员" use-input v-model="msg.EnterID" :options="EmployeeList" emit-value map-options label="业务员" use-input
@filter="filterFn2" /> @filter="filterFn2" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense standout="bg-primary text-white" option-value="Id" option-label="EmployeeName" <q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName"
v-model="msg.HelpEnterId" :options="TeacherList" emit-value map-options label="关联教师" use-input v-model="msg.HelpEnterId" :options="TeacherList" emit-value map-options label="关联教师" use-input
@filter="filterFn3" /> @filter="filterFn3" />
</div> </div>
...@@ -202,6 +202,7 @@ ...@@ -202,6 +202,7 @@
OrderStateList: [], OrderStateList: [],
pageCount: 0, pageCount: 0,
CourseList: [], //关联课程下拉数据 CourseList: [], //关联课程下拉数据
allCourseList: [], //所有课程
classObjOption: null, classObjOption: null,
isShowClassInfo: false, //是否显示课程信息 isShowClassInfo: false, //是否显示课程信息
showone: false, showone: false,
...@@ -293,8 +294,17 @@ ...@@ -293,8 +294,17 @@
CourseName: "不限" CourseName: "不限"
}) })
this.CourseList = tempArray; this.CourseList = tempArray;
this.allCourseList = tempArray;
} }
}) })
},
//筛选员工
filterCourse(val, update, abort) {
update(() => {
this.CourseList = this.allCourseList.filter(
v => v.CourseName.indexOf(val) > -1
);
});
}, },
//翻页 //翻页
changePage(val) { changePage(val) {
......
<style scoped> <style scoped>
@import "../financial/css/cssReset.css"; @import "../financial/css/cssReset.css";
.baseSet_Title { .baseSet_Title {
width: 120px !important; width: 120px !important;
padding: 18px 0 0 16px; padding: 18px 0 0 16px;
text-align: right; text-align: right;
} }
.singeRowTable tr th {
.singeRowTable tr th {
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.studentTracking td:first-child{background-color: #E6E6E6;position: sticky;left:0px;}
.studentTracking th:first-child{position: sticky;left:0px;} .studentTracking td:first-child {
background-color: #E6E6E6;
position: sticky;
left: 0px;
}
.studentTracking th:first-child {
position: sticky;
left: 0px;
}
</style> </style>
<template> <template>
<div class="page-body studentTracking"> <div class="page-body studentTracking">
<div class="page-search row items-center"> <div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.StuName" label="昵称" maxlength="20" /> <q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.StuName" label="昵称"
maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.StuRealMobile" label="电话" maxlength="20" /> <q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.StuRealMobile" label="电话"
maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.QQ" label="QQ" maxlength="20" /> <q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.QQ" label="QQ"
maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.WeChatNo" label="微信号" maxlength="20" /> <q-input @keyup.enter.native="resetSearch" dense clearable filled v-model="msg.WeChatNo" label="微信号"
maxlength="20" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" filled v-model="msg.StuType" dense clearable :options="customTypeList" <q-select @input="resetSearch" filled v-model="msg.StuType" dense clearable :options="customTypeList"
...@@ -37,88 +52,47 @@ ...@@ -37,88 +52,47 @@
option-value="Id" emit-value map-options label="客户状态" clearable /> option-value="Id" emit-value map-options label="客户状态" clearable />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetBelong" dense filled option-value="Id" option-label="Name" v-model="msg.BelongType"
@input="resetBelong" :options="BelongTypeList" emit-value map-options label="归属类型" />
dense </div>
filled <div class="col-3">
option-value="Id" <q-select filled v-model="msg.StuPurpose" dense @input="resetSearch" clearable :options="goalsList" option-label="Name"
option-label="Name" option-value="Id" emit-value map-options />
v-model="msg.BelongType"
:options="BelongTypeList"
emit-value
map-options
label="归属类型"
/>
</div> </div>
<div class="col-3" v-if="msg.BelongType == 4"> <div class="col-3" v-if="msg.BelongType == 4">
<q-select <q-select @input="resetSearch" dense clearable @filter="filterSubord" use-input filled option-value="Id"
@input="resetSearch" option-label="EmployeeName" v-model="msg.CreateIds" multiple :options="SubordList" emit-value map-options
dense label="我下属的" />
clearable
@filter="filterSubord"
use-input
filled
option-value="Id"
option-label="EmployeeName"
v-model="msg.CreateIds"
multiple
:options="SubordList"
emit-value
map-options
label="我下属的"
/>
</div> </div>
</div> </div>
</div> </div>
<div class="page-search row items-center" v-if="morequery"> <div class="page-search row items-center" v-if="morequery">
<div class="col row wrap q-mr-lg q-col-gutter-md"> <div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="SId" option-label="SName" v-model="msg.School_Id" <q-select @input="resetSearch" dense filled option-value="SId" option-label="SName" v-model="msg.School_Id"
:options="CompanyList" emit-value map-options label="校区" :options="CompanyList" emit-value map-options label="校区" />
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" filled option-value="CourseId" option-label="CourseName" v-model="msg.CourseId" clearable emit-value <q-select @input="resetSearch" filled option-value="CourseId" option-label="CourseName" v-model="msg.CourseId"
use-input :options="myCourseList" label="课程" dense clearable emit-value use-input :options="myCourseList" label="课程" dense map-options @filter="filterFnkec" />
map-options @filter="filterFnkec"
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName" v-model="msg.ConsultantId" clearable <q-select @input="resetSearch" dense filled option-value="Id" option-label="EmployeeName"
:options="RoleListData" emit-value map-options label="课程顾问" v-model="msg.ConsultantId" clearable :options="RoleListData" emit-value map-options label="课程顾问" />
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select @input="resetSearch" dense filled option-value="Id" option-label="Name" v-model="msg.StuGuestState" clearable <q-select @input="resetSearch" dense filled option-value="Id" option-label="Name" v-model="msg.StuGuestState"
:options="hetongList" emit-value map-options label="合同状态" clearable :options="hetongList" emit-value map-options label="合同状态" />
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="msg.StuSourceId='',msg.StuChannel='',resetSearch()" dense clearable filled option-value="Id"
@input="msg.StuSourceId='',msg.StuChannel='',resetSearch()" option-label="Name" v-model="msg.CreateType" :options="customFromList" emit-value map-options
dense label="客户来源" />
clearable
filled
option-value="Id"
option-label="Name"
v-model="msg.CreateType"
:options="customFromList"
emit-value
map-options
label="客户来源"
/>
</div> </div>
<div class="col-3" v-if="msg.CreateType==1"> <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 <q-select filled v-model="msg.StuChannel" @input="resetSearch" label="收客渠道" dense :options="StuChannelList"
@filter="filterStuChannel"> option-label="Name" option-value="Id" emit-value map-options use-input clearable @filter="filterStuChannel">
<template v-slot:no-option> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -130,8 +104,8 @@ ...@@ -130,8 +104,8 @@
</div> </div>
<div class="col-3" v-if="msg.CreateType==2"> <div class="col-3" v-if="msg.CreateType==2">
<q-select filled v-model="msg.StuSourceId" dense :options="customList" use-input label="关联同行" <q-select filled v-model="msg.StuSourceId" dense :options="customList" use-input label="关联同行"
@filter="filterFn" option-label="CustomerName" @input="resetSearch" clearable @filter="filterFn" option-label="CustomerName" @input="resetSearch" clearable option-value="CustomerId"
option-value="CustomerId" emit-value map-options> emit-value map-options>
<template v-slot:no-option> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -142,14 +116,14 @@ ...@@ -142,14 +116,14 @@
</q-select> </q-select>
</div> </div>
<div class="col-3" v-if="msg.CreateType==3"> <div class="col-3" v-if="msg.CreateType==3">
<q-select filled v-model="msg.StuSourceId" dense @filter="filterEmployee" label="介绍人" <q-select filled v-model="msg.StuSourceId" dense @filter="filterEmployee" label="介绍人" use-input
use-input :options="myEmployeeList" option-label="EmployeeName" @input="resetSearch" clearable :options="myEmployeeList" option-label="EmployeeName" @input="resetSearch" clearable option-value="Id"
option-value="Id" emit-value map-options /> emit-value map-options />
</div> </div>
<div class="col-3" v-if="msg.CreateType==4"> <div class="col-3" v-if="msg.CreateType==4">
<q-select filled v-model="msg.StuSourceId" dense use-input @filter="filterStudent" label="转介人" <q-select filled v-model="msg.StuSourceId" dense use-input @filter="filterStudent" label="转介人"
:options="MyTransListData" option-label="StuName" @input="resetSearch" clearable :options="MyTransListData" option-label="StuName" @input="resetSearch" clearable option-value="StuId"
option-value="StuId" emit-value map-options /> emit-value map-options />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-field filled dense> <q-field filled dense>
...@@ -162,19 +136,20 @@ ...@@ -162,19 +136,20 @@
</div> </div>
<div class="col-3"> <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' /> <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> </div>
</div> </div>
</div> </div>
<div style="width: 100%;text-align: right;padding: 0 20px;margin-bottom: 10px;"> <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;" > <span @click="morequery=!morequery" style="display:inline-flex;align-items:center;cursor: pointer;">
<span style="margin-right:5px;color: #089bab;">高级查询</span> <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" 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=""> <img v-show="morequery" class="roatImg" style="width:12px;height:12px" src="../../assets/images/more.png"
alt="">
</span> </span>
</div> </div>
<div class="col row wrap q-gutter-x-md" v-if="dataList.Stat"> <div class="col row wrap q-gutter-x-md" v-if="dataList.Stat">
<div class="col stics"> <div class="col stics">
<span class="stics-name">学生总数</span> <span class="stics-name">学生总数</span>
...@@ -190,7 +165,7 @@ ...@@ -190,7 +165,7 @@
</div> </div>
<div class="col stics"> <div class="col stics">
<span class="stics-name">学习中数量</span> <span class="stics-name">学习中数量</span>
<span >{{dataList.Stat.StudyNum?dataList.Stat.StudyNum:0}}人</span> <span>{{dataList.Stat.StudyNum?dataList.Stat.StudyNum:0}}人</span>
</div> </div>
<div class="col stics"> <div class="col stics">
<span class="stics-name">毕业数量</span> <span class="stics-name">毕业数量</span>
...@@ -207,15 +182,9 @@ ...@@ -207,15 +182,9 @@
</div> </div>
<div style="width: 100%;margin-top: 20px"> <div style="width: 100%;margin-top: 20px">
<div style="width: 100%;overflow-x: auto;">
<div style="width: 100%;overflow-x: auto;" > <table class="po_content singeRowTable" style="border:1px solid #E6E6E6;" cellspacing="0" cellpadding="0"
<table v-loading="loading">
class="po_content singeRowTable"
style="border:1px solid #E6E6E6;"
cellspacing="0"
cellpadding="0"
v-loading="loading"
>
<tr> <tr>
<th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">学生</th> <th width="120" rowspan="2" style="min-width: 110px;z-index: 999;">学生</th>
<th width="120" rowspan="2" style="min-width: 110px;">电话</th> <th width="120" rowspan="2" style="min-width: 110px;">电话</th>
...@@ -226,21 +195,23 @@ ...@@ -226,21 +195,23 @@
<th width="80" rowspan="2" style="min-width: 80px;">当前级别</th> <th width="80" rowspan="2" style="min-width: 80px;">当前级别</th>
<th width="100" rowspan="2" style="min-width: 100px;">生日</th> <th width="100" rowspan="2" style="min-width: 100px;">生日</th>
<th width="100" rowspan="2" style="min-width: 100px;">客户来源</th> <th width="100" rowspan="2" style="min-width: 100px;">客户来源</th>
<th width="100" rowspan="2" style="min-width: 100px;">学习目的</th>
<th width="100" rowspan="2" style="min-width: 100px;">来源关联人</th> <th width="100" rowspan="2" style="min-width: 100px;">来源关联人</th>
<th width="100" rowspan="2" style="min-width: 100px;">收客渠道</th> <th width="100" rowspan="2" style="min-width: 100px;">收客渠道</th>
<th width="100" rowspan="2" style="min-width: 100px;">负责人</th> <th width="100" rowspan="2" style="min-width: 100px;">负责人</th>
<th width="100" rowspan="2" style="min-width: 100px;">合同状态</th> <th width="100" rowspan="2" style="min-width: 100px;">合同状态</th>
<th width="500" colspan="3" style="min-width: 500px;" v-for=" ( item , index ) in RListlength " :key = 'index'> <th width="500" colspan="3" style="min-width: 500px;" v-for=" ( item , index ) in RListlength "
:key='index'>
<div>第{{index+1}}个月</div> <div>第{{index+1}}个月</div>
<div v-if="dataList.MonthList">(累计续约:<span style="color: #F72E52">{{getxuyue(index).RenewNum}} </span> <span style="margin-left: 5px;">学员介绍:{{getxuyue(index).IntroductionNum}}</span>) </div> <div v-if="dataList.MonthList">(累计续约:<span style="color: #F72E52">{{getxuyue(index).RenewNum}} </span>
<span style="margin-left: 5px;">学员介绍:{{getxuyue(index).IntroductionNum}}</span>) </div>
</th> </th>
</tr> </tr>
<tr > <tr>
<th v-for=" ( item , index ) in titlelist " :key = 'index' :width="item.Id==1?120:200" >{{item.Name}}</th> <th v-for=" ( item , index ) in titlelist " :key='index' :width="item.Id==1?120:200">{{item.Name}}</th>
</tr> </tr>
<tr v-for=" ( item , index ) in dataList.RList " :key="index" v-if='dataList.RList && dataList.RList.length>0'> <tr v-for=" ( item , index ) in dataList.RList " :key="index"
v-if='dataList.RList && dataList.RList.length>0'>
<td style=" border: 1px solid #d2d2d2;"> <td style=" border: 1px solid #d2d2d2;">
<!-- <span>{{ item.StuName }}</span> --> <!-- <span>{{ item.StuName }}</span> -->
<div class="text-blue cursor-pointer" @click="getStuRight(item)"> <div class="text-blue cursor-pointer" @click="getStuRight(item)">
...@@ -251,7 +222,7 @@ ...@@ -251,7 +222,7 @@
<span>{{ item.StuRealMobile }}</span> <span>{{ item.StuRealMobile }}</span>
</td> </td>
<td> <td>
<span v-html="getCurseManager(item)" ></span> <span v-html="getCurseManager(item)"></span>
</td> </td>
<td> <td>
<span v-html="getTeacherManager(item)"></span> <span v-html="getTeacherManager(item)"></span>
...@@ -272,7 +243,11 @@ ...@@ -272,7 +243,11 @@
<span>{{ item.CreateTypeName?item.CreateTypeName:'-' }}</span> <span>{{ item.CreateTypeName?item.CreateTypeName:'-' }}</span>
</td> </td>
<td> <td>
<span><span v-if="item.CreateType==2 && item.EnterpriseName">{{item.EnterpriseName}}:</span> {{ item.StuSourceIdName?item.StuSourceIdName:'-' }}</span> {{item.StuPurposeName}}
</td>
<td>
<span><span v-if="item.CreateType==2 && item.EnterpriseName">{{item.EnterpriseName}}:</span>
{{ item.StuSourceIdName?item.StuSourceIdName:'-' }}</span>
</td> </td>
<td> <td>
<span>{{ item.StuChannelName?item.StuChannelName:'-' }}</span> <span>{{ item.StuChannelName?item.StuChannelName:'-' }}</span>
...@@ -283,36 +258,39 @@ ...@@ -283,36 +258,39 @@
<td> <td>
<span>{{ item.StuGuestStateName }}</span> <span>{{ item.StuGuestStateName }}</span>
</td> </td>
<td v-for=" ( x , y ) in titlelist " :key="y" > <td v-for=" ( x , y ) in titlelist " :key="y">
<div v-if="item.MonthList[x.index]"> <div v-if="item.MonthList[x.index]">
<div v-if="x.Id==1" > <div v-if="x.Id==1">
<span>{{item.MonthList[x.index].Month}}</span> <span>{{item.MonthList[x.index].Month}}</span>
<span style="margin:0 3px">/</span> <span style="margin:0 3px">/</span>
<span v-if="item.MonthList[x.index].IsRenew==1" style="color: red;"></span> <span v-if="item.MonthList[x.index].IsRenew==1" style="color: red;"></span>
<span v-if="item.MonthList[x.index].IsRenew==2"></span> <span v-if="item.MonthList[x.index].IsRenew==2"></span>
<span style="margin:0 3px">/</span> <span style="margin:0 3px">/</span>
<span :style="{'color':item.MonthList[x.index].IntroductionNum>0?'red':'#111'}">{{item.MonthList[x.index].IntroductionNum}}</span> <span
:style="{'color':item.MonthList[x.index].IntroductionNum>0?'red':'#111'}">{{item.MonthList[x.index].IntroductionNum}}</span>
</div> </div>
<div v-if="x.Id==2" style="padding: 7px;"> <div v-if="x.Id==2" style="padding: 7px;">
<div v-if="item.MonthList[x.index].TeacherTime" style="display: flex;align-items: center;justify-content: space-between;"> <div v-if="item.MonthList[x.index].TeacherTime"
<div >{{item.MonthList[x.index].TeacherTime}}</div> style="display: flex;align-items: center;justify-content: space-between;">
<span style="text-decoration: underline;cursor: pointer;color: #2961fe ;" @click="lookgengduo(item,item.MonthList[x.index].TeacherTime)">更多</span> <div>{{item.MonthList[x.index].TeacherTime}}</div>
<span style="text-decoration: underline;cursor: pointer;color: #2961fe ;"
@click="lookgengduo(item,item.MonthList[x.index].TeacherTime)">更多</span>
</div> </div>
<template > <template>
<div v-if="item.MonthList[x.index].Teacher!=''" v-html="item.MonthList[x.index].Teacher"></div> <div v-if="item.MonthList[x.index].Teacher!=''" v-html="item.MonthList[x.index].Teacher"></div>
<span v-if="item.MonthList[x.index].Teacher==''">-</span> <span v-if="item.MonthList[x.index].Teacher==''">-</span>
</template> </template>
</div> </div>
<div v-if="x.Id==3" style="padding: 3px;"> <div v-if="x.Id==3" style="padding: 3px;">
<div v-if="item.MonthList[x.index].ConsultantTime" style="display: flex;align-items: center;justify-content: space-between;"> <div v-if="item.MonthList[x.index].ConsultantTime"
<div >{{item.MonthList[x.index].ConsultantTime}}</div> style="display: flex;align-items: center;justify-content: space-between;">
<span style="text-decoration: underline;cursor: pointer;color: #2961fe ;" @click="lookgengduo(item,item.MonthList[x.index].ConsultantTime)">更多</span> <div>{{item.MonthList[x.index].ConsultantTime}}</div>
<span style="text-decoration: underline;cursor: pointer;color: #2961fe ;"
@click="lookgengduo(item,item.MonthList[x.index].ConsultantTime)">更多</span>
</div> </div>
<template>
<template >
<div v-if="item.MonthList[x.index].Consultant" v-html="item.MonthList[x.index].Consultant"></div> <div v-if="item.MonthList[x.index].Consultant" v-html="item.MonthList[x.index].Consultant"></div>
<span v-if="item.MonthList[x.index].Consultant==''">-</span> <span v-if="item.MonthList[x.index].Consultant==''">-</span>
</template> </template>
...@@ -321,55 +299,39 @@ ...@@ -321,55 +299,39 @@
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
<div v-if='!dataList.RList||(dataList.RList && dataList.RList.length==0)' <div v-if='!dataList.RList||(dataList.RList && dataList.RList.length==0)'
style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;"> style="width: 100%;border:1px solid #E6E6E6;display: flex;align-items: center;justify-content: center;height: 60px;">
暂无数据 暂无数据
</div> </div>
<q-pagination v-if='dataList.RList && dataList.RList.length>0' class="full-width justify-end"
<q-pagination v-if='dataList.RList && dataList.RList.length>0' class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="PageCount" v-model="msg.pageIndex" color="primary" :max="PageCount" :input="true" @input="changePage" />
:input="true" @input="changePage" /> </div>
</div> <studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption"
<studentRight-form @close="closeStuForm" @success="getList" @reload="getList">
v-if="isShowStuRight"
:isJudgeTrans="isJudgeTrans"
:BelongType="BelongType"
:save-obj="stuOption"
@close="closeStuForm"
@success="getList"
@reload="getList"
>
</studentRight-form> </studentRight-form>
<studentFUForm <studentFUForm v-if="isShowStuFU" :save-obj="stuOption" @close="closeStuForm">
v-if="isShowStuFU"
:save-obj="stuOption"
@close="closeStuForm"
>
</studentFUForm> </studentFUForm>
</div> </div>
</template> </template>
<script> <script>
import {
import {
getStudentFollowUpPageList, getStudentFollowUpPageList,
} from '../../api/studyabroad/index'
} from '../../api/studyabroad/index' import {
import {
queryCourseDropdownList, queryCourseDropdownList,
} from '../../api/course/index' } from '../../api/course/index'
import { queryEmployee } from "../../api/users/user"; import {
queryEmployee
import { } from "../../api/users/user";
import {
queryGuestStateList, queryGuestStateList,
CreateTypeList, CreateTypeList,
GetStuChannelList, GetStuChannelList,
GetCustomerList GetCustomerList,
getGuestLearningGoalsEnumList
} from "../../api/sale/sale.js"; } from "../../api/sale/sale.js";
import { import {
queryStuStageList, queryStuStageList,
GetStudentTypeList, GetStudentTypeList,
GetPersonalDimension, GetPersonalDimension,
...@@ -379,8 +341,7 @@ import { ...@@ -379,8 +341,7 @@ import {
import studentRightForm from "../../components/school/student/studentRight-form"; import studentRightForm from "../../components/school/student/studentRight-form";
import studentFUForm from "../../components/school/student/studentFu-form"; import studentFUForm from "../../components/school/student/studentFu-form";
export default {
export default {
meta: { meta: {
title: "学员跟踪" title: "学员跟踪"
}, },
...@@ -396,29 +357,28 @@ export default { ...@@ -396,29 +357,28 @@ export default {
pageSize: 12, pageSize: 12,
rowsPerPage: 12, rowsPerPage: 12,
StuName: "", StuName: "",
StuRealMobile:'', StuRealMobile: '',
QQ:'', QQ: '',
WeChatNo:'', WeChatNo: '',
StuType:'',//学生类型 StuType: '', //学生类型
StuGuestState:'',//合同状态 StuGuestState: '', //合同状态
IsQueryMyStu:'1',//是否查询我的学员 1是 0否 IsQueryMyStu: '1', //是否查询我的学员 1是 0否
SFTime:'', SFTime: '',
EFTime:'', EFTime: '',
StuStage:'',//客户状态 StuStage: '', //客户状态
Q_FType:'1',//跟进类型 1范围内有跟进记录 2范围内没有跟进记录 Q_FType: '1', //跟进类型 1范围内有跟进记录 2范围内没有跟进记录
BelongType:1, BelongType: 1,
CreateIds: [], CreateIds: [],
School_Id :'-1',//校区 School_Id: '-1', //校区
CourseId:'',//课程 CourseId: '', //课程
ConsultantId:'',//课程顾问 ConsultantId: '', //课程顾问
CreateType:'', //客户来源 CreateType: '', //客户来源
StuChannel: "", //收客渠道 StuChannel: "", //收客渠道
StuSourceId:'' StuSourceId: '',
StuPurpose: '' //学习目的
}, },
//归属类型列表 //归属类型列表
BelongTypeList: [ BelongTypeList: [{
{
Id: 1, Id: 1,
Name: "全部" Name: "全部"
}, },
...@@ -438,27 +398,47 @@ export default { ...@@ -438,27 +398,47 @@ export default {
loading: false, loading: false,
dataList: [], //列表数据 dataList: [], //列表数据
PageCount:0, PageCount: 0,
customTypeList: [], //客户类型 customTypeList: [], //客户类型
customState: [], customState: [],
isMyStuList:[{Id:'-1',Name:'不限'},{Id:'1',Name:'是'},{Id:'0',Name:'否'},], isMyStuList: [{
hetongList:[{Id:'1',Name:'正常'},{Id:'2',Name:'退学'},{Id:'5',Name:'停课'},{Id:'7',Name:'毕业'},], Id: '-1',
Name: '不限'
}, {
Id: '1',
Name: '是'
}, {
Id: '0',
Name: '否'
}, ],
hetongList: [{
Id: '1',
Name: '正常'
}, {
Id: '2',
Name: '退学'
}, {
Id: '5',
Name: '停课'
}, {
Id: '7',
Name: '毕业'
}, ],
dateArray: [], //日期数组 dateArray: [], //日期数组
RListlength:0, RListlength: 0,
titlelist:[], titlelist: [],
stuOption: null, stuOption: null,
BelongType: 1, BelongType: 1,
isShowStuRight:false, isShowStuRight: false,
isJudgeTrans:1, isJudgeTrans: 1,
SubordList: [], //我的下属数据 SubordList: [], //我的下属数据
AllSubordList: [], AllSubordList: [],
stuOption: null, stuOption: null,
isShowStuFU:false, isShowStuFU: false,
morequery:false, morequery: false,
CompanyList: [],
CompanyList:[], allCourseList: [], //课程
allCourseList: [],//课程 myCourseList: [],
myCourseList:[],
RoleListData: [], //课程顾问下拉数据 RoleListData: [], //课程顾问下拉数据
customFromList: [], //客户来源 customFromList: [], //客户来源
StuChannelList: [], //收客渠道 StuChannelList: [], //收客渠道
...@@ -468,17 +448,15 @@ export default { ...@@ -468,17 +448,15 @@ export default {
//员工列表 //员工列表
employeeList: [], employeeList: [],
myEmployeeList: [], myEmployeeList: [],
TransListData: [], //转介人数据 TransListData: [], //转介人数据
MyTransListData: [], MyTransListData: [],
goalsList: [] //学习目的列表
} }
}, },
created() { created() {
let userinfo = this.getLocalStorage(); let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限 userinfo.ActionMenuList.map(x => { //判断权限
if(x.FunctionCode == "studentTracking_look"){//判断是否有保存的权限 if (x.FunctionCode == "studentTracking_look") { //判断是否有保存的权限
this.msg.IsQueryMyStu = 0 this.msg.IsQueryMyStu = 0
return return
} }
...@@ -486,20 +464,26 @@ export default { ...@@ -486,20 +464,26 @@ export default {
}, },
mounted() { mounted() {
this.getList(); //获取规则 this.getList(); //获取规则
this.getStuStageList() this.getStuStageList();
this.getCustomTypeList() this.getCustomTypeList();
this.GetSubordList() this.GetSubordList();
this.getBranchList() this.getBranchList();
this.getCourseList();//获取课程下拉 this.getCourseList(); //获取课程下拉
this.getRole() this.getRole();
this.getCustomFrom(); this.getCustomFrom();
this.GetStuChannelList(); this.GetStuChannelList();
this.GetCustomerList(); this.GetCustomerList();
this.getEmployeeList() this.getEmployeeList();
this.getStudentDorpDown() this.getStudentDorpDown();
this.queryGoalsList();
}, },
methods: { methods: {
//获取学习目的列表
queryGoalsList() {
getGuestLearningGoalsEnumList({}).then(res => {
this.goalsList = res.Data;
});
},
//获取收客渠道 //获取收客渠道
GetStuChannelList() { GetStuChannelList() {
GetStuChannelList({}).then(res => { GetStuChannelList({}).then(res => {
...@@ -599,7 +583,7 @@ export default { ...@@ -599,7 +583,7 @@ export default {
this.RoleListData = res.Data; this.RoleListData = res.Data;
}); });
}, },
getBranchList(){//获取校区 getBranchList() { //获取校区
getSchoolDropdown({}).then(res => { getSchoolDropdown({}).then(res => {
var tempArray = res.Data; var tempArray = res.Data;
if (!tempArray) { if (!tempArray) {
...@@ -663,37 +647,61 @@ export default { ...@@ -663,37 +647,61 @@ export default {
msg.SFTime = ""; msg.SFTime = "";
msg.EFTime = ""; msg.EFTime = "";
} }
if(msg.StuType=='' || msg.StuType==null){ if (msg.StuType == '' || msg.StuType == null) {
msg.StuType = 0 msg.StuType = 0
} }
if(msg.StuGuestState=='' || msg.StuGuestState==null){ if (msg.StuGuestState == '' || msg.StuGuestState == null) {
msg.StuGuestState = 0 msg.StuGuestState = 0
} }
if(msg.StuStage=='' || msg.StuStage==null){ if (msg.StuStage == '' || msg.StuStage == null) {
msg.StuStage = 0 msg.StuStage = 0
} }
if(msg.ConsultantId=='' ||msg.ConsultantId == null){ if (msg.ConsultantId == '' || msg.ConsultantId == null) {
msg.ConsultantId = 0 msg.ConsultantId = 0
} }
if(msg.StuChannel=='' ||msg.StuChannel == null){ if (msg.StuChannel == '' || msg.StuChannel == null) {
msg.StuChannel = 0 msg.StuChannel = 0
} }
if(msg.CreateType=='' ||msg.CreateType == null){ if (msg.CreateType == '' || msg.CreateType == null) {
msg.CreateType = 0 msg.CreateType = 0
} }
if(msg.StuSourceId=='' ||msg.StuSourceId == null){ if (msg.StuSourceId == '' || msg.StuSourceId == null) {
msg.StuSourceId = 0 msg.StuSourceId = 0
} }
getStudentFollowUpPageList(msg).then(res => { getStudentFollowUpPageList(msg).then(res => {
this.loading = false; this.loading = false;
this.RListlength = res.Data.PageData && res.Data.PageData.MaxMonth?res.Data.PageData.MaxMonth:1; this.RListlength = res.Data.PageData && res.Data.PageData.MaxMonth ? res.Data.PageData.MaxMonth : 1;
this.titlelist=[{Name:'月份/续费/转介',Id:1,index:0},{Name:'教师跟踪时间及情况说明',Id:2,index:0},{Name:'顾问跟踪时间及情况说明',Id:3,index:0},]; this.titlelist = [{
Name: '月份/续费/转介',
Id: 1,
index: 0
}, {
Name: '教师跟踪时间及情况说明',
Id: 2,
index: 0
}, {
Name: '顾问跟踪时间及情况说明',
Id: 3,
index: 0
}, ];
this.dataList = res.Data.PageData; this.dataList = res.Data.PageData;
this.PageCount = res.Data.PageCount; this.PageCount = res.Data.PageCount;
this.titlelist=[]; this.titlelist = [];
for(let i=0;i<this.RListlength;i++){ for (let i = 0; i < this.RListlength; i++) {
let obj=[{Name:'月份/续费/转介',Id:1,index:i},{Name:'教师跟踪时间及情况说明',Id:2,index:i},{Name:'顾问跟踪时间及情况说明',Id:3,index:i},] let obj = [{
Name: '月份/续费/转介',
Id: 1,
index: i
}, {
Name: '教师跟踪时间及情况说明',
Id: 2,
index: i
}, {
Name: '顾问跟踪时间及情况说明',
Id: 3,
index: i
}, ]
this.titlelist = [...this.titlelist, ...obj] this.titlelist = [...this.titlelist, ...obj]
} }
...@@ -717,10 +725,13 @@ export default { ...@@ -717,10 +725,13 @@ export default {
this.customState = res.Data; this.customState = res.Data;
}); });
}, },
getxuyue(index){ getxuyue(index) {
let obj= {IntroductionNum:0,RenewNum:0}; let obj = {
this.dataList.MonthList.forEach(x=>{ IntroductionNum: 0,
if(x.MonthNum == index+1){ RenewNum: 0
};
this.dataList.MonthList.forEach(x => {
if (x.MonthNum == index + 1) {
obj = x obj = x
} }
}) })
...@@ -744,17 +755,17 @@ export default { ...@@ -744,17 +755,17 @@ export default {
this.getList(); this.getList();
} }
}, },
lookgengduo(obj,time){//跟进备注 lookgengduo(obj, time) { //跟进备注
//计算时间 月底日期 //计算时间 月底日期
let Month = time.split('-')[0]+'-'+time.split('-')[1]+'-01' let Month = time.split('-')[0] + '-' + time.split('-')[1] + '-01'
let date=new Date(Month); let date = new Date(Month);
let currentMonth=date.getMonth(); let currentMonth = date.getMonth();
let nextMonth=++currentMonth; let nextMonth = ++currentMonth;
let nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1); let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
let oneDay=1000*60*60*24; let oneDay = 1000 * 60 * 60 * 24;
let endDate =new Date(nextMonthFirstDay-oneDay) let endDate = new Date(nextMonthFirstDay - oneDay)
let endMonth = time.split('-')[0]+'-'+time.split('-')[1]+'-'+endDate.getDate() let endMonth = time.split('-')[0] + '-' + time.split('-')[1] + '-' + endDate.getDate()
if (obj) { if (obj) {
this.stuOption = obj; this.stuOption = obj;
this.stuOption.STime = Month; this.stuOption.STime = Month;
...@@ -764,12 +775,11 @@ export default { ...@@ -764,12 +775,11 @@ export default {
this.isShowStuFU = true; this.isShowStuFU = true;
}, },
filterFnkec(val, update) {//课程的栓选 filterFnkec(val, update) { //课程的栓选
update(() => { update(() => {
if (val === '') { if (val === '') {
this.myCourseList = this.allCourseList this.myCourseList = this.allCourseList
} } else {
else {
const needle = val.toLowerCase(); const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1); this.myCourseList = this.allCourseList.filter(v => v.CourseName.toLowerCase().indexOf(needle) > -1);
} }
...@@ -799,12 +809,11 @@ export default { ...@@ -799,12 +809,11 @@ export default {
}, },
}, },
} }
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass')
@import url('~assets/css/table.sass')
</style> </style>
<style scoped> <style scoped>
...@@ -813,6 +822,7 @@ export default { ...@@ -813,6 +822,7 @@ export default {
background-color: transparent; background-color: transparent;
border: none; border: none;
} }
.stics { .stics {
padding: 10px 20px; padding: 10px 20px;
background: #DDDEE0; background: #DDDEE0;
...@@ -827,7 +837,9 @@ export default { ...@@ -827,7 +837,9 @@ export default {
font-weight: 600; font-weight: 600;
margin-right: 10px margin-right: 10px
} }
.roatImg{
.roatImg {
transform: rotate(180deg); transform: rotate(180deg);
} }
</style> </style>
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