Commit 6e13d13e authored by 黄奎's avatar 黄奎
parents bd85f8d2 385d573e
...@@ -344,6 +344,11 @@ export default { ...@@ -344,6 +344,11 @@ export default {
}, },
data() { data() {
return { return {
pickerOptions: {
disabledDate: time => {
return time.getTime() < Date.now() - 8.64e7;
}
},
date:'', date:'',
value: new Date(), value: new Date(),
calendarData:[], calendarData:[],
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
</div> --> </div> -->
<q-btn-group <q-btn-group
outline outline
style="position: fixed;top: 15px;right:20px;z-index: 666666;" style="position: fixed;top: 75px;right:20px;z-index: 666666;"
> >
<q-btn <q-btn
dense dense
......
...@@ -271,7 +271,7 @@ export default { ...@@ -271,7 +271,7 @@ export default {
.sub-header { .sub-header {
position: fixed; position: fixed;
height: 56px; height: 56px;
top: 0; top: 60px;
left: 0; left: 0;
right: 0; right: 0;
transition: top 0.3s ease; transition: top 0.3s ease;
......
<style scoped> <style scoped>
@import "../css/cssReset.css"; @import "../css/cssReset.css";
.January{
background-color: #B3E5FC;
}
.February{
background-color: #C8E6C9;
}
.March{
background-color: #FFCCD2;
}
.April{
background-color: #F8DDE0;
}
.May{
background-color: #E1BEE7;
}
.June{
background-color: #D1C4E9;
}
.July{
background-color: #C5CAE9;
}
.August{
background-color: #F0F4C3;
}
.September{
background-color: #FFF9C4;
}
.October{
background-color: #FFECB3;
}
.November{
background-color: #FFE0B2;
}
.December{
background-color: #FFCCBC;
}
.singeRowTable tr:nth-child(2n + 1) { .singeRowTable tr:nth-child(2n + 1) {
background: none; background: none;
} }
...@@ -48,7 +84,7 @@ ...@@ -48,7 +84,7 @@
left: 218px; left: 218px;
border: 1px solid #d2d2d2; border: 1px solid #d2d2d2;
} }
.bj { .SubtotalBj {
background-color: #A5A5A5; background-color: #A5A5A5;
} }
...@@ -85,22 +121,28 @@ ...@@ -85,22 +121,28 @@
<div class="col-3"> <div class="col-3">
<q-field filled dense> <q-field filled dense>
<template v-slot:control> <template v-slot:control>
<el-date-picker <el-date-picker v-model="dateArray[0]" style="width:100%" value-format="yyyy-MM" @change="resetSearch()"
v-model="dateArray" size="small" type="month" placeholder="选择开始年月">
size="mini" </el-date-picker>
@change="resetSearch" </template>
value-format="yyyy-MM" </q-field>
type="daterange" </div>
style="border:none;" <div class="col-3">
range-separator="至" <q-field filled dense>
start-placeholder="跟进开始时间" <template v-slot:control>
end-placeholder="跟进结束时间" <el-date-picker v-model="dateArray[1]" style="width:100%" value-format="yyyy-MM" @change="resetSearch()"
/> size="small" type="month" placeholder="选择结束年月">
</el-date-picker>
</template> </template>
</q-field> </q-field>
</div> </div>
</div> </div>
</div> </div>
<div class="page-search row items-center" style="justify-content: space-between;">
<div></div>
<q-btn  color="primary" size="11px" label="导出" @click="tcexport" style="margin-left:10px"/>
</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;">
...@@ -129,11 +171,23 @@ ...@@ -129,11 +171,23 @@
style="min-width: 500px;" style="min-width: 500px;"
v-for="(item, index) in RListlength" v-for="(item, index) in RListlength"
:key="index" :key="index"
:class="item.Month.slice(6)==1?'January':
(item.Month.slice(6)==2?'February':
(item.Month.slice(6)==3?'March':
(item.Month.slice(6)==4?'April':
(item.Month.slice(6)==5?'May':
(item.Month.slice(6)==6?'June':
(item.Month.slice(6)==7?'July':
(item.Month.slice(6)==7?'August':
(item.Month.slice(6)==7?'September':
(item.Month.slice(5)==10?'October':
(item.Month.slice(5)==11?'November':
(item.Month.slice(5)==12?'December':'')))))))))))"
> >
<span v-if="item.Month.slice(5) < 10">{{ <span v-if="item.Month.slice(5) < 10">{{
item.Month.slice(6) item.Month.slice(6)
}}</span> }}</span>
<span v-else>{{ item.Month.slice(6) }}</span <span v-else>{{ item.Month.slice(5) }}</span
> >
</th> </th>
<th width="120" rowspan="2" style="min-width: 110px;">提成合计</th> <th width="120" rowspan="2" style="min-width: 110px;">提成合计</th>
...@@ -154,7 +208,7 @@ ...@@ -154,7 +208,7 @@
v-for="(item, index) in dataList" v-for="(item, index) in dataList"
:key="index" :key="index"
v-if="dataList && dataList.length > 0" v-if="dataList && dataList.length > 0"
:class="item.DeptName ? '' : 'bj'" :class="item.RoleName=='小计'? 'SubtotalBj' : ''"
> >
<td style=" border: 1px solid #d2d2d2;"> <td style=" border: 1px solid #d2d2d2;">
{{ item.DeptName }} {{ item.DeptName }}
...@@ -165,7 +219,8 @@ ...@@ -165,7 +219,8 @@
<td> <td>
{{ item.EmpName }} {{ item.EmpName }}
</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].Achievement }}</span> <span>{{ item.MonthList[x.index].Achievement }}</span>
...@@ -212,50 +267,17 @@ ...@@ -212,50 +267,17 @@
暂无数据 暂无数据
</div> </div>
</div> </div>
<studentRight-form
v-if="isShowStuRight"
:isJudgeTrans="isJudgeTrans"
:BelongType="BelongType"
:save-obj="stuOption"
@close="closeStuForm"
@success="getList"
@reload="getList"
>
</studentRight-form>
<studentFUForm
v-if="isShowStuFU"
:save-obj="stuOption"
@close="closeStuForm"
>
</studentFUForm>
</div> </div>
</template> </template>
<script> <script>
import { GetSellAchievementsRankStat_V2 } from "../../../api/finance/index"; import { GetSellAchievementsRankStat_V2 } from "../../../api/finance/index";
import { queryCourseDropdownList } from "../../../api/course/index";
import { queryEmployee } from "../../../api/users/user";
import {
queryGuestStateList,
CreateTypeList,
GetStuChannelList,
GetCustomerList,
getGuestLearningGoalsEnumList
} from "../../../api/sale/sale.js";
import {
queryStuStageList,
GetStudentTypeList,
GetPersonalDimension,
getSchoolDropdown,
getStudentDorpDownList
} from "../../../api/school/index";
import { EduDownLoad } from "../../../api/common/common"; import { EduDownLoad } from "../../../api/common/common";
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";
import { mapState } from "vuex";
export default { export default {
meta: { meta: {
title: "教师学员跟踪" title: "业绩提成排名"
}, },
props: {}, props: {},
components: { components: {
...@@ -268,90 +290,12 @@ export default { ...@@ -268,90 +290,12 @@ export default {
StartMonth: "", StartMonth: "",
EndMonth: "" EndMonth: ""
}, },
//归属类型列表
BelongTypeList: [
{
Id: 1,
Name: "全部"
},
{
Id: 2,
Name: "我负责的"
},
{
Id: 3,
Name: "我协同的"
},
{
Id: 4,
Name: "我下属的"
}
],
loading: false, loading: false,
dataList: [], //列表数据 dataList: [], //列表数据
PageCount: 0,
customTypeList: [], //客户类型
customState: [],
isMyStuList: [
{
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,
BelongType: 1,
isShowStuRight: false,
isJudgeTrans: 1,
SubordList: [], //我的下属数据
AllSubordList: [],
stuOption: null,
isShowStuFU: false,
morequery: true,
CompanyList: [],
allCourseList: [], //课程
myCourseList: [],
RoleListData: [], //课程顾问下拉数据
customFromList: [], //客户来源
StuChannelList: [], //收客渠道
allStuChannelList: [], //所有收客渠道
customList: [], //同行列表
allCustomList: [], //所有同行列表
//员工列表
employeeList: [],
myEmployeeList: [],
TransListData: [], //转介人数据
MyTransListData: [],
goalsList: [] //学习目的列表
}; };
}, },
created() {}, created() {},
...@@ -362,194 +306,26 @@ export default { ...@@ -362,194 +306,26 @@ export default {
var month = d.getMonth() + 1; var month = d.getMonth() + 1;
this.msg.StartMonth = currentY + "-" + currentM; this.msg.StartMonth = currentY + "-" + currentM;
this.msg.EndMonth = currentY + "-" + month; this.msg.EndMonth = currentY + "-" + month;
this.getList(); //获取规则 this.getList(); //获取数据
// this.getStuStageList();
// this.getCustomTypeList();
// this.GetSubordList();
// this.getBranchList();
// this.getCourseList(); //获取课程下拉
// this.getRole();
// this.getCustomFrom();
// this.GetStuChannelList();
// this.GetCustomerList();
// this.getEmployeeList();
// this.getStudentDorpDown();
// this.queryGoalsList();
// this.downloadStudentFollow();
}, },
methods: { methods: {
downloadStudentFollow() { tcexport(){//导出
var msg = JSON.parse(JSON.stringify(this.msg)); var msg = JSON.parse(JSON.stringify(this.msg));
this.loading = true; EduDownLoad("/Activity/GetActivityCommissionStatisticsToExcel", msg, "业绩提成排名.xls")
EduDownLoad(
"/StudentStat/DownLoadStudentFollowUp",
msg,
"学员跟踪.xls",
res => {
this.loading = false;
}
);
},
//获取学习目的列表
queryGoalsList() {
getGuestLearningGoalsEnumList({}).then(res => {
this.goalsList = res.Data;
});
},
//获取收客渠道
GetStuChannelList() {
GetStuChannelList({}).then(res => {
if (res.Code == 1) {
this.StuChannelList = res.Data;
this.allStuChannelList = res.Data;
}
});
},
//筛选渠道
filterStuChannel(val, update) {
update(() => {
if (val === "") {
this.StuChannelList = JSON.parse(
JSON.stringify(this.allStuChannelList)
);
} else {
const needle = val.toLowerCase();
this.StuChannelList = this.allStuChannelList.filter(
v => v.Name.toLowerCase().indexOf(needle) > -1
);
}
});
},
//获取客户来源
getCustomFrom() {
CreateTypeList({}).then(res => {
if (res.Code == 1) {
this.customFromList = res.Data;
}
});
},
//获取客户下拉数据
GetCustomerList() {
let msg = {
QCreateBy: 0
};
GetCustomerList(msg).then(res => {
if (res.Code == 1) {
this.customList = res.Data;
this.allCustomList = res.Data;
}
});
},
//筛选客户
filterFn(val, update) {
update(() => {
if (val === "") {
this.customList = JSON.parse(JSON.stringify(this.allCustomList));
} else {
const needle = val.toLowerCase();
this.customList = this.allCustomList.filter(
v => v.CustomerName.toLowerCase().indexOf(needle) > -1
);
}
});
},
//获取员工列表
getEmployeeList() {
queryEmployee({
IsLeave: 1
}).then(res => {
this.employeeList = res.Data;
this.myEmployeeList = res.Data;
});
},
//筛选员工
filterEmployee(val, update, abort) {
update(() => {
this.myEmployeeList = this.employeeList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
},
//获取转介人下拉
getStudentDorpDown() {
getStudentDorpDownList().then(res => {
if (res.Code == 1) {
this.TransListData = res.Data;
this.MyTransListData = res.Data;
}
});
},
//筛选转介人
filterStudent(val, update, abort) {
update(() => {
this.MyTransListData = this.TransListData.filter(
v => v.StuName.indexOf(val) > -1
);
});
},
getRole() {
queryEmployee({
IsLeave: 1,
UserRole: 2
}).then(res => {
this.RoleListData = res.Data;
});
},
getBranchList() {
//获取校区
getSchoolDropdown({})
.then(res => {
var tempArray = res.Data;
if (!tempArray) {
tempArray = [];
}
tempArray.unshift({
SId: "-1",
SName: "不限"
});
this.CompanyList = tempArray;
})
.catch(() => {});
},
//获取课程
getCourseList() {
queryCourseDropdownList({
IsQPrice: 1
}).then(res => {
if (res.Code == 1) {
let data = res.Data;
this.allCourseList = JSON.parse(JSON.stringify(data));
this.myCourseList = JSON.parse(JSON.stringify(data));
}
});
},
//获取我下属的下拉数据
GetSubordList() {
GetPersonalDimension().then(res => {
if (res.Code == 1) {
this.SubordList = res.Data;
this.AllSubordList = res.Data;
}
});
},
//筛选转介人
filterSubord(val, update, abort) {
update(() => {
this.SubordList = this.AllSubordList.filter(
v => v.EmployeeName.indexOf(val) > -1
);
});
}, },
resetSearch() { resetSearch() {
if(!this.dateArray[0]||!this.dateArray[1]){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择开始和结束时间`
})
return
}
this.msg.pageIndex = 1; this.msg.pageIndex = 1;
this.getList(); this.getList();
}, },
//翻页 getList() {
changePage(val) {
this.msg.pageIndex = val;
this.getList();
},
getList(type) {
this.loading = true; this.loading = true;
let msg = JSON.parse(JSON.stringify(this.msg)); let msg = JSON.parse(JSON.stringify(this.msg));
if (this.dateArray && this.dateArray.length > 0) { if (this.dateArray && this.dateArray.length > 0) {
...@@ -645,106 +421,6 @@ export default { ...@@ -645,106 +421,6 @@ export default {
this.loading = false; this.loading = false;
}); });
}, },
//获取客户类型
getCustomTypeList() {
GetStudentTypeList().then(res => {
if (res.Code == 1) {
this.customTypeList = res.Data;
}
});
},
//获取客户阶段列表
getStuStageList() {
queryStuStageList().then(res => {
this.customState = res.Data;
});
},
getxuyue(index) {
let obj = {
IntroductionNum: 0,
RenewNum: 0
};
this.dataList.MonthList.forEach(x => {
if (x.MonthNum == index + 1) {
obj = x;
}
});
return obj;
},
//点击学生姓名弹出
getStuRight(obj) {
if (obj) {
this.stuOption = obj;
this.BelongType = 3;
}
this.isShowStuRight = true;
},
closeStuForm() {
this.isShowStuRight = false;
this.isShowStuFU = false;
},
resetBelong() {
if (this.msg.BelongType != 4) {
this.msg.pageIndex = 1;
this.getList();
}
},
lookgengduo(obj, time) {
//跟进备注
//计算时间 月底日期
let Month = time.split("-")[0] + "-" + time.split("-")[1] + "-01";
let date = new Date(Month);
let currentMonth = date.getMonth();
let nextMonth = ++currentMonth;
let nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
let oneDay = 1000 * 60 * 60 * 24;
let endDate = new Date(nextMonthFirstDay - oneDay);
let endMonth =
time.split("-")[0] + "-" + time.split("-")[1] + "-" + endDate.getDate();
if (obj) {
this.stuOption = obj;
this.stuOption.STime = Month;
this.stuOption.ETime = endMonth;
this.BelongType = obj.BelongType;
}
this.isShowStuFU = true;
},
filterFnkec(val, update) {
//课程的栓选
update(() => {
if (val === "") {
this.myCourseList = this.allCourseList;
} else {
const needle = val.toLowerCase();
this.myCourseList = this.allCourseList.filter(
v => v.CourseName.toLowerCase().indexOf(needle) > -1
);
}
});
},
getCurseManager(row) {
let managerName = "<span class='text-grey-4'>暂未推送</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 2) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
},
getTeacherManager(row) {
let managerName = "<span class='text-grey-4'>暂无</span>";
if (row.AssistList && row.AssistList.length > 0) {
row.AssistList.forEach(y => {
if (y.AssistType == 4) {
managerName = `<span class='text-dark'>${y.AssistName}</span>`;
}
});
}
return managerName;
}
} }
}; };
</script> </script>
......
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