Commit dfd0be6e authored by 罗超's avatar 罗超

新增待办消息气泡和动态切换消息通知功能

parent 4cf4355a
......@@ -50,6 +50,7 @@
:isComponents="true"
:billId="msg.billId"
:receipt="msg.receipt"
@success="refreshPage"
></changeClassManager>
</div>
</div>
......@@ -82,6 +83,9 @@ export default {
}
})
.catch(() => {});
},
refreshPage() {
this.$root.$emit("updateTodoList");
}
}
};
......
......@@ -282,6 +282,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
}
}
};
......
......@@ -106,6 +106,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -41,15 +41,10 @@
</div>
<div style="height:calc(100% - 158px)">
<stulist
:dataList="stus"
@reload="getStudent"
@success="refreshPage"
:loading="loading"
ref="stuList"
:showHeader="false"
:isJudgeTrans="isJudgeTrans"
height="100%"
:noSelect="true"
:outData="stus"
:outLoading="loading"
:pageSize="msg.pageSize"
:isComponent="true"
></stulist>
</div>
<div class="row" style="justify-content: flex-end;padding: 5px 20px">
......@@ -67,7 +62,7 @@
</template>
<script>
import stulist from "../school/student/stulist";
import stulist from "../../pages/stuMan/stuList.vue";
import { getGraduateStudent } from "../../api/stuMan/index";
export default {
components: { stulist },
......@@ -80,7 +75,7 @@ export default {
pageCount: 0,
msg: {
PageIndex: 1,
pageSize: 12,
pageSize: 15,
KeyWords: ""
}
};
......@@ -110,6 +105,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -14,7 +14,22 @@
:name="x.id.toString()"
:icon="`iconfont ${x.icon}`"
:label="x.name"
></q-tab>
content-class="todo-box-tab-class"
>
<div
class="col row justify-end"
v-if="
childTodoTipList[`${x.value}`] &&
childTodoTipList[`${x.value}`] != 0
"
>
<q-badge
rounded
color="red"
:label="childTodoTipList[`${x.value}`]"
/>
</div>
</q-tab>
</q-tabs>
</div>
<div class="col bg-white rounded-borders full-height">
......@@ -80,6 +95,7 @@ import payee from "./payee.vue";
import business from "./business.vue";
import financialDocuments from "../../pages/financial/financalDocument/FinancialDocuments.vue";
export default {
inject: ["todoTipList"],
components: {
todoToday,
todoStu,
......@@ -101,67 +117,83 @@ export default {
id: 1,
name: "今日需联系线索",
msg: 0,
icon: "icon-xiansuo"
icon: "icon-xiansuo",
value: "TodayClueCount"
},
{
id: 2,
name: "今日需联系学员",
msg: 0,
icon: "icon-xueyuan2"
icon: "icon-xueyuan2",
value: "TodayConnectCount"
},
{
id: 3,
name: "分配给我的线索",
msg: 0,
icon: "icon-fenpei"
icon: "icon-fenpei",
value: "MyClueCount"
},
{
id: 4,
name: "分配给我的学员",
msg: 0,
icon: "icon-fenpeijiaose"
icon: "icon-fenpeijiaose",
value: "MyStudentCount"
},
{
id: 5,
name: "待申领合同",
msg: 0,
icon: "icon-hetong"
icon: "icon-hetong",
value: "MyOrderNotReceiveContractCount"
},
{
id: 6,
name: "待收款提醒",
msg: 0,
icon: "icon-shoukuan"
icon: "icon-shoukuan",
value: "MyOrderNotBalanceCount"
},
{
id: 7,
name: "今日被跟进学员",
msg: 0,
icon: "icon-genjin"
icon: "icon-genjin",
value: "TodayFollowCount"
},
{
id: 8,
name: "即将毕业学员",
msg: 0,
icon: "icon-biyejieye"
icon: "icon-biyejieye",
value: "GraduateStudentCount"
},
{
id: 9,
name: "待审核财务单据",
msg: 0,
icon: "icon-caiwu1"
icon: "icon-caiwu1",
value: "todoFincal"
},
{
id: 10,
name: "待审核业务单据",
msg: 0,
icon: "icon-yewu"
icon: "icon-yewu",
value: "NotBusinessBillCount"
}
]
};
},
computed: {
childTodoTipList() {
return this.todoTipList.result;
}
},
mounted() {
this.currentMenu = this.menulist[0].id.toString();
//console.log(this.todoTipList);
},
methods: {}
};
......@@ -175,5 +207,9 @@ export default {
.q-tabs--vertical .justify-center,
.q-tabs--vertical .flex-center {
justify-content: unset !important;
width: 100%;
}
.todo-box-tab-class {
width: 100%;
}
</style>
......@@ -108,6 +108,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -106,6 +106,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -87,6 +87,8 @@ export default {
},
mounted() {
this.getStudent();
this.$root.$emit("updateTodoList");
//@TODO:添加查询条件
},
methods: {
getStudent() {
......
......@@ -106,6 +106,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -106,6 +106,7 @@ export default {
},
refreshPage() {
this.getStudent();
this.$root.$emit("updateTodoList");
},
changePage() {
this.getStudent();
......
......@@ -20,7 +20,15 @@
:color="chosenMenu == 7 ? 'primary' : 'blue-grey-14'"
:class="[chosenMenu == 7 ? 'text-weight-bold' : '']"
label="待办工作"
></q-btn>
>
<q-badge
rounded
color="red"
:label="todoCount"
v-if="todoCount > 0"
floating
/>
</q-btn>
<q-btn
flat
@click="changeMenu(5)"
......@@ -125,7 +133,7 @@
<script>
import { GetMyNoticePageList } from "../api/course/index";
import { getTodayStatic } from "../api/stuMan/index";
import teachplan from "./course/teacherLesson";
import okr from "./okr/index";
import alignView from "./okr/okr-align-view";
......@@ -164,12 +172,21 @@ export default {
pageSize: 1,
LookTime: ""
},
todoList: { result: null },
todoCount: 0,
isShowNotice: false,
noticeObj: {},
autoSendTodo: null,
TimeList: [] //存放时间作为比较
};
},
created() {},
created() {
this.$root.$on("updateTodoList", this.initTodoList);
},
beforeDestroy() {
this.$root.$off("updateTodoList", this.initTodoList);
clearInterval(this.autoSendTodo);
},
mounted() {
let userInfo = this.getLocalStorage();
this.AccountType = userInfo.AccountType;
......@@ -195,8 +212,35 @@ export default {
this.noticeMsg.LookTime = notifyTime;
}
this.getNoticeList();
this.initTodoList();
this.autoSendTodo = setInterval(() => {
this.initTodoList();
}, 60 * 1000);
},
provide() {
return {
todoTipList: this.todoList
};
},
methods: {
initTodoList() {
getTodayStatic().then(r => {
console.log(r);
let d = r.Data;
this.todoList.result = d;
let tempCount = 0;
tempCount += d.GraduateStudentCount;
tempCount += d.MyClueCount;
tempCount += d.MyOrderNotBalanceCount;
tempCount += d.MyOrderNotReceiveContractCount;
tempCount += d.MyStudentCount;
tempCount += d.NotBusinessBillCount;
tempCount += d.TodayClueCount;
tempCount += d.TodayConnectCount;
tempCount += d.TodayFollowCount;
this.todoCount = tempCount;
});
},
changeMenu(i) {
if (i == 1) {
this.okrMenu = 1;
......
<style>
li {
li {
list-style-type: none;
}
}
.stuList ul {
.stuList ul {
padding: 0px;
}
}
.stuList li {
.stuList li {
background: rgba(221, 222, 224, 0.2);
border-radius: 4px;
margin-top: 15px;
}
}
.stuList li .dline {
.stuList li .dline {
display: table;
width: 100%;
display: flex;
flex-direction: row;
}
}
.stuList li .d1,
.stuList li .d2,
.stuList li .d3,
.stuList li .d4,
.stuList li .d5 {
.stuList li .d1,
.stuList li .d2,
.stuList li .d3,
.stuList li .d4,
.stuList li .d5 {
width: 18%;
padding: 20px 20px 10px;
}
}
.stuList li .d7 {
.stuList li .d7 {
flex: 1;
width: 1px;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
}
}
.stuList li .d1 .di-title {
.stuList li .d1 .di-title {
font-size: 16px;
color: #111111;
}
}
.stuList li .d1 .di-c {
.stuList li .d1 .di-c {
font-size: 14px;
display: flex;
line-height: 28px;
color: #111111;
}
}
.stuList li .d6 {
.stuList li .d6 {
padding: 10px 20px;
width: 100%;
height: inherit;
position: relative;
border-top: 1px solid #dddee0;
}
}
.stuList li .d6 .progress {
.stuList li .d6 .progress {
width: 100%;
height: 5px;
position: absolute;
left: 0;
bottom: 0;
}
}
.stuList li .d2 div {
.stuList li .d2 div {
margin: 2px 0;
font-size: 14px;
color: #111111;
}
}
.stuList li .d2-n {
.stuList li .d2-n {
font-size: 12px;
color: #999999;
margin-right: 20px;
}
}
.stuList li .d3 .d3-s {
.stuList li .d3 .d3-s {
color: var(--q-color-negative);
font-weight: bold;
}
}
.stuList li .d3 div {
.stuList li .d3 div {
margin: 2px 0;
font-size: 14px;
}
}
.stuList li .d4 div {
.stuList li .d4 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
}
.stuList li .d5 div {
.stuList li .d5 div {
font-size: 14px;
color: #111111;
margin: 2px 0;
}
}
.stuList .myCourseNName {
.stuList .myCourseNName {
width: 25px;
height: 25px;
border-radius: 50%;
......@@ -108,45 +108,45 @@
text-align: center;
line-height: 25px;
background-color: #004d40;
}
}
.stuList .app-image {
.stuList .app-image {
background-position: center center;
width: 50px;
height: 50px;
border-radius: 0%;
float: left;
margin-right: 8px;
}
}
.Sysuser_Date .el-input {
.Sysuser_Date .el-input {
width: 100%;
border: none;
background-color: transparent;
}
}
.Sysuser_Date .el-input__inner {
.Sysuser_Date .el-input__inner {
width: 100%;
border: none;
background-color: transparent;
}
}
.Sysuser_Date .el-range-editor .el-range-input {
.Sysuser_Date .el-range-editor .el-range-input {
width: 100%;
border: none;
background-color: transparent;
}
}
.el-picker-panel {
.el-picker-panel {
z-index: 99999 !important;
}
}
.syster_qDropdown .q-btn__wrapper {
.syster_qDropdown .q-btn__wrapper {
padding: 0 3px;
min-height: 0 !important;
}
}
.editOrderDrawerTop {
.editOrderDrawerTop {
width: 100%;
height: 50px;
display: flex;
......@@ -154,44 +154,77 @@
background-color: #f0f5fb;
padding: 5px 10px;
align-items: center;
}
.stics {
}
.stics {
padding: 10px 20px;
background: #DDDEE0;
background: #dddee0;
border-radius: 4px;
font-size: 13px;
color: #000000;
font-weight: bold
}
font-weight: bold;
}
.stics .stics-name {
color: #2D2D2D;
.stics .stics-name {
color: #2d2d2d;
font-weight: 600;
margin-right: 10px
}
margin-right: 10px;
}
</style>
<template>
<div class="page-body stuList">
<div class="row q-mb-md" v-if="source!=1">
<div
:class="[
{ 'page-body stuList': !isComponent },
{ 'full-height': isComponent }
]"
>
<div class="row q-mb-md" v-if="source != 1 && !isComponent">
<q-space></q-space>
<div style="position: relative">
<q-btn color="accent" label="高级查询" @click="IsShowQuery = true"></q-btn>
<q-btn
color="accent"
label="高级查询"
@click="IsShowQuery = true"
></q-btn>
<q-badge floating rounded color="red">{{ queryNum }}</q-badge>
</div>
</div>
<div v-else class="q-mb-sm" style="font-size:20px">{{courseName}}</div>
<div class="page-search row items-center flex">
<div v-else-if="!isComponent" class="q-mb-sm" style="font-size:20px">
{{ courseName }}
</div>
<div class="page-search row items-center flex" v-if="!isComponent">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select @input="changeSchool" dense filled v-model="msg.School_Id" class="col-6" option-label="SName"
option-value="SId" :options="SchoolList" emit-value map-options label="校区" />
<q-select
@input="changeSchool"
dense
filled
v-model="msg.School_Id"
class="col-6"
option-label="SName"
option-value="SId"
:options="SchoolList"
emit-value
map-options
label="校区"
/>
</div>
<div class="col-3" v-if="source!=1">
<q-select @input="changeCourse" dense filled v-model="msg.CourseId" class="col-6" option-label="CourseName"
option-value="CourseId" use-input :options="CourseList" @filter="filterCourse" emit-value map-options
label="课程" clearable>
<div class="col-3" v-if="source != 1">
<q-select
@input="changeCourse"
dense
filled
v-model="msg.CourseId"
class="col-6"
option-label="CourseName"
option-value="CourseId"
use-input
:options="CourseList"
@filter="filterCourse"
emit-value
map-options
label="课程"
clearable
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
......@@ -202,16 +235,31 @@
</q-select>
</div>
<div class="col-3">
<q-select @input="resetSearch" dense filled v-model="msg.ClassId" class="col-6" use-input
@filter="filterClass" option-label="ClassName" option-value="ClassId" :options="classList" emit-value
map-options label="班级" clearable>
<template v-slot:option="{
<q-select
@input="resetSearch"
dense
filled
v-model="msg.ClassId"
class="col-6"
use-input
@filter="filterClass"
option-label="ClassName"
option-value="ClassId"
:options="classList"
emit-value
map-options
label="班级"
clearable
>
<template
v-slot:option="{
itemProps,
itemEvents,
opt,
selected,
toggleOption
}">
}"
>
<q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section>
<q-item-label v-html="opt.ClassName"></q-item-label>
......@@ -231,12 +279,33 @@
</q-select>
</div>
<div class="col-3">
<q-input @keyup.enter.native="resetSearch" clearable dense filled v-model="msg.GuestName" label="学员姓名"
@clear="resetSearch" maxlength="20" />
<q-input
@keyup.enter.native="resetSearch"
clearable
dense
filled
v-model="msg.GuestName"
label="学员姓名"
@clear="resetSearch"
maxlength="20"
/>
</div>
<div class="col-3">
<q-select @input="resetSearch" dense filled v-model="msg.GuestState" class="col-6" option-label="Name"
option-value="Id" use-input :options="GuestStateList" emit-value map-options label="学员状态" clearable>
<q-select
@input="resetSearch"
dense
filled
v-model="msg.GuestState"
class="col-6"
option-label="Name"
option-value="Id"
use-input
:options="GuestStateList"
emit-value
map-options
label="学员状态"
clearable
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
......@@ -247,13 +316,37 @@
</q-select>
</div>
<div class="col-3">
<q-select @input="getShaixuanFrom()" dense filled clearable filled option-value="Id" option-label="Name"
v-model="msg.CreateType" :options="customFromList" emit-value map-options label="客户来源" />
<q-select
@input="getShaixuanFrom()"
dense
filled
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.StuChannelId" @input="resetSearch" label="收客渠道" :dense="false"
:options="StuChannelList" option-label="Name" option-value="Id" emit-value map-options use-input clearable
@filter="filterStuChannel">
<q-select
filled
v-model="msg.StuChannelId"
@input="resetSearch"
label="收客渠道"
:dense="false"
: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">
......@@ -264,9 +357,21 @@
</q-select>
</div>
<div class="col-3" v-if="msg.CreateType == 2">
<q-select filled v-model="msg.StuSourceId" :dense="false" :options="customList" use-input label="关联同行"
@filter="filterFn" option-label="CustomerName" @input="resetSearch" clearable option-value="CustomerId"
emit-value map-options>
<q-select
filled
v-model="msg.StuSourceId"
:dense="false"
: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">
......@@ -277,52 +382,104 @@
</q-select>
</div>
<div class="col-3" v-if="msg.CreateType == 3">
<q-select filled v-model="msg.StuSourceId" :dense="false" @filter="filterEmployee" label="介绍人" use-input
:options="myEmployeeList" option-label="EmployeeName" @input="resetSearch" clearable option-value="Id"
emit-value map-options />
<q-select
filled
v-model="msg.StuSourceId"
:dense="false"
@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="false" use-input @filter="filterStudent" label="转介人"
:options="MyTransListData" option-label="StuName" @input="resetSearch" clearable option-value="StuId"
emit-value map-options />
<q-select
filled
v-model="msg.StuSourceId"
:dense="false"
use-input
@filter="filterStudent"
label="转介人"
:options="MyTransListData"
option-label="StuName"
@input="resetSearch"
clearable
option-value="StuId"
emit-value
map-options
/>
</div>
</div>
</div>
<div class="col row wrap q-gutter-x-md" v-if="staticObj">
<div class="col row wrap q-gutter-x-md" v-if="staticObj && !isComponent">
<div class="col stics">
<span class="stics-name">正常学员数量</span>
<span>{{staticObj.NormalNum?staticObj.NormalNum:0}}人</span>
<span>{{ staticObj.NormalNum ? staticObj.NormalNum : 0 }}人</span>
</div>
<div class="col stics">
<span class="stics-name">退课学员数量</span>
<span style="color: #F72E52">{{staticObj.DropOutNum?staticObj.DropOutNum:0}}人</span>
<span style="color: #F72E52"
>{{ staticObj.DropOutNum ? staticObj.DropOutNum : 0 }}人</span
>
</div>
<div class="col stics">
<span class="stics-name">停课学员数量</span>
<span style="color:#2961FE;">{{staticObj.StopClassesNum?staticObj.StopClassesNum:0}}人</span>
<span style="color:#2961FE;"
>{{ staticObj.StopClassesNum ? staticObj.StopClassesNum : 0 }}人</span
>
</div>
<div class="col stics">
<span class="stics-name">毕业学员数量</span>
<span>{{staticObj.GraduateNum?staticObj.GraduateNum:0}}人</span>
<span>{{ staticObj.GraduateNum ? staticObj.GraduateNum : 0 }}人</span>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat
class="sticky-tow-column-table sticky-right-column-table" separator="none" :data="data" :columns="columns"
row-key="name">
<div
:class="[
{ 'page-content': !isComponent },
{ 'full-height': isComponent }
]"
>
<q-table
:pagination="msg"
:loading="loading"
no-data-label="暂无相关数据"
flat
class="sticky-tow-column-table"
:class="[
{ 'my-sticky-header-table full-height': isComponent },
{ 'sticky-right-column-table': !isComponent }
]"
separator="none"
:data="data"
:columns="columns"
row-key="name"
:hide-bottom="isComponent"
>
<template v-slot:top>
<!-- <div class="col-2 q-table__title">学员名单</div> -->
</template>
<template v-slot:body-cell-ContractNo="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="seeContract(props.row)">
<div
style="color: #f00; cursor: pointer"
@click="seeContract(props.row)"
>
{{ props.row.ContractNo }}
</div>
</q-td>
</template>
<template v-slot:body-cell-GuestName="props">
<q-td :props="props">
<div class="text-blue cursor-pointer" @click="getStuRight(props.row)">
<div
class="text-blue cursor-pointer"
@click="getStuRight(props.row)"
>
{{ props.value }}
</div>
</q-td>
......@@ -331,70 +488,99 @@
<template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props">
<div>
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{ props.row.EnterpriseName }}:</span>
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName"
>{{ props.row.EnterpriseName }}:</span
>
{{ props.row.StuSourceIdName }}
</div>
</q-td>
</template>
<template v-slot:body-cell-ClassName="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="seeClassDetail(props.row)">
<div
style="color: #f00; cursor: pointer"
@click="seeClassDetail(props.row)"
>
{{ props.row.ClassName }}
</div>
</q-td>
</template>
<template v-slot:body-cell-OrderId="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 1)">
<div
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 1)"
>
{{ props.row.OrderId }}
</div>
</q-td>
</template>
<template v-slot:body-cell-Income="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 4)">
<div
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 4)"
>
{{ props.row.Income }}
</div>
</q-td>
</template>
<template v-slot:body-cell-Refund="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 4)">
<div
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 4)"
>
{{ props.row.Refund }}
</div>
</q-td>
</template>
<template v-slot:body-cell-CompleteHours="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="seeStudentsClassUse(props.row)">
<div
style="color: #f00; cursor: pointer"
@click="seeStudentsClassUse(props.row)"
>
{{ props.row.CompleteHours }}
</div>
</q-td>
</template>
<template v-slot:body-cell-MakeUpHours="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showList(props.row, 1)">
<div
style="color: #f00; cursor: pointer"
@click="showList(props.row, 1)"
>
{{ props.row.MakeUpHours }}
</div>
</q-td>
</template>
<template v-slot:body-cell-AbsenceNum="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showList(props.row, 2)">
<div
style="color: #f00; cursor: pointer"
@click="showList(props.row, 2)"
>
{{ props.row.AbsenceNum }}
</div>
</q-td>
</template>
<template v-slot:body-cell-LeaveNum="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showList(props.row, 3)">
<div
style="color: #f00; cursor: pointer"
@click="showList(props.row, 3)"
>
{{ props.row.LeaveNum }}
</div>
</q-td>
</template>
<template v-slot:body-cell-EventlogNum="props">
<q-td :props="props">
<div style="color: #f00; cursor: pointer" @click="showEventLog(props.row)">
<div
style="color: #f00; cursor: pointer"
@click="showEventLog(props.row)"
>
{{ props.row.EventlogNum }}
</div>
</q-td>
......@@ -405,16 +591,41 @@
<template v-slot:body-cell-TeacherManager="props">
<q-td :props="props" v-html="getTeacherManager(props.row)"></q-td>
</template>
<template v-slot:body-cell-optioned="props">
<template v-slot:body-cell-optioned="props" v-if="!isComponent">
<q-td :props="props">
<div>
<q-btn flat size="xs" color="accent" style="font-weight: 400" label="停课" v-if="props.row.GuestState === 1"
@click="ShowStopLesson(props.row)" />
<q-btn flat size="xs" color="accent" style="font-weight: 400" label="转班" v-if="props.row.GuestState === 1"
@click="transferClass(props.row, 1)" />
<q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left: 10px">
<q-btn
flat
size="xs"
color="accent"
style="font-weight: 400"
label="停课"
v-if="props.row.GuestState === 1"
@click="ShowStopLesson(props.row)"
/>
<q-btn
flat
size="xs"
color="accent"
style="font-weight: 400"
label="转班"
v-if="props.row.GuestState === 1"
@click="transferClass(props.row, 1)"
/>
<q-btn-dropdown
flat
size="xs"
color="dark"
label="更多"
style="margin-left: 10px"
>
<q-list>
<q-item dense 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 overline>添加事件</q-item-label>
</q-item-section>
......@@ -429,72 +640,143 @@
</div>
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
:input="true" @input="changePage" />
<template v-if="!isComponent" v-slot:bottom>
<q-pagination
class="full-width justify-end"
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</template>
</q-table>
</div>
<!-- 高级查询 -->
<MoreQuery v-if="IsShowQuery" :typeEnum="typeEnum" :warnEnum="warnEnum" :saveQuery="msg" @close="closeHandle"
@success="morequery">
<MoreQuery
v-if="IsShowQuery"
:typeEnum="typeEnum"
:warnEnum="warnEnum"
:saveQuery="msg"
@close="closeHandle"
@success="morequery"
>
</MoreQuery>
<!-- 停课申请 -->
<StopLesson-form v-if="isShowStopLesson" :setObj="stuObj" @success="resetSearch" @close="closeHandle" />
<StopLesson-form
v-if="isShowStopLesson"
:setObj="stuObj"
@success="resetSearch"
@close="closeHandle"
/>
<!-- 转班申请 -->
<transferclass-form v-if="isShowTransferClass" :save-obj="orderObj" :ChangeType="ChangeType" @close="closeHandle"
@success="resetSearch"></transferclass-form>
<transferclass-form
v-if="isShowTransferClass"
:save-obj="orderObj"
:ChangeType="ChangeType"
@close="closeHandle"
@success="resetSearch"
></transferclass-form>
<!-- 添加事件 -->
<AddEvent-form v-if="isShowAddEvent" :setObj="eventObj" @success="resetSearch" @close="closeHandle" />
<AddEvent-form
v-if="isShowAddEvent"
:setObj="eventObj"
@success="resetSearch"
@close="closeHandle"
/>
<!-- 班级详情 -->
<classinfo-form v-if="isShowClassInfo" :seting-obj="eventObj" @close="closeHandle" @success="refreshPage" />
<classinfo-form
v-if="isShowClassInfo"
:seting-obj="eventObj"
@close="closeHandle"
@success="refreshPage"
/>
<!-- 订单详情 -->
<myOrder-form v-if="isShowmyorderForm" :save-obj="eventObj" @close="closeHandle"></myOrder-form>
<myOrder-form
v-if="isShowmyorderForm"
:save-obj="eventObj"
@close="closeHandle"
></myOrder-form>
<!-- 可补课课时,缺勤次数,请假次数 -->
<list v-if="isShowList" :type="showType" :set-obj="eventObj" @close="closeHandle" />
<list
v-if="isShowList"
:type="showType"
:set-obj="eventObj"
@close="closeHandle"
/>
<!-- 事件记录 -->
<eventLog v-if="isShowEventLog" :set-obj="eventObj" @modify="modifyEvent" @close="closeHandle" />
<studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption"
@close="closeStuForm" @success="refreshStuList" @reload="refreshStuList">
<eventLog
v-if="isShowEventLog"
:set-obj="eventObj"
@modify="modifyEvent"
@close="closeHandle"
/>
<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>
<JumpCourse
v-model="isShowChangeCourse"
:saveObj="ChangeCourseObj"
@success="refreshPage"
></JumpCourse>
</div>
</template>
<script>
import {
import {
getSchoolDropdown,
getClassDropDownList,
getStudentDorpDownList
} from "../../api/school/index";
import {
queryCourseDropdownList
} from "../../api/course/index";
import {
} from "../../api/school/index";
import { queryCourseDropdownList } from "../../api/course/index";
import {
getStuList,
getEarlyWarningEnum,
getTypeEnum
} from "../../api/stuMan/index.js";
import {
} from "../../api/stuMan/index.js";
import {
queryGuestStateList,
CreateTypeList,
GetStuChannelList,
GetCustomerList
} from "../../api/sale/sale.js";
import MoreQuery from "../../components/stuMan/moreQuery.vue";
import StopLessonForm from "../../components/teacher/stopLessonForm";
import transferclassForm from "../../components/sale/transferclass-form"; //转班信息
import AddEventForm from "../../components/stuMan/addEvent-form.vue"; //转班信息
import classinfoForm from "../../components/course/classinfo-form"; //班级详情
import myOrderForm from "../../components/sale/myOrder-form"; //订单详情
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";
export default {
} from "../../api/sale/sale.js";
import MoreQuery from "../../components/stuMan/moreQuery.vue";
import StopLessonForm from "../../components/teacher/stopLessonForm";
import transferclassForm from "../../components/sale/transferclass-form"; //转班信息
import AddEventForm from "../../components/stuMan/addEvent-form.vue"; //转班信息
import classinfoForm from "../../components/course/classinfo-form"; //班级详情
import myOrderForm from "../../components/sale/myOrder-form"; //订单详情
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";
export default {
props: {
isComponent: {
type: Boolean,
default: false
},
outData: {
type: Array,
default: () => []
},
pageSize: {
type: Number,
default: 10
},
outLoading: {
type: Boolean,
default: false
}
},
meta: {
title: "学员名单"
},
......@@ -538,7 +820,8 @@
StuSourceId: ""
},
pageCount: 0,
columns: [{
columns: [
{
name: "Id",
label: "编号",
field: "Id",
......@@ -737,13 +1020,6 @@
label: "类型",
field: "JoinTypeStr",
align: "left"
},
{
name: "optioned",
label: "操作",
required: true,
align: "left"
}
],
SchoolList: [],
......@@ -796,7 +1072,7 @@
courseName: "",
isShowChangeCourse: false,
ChangeCourseObj: {},
staticObj: {}, //学生统计信息
staticObj: {} //学生统计信息
};
},
created() {
......@@ -811,7 +1087,32 @@
this.courseName = decodeURIComponent(this.$route.query.CourseName);
}
},
watch: {
outData: {
handler: function(val) {
if (this.isComponent) {
this.data = val;
}
},
deep: true
},
outLoading: {
handler: function(val) {
if (this.isComponent) {
this.loading = val;
}
},
deep: true
}
},
mounted() {
if (!this.isComponent) {
this.columns.push({
name: "optioned",
label: "操作",
required: true,
align: "left"
});
this.getSchool();
this.getCourseList();
this.getClass();
......@@ -823,6 +1124,11 @@
this.GetStuChannelList();
this.GetCustomerList();
this.getEmployeeList();
} else {
this.msg.rowsPerPage = this.pageSize;
this.loading = this.outLoading;
this.data = this.outData;
}
},
methods: {
//获取收客渠道
......@@ -901,12 +1207,12 @@
},
//筛选客户来源
getShaixuanFrom() {
this.msg.StuSourceId = ''
this.msg.StuChannelId = ''
this.msg.StuSourceId = "";
this.msg.StuChannelId = "";
if (this.msg.CreateType == 4) {
this.getStudentDorpDown();
}
this.resetSearch()
this.resetSearch();
},
//获取转介人下拉
getStudentDorpDown() {
......@@ -1217,12 +1523,12 @@
this.getList();
},
showChangeCourse(item) {
this.isShowChangeCourse = true
this.ChangeCourseObj = item
this.isShowChangeCourse = true;
this.ChangeCourseObj = item;
}
}
};
};
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
@import url('~assets/css/table.sass')
</style>
......@@ -648,6 +648,9 @@ export default {
this.isShowAssessmentForm = false;
this.billObj = {};
this.getStuBackBill();
if (this.isComponents) {
this.$emit("success");
}
},
//获取下拉数据
getEducationType() {
......
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