Commit 942a5e06 authored by zhengke's avatar zhengke

1

parents 89de6cb8 18a23dab
......@@ -20,7 +20,7 @@ export default {
</script>
<style>
@import url("//at.alicdn.com/t/font_2077629_bgk17xi4zj.css");
@import url("//at.alicdn.com/t/font_2077629_w1o8daso6r9.css");
@font-face{
font-family: 'din';
src: url('./assets/font/DIN-Bold.otf') format('opentype');
......
......@@ -79,4 +79,12 @@ export function getEventLogPageList(data) {
method: 'post',
data
})
}
// 设置学生跳课
export function setGuestStartChapter(data) {
return request({
url: '/Scroll/SetGuestStartChapter',
method: 'post',
data
})
}
\ No newline at end of file
......@@ -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"
......@@ -106,10 +107,13 @@
</template>
<template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props">
<div>
<div v-if="IsShowStuSourceIdName(props.row)">
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{props.row.EnterpriseName}}:</span>
{{ props.row.StuSourceIdName }}
</div>
<div v-else>
-
</div>
</q-td>
</template>
<template v-slot:body-cell-AdvisorWinRate="props">
......@@ -131,7 +135,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 +159,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 +205,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>
......@@ -286,6 +293,18 @@
label: "是否报名",
align: "left"
},
{
name: "VisitCount",
label: "到访次数",
field: "VisitCount",
align: "left"
},
{
name: "TrialLessonCount",
label: "试听次数",
field: "TrialLessonCount",
align: "left"
},
{
name: "StuSex",
label: "性别",
......@@ -394,18 +413,7 @@
field: "StuChannelName",
align: "left"
},
{
name: "VisitCount",
label: "到访次数",
field: "VisitCount",
align: "left"
},
{
name: "TrialLessonCount",
label: "试听次数",
field: "TrialLessonCount",
align: "left"
},
{
name: "CreateTimeStr",
label: "创建时间",
......@@ -433,8 +441,9 @@
pushMode: false,
pushing: false,
assistListFormat: [],
checkType:1,
isShowAbroad: false
checkType: 1,
isShowAbroad: false,
userInfo: {}, //当前登录人员
};
},
watch: {
......@@ -447,14 +456,31 @@
}
},
created() {
this.userInfo = this.getLocalStorage();
this.formatAssistList();
this.initAuth();
},
mounted() {},
computed: {
...mapGetters(["userInfo", "logo", "name"])
...mapGetters(["logo", "name"])
},
methods: {
IsShowStuSourceIdName(item) {
var isHaveAuth = false;
if (this.userInfo && this.userInfo.ActionMenuList && this.userInfo.ActionMenuList.length >
0) {
this.userInfo.ActionMenuList.forEach((x) => {
if (x.FunctionCode == "Look_StuSourceId") {
isHaveAuth = true;
}
});
}
if (item.CreateBy == this.userInfo.Id || isHaveAuth) {
return true;
} else {
return false;
}
},
//下载文件
downloadStudent() {
var msg = JSON.parse(JSON.stringify(this.queryMsg));
......@@ -605,11 +631,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 +658,7 @@
this.isShowTransfer = true;
},
//转留学
transferAbroad(){
transferAbroad() {
this.isShowAbroad = true;
},
getCurseManager(row) {
......@@ -677,7 +703,7 @@
});
if (msg == "") {
SetStudentAssistBatch(parameter).then(r => {
this.$emit("reload");
this.refreshStuList();
this.selection = [];
this.pushMode = false;
});
......
<template>
<!-- 跳课 -->
<q-dialog
v-model="show"
content-class="bg-grey-1"
persistent
transition-show="scale"
transition-hide="scale"
>
<q-card style="width: 900px; max-width: 900px">
<q-card-section class="row items-center q-pb-none">
<div class="text-h6">跳课</div>
<q-space />
<q-btn icon="close" flat round dense @click="changeDig(false)" />
</q-card-section>
<q-card-section class="q-pt-none">
<div class="row col flex q-col-gutter-md">
<q-field filled label="姓名" readonly stack-label class="col-4">
<template v-slot:control>
<div>{{ saveObj.GuestName }}</div>
</template>
</q-field>
<!-- <q-field filled label="课程" readonly stack-label class="col-4">
<template v-slot:control>
<div>{{ saveObj.CourseName }}</div>
</template>
</q-field>
<q-field filled label="班级" readonly stack-label class="col-4">
<template v-slot:control>
<div>{{ saveObj.ClassName }}</div>
</template>
</q-field> -->
<q-field filled label="已上课次数" readonly stack-label class="col-4">
<template v-slot:control>
<div>{{ saveObj.CourseChapterNo }}</div>
</template>
</q-field>
<q-field filled label="预约次数" readonly stack-label class="col-4">
<template v-slot:control>
<div>{{ saveObj.AppointNum }}</div>
</template>
</q-field>
</div>
<div class="q-my-xs">
类型:
<q-radio
v-model="type"
val="a"
label="第一次课开始"
color="teal"
@input="changeType"
/>
<q-radio
v-model="type"
val="b"
label="中途已上课"
color="teal"
@input="changeType"
/>
<q-radio
v-model="type"
val="c"
label="后续未上课"
color="teal"
@input="changeType"
/>
</div>
<div class="row col q-col-gutter-md">
<q-input
filled
v-model.number="msg.SChapterNo"
label="跳课开始章节"
type="number"
class="col-4"
stack-label
:min="0"
v-if="type == 'b'"
@change="changeStartChapter"
/>
<q-input
filled
v-model.number="endSChapterNo"
label="跳课结束章节"
type="number"
class="col-4"
stack-label
:min="0"
:max="999"
@change="changeEndChapter"
/>
</div>
<div class="q-my-xs" style="word-wrap:break-word">
<span style="white-space:nowrap">跳课章节列表:</span>{{ msg.ChapterNos }}</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn label="取消" flat color="grey-10" @click="changeDig(false)" />
<q-btn
label="保存"
color="accent q-px-md"
:loading="loading"
@click="save"
/>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script>
import { setGuestStartChapter } from "../../api/stuMan/index.js";
export default {
model: {
prop: "show",
event: "changeshow"
},
props: {
show: {
type: Boolean,
default: false
},
saveObj: {
type: Object
}
},
watch: {
show(){
this.loading = false
},
},
data() {
return {
type: "c",
saveLoading: false,
msg: {
StuId: 0,
GuestId: 0,
CourseId: 0,
ChapterNos: "",
SChapterNo: 0
},
endSChapterNo: 0,
loading: false
};
},
mounted() {},
methods: {
//开关弹窗
changeDig(val) {
this.$emit("changeshow", val);
},
changeType() {
this.msg.SChapterNo = 0;
this.msg.ChapterNos = "";
this.endSChapterNo = 0;
},
changeStartChapter() {
if (!this.msg.SChapterNo) {
this.msg.SChapterNo = 0;
}
this.changeEndChapter();
},
changeEndChapter() {
if (!this.endSChapterNo) {
this.endSChapterNo = 0;
}
if (this.endSChapterNo>=999) {
this.endSChapterNo = 999;
}
const end = parseInt(this.endSChapterNo);
let arr = [];
if (this.type == "a") {
for (let i = 1; i <= end; i++) {
arr.push(i);
}
} else if (this.type == "b") {
for (let i = this.msg.SChapterNo; i <= end; i++) {
arr.push(i);
}
} else if (this.type == "c") {
let start = this.saveObj.CourseChapterNo + this.saveObj.AppointNum;
for (let i = start + 1; i <= end; i++) {
arr.push(i);
}
}
this.msg.ChapterNos = arr.toString();
},
save() {
if (this.endSChapterNo == 0) {
this.$q.notify({
message: "请输入跳课的章节",
position: "top"
});
return;
}
this.msg.StuId = this.saveObj.Student_Id;
this.msg.GuestId = this.saveObj.Id;
this.msg.CourseId = this.saveObj.CourseId;
this.loading = true;
setGuestStartChapter(this.msg)
.then(res => {
this.loading = false;
if (res.Code == 1) {
this.$q.notify({
message: "操作成功",
position: "top"
});
this.changeDig(false);
this.$emit("success");
}
})
.catch(err => {
this.loading = false;
});
}
}
};
</script>
......@@ -39,6 +39,7 @@
:key="_index"
:val="_item"
@input="courseCheck(item.TeacherId, _item)"
v-if="_item.ClassType==3"
>
{{ item.TeacherName }} {{ _item.CourseName }}
{{ _item.RoomName }} {{ _item.StartTime }}-{{
......
......@@ -73,7 +73,7 @@
color="accent"
size="xs"
label="确认"
v-if="saveObj.AppointState == 1&&saveObj.GuestList.length>=saveObj.ScrollMinNum"
v-if="saveObj.AppointState == 1&&saveObj.GuestList.length>=saveObj.ScrollMinNum&&auth.IsEdit"
@click="confirmSub"
class="q-ml-md"
/>
......@@ -110,7 +110,7 @@
v-if="saveObj.ClassType == 3"
>
<template v-slot:control>
<div v-if="saveObj.AppointState == 1">
<div v-if="saveObj.AppointState == 1&&auth.IsEdit">
<div class="q-mt-sm flex justify-start">
<q-btn
color="accent"
......@@ -179,6 +179,14 @@ export default {
saveObj: {
type: Object,
default: null
},
auth:{
type:Object,
default:()=>{
return {
IsEdit:false
}
}
}
},
data() {
......@@ -202,6 +210,14 @@ export default {
message: "操作成功",
position: "top"
});
this.checkStuType2.map((e)=>{
this.saveObj.GuestList.map((_e,_i)=>{
if(e==_e.AppointmentId){
this.saveObj.GuestList.splice(_i,1)
}
})
})
this.checkStuType2=[]
this.$emit("success");
}
});
......@@ -229,7 +245,8 @@ export default {
position: "top",
type: "positive"
});
this.$emit("success");
// this.saveObj.AppointState = 2
this.$emit("close");
}
});
},
......@@ -243,7 +260,7 @@ export default {
},
ChangeCourseSuccessHandle(){
this.$emit("success");
this.$emit("close");
}
}
};
......
......@@ -21,8 +21,14 @@
</template>
</q-field>
<!-- 详情显示内容 start-->
<div class="col-12" v-if="editType==2">
<Detail :dateObj="dateObj" :saveObj="saveObj" @success="detailSuccessHandle"/>
<div class="col-12" v-if="editType == 2">
<Detail
:dateObj="dateObj"
:saveObj="saveObj"
:auth="auth"
@success="detailSuccessHandle"
@close="detailCloseHandle"
/>
</div>
<!-- 详情显示内容 end -->
<q-select
......@@ -75,7 +81,7 @@
map-options
label="老师"
class="col-12"
@input="getCanTeacherTimeList()"
@input="getCanTeacherTimeList"
/>
<q-field
filled
......@@ -129,7 +135,7 @@
</q-field>
<div
class="row col"
v-show="(editType == 1 || saveObj.ClassType == 3) && showAddStu()"
v-show="(editType == 1 || saveObj.ClassType == 3)&&auth.IsEdit"
>
<div class="col-10">
<q-select
......@@ -145,7 +151,6 @@
:dense="false"
class="col-6"
@filter="filterStu"
@input="addStu"
>
<template v-slot:no-option>
<q-item>
......@@ -189,14 +194,14 @@
import {
GetCanTeacherClassTimeList,
GetCanAppointmentStuList,
SetAdminScrollAppointment,
SetAdminScrollAppointment
} from "../../../api/studyabroad/subscribe.js";
import {
queryCourseDropdownList,
queryChapterTree
} from "../../../api/course/index";
import selectTree from "../../../components/common/select-tree";
import Detail from "./detail.vue"
import Detail from "./detail.vue";
import QCalendar from "@quasar/quasar-ui-qcalendar";
export default {
components: {
......@@ -227,22 +232,32 @@ export default {
teacherList: {
type: Array,
default: () => []
},
auth:{
type:Object,
default:()=>{
return {
IsEdit:false
}
}
}
},
watch: {
show(val){
show(val) {
console.log(1111111)
this.addLoading = false
if (val) {
this.stuInfo = "";
this.teaClassMsg.CourseId=0
this.teaClassMsg.TeacherId=0
this.chapterList=[]
this.teacherTimeList=[]
this.courseCheckList=[]
this.stuList=[]
if (this.editType == 2) {
this.getStu();
}
this.stuInfo = "";
this.teaClassMsg.CourseId = 0;
this.teaClassMsg.TeacherId = 0;
this.chapterList = [];
this.teacherTimeList = [];
this.courseCheckList = [];
this.stuList = [];
this.allStuList = [];
if (this.editType == 2) {
this.getStu();
}
}
}
},
......@@ -280,11 +295,10 @@ export default {
stuInfo: "",
checkStuList: [],
courseCheckList: [],
addLoading:false,
addLoading: false,
chapterList: [], //章节列表,
checkChapter: {}, //选择的章节
returnString: [], //章节默认值
};
},
mounted() {
......@@ -294,13 +308,17 @@ export default {
//开关弹窗
changeDig(val) {
this.$emit("changeshow", val);
if (!val) {
this.stuList = [];
this.allStuList = [];
}
},
//获取课程
getCourseList() {
queryCourseDropdownList({
IsQPrice: 1,
IsQuerySalePlat: 1,
IsScrollClass :1
IsScrollClass: 1
}).then(res => {
if (res.Code == 1) {
this.CourseList = res.Data;
......@@ -337,11 +355,13 @@ export default {
//获取老师的空闲上课时段
getCanTeacherTimeList() {
this.teaClassMsg.Date = this.dateObj.date;
this.stuInfo = "";
if (this.teaClassMsg.TeacherId == 0) return;
GetCanTeacherClassTimeList(this.teaClassMsg).then(res => {
this.teacherTimeList = res.Data;
});
},
//获取学生列表
getStu() {
this.stuMsg.CourseId = this.teaClassMsg.CourseId || 0;
this.stuMsg.CourseGradeId =
......@@ -353,7 +373,7 @@ export default {
this.allStuList = JSON.parse(JSON.stringify(res.Data));
});
},
//筛选学
//筛选学
filterStu(val, update) {
update(() => {
if (val === "") {
......@@ -366,7 +386,6 @@ export default {
}
});
},
addStu() {},
//获取章节
getChapterTree() {
if (this.teaClassMsg.CourseId == 0) return;
......@@ -400,8 +419,8 @@ export default {
if (this.checkChapter.CourseRate && this.checkChapter.ChapterNo) {
this.getStu();
}
this.teaClassMsg.TeacherId=0
this.teacherTimeList=[]
this.teaClassMsg.TeacherId = 0;
this.teacherTimeList = [];
},
subscribeCourse() {
if (
......@@ -441,6 +460,7 @@ export default {
const totalTime = this.courseCheckList.reduce((pre, cur) => {
return (pre += cur.Minutes);
}, 0);
console.log(452, this.courseCheckList, totalTime);
if (this.checkChapter.StudyMinutes !== totalTime) {
this.$q.notify({
message: "课时不匹配,请重新上课时段",
......@@ -486,51 +506,35 @@ export default {
this.saveMsg.CourseGradeId = this.saveObj.CourseGradeId;
this.saveMsg.ShiftSort = this.saveObj.ShiftSort;
}
this.addLoading=true
SetAdminScrollAppointment(this.saveMsg).then(res => {
this.addLoading=false
if (res.Code == 1) {
this.getStu();
this.stuInfo = "";
if(this.editType==1){
this.$q
.dialog({
title: "预约成功",
message: "是否继续预约?",
cancel: "否",
ok: "是",
persistent: true
})
.onOk(() => {})
.onCancel(() => {
this.changeDig(false);
});
}else if(this.editType==2){
this.changeDig(false);
this.addLoading = true;
SetAdminScrollAppointment(this.saveMsg)
.then(res => {
this.addLoading = false;
if (res.Code == 1) {
this.$q.notify({
message: "操作成功",
position: "top",
message: "操作成功",
position: "top"
});
if (this.editType == 2) {
this.saveObj.GuestList.push({
GuestName: this.stuInfo.StuName,
AppointmentId: res.Data
});
}
this.stuInfo = "";
this.getStu();
this.$emit("success");
}
this.$emit("success");
}
}).catch(()=>{
this.addLoading=false
});
})
.catch(() => {
this.addLoading = false;
});
},
showAddStu() {
if (
new Date(this.dateObj.date).getTime() <
new Date(QCalendar.today()).getTime()
) {
return false;
} else {
return true;
}
detailSuccessHandle() {
this.getStu();
this.$emit("success");
},
detailSuccessHandle(){
detailCloseHandle() {
this.changeDig(false);
this.$emit("success");
}
......
......@@ -229,7 +229,13 @@
this.msg.TeacherId = Number(this.$route.query.TeacherId);
}
if(this.$route.query.TeacherIds){
this.msg.TeacherIds = this.$route.query.TeacherIds;
let arr=this.$route.query.TeacherIds.split(',')
let idsArr=[]
arr.map(e=>{
let _arr=e.split('-')
idsArr.push(_arr[1])
})
this.msg.TeacherIds = idsArr.toString();
}
}
this.getList();
......
......@@ -206,7 +206,14 @@
this.msgFinance.BatchId = id;
SetCommissionPeriodsFinanace(this.msgFinance).then(res => {
if (res.Code == 1) {
this.getList()
this.getList();
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: res.Message,
position: 'top'
})
}
this.loading1 = false;
}).catch(err => {
......
......@@ -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,33 @@
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) {
if (this.CurrentUserInfo && (this.CurrentUserInfo.IsMarket == 1 || this.CurrentUserInfo.IsCourseConsultant ==
1)) {
var url = "/sale/mystu";
this.OpenNewUrl(url, {
startTime: this.msg.startTime,
endTime: this.msg.endTime,
createBy: row.Id,
})
} else {
var url = '/school/student';
this.OpenNewUrl(url, {
startTime: this.msg.startTime,
endTime: this.msg.endTime,
createBy: row.Id,
})
}
},
//下载渠道总表
downloadMarketChannelStudentStatic() {
var msg = JSON.parse(JSON.stringify(this.msg));
this.loading = true;
......
......@@ -195,10 +195,12 @@
customFromList: [], //客户来源
StuChannelList: [], //收客渠道
allStuChannelList: [], //所有收客渠道
consultList: []
consultList: [],
CurrentUserInfo: {},
};
},
created() {
this.CurrentUserInfo = this.getLocalStorage();
this.getSchool();
this.getStuStageList();
this.getCustomTypeList();
......@@ -217,6 +219,12 @@
if (this.$route.query.ChannelId) {
this.msg.StuChannel = this.$route.query.ChannelId;
}
if (this.$route.query.createBy) {
if (this.CurrentUserInfo.IsManager == 1 && this.CurrentUserInfo.IsMarket == 1) {
this.msg.BelongType = 4;
this.msg.CreateIds.push(Number(this.$route.query.createBy));
}
}
this.getCustomerList();
this.getCustomFrom();
this.GetStuChannelList();
......@@ -329,7 +337,7 @@
this.msg.StartTime = "";
this.msg.EndTime = "";
}
this.loading = true;
getStudentPage(this.msg)
.then(res => {
......
......@@ -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,25 @@
<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 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 +127,7 @@
};
},
created() {
this.getEmployeeList();
this.CurrentUserInfo = this.getLocalStorage();
if (this.CurrentUserInfo && this.CurrentUserInfo.ActionMenuList && this.CurrentUserInfo.ActionMenuList.length >
0) {
......@@ -138,13 +154,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";
......
......@@ -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 = {
......
......@@ -384,9 +384,14 @@
@click="transferClass(props.row, 1)" />
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left: 10px">
<q-list>
<q-item clickable v-close-popup @click="showAddEvent(props.row)">
<q-item dense clickable v-close-popup @click="showAddEvent(props.row)">
<q-item-section>
<q-item-label>添加事件</q-item-label>
<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>
......@@ -422,6 +427,8 @@
<studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption"
@close="closeStuForm" @success="refreshStuList" @reload="refreshStuList">
</studentRight-form>
<!-- 跳课 -->
<JumpCourse v-model="isShowChangeCourse" :saveObj="ChangeCourseObj" @success="refreshPage" ></JumpCourse>
</div>
</template>
<script>
......@@ -453,6 +460,7 @@
import list from "../../components/stuMan/makeUpHours.vue"; //可补课课时,缺勤次数,请假次数
import eventLog from "../../components/stuMan/eventRecord.vue"; //事件记录
import studentRightForm from "../../components/school/student/studentRight-form";
import JumpCourse from "../../components/stuMan/jumpCourse"
import {
queryEmployee
} from "../../api/users/user";
......@@ -469,7 +477,8 @@
myOrderForm,
list,
eventLog,
studentRightForm
studentRightForm,
JumpCourse
},
data() {
......@@ -644,6 +653,18 @@
field: "MakeUpHours",
align: "left"
},
{
name: "CourseChapterNo",
label: "已上课次数",
field: "CourseChapterNo",
align: "left"
},
{
name: "AppointNum",
label: "预约次数",
field: "AppointNum",
align: "left"
},
{
name: "AbsenceNum",
label: "缺勤次数",
......@@ -742,7 +763,9 @@
TransListData: [], //转介人数据
MyTransListData: [],
source: 0, //1:从课程列表进入
courseName: ""
courseName: "",
isShowChangeCourse:false,
ChangeCourseObj:{}
};
},
created() {
......@@ -1145,6 +1168,10 @@
},
refreshStuList() {
this.getList();
},
showChangeCourse(item){
this.isShowChangeCourse=true
this.ChangeCourseObj=item
}
}
};
......
This diff is collapsed.
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