Commit b4394b76 authored by youjie's avatar youjie
parents aa6c1257 0fa4d329
...@@ -87,7 +87,6 @@ ...@@ -87,7 +87,6 @@
.q-field__prepend { .q-field__prepend {
padding-right: 0px !important; padding-right: 0px !important;
} }
</style> </style>
<template> <template>
<q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale"> <q-dialog v-model="persistent" content-class="bg-grey-1" persistent transition-show="scale">
...@@ -362,9 +361,21 @@ ...@@ -362,9 +361,21 @@
saveConsult() { saveConsult() {
this.$refs.PlanName.validate(); this.$refs.PlanName.validate();
if (!this.$refs.PlanName.hasError) { if (!this.$refs.PlanName.hasError) {
if (this.SaleIdsArray && this.SaleIdsArray.length > 0) {
this.objOption.SaleIds = this.SaleIdsArray.toString(); this.objOption.SaleIds = this.SaleIdsArray.toString();
} else {
this.objOption.SaleIds = "";
}
if (this.UseCourseIdsArray && this.UseCourseIdsArray.length > 0) {
this.objOption.UseCourseIds = this.UseCourseIdsArray.toString(); this.objOption.UseCourseIds = this.UseCourseIdsArray.toString();
} else {
this.objOption.UseCourseIds = "";
}
if (this.NotUseCourseIdsArray && this.NotUseCourseIdsArray.length > 0) {
this.objOption.NotUseCourseIds = this.NotUseCourseIdsArray.toString(); this.objOption.NotUseCourseIds = this.NotUseCourseIdsArray.toString();
} else {
this.objOption.NotUseCourseIds = '';
}
this.saveLoading = true; this.saveLoading = true;
SetBounsPlan(this.objOption).then(res => { SetBounsPlan(this.objOption).then(res => {
this.saveLoading = false; this.saveLoading = false;
...@@ -389,5 +400,4 @@ ...@@ -389,5 +400,4 @@
} }
}, },
} }
</script> </script>
\ No newline at end of file
<style lang="scss"> <style lang="scss">
.stuList .q-table__bottom { .stuList .q-table__bottom {
min-height: 0; min-height: 0;
} }
.stulistNum { .stulistNum {
display: inline-block; display: inline-block;
width: 25px; width: 25px;
height: 25px; height: 25px;
...@@ -13,23 +13,23 @@ ...@@ -13,23 +13,23 @@
border-radius: 50%; border-radius: 50%;
cursor: pointer; cursor: pointer;
color: #2961fe; color: #2961fe;
} }
.stuListTable { .stuListTable {
width: 200px; width: 200px;
text-align: center; text-align: center;
} }
.stuListTable tr td { .stuListTable tr td {
height: 40px; height: 40px;
} }
.stuListTable tr th { .stuListTable tr th {
height: 40px; height: 40px;
background-color: rgb(238, 238, 239); background-color: rgb(238, 238, 239);
} }
.stulistNumber { .stulistNumber {
display: inline-block; display: inline-block;
width: 25px; width: 25px;
height: 25px; height: 25px;
...@@ -39,155 +39,63 @@ ...@@ -39,155 +39,63 @@
border-radius: 50%; border-radius: 50%;
cursor: pointer; cursor: pointer;
color: #2961fe; color: #2961fe;
} }
.OCourseTable { .OCourseTable {
width: 600px; width: 600px;
text-align: center; text-align: center;
} }
.OCourseTable tr td { .OCourseTable tr td {
height: 40px; height: 40px;
} }
.OCourseTable tr th { .OCourseTable tr th {
height: 40px; height: 40px;
background-color: rgb(238, 238, 239); background-color: rgb(238, 238, 239);
} }
</style> </style>
<template> <template>
<div class="stuList" :style="{ height: height }"> <div class="stuList" :style="{ height: height }">
<q-table <q-table :pagination="pageMsg" :loading="loading" no-data-label="暂无相关数据" flat
:pagination="pageMsg" :selection="noSelect ? 'none' : pushMode ? 'multiple' : 'single'" :selected.sync="selection"
:loading="loading" :style="{ height: height }" class="sticky-right-column-table sticky-tow-column-table"
no-data-label="暂无相关数据" :class="{ 'my-sticky-header-table': height != 'unset' }" separator="none" :data="dataList" :columns="columns"
flat row-key="StuId" hide-bottom>
:selection="noSelect ? 'none' : pushMode ? 'multiple' : 'single'"
:selected.sync="selection"
:style="{ height: height }"
class="sticky-right-column-table sticky-tow-column-table"
:class="{ 'my-sticky-header-table': height != 'unset' }"
separator="none"
:data="dataList"
:columns="columns"
row-key="StuId"
hide-bottom
>
<template v-if="showHeader" v-slot:top> <template v-if="showHeader" v-slot:top>
<div class="col-2 q-table__title">学员信息</div> <div class="col-2 q-table__title">学员信息</div>
<q-space /> <q-space />
<div class="page-option" v-if="!pushMode"> <div class="page-option" v-if="!pushMode">
<q-btn <q-btn color="accent" v-if="IsTrasferAll()" outline class="q-mr-md" size="sm" icon="swap_horiz" label="批量转交"
color="accent" @click="pushMode = true" />
v-if="IsTrasferAll()" <q-btn color="accent" outline class="q-mr-md" size="sm" icon="swap_horiz" label="推送课程顾问"
outline v-if="userInfo.IsCourseConsultant == 0" @click="pushMode = true" />
class="q-mr-md" <q-btn color="accent" class="q-mr-md" size="sm" icon="swap_horiz" label="转订单"
size="sm" :disable="selection.length === 0" @click="transferOrder" />
icon="swap_horiz" <q-btn color="accent" class="q-mr-md" size="sm" icon="swap_horiz" label="转留学"
label="批量转交" :disable="selection.length === 0" @click="transferAbroad" />
@click="pushMode = true" <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"
<q-btn label="下载" @click="downloadStudent" />
color="accent"
outline
class="q-mr-md"
size="sm"
icon="swap_horiz"
label="推送课程顾问"
v-if="userInfo.IsCourseConsultant == 0"
@click="pushMode = true"
/>
<q-btn
color="accent"
class="q-mr-md"
size="sm"
icon="swap_horiz"
label="转订单"
:disable="selection.length === 0"
@click="transferOrder"
/>
<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"
/>
</div> </div>
<div class="page-option" v-if="pushMode"> <div class="page-option" v-if="pushMode">
<q-btn <q-btn color="accent" unelevated class="q-mr-md" size="sm" icon="swap_horiz" label="转交"
color="accent" @click="isShowTrans = true">
unelevated
class="q-mr-md"
size="sm"
icon="swap_horiz"
label="转交"
@click="isShowTrans = true"
>
<q-popup-proxy :offset="[10, 10]"> <q-popup-proxy :offset="[10, 10]">
<q-banner v-if="isShowTrans"> <q-banner v-if="isShowTrans">
<q-select <q-select style="margin-top:20px;" filled v-model="transMsg.CreateBy" @filter="filterEmployee" use-input
style="margin-top:20px;" :options="myEmployeeList" option-label="EmployeeName" option-value="Id" emit-value map-options />
filled <q-btn label="保存" style="float:right;margin-top:15px" color="accent q-mb-lg" size="sm"
v-model="transMsg.CreateBy" @click="saveTransForm" />
@filter="filterEmployee"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
option-value="Id"
emit-value
map-options
/>
<q-btn
label="保存"
style="float:right;margin-top:15px"
color="accent q-mb-lg"
size="sm"
@click="saveTransForm"
/>
</q-banner> </q-banner>
</q-popup-proxy> </q-popup-proxy>
</q-btn> </q-btn>
<q-btn <q-btn color="accent" unelevated class="q-mr-md" size="sm" icon="swap_horiz" label="立即推送" :loading="pushing"
color="accent" @click="assistBatchHandler" />
unelevated <q-btn color="accent" outline size="sm" label="退出" :disable="pushing" @click="
class="q-mr-md"
size="sm"
icon="swap_horiz"
label="立即推送"
:loading="pushing"
@click="assistBatchHandler"
/>
<q-btn
color="accent"
outline
size="sm"
label="退出"
:disable="pushing"
@click="
pushMode = false; pushMode = false;
selection = []; selection = [];
" " />
/>
</div> </div>
</template> </template>
<template v-slot:body-cell-StuIcon="props"> <template v-slot:body-cell-StuIcon="props">
...@@ -195,32 +103,20 @@ ...@@ -195,32 +103,20 @@
<q-avatar size="md" v-if="props.value"> <q-avatar size="md" v-if="props.value">
<img :src="props.value" /> <img :src="props.value" />
</q-avatar> </q-avatar>
<q-avatar <q-avatar size="md" color="teal-10" text-color="white" v-if="!props.value">
size="md" {{ props.row.StuName.substring(0, 1) }}</q-avatar>
color="teal-10"
text-color="white"
v-if="!props.value"
>
{{ props.row.StuName.substring(0, 1) }}</q-avatar
>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-StuName="props"> <template v-slot:body-cell-StuName="props">
<q-td :props="props"> <q-td :props="props">
<div <div class="text-blue cursor-pointer" @click="getStuRight(props.row, 1)">
class="text-blue cursor-pointer"
@click="getStuRight(props.row, 1)"
>
{{ props.value }} {{ props.value }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-StuSex="props"> <template v-slot:body-cell-StuSex="props">
<q-td :props="props"> <q-td :props="props">
<q-badge <q-badge :color="props.value == 1 ? 'negative' : 'primary'" :label="props.value == 1 ? '女' : '男'" />
:color="props.value == 1 ? 'negative' : 'primary'"
:label="props.value == 1 ? '女' : '男'"
/>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-CreateTypeStr="props"> <template v-slot:body-cell-CreateTypeStr="props">
...@@ -236,9 +132,7 @@ ...@@ -236,9 +132,7 @@
<template v-slot:body-cell-StuSourceIdName="props"> <template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props"> <q-td :props="props">
<div v-if="IsShowStuSourceIdName(props.row)"> <div v-if="IsShowStuSourceIdName(props.row)">
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName" <span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{ props.row.EnterpriseName }}:</span>
>{{ props.row.EnterpriseName }}:</span
>
{{ props.row.StuSourceIdName }} {{ props.row.StuSourceIdName }}
</div> </div>
<div v-else> <div v-else>
...@@ -268,21 +162,15 @@ ...@@ -268,21 +162,15 @@
{{ props.row.AdvisorList.length }} {{ props.row.AdvisorList.length }}
<q-popup-proxy> <q-popup-proxy>
<q-banner> <q-banner>
<table <table class="OCourseTable" style="border-collapse:collapse;">
class="OCourseTable"
style="border-collapse:collapse;"
>
<tr> <tr>
<th>跟进状态</th> <th>跟进状态</th>
<th>跟进日期</th> <th>跟进日期</th>
<th>跟进比例</th> <th>跟进比例</th>
<th>跟进备注</th> <th>跟进备注</th>
</tr> </tr>
<tr <tr v-for="(sItem, sIndex) in props.row.AdvisorList" style="border-bottom:1px dashed #d1d1d1;"
v-for="(sItem, sIndex) in props.row.AdvisorList" :key="sIndex">
style="border-bottom:1px dashed #d1d1d1;"
:key="sIndex"
>
<td>{{ sItem.AdvisorStatusName }}</td> <td>{{ sItem.AdvisorStatusName }}</td>
<td>{{ sItem.AdvisorDate }}</td> <td>{{ sItem.AdvisorDate }}</td>
<td>{{ sItem.AdvisorRate }}</td> <td>{{ sItem.AdvisorRate }}</td>
...@@ -305,21 +193,10 @@ ...@@ -305,21 +193,10 @@
<q-td :props="props" v-html="getCurseManager(props.row)"></q-td> <q-td :props="props" v-html="getCurseManager(props.row)"></q-td>
</template> </template>
<template v-slot:body-cell-OrderCount="props"> <template v-slot:body-cell-OrderCount="props">
<q-td <q-td :props="props" v-if="!props.row.OrderCount || props.row.OrderCount == 0" class="text-grey-4">未报名</q-td>
:props="props" <q-td :props="props" v-if="props.row.OrderCount > 0" class="bg-negative text-white"
v-if="!props.row.OrderCount || props.row.OrderCount == 0" style="cursor:pointer;text-decoration:underline;" @click="getStuRight(props.row, 3)">
class="text-grey-4" 已报名{{ props.row.OrderCount }}</q-td>
>未报名</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)"
>
已报名{{ props.row.OrderCount }}</q-td
>
</template> </template>
<template v-slot:body-cell-TeacherManager="props"> <template v-slot:body-cell-TeacherManager="props">
<q-td :props="props" v-html="getTeacherManager(props.row)"></q-td> <q-td :props="props" v-html="getTeacherManager(props.row)"></q-td>
...@@ -337,21 +214,14 @@ ...@@ -337,21 +214,14 @@
<q-popup-proxy> <q-popup-proxy>
<q-banner> <q-banner>
<div style="max-height:600px;overflow-y:auto;"> <div style="max-height:600px;overflow-y:auto;">
<table <table class="stuListTable" style="border-collapse:collapse;">
class="stuListTable"
style="border-collapse:collapse;"
>
<tr> <tr>
<th>角色</th> <th>角色</th>
<th>协同人</th> <th>协同人</th>
</tr> </tr>
<tr <tr v-for="(sItem, sIndex) in assistListFormat[
v-for="(sItem, sIndex) in assistListFormat[
props.pageIndex props.pageIndex
]" ]" style="border-bottom:1px dashed #d1d1d1;" :key="sIndex">
style="border-bottom:1px dashed #d1d1d1;"
:key="sIndex"
>
<td>{{ sItem.AssistTypeName }}</td> <td>{{ sItem.AssistTypeName }}</td>
<td>{{ sItem.AssistName }}</td> <td>{{ sItem.AssistName }}</td>
</tr> </tr>
...@@ -368,61 +238,40 @@ ...@@ -368,61 +238,40 @@
</q-td> </q-td>
</template> </template>
</q-table> </q-table>
<student-form <student-form v-if="isShowStuForm" :save-obj="stuOption" @close="closeStuForm" @success="refreshStuList">
v-if="isShowStuForm"
:save-obj="stuOption"
@close="closeStuForm"
@success="refreshStuList"
>
</student-form> </student-form>
<studentRight-form <studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType"
v-if="isShowStuRight" :checkType="checkType" :save-obj="stuOption" @close="closeStuForm" @success="refreshStuList"
:isJudgeTrans="isJudgeTrans" @reload="referDataHandler">
:BelongType="BelongType"
:checkType="checkType"
:save-obj="stuOption"
@close="closeStuForm"
@success="refreshStuList"
@reload="referDataHandler"
>
</studentRight-form> </studentRight-form>
<studentAdd-form <studentAdd-form v-if="isShowAdd" :save-obj="stuOption" @close="closeStuForm" @success="refreshStuList">
v-if="isShowAdd"
:save-obj="stuOption"
@close="closeStuForm"
@success="refreshStuList"
>
</studentAdd-form> </studentAdd-form>
<transfer-order <transfer-order v-if="isShowTransfer" :select="selection" @close="closeStuForm" @success="refreshStuList">
v-if="isShowTransfer"
:select="selection"
@close="closeStuForm"
@success="refreshStuList"
>
</transfer-order> </transfer-order>
<abroad-form <abroad-form v-if="isShowAbroad" :select="selection" @close="closeStuForm" @success="refreshStuList"></abroad-form>
v-if="isShowAbroad"
:select="selection"
@close="closeStuForm"
@success="refreshStuList"
></abroad-form>
</div> </div>
</template> </template>
<script> <script>
import studentForm from "./student-form"; import studentForm from "./student-form";
import studentRightForm from "./studentRight-form"; import studentRightForm from "./studentRight-form";
import studentAddForm from "./studentAdd-form"; import studentAddForm from "./studentAdd-form";
import transferOrder from "./transfer-order"; import transferOrder from "./transfer-order";
import abroadForm from "./abroad-form"; import abroadForm from "./abroad-form";
import { mapGetters } from "vuex"; import {
import { mapGetters
} from "vuex";
import {
SetStudentAssistBatch, SetStudentAssistBatch,
BatchForwardStudent BatchForwardStudent
} from "../../../api/sale/sale"; } from "../../../api/sale/sale";
import { EduDownLoad } from "../../../api/common/common"; import {
import { queryEmployee } from "../../../api/users/user"; EduDownLoad
} from "../../../api/common/common";
import {
queryEmployee
} from "../../../api/users/user";
export default { export default {
props: { props: {
//数据列表 //数据列表
dataList: { dataList: {
...@@ -470,8 +319,7 @@ export default { ...@@ -470,8 +319,7 @@ export default {
}, },
data() { data() {
return { return {
columns: [ columns: [{
{
name: "StuIcon", name: "StuIcon",
label: "", label: "",
field: "StuIcon", field: "StuIcon",
...@@ -808,8 +656,7 @@ export default { ...@@ -808,8 +656,7 @@ export default {
this.$q this.$q
.dialog({ .dialog({
title: str + "学员", title: str + "学员",
message: message: "你正在进行" + str + "学员行为,一旦执行无法找回,是否确认执行?",
"你正在进行" + str + "学员行为,一旦执行无法找回,是否确认执行?",
persistent: true, persistent: true,
cancel: { cancel: {
label: "取消", label: "取消",
...@@ -843,7 +690,6 @@ export default { ...@@ -843,7 +690,6 @@ export default {
}, },
//刷新列表 //刷新列表
refreshStuList() { refreshStuList() {
console.log("change......");
this.$emit("success"); this.$emit("success");
this.selection = []; this.selection = [];
}, },
...@@ -1014,5 +860,5 @@ export default { ...@@ -1014,5 +860,5 @@ export default {
}); });
} }
} }
}; };
</script> </script>
\ No newline at end of file
...@@ -33,6 +33,15 @@ ...@@ -33,6 +33,15 @@
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>
<template v-slot:option="scope">
<q-item v-bind="scope.itemProps" v-on="scope.itemEvents">
<q-item-section>
<q-item-label class="row flex justify-between">
<span>{{scope.opt.CourseName}}</span><span> 最小成班人数 {{ scope.opt.ScrollMinNum}}</span>
</q-item-label>
</q-item-section>
</q-item>
</template>
</q-select> </q-select>
<select-tree v-show="saveMsg.CourseId > 0 && editType == 1" :treeData="chapterList" <select-tree v-show="saveMsg.CourseId > 0 && editType == 1" :treeData="chapterList"
:defaultArray="returnString" nodeKey="ChapterId" labelKey="ChapterName" childrenKey="ChildList" :defaultArray="returnString" nodeKey="ChapterId" labelKey="ChapterName" childrenKey="ChildList"
...@@ -99,7 +108,7 @@ ...@@ -99,7 +108,7 @@
</q-field> </q-field>
</template> </template>
<div class="row col-12" v-if="(saveObj&& saveObj.ClassType==3)||editType==1"> <div class="row col-12" v-if="(saveObj&& saveObj.ClassType==3)||editType==1">
<div class="row col-12" > <div class="row col-12">
<div class="col-9"> <div class="col-9">
<q-select filled stack-label use-input option-value="StuId" option-label="StuName" v-model="stuInfo" <q-select filled stack-label use-input option-value="StuId" option-label="StuName" v-model="stuInfo"
ref="StuId" :options="stuList" label="学员列表" :dense="false" class="col-6" @filter="filterStu" ref="StuId" :options="stuList" label="学员列表" :dense="false" class="col-6" @filter="filterStu"
...@@ -161,9 +170,9 @@ ...@@ -161,9 +170,9 @@
{{item.CourseName}} {{item.CourseName}}
</td> </td>
<td> <td>
<template v-if="item.AppointmentId==0">
{{item.CourseChapterNoName}} {{item.FinishChapterNoName}}
</template>
</td> </td>
<td> <td>
<template v-if="item.AppointmentId>0"> <template v-if="item.AppointmentId>0">
...@@ -187,10 +196,8 @@ ...@@ -187,10 +196,8 @@
</template> </template>
</td> </td>
<td width="60px"> <td width="60px">
<q-btn size="8px" class="SurverDel" <q-btn size="8px" class="SurverDel" v-if="item.AppointmentId==0" @click="DeleteStu(index)"
@click="DeleteStu(index)" round color="red" icon="iconfont icon-shanchu" />
round color="red"
icon="iconfont icon-shanchu" />
</td> </td>
</tr> </tr>
</tbody> </tbody>
...@@ -332,6 +339,7 @@ ...@@ -332,6 +339,7 @@
LearnCourseId: gItem.LearnCourseId, LearnCourseId: gItem.LearnCourseId,
CourseName: gItem.LearnCourseName, CourseName: gItem.LearnCourseName,
CourseGradeNo: gItem.CourseGradeNo, CourseGradeNo: gItem.CourseGradeNo,
FinishChapterNoName: gItem.FinishChapterNoName,
CourseChapterNoName: gItem.CourseChapterNoName, CourseChapterNoName: gItem.CourseChapterNoName,
AppointmentId: gItem.AppointmentId, AppointmentId: gItem.AppointmentId,
CourseGradeId: gItem.CourseGradeId, CourseGradeId: gItem.CourseGradeId,
...@@ -572,7 +580,7 @@ ...@@ -572,7 +580,7 @@
}) })
return; return;
} }
if(!this.saveMsg.ChapterNo){ if (!this.saveMsg.ChapterNo) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -580,7 +588,7 @@ ...@@ -580,7 +588,7 @@
}) })
return; return;
} }
if(!this.saveMsg.TeacherId){ if (!this.saveMsg.TeacherId) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -644,7 +652,7 @@ ...@@ -644,7 +652,7 @@
GuestId: this.stuInfo.GuestId, GuestId: this.stuInfo.GuestId,
LearnCourseId: this.stuInfo.CourseId, LearnCourseId: this.stuInfo.CourseId,
CourseName: this.stuInfo.CourseName, CourseName: this.stuInfo.CourseName,
CourseChapterNoName: this.stuInfo.CourseChapterNoName, FinishChapterNoName: this.stuInfo.FinishChapterNoName,
AppointmentId: 0, AppointmentId: 0,
//学员消课编号 //学员消课编号
CourseChapterList: [], CourseChapterList: [],
...@@ -653,79 +661,87 @@ ...@@ -653,79 +661,87 @@
sObj.CourseGradeNo = ""; sObj.CourseGradeNo = "";
// 对比是否存在改学员 // 对比是否存在改学员
if(this.saveMsg.ChooseStuList.length>0){ if (this.saveMsg.ChooseStuList.length > 0) {
let ArrId = this.saveMsg.ChooseStuList.map(item=>{return item.GuestId}) let ArrId = this.saveMsg.ChooseStuList.map(item => {
if(ArrId.indexOf(sObj.GuestId)==-1){ return item.GuestId
})
if (ArrId.indexOf(sObj.GuestId) == -1) {
this.getCourseChapterList(sObj); this.getCourseChapterList(sObj);
this.saveMsg.ChooseStuList.push(sObj); this.saveMsg.ChooseStuList.push(sObj);
}else{ } else {
this.$q.notify({ this.$q.notify({
message: "该学员已选择,试试别的学员吧", message: "该学员已选择,试试别的学员吧",
position: "top", position: "top",
type: "negative" type: "negative"
}); });
} }
}else{ } else {
this.getCourseChapterList(sObj); this.getCourseChapterList(sObj);
this.saveMsg.ChooseStuList.push(sObj); this.saveMsg.ChooseStuList.push(sObj);
} }
}, },
//保存约课 //保存约课
SaveStuAppointment() { SaveStuAppointment() {
this.$refs.CourseId.validate(); // this.$refs.CourseId.validate();
this.$refs.StuId.validate(); // this.$refs.StuId.validate();
if (!this.saveMsg.CourseId) { // if (!this.saveMsg.CourseId) {
this.$q.notify({ // this.$q.notify({
type: 'negative', // type: 'negative',
position: "top", // position: "top",
message: `请选择课程` // message: `请选择课程`
}) // })
return; // return;
} // }
if(!this.saveMsg.ChapterNo){ // if(!this.saveMsg.ChapterNo){
this.$q.notify({ // this.$q.notify({
type: 'negative', // type: 'negative',
position: "top", // position: "top",
message: `请选择章节` // message: `请选择章节`
}) // })
return; // return;
// }
// if(!this.saveMsg.TeacherId){
// this.$q.notify({
// type: 'negative',
// position: "top",
// message: `请选择老师`
// })
// return;
// }
// if (this.courseCheckList.length === 0) {
// this.$q.notify({
// message: "请选择上课时段",
// position: "top",
// type: "negative"
// });
// return;
// }
// if(this.saveMsg.ChooseStuList.length===0){
// this.$q.notify({
// message: "请添加学员",
// position: "top",
// type: "negative"
// });
// return;
// }
var tipStr = ""
if (this.saveMsg.ChooseStuList && this.saveMsg.ChooseStuList.length > 0) {
this.saveMsg.ChooseStuList.forEach(item => {
if (item.CourseGradeNo == '' || !item.CourseGradeNo) {
tipStr += "请选择【" + item.StuName + "】消课编号;";
} }
if(!this.saveMsg.TeacherId){
this.$q.notify({
type: 'negative',
position: "top",
message: `请选择老师`
}) })
return;
} }
if (this.courseCheckList.length === 0) { if (tipStr != '') {
this.$q.notify({
message: "请选择上课时段",
position: "top",
type: "negative"
});
return;
}
if(this.saveMsg.ChooseStuList.length===0){
this.$q.notify({ this.$q.notify({
message: "请添加学员", message: tipStr,
position: "top",
type: "negative"
});
return;
}
// 检查消课编号是否选择
let ArrCourseGradeNo = this.saveMsg.ChooseStuList.map(item=>{
return item.CourseGradeNo
})
if(ArrCourseGradeNo.indexOf('')!=-1){
this.$q.notify({
message: "请选择消课编号",
position: "top", position: "top",
type: "negative" type: "negative"
}); });
return; return;
} }
this.addLoading = true; this.addLoading = true;
setAdminScrollAppointment_V3(this.saveMsg) setAdminScrollAppointment_V3(this.saveMsg)
.then(res => { .then(res => {
...@@ -821,15 +837,18 @@ ...@@ -821,15 +837,18 @@
.timeItem { .timeItem {
margin: 10px 0; margin: 10px 0;
} }
.table{
.table {
border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0;
background: rgba(0, 0, 0, 0.05); background: rgba(0, 0, 0, 0.05);
overflow: hidden; overflow: hidden;
} }
.thead{
.thead {
background: rgba(0, 0, 0, 0.09); background: rgba(0, 0, 0, 0.09);
} }
.thead tr th{
.thead tr th {
padding: 10px 0; padding: 10px 0;
} }
</style> </style>
\ No newline at end of file
...@@ -193,7 +193,6 @@ export default { ...@@ -193,7 +193,6 @@ export default {
}, },
mounted() { mounted() {
this.currentMenu = this.menulist[0].id.toString(); this.currentMenu = this.menulist[0].id.toString();
//console.log(this.todoTipList);
}, },
methods: {} methods: {}
}; };
......
<template> <template>
<div class="full-height"> <div class="full-height">
<div class="row items-center"> <div class="row items-center">
<q-avatar <q-avatar size="40px" font-size="20px" color="primary" class="q-mr-md" text-color="white" rounded
size="40px" :icon="`iconfont ${node.icon}`" />
font-size="20px"
color="primary"
class="q-mr-md"
text-color="white"
rounded
:icon="`iconfont ${node.icon}`"
/>
<div class="pingfang text-subtitle1">{{ node.name }}</div> <div class="pingfang text-subtitle1">{{ node.name }}</div>
</div> </div>
<div class="q-my-md row"> <div class="q-my-md row">
<q-input <q-input standout v-model="msg.KeyWords" dense type="text" style="width:250px;" label="关键字(名称/微信/手机号)"
standout class="q-mr-md" />
v-model="msg.KeyWords" <q-btn color="primary" class="q-px-md" label="查询" unelevated dense @click="searchKeyHandler" />
dense
type="text"
style="width:250px;"
label="关键字(名称/微信/手机号)"
class="q-mr-md"
/>
<q-btn
color="primary"
class="q-px-md"
label="查询"
unelevated
dense
@click="searchKeyHandler"
/>
<div class="col text-right text-grey-6 f12"> <div class="col text-right text-grey-6 f12">
TIPS:创建订单后,请及时完成订单款项的入账动作,收款单据点击“修改-选择学员-制单”完成此项任务。 TIPS:创建订单后,请及时完成订单款项的入账动作,收款单据点击“修改-选择学员-制单”完成此项任务。
</div> </div>
</div> </div>
<div style="height:calc(100% - 158px);overflow-y:auto;"> <div style="height:calc(100% - 158px);overflow-y:auto;">
<orderlist <orderlist :dataList="stus" @success="refreshPage" :loading="loading" :authObj="authObj"></orderlist>
:dataList="stus"
@success="refreshPage"
:loading="loading"
:authObj="authObj"
></orderlist>
</div> </div>
<div class="row" style="justify-content: flex-end;padding: 5px 20px"> <div class="row" style="justify-content: flex-end;padding: 5px 20px">
<q-pagination <q-pagination v-model="msg.PageIndex" :max="pageCount" @input="changePage" class="full-width justify-end"
v-model="msg.PageIndex" color="primary" :input="true">
:max="pageCount"
@input="changePage"
class="full-width justify-end"
color="primary"
:input="true"
>
</q-pagination> </q-pagination>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import orderlist from "../sale/orderlist.vue"; import orderlist from "../sale/orderlist.vue";
import { getMyOrderNotBalance } from "../../api/stuMan/index"; import {
export default { getMyOrderNotBalance
components: { orderlist }, } from "../../api/stuMan/index";
export default {
components: {
orderlist
},
props: ["node"], props: ["node"],
data() { data() {
return { return {
...@@ -97,7 +69,6 @@ export default { ...@@ -97,7 +69,6 @@ export default {
.then(r => { .then(r => {
this.stus = r.Data.PageData; this.stus = r.Data.PageData;
this.pageCount = r.Data.PageCount; this.pageCount = r.Data.PageCount;
console.log(this.stus);
setTimeout(() => { setTimeout(() => {
this.loading = false; this.loading = false;
}, 1000); }, 1000);
...@@ -118,7 +89,7 @@ export default { ...@@ -118,7 +89,7 @@ export default {
this.getStudent(); this.getStudent();
} }
} }
}; };
</script> </script>
<style>
<style></style> </style>
\ No newline at end of file
...@@ -225,7 +225,6 @@ export default { ...@@ -225,7 +225,6 @@ export default {
methods: { methods: {
initTodoList() { initTodoList() {
getTodayStatic().then(r => { getTodayStatic().then(r => {
console.log(r);
let d = r.Data; let d = r.Data;
this.todoList.result = d; this.todoList.result = d;
let tempCount = 0; let tempCount = 0;
......
<template> <template>
<div class="page-body room-list" v-loading="loading"> <div class="page-body room-list" v-loading="loading">
<div v-for="(item, i) in classdata" :key="item.Key"> <div v-for="(item, i) in classdata" :key="item.Key">
<template <template v-if="
v-if="
item.SchoolName.indexOf('武侯') == -1 && item.SchoolName.indexOf('武侯') == -1 &&
item.SchoolName.indexOf('眉山') == -1 item.SchoolName.indexOf('眉山') == -1
" ">
>
<div class="row items-center"> <div class="row items-center">
<div class="text-h6 col">{{ item.SchoolName }}</div> <div class="text-h6 col">{{ item.SchoolName }}</div>
<div v-if="i == 0" class="f12">只看在线:</div> <div v-if="i == 0" class="f12">只看在线:</div>
<div v-if="i == 0"> <div v-if="i == 0">
<el-switch <el-switch v-model="queryStatus" @change="changeViewStatusHandler"></el-switch>
v-model="queryStatus"
@change="changeViewStatusHandler"
></el-switch>
</div> </div>
</div> </div>
<div class="q-mt-md q-mb-lg row"> <div class="q-mt-md q-mb-lg row">
<template v-for="(x, xi) in item.RoomList"> <template v-for="(x, xi) in item.RoomList">
<div <div class="class-room" style="width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
class="class-room" v-if="queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)" :key="xi">
style="width:calc(20% - 10px);margin-right:10px;margin-bottom:10px;"
v-if="queryStatus == 0 || (queryStatus == 1 && x.StatusInfo)"
:key="xi"
>
<div class="img-box"> <div class="img-box">
<q-img <q-img :src="x.RoomPicList[0]" height="100%" fit="fill" spinner-color="primary" spinner-size="30px"
:src="x.RoomPicList[0]" v-if="x.RoomPicList && x.RoomPicList.length > 0" />
height="100%" <q-img src="../../assets/images/classroom/bg-img.jpg" fit="fill" height="100%" spinner-color="primary"
fit="fill" spinner-size="30px" v-else />
spinner-color="primary"
spinner-size="30px"
v-if="x.RoomPicList && x.RoomPicList.length > 0"
/>
<q-img
src="../../assets/images/classroom/bg-img.jpg"
fit="fill"
height="100%"
spinner-color="primary"
spinner-size="30px"
v-else
/>
</div> </div>
<div class="xuhua"></div> <div class="xuhua"></div>
<div class="q-pa-md"> <div class="q-pa-md">
...@@ -58,37 +37,19 @@ ...@@ -58,37 +37,19 @@
</div> </div>
<div class="q-mt-lg f12 row items-center"> <div class="q-mt-lg f12 row items-center">
<div class="text-grey-6 f12 col"> <div class="text-grey-6 f12 col">
<span <span class="q-px-xs text-white q-mr-md inline-block text-weight-bold"
class="q-px-xs text-white q-mr-md inline-block text-weight-bold" style="border-radius:4px;font-size:15;" :class="{
style="border-radius:4px;font-size:15;"
:class="{
'bg-grey-3': !x.StatusInfo, 'bg-grey-3': !x.StatusInfo,
'bg-negative': x.StatusInfo 'bg-negative': x.StatusInfo
}" }">
>
LIVE LIVE
</span> </span>
<span class="text-grey-6" v-if="!x.StatusInfo" <span class="text-grey-6" v-if="!x.StatusInfo">设备离线</span>
>设备离线</span <span class="text-grey-6" v-else-if="x.StatusInfo.UnLockUserName == 'lock'">设备在线,未解锁</span>
> <span class="text-grey-6" v-else>{{ x.StatusInfo.UnLockUserName }}正在使用</span>
<span
class="text-grey-6"
v-else-if="x.StatusInfo.UnLockUserName == 'lock'"
>设备在线,未解锁</span
>
<span class="text-grey-6" v-else
>{{ x.StatusInfo.UnLockUserName }}正在使用</span
>
</div> </div>
<div v-if="x.StatusInfo"> <div v-if="x.StatusInfo">
<q-btn <q-btn color="primary" dense class="f12" flat label="链接" @click="openVideo(x)" />
color="primary"
dense
class="f12"
flat
label="链接"
@click="openVideo(x)"
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -98,24 +59,20 @@ ...@@ -98,24 +59,20 @@
</template> </template>
</div> </div>
<q-dialog v-model="showVideo" @hide="clearVideo"> <q-dialog v-model="showVideo" @hide="clearVideo">
<q-card <q-card class="my-card"
class="my-card" style="width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;" flat>
style="width:64vw !important;max-width:64vw !important;max-height:32vw !important;height:32vw !important;" <div id="player-con" style="width:100%;height:100%;overflow:hidden;"></div>
flat
>
<div
id="player-con"
style="width:100%;height:100%;overflow:hidden;"
></div>
</q-card> </q-card>
</q-dialog> </q-dialog>
</div> </div>
</template> </template>
<script> <script>
import { getUseClassRoomList } from "../../api/classroom/index"; import {
import * as signalR from "@aspnet/signalr"; getUseClassRoomList
export default { } from "../../api/classroom/index";
import * as signalR from "@aspnet/signalr";
export default {
meta: { meta: {
title: "教室状态" title: "教室状态"
}, },
...@@ -135,7 +92,6 @@ export default { ...@@ -135,7 +92,6 @@ export default {
created() { created() {
let thisVue = this; let thisVue = this;
console.log(process.env.API_SIG);
this.connection = new signalR.HubConnectionBuilder() this.connection = new signalR.HubConnectionBuilder()
.withUrl(process.env.API_SIG, { .withUrl(process.env.API_SIG, {
skipNegotiation: true, skipNegotiation: true,
...@@ -143,9 +99,8 @@ export default { ...@@ -143,9 +99,8 @@ export default {
}) })
.configureLogging(signalR.LogLevel.Information) .configureLogging(signalR.LogLevel.Information)
.build(); .build();
this.connection.on("RoomStatusChange", function(message) { this.connection.on("RoomStatusChange", function (message) {
thisVue.roomStatusList = JSON.parse(message); thisVue.roomStatusList = JSON.parse(message);
console.log(thisVue.roomStatusList);
thisVue.changeStatus(); thisVue.changeStatus();
}); });
this.connection.onclose(async () => { this.connection.onclose(async () => {
...@@ -176,8 +131,7 @@ export default { ...@@ -176,8 +131,7 @@ export default {
}); });
}, },
initPlayer(url) { initPlayer(url) {
this.player = new Aliplayer( this.player = new Aliplayer({
{
id: "player-con", id: "player-con",
source: url, source: url,
width: "100%", width: "100%",
...@@ -190,7 +144,7 @@ export default { ...@@ -190,7 +144,7 @@ export default {
controlBarVisibility: "hover", controlBarVisibility: "hover",
useH5Prism: true useH5Prism: true
}, },
function(player) {} function (player) {}
); );
}, },
changeStatus() { changeStatus() {
...@@ -225,11 +179,9 @@ export default { ...@@ -225,11 +179,9 @@ export default {
this.connection this.connection
.start() .start()
.then(() => { .then(() => {
console.log("linke success");
thatVue.connection.invoke("RegistErp", "IMERP"); thatVue.connection.invoke("RegistErp", "IMERP");
}) })
.catch(e => { .catch(e => {
console.log(e);
setTimeout(() => { setTimeout(() => {
thatVue.linkHub(); thatVue.linkHub();
}, 3000); }, 3000);
...@@ -263,35 +215,39 @@ export default { ...@@ -263,35 +215,39 @@ export default {
}); });
} }
} }
}; };
</script> </script>
<style> <style>
.class-room { .class-room {
border: 1px solid #f5f5f5; border: 1px solid #f5f5f5;
border-radius: 10px; border-radius: 10px;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
} }
.class-room .img-box {
.class-room .img-box {
height: 80px; height: 80px;
} }
.class-room .xuhua {
.class-room .xuhua {
position: absolute; position: absolute;
top: 0; top: 0;
height: 80px; height: 80px;
left: 0; left: 0;
right: 0; right: 0;
backdrop-filter: blur(4px); backdrop-filter: blur(4px);
} }
.class-room:hover .xuhua {
.class-room:hover .xuhua {
backdrop-filter: none; backdrop-filter: none;
} }
.no-data {
.no-data {
height: 75px; height: 75px;
font-size: 14px; font-size: 14px;
color: #000000; color: #000000;
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
</style> </style>
\ No newline at end of file
...@@ -4,17 +4,23 @@ ...@@ -4,17 +4,23 @@
padding: 18px 0 0 16px; padding: 18px 0 0 16px;
text-align: right; text-align: right;
} }
.cycleOrderList .border-bottom { .cycleOrderList .border-bottom {
/* border-bottom: 1px dashed #EEE; */ /* border-bottom: 1px dashed #EEE; */
padding-bottom: 5px; padding-bottom: 5px;
margin-bottom: 5px; margin-bottom: 5px;
} }
.cycleOrderList .text-bottom{
height: 32px;line-height: 32px; margin-bottom: 10px; .cycleOrderList .text-bottom {
height: 32px;
line-height: 32px;
margin-bottom: 10px;
} }
.cycleOrderList ._icon_btn i.icon-sousuo { .cycleOrderList ._icon_btn i.icon-sousuo {
background-color: #47BF8C; background-color: #47BF8C;
} }
.cycleOrderList ._icon_btn i { .cycleOrderList ._icon_btn i {
width: 30px; width: 30px;
height: 30px; height: 30px;
...@@ -27,28 +33,28 @@ ...@@ -27,28 +33,28 @@
cursor: pointer; cursor: pointer;
outline: none; outline: none;
} }
.cycleOrderList .el-table td,.el-table th{
.cycleOrderList .el-table td,
.el-table th {
padding: 5px 0; padding: 5px 0;
} }
</style>
</style>
<template> <template>
<div class="page-body cycleOrderList"> <div class="page-body cycleOrderList">
<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-select filled stack-label @input="getDepartList(msg.School_Id),resetSearch()" option-value="SId" <q-select filled stack-label @input="getDepartList(msg.School_Id),resetSearch()" option-value="SId"
option-label="SName" v-model="msg.School_Id" ref="School_Id" :options="schoolList" label="校区" option-label="SName" v-model="msg.School_Id" ref="School_Id" :options="schoolList" label="校区" :dense="false"
:dense="false" emit-value map-options /> emit-value map-options />
</div> </div>
<div class="col-3"> <div class="col-3">
<selectTree :treeData='DeptList' :defaultArray="returnString" nodeKey="DeptId" :multiple="false" <selectTree :treeData='DeptList' :defaultArray="returnString" nodeKey="DeptId" :multiple="false"
labelKey="DeptName" childrenKey="ChildList" tipText="选择部门" @getChild="getChild"></selectTree> labelKey="DeptName" childrenKey="ChildList" tipText="选择部门" @getChild="getChild"></selectTree>
</div> </div>
<q-select @input="resetSearch" filled stack-label option-value="Id" option-label="EmployeeName" use-input <q-select @input="resetSearch" filled stack-label option-value="Id" option-label="EmployeeName" use-input
v-model="msg.UserId" ref="DeptTier" :options="PersionList" label="销售" :dense="false" v-model="msg.UserId" ref="DeptTier" :options="PersionList" label="销售" :dense="false" class="col-3 " emit-value
class="col-3 " emit-value map-options @filter="filterFn2" > map-options @filter="filterFn2">
<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">
...@@ -59,8 +65,8 @@ ...@@ -59,8 +65,8 @@
</q-select> </q-select>
<div class="col-3"> <div class="col-3">
<q-select filled stack-label use-input input-debounce="0" option-value="ClassId" @input="getList" <q-select filled stack-label use-input input-debounce="0" option-value="ClassId" @input="getList"
option-label="ClassName" v-model="msg.ClassId" :options="ClassList" label="班级" :dense="false" option-label="ClassName" v-model="msg.ClassId" :options="ClassList" label="班级" :dense="false" emit-value
emit-value map-options @filter="filterFn"> map-options @filter="filterFn">
<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">
...@@ -70,81 +76,74 @@ ...@@ -70,81 +76,74 @@
</template> </template>
</q-select> </q-select>
</div> </div>
</div> </div>
</div> </div>
<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-select filled stack-label @input="resetSearch()" option-value="Id" <q-select filled stack-label @input="resetSearch()" option-value="Id" option-label="Name"
option-label="Name" v-model="msg.PeriodId" :options="PeriodsList" label="周期" v-model="msg.PeriodId" :options="PeriodsList" label="周期" :dense="false" emit-value map-options />
:dense="false" emit-value map-options />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input filled v-model="msg.OrderId" @keyup.enter.native="resetSearch()" label="订单号" /> <q-input filled v-model="msg.OrderId" @keyup.enter.native="resetSearch()" label="订单号" />
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()" <q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()" option-label="Name"
option-label="Name" v-model="msg.UserType" :options="UserTypeList" label="类型" :dense="false" emit-value v-model="msg.UserType" :options="UserTypeList" label="类型" :dense="false" emit-value map-options>
map-options >
</q-select> </q-select>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()" <q-select filled stack-label input-debounce="0" option-value="Id" @input="resetSearch()" option-label="Name"
option-label="Name" v-model="msg.IsDept" :options="IsDeptList" label="业绩方式" :dense="false" emit-value v-model="msg.IsDept" :options="IsDeptList" label="业绩方式" :dense="false" emit-value map-options>
map-options >
</q-select> </q-select>
</div> </div>
</div> </div>
</div> </div>
<div class="page-search row items-center" style="justify-content: space-between;"> <div class="page-search row items-center" style="justify-content: space-between;">
<span style="font-size: 20px;font-weight: 400;">提成统计 <span style="font-size: 16px;">(提成总计:{{TotalCommission}})</span> </span> <span style="font-size: 20px;font-weight: 400;">提成统计 <span
<q-btn  color="primary" size="11px" label="导出" @click="tcexport" style="margin-left:10px"/> style="font-size: 16px;">(提成总计:{{TotalCommission}})</span> </span>
<q-btn  color="primary"  size="11px"  label="导出"  @click="tcexport"  style="margin-left:10px" />
</div> </div>
<template > <template>
<el-table <el-table ref="filterTable" :data="tableData" v-loading='loading'
ref="filterTable" :header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}" border style="width: 100%">
:data="tableData" <el-table-column prop="SchoolName" label="校区" width='150'></el-table-column>
v-loading = 'loading' <el-table-column prop="DeptName" label="部门"></el-table-column>
<el-table-column prop="UserType" label="类型">
:header-cell-style="{backgroundColor:'#f5f6f7', color: '#a8a8b3'}"
border
style="width: 100%">
<el-table-column prop="SchoolName" label="校区" width='150' ></el-table-column>
<el-table-column prop="DeptName" label="部门" ></el-table-column>
<el-table-column prop="UserType" label="类型" >
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.UserType==1">市场</span> <span v-if="scope.row.UserType==1">市场</span>
<span v-if="scope.row.UserType==2">顾问</span> <span v-if="scope.row.UserType==2">顾问</span>
<span v-if="scope.row.UserType==3">教师</span> <span v-if="scope.row.UserType==3">教师</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="UserName" label="人员" > </el-table-column> <el-table-column prop="UserName" label="人员"> </el-table-column>
<el-table-column prop="IsDept" label="业绩方式" > <el-table-column prop="IsDept" label="业绩方式">
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="scope.row.IsDept==1">部门</span> <span v-if="scope.row.IsDept==1">部门</span>
<span v-if="scope.row.IsDept==2">个人</span> <span v-if="scope.row.IsDept==2">个人</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width='170' prop="ClassName" label="班级信息" > <el-table-column width='170' prop="ClassName" label="班级信息">
<template slot-scope="scope"> <template slot-scope="scope">
<div><span style="cursor: pointer;text-decoration: underline;" @click="goUrlclass('/course/classManage',scope.row.ClassName)">{{scope.row.ClassName}}</span> {{scope.row.ClassTypeName}}<span style="color: #409EFF;" v-if='scope.row.IsContinueClass==1'>(续)</span></div> <div><span style="cursor: pointer;text-decoration: underline;"
@click="goUrlclass('/course/classManage',scope.row.ClassName)">{{scope.row.ClassName}}</span>
{{scope.row.ClassTypeName}}<span style="color: #409EFF;" v-if='scope.row.IsContinueClass==1'>(续)</span>
</div>
<div>学生数量:{{scope.row.StudentCount}}</div> <div>学生数量:{{scope.row.StudentCount}}</div>
<div>班号:{{scope.row.ClassNo}}</div> <div>班号:{{scope.row.ClassNo}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="OrderId" label="订单号" > <el-table-column prop="OrderId" label="订单号">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="cursor: pointer;text-decoration: underline;" @click="goUrlorderList(scope.row.ClassType == -1 ?'/sale/studyOrderStatistics' : '/sale/orderStatistics',scope.row)">{{scope.row.OrderId}} </div> <div style="cursor: pointer;text-decoration: underline;"
@click="goUrlorderList(scope.row.ClassType == -1 ?'/sale/studyOrderStatistics' : '/sale/orderStatistics',scope.row)">
{{scope.row.OrderId}} </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width='130' prop="TotalCommissionMoney" label="订单发放信息"> <el-table-column width='130' prop="TotalCommissionMoney" label="订单发放信息">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="color: rgb(255, 156, 0);cursor: pointer;text-decoration: underline;" @click="getmingxi(scope.row)"> <div style="color: rgb(255, 156, 0);cursor: pointer;text-decoration: underline;"
@click="getmingxi(scope.row)">
应发:{{scope.row.TotalCommissionMoney}} 应发:{{scope.row.TotalCommissionMoney}}
<q-popup-proxy transition-show="flip-up" transition-hide="flip-down"> <q-popup-proxy transition-show="flip-up" transition-hide="flip-down">
<div style="padding: 10px;border-radius: 4px;background: #FFF;max-width: 500px;"> <div style="padding: 10px;border-radius: 4px;background: #FFF;max-width: 500px;">
...@@ -154,7 +153,6 @@ ...@@ -154,7 +153,6 @@
</div> </div>
<div>累计已发:{{scope.row.GiveOutMoney}}</div> <div>累计已发:{{scope.row.GiveOutMoney}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="IsFirstCommission" label="首次发放"> <el-table-column prop="IsFirstCommission" label="首次发放">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -168,34 +166,29 @@ ...@@ -168,34 +166,29 @@
<div>当期课时:{{scope.row.CurrentHours>=0 ?scope.row.CurrentHours:'-'}}</div> <div>当期课时:{{scope.row.CurrentHours>=0 ?scope.row.CurrentHours:'-'}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width='160' prop="CurrentPeriodMoney" label="当期发放信息"> <el-table-column width='160' prop="CurrentPeriodMoney" label="当期发放信息">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="color: rgb(255, 156, 0);">应发:{{scope.row.CurrentPeriodMoney}}</div> <div style="color: rgb(255, 156, 0);">应发:{{scope.row.CurrentPeriodMoney}}</div>
<div>抵扣:{{scope.row.DeductionMoney}}</div> <div>抵扣:{{scope.row.DeductionMoney}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="YFMoney" label="最终发放"> <el-table-column prop="YFMoney" label="最终发放">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="color: rgb(233, 82, 82);">{{scope.row.YFMoney}}</div> <div style="color: rgb(233, 82, 82);">{{scope.row.YFMoney}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column width='85' prop="Periods" label="期数"> </el-table-column> <el-table-column width='85' prop="Periods" label="期数"> </el-table-column>
<el-table-column prop="Remark" width='160' label="备注"> </el-table-column> <el-table-column prop="Remark" width='160' label="备注"> </el-table-column>
</el-table> </el-table>
<div style="margin-top: 10px;text-align: center;"> <div style="margin-top: 10px;text-align: center;">
<el-pagination background @current-change="handleCurrentChanges" layout="total,prev, pager, next, jumper" :current-page.sync="msg.PageIndex" <el-pagination background @current-change="handleCurrentChanges" layout="total,prev, pager, next, jumper"
:page-size="msg.PageSize" :total='total'> :current-page.sync="msg.PageIndex" :page-size="msg.PageSize" :total='total'>
</el-pagination> </el-pagination>
</div> </div>
</template> </template>
</div> </div>
</template> </template>
<script> <script>
import { import {
getSchoolDropdown getSchoolDropdown
} from '../../../api/school/index' } from '../../../api/school/index'
...@@ -206,7 +199,7 @@ ...@@ -206,7 +199,7 @@
getDeptTree getDeptTree
} from '../../../api/system/dept.js' } from '../../../api/system/dept.js'
import{ import {
getSellAchievementsStatistics, getSellAchievementsStatistics,
getSellAchievementsPeriodsList, getSellAchievementsPeriodsList,
getSellAchievementsChangeLog getSellAchievementsChangeLog
...@@ -218,7 +211,9 @@ ...@@ -218,7 +211,9 @@
import { import {
EduDownLoad, EduDownLoad,
} from '../../../api/common/common'; } from '../../../api/common/common';
import { number } from 'echarts' import {
number
} from 'echarts'
export default { export default {
meta: { meta: {
title: "业绩提成统计" title: "业绩提成统计"
...@@ -232,100 +227,112 @@ import { number } from 'echarts' ...@@ -232,100 +227,112 @@ import { number } from 'echarts'
loading: false, loading: false,
//列表数据参数 //列表数据参数
msg: { msg: {
PageIndex:1, PageIndex: 1,
PageSize:10, PageSize: 10,
School_Id:'-1', School_Id: '-1',
Depart_Id:0, Depart_Id: 0,
PeriodId: 0, PeriodId: 0,
UserId: 0, UserId: 0,
ClassId:0, ClassId: 0,
OrderId:'', OrderId: '',
UserType:0,//类型 1市场、2顾问、3教师 UserType: 0, //类型 1市场、2顾问、3教师
IsDept:0,//业绩方式 1部门 2个人 IsDept: 0, //业绩方式 1部门 2个人
}, },
UserTypeList:[{Id:0,Name:'不限'},{Id:1,Name:'市场'},{Id:2,Name:'顾问'},{Id:3,Name:'教师'},], UserTypeList: [{
IsDeptList:[{Id:0,Name:'不限'},{Id:1,Name:'部门'},{Id:2,Name:'个人'}], Id: 0,
Name: '不限'
}, {
Id: 1,
Name: '市场'
}, {
Id: 2,
Name: '顾问'
}, {
Id: 3,
Name: '教师'
}, ],
IsDeptList: [{
Id: 0,
Name: '不限'
}, {
Id: 1,
Name: '部门'
}, {
Id: 2,
Name: '个人'
}],
pageCount: 0, pageCount: 0,
persistent: false, persistent: false,
listData:{}, listData: {},
tableData:[], tableData: [],
total:0, total: 0,
company:[], company: [],
department:[], department: [],
ClassList:[], ClassList: [],
allClassList:[], allClassList: [],
returnString: [], //默认岗位 returnString: [], //默认岗位
see_tcdetailed:false, see_tcdetailed: false,
schoolList:[], schoolList: [],
DeptList: [], // 部门下拉 DeptList: [], // 部门下拉
PersionList: [], //员工列表 PersionList: [], //员工列表
AllemployeeList: [], //所有员工 AllemployeeList: [], //所有员工
PeriodsList:[],//周期列表 PeriodsList: [], //周期列表
TotalCommission:0, TotalCommission: 0,
ChangeLog:'', ChangeLog: '',
} }
}, },
created() { created() {
let userinfo = this.getLocalStorage(); let userinfo = this.getLocalStorage();
userinfo.ActionMenuList.map(x=>{//判断权限 userinfo.ActionMenuList.map(x => { //判断权限
if(x.FunctionCode == "see_tcdetailed"){//判断是否可以查看其他明细 if (x.FunctionCode == "see_tcdetailed") { //判断是否可以查看其他明细
this.see_tcdetailed = true; this.see_tcdetailed = true;
} }
}) })
if(this.see_tcdetailed == false){ if (this.see_tcdetailed == false) {
this.msg.UserId = userinfo.Id this.msg.UserId = userinfo.Id
} }
}, },
mounted() { mounted() {
if(this.$route.query && this.$route.query.OrderId){ if (this.$route.query && this.$route.query.OrderId) {
this.msg.OrderId = this.$route.query.OrderId this.msg.OrderId = this.$route.query.OrderId
} }
// 从业绩表跳转带参 // 从业绩表跳转带参
if(this.$route.query && this.$route.query.UserId){ if (this.$route.query && this.$route.query.UserId) {
this.PersionList = JSON.parse(JSON.stringify(this.AllemployeeList)) this.PersionList = JSON.parse(JSON.stringify(this.AllemployeeList))
this.msg.UserId = this.$route.query.UserId - 0 this.msg.UserId = this.$route.query.UserId - 0
} }
this.getList() this.getList()
this.getEmployee();//销售 this.getEmployee(); //销售
this.getPeriodList()//周期 this.getPeriodList() //周期
this.setClass()//班级 this.setClass() //班级
this.getBranchList()//校区 this.getBranchList() //校区
this.getDepartList(0); this.getDepartList(0);
}, },
methods: { methods: {
resetSearch() { resetSearch() {
this.msg.PageIndex = 1; this.msg.PageIndex = 1;
this.getList() this.getList()
}, },
getList(){ getList() {
console.log(this.msg, '02222222222') if (this.msg)
if(this.msg)
this.loading = true; this.loading = true;
getSellAchievementsStatistics(this.msg).then(res => { getSellAchievementsStatistics(this.msg).then(res => {
if (res.Code == 1) {
this.loading = false; this.loading = false;
if (res.Code == 1) {
this.tableData = res.Data.PageData.List this.tableData = res.Data.PageData.List
this.TotalCommission = res.Data.PageData.TotalCommission this.TotalCommission = res.Data.PageData.TotalCommission
this.total = res.Data.Count this.total = res.Data.Count
} }
}) })
}, },
unique(arr,Name){//数组去重 unique(arr, Name) { //数组去重
const res = new Map(); const res = new Map();
return arr.filter( return arr.filter(
(list) => !res.has(list.text) && res.set(list.text, 1) (list) => !res.has(list.text) && res.set(list.text, 1)
); );
}, },
handleCurrentChanges(val){ handleCurrentChanges(val) {
this.msg.PageIndex= val; this.msg.PageIndex = val;
this.getList() this.getList()
}, },
//选择班级 //选择班级
...@@ -338,8 +345,8 @@ import { number } from 'echarts' ...@@ -338,8 +345,8 @@ import { number } from 'echarts'
if (res.Code == 1) { if (res.Code == 1) {
var jsonData = res.Data; var jsonData = res.Data;
let obj = { let obj = {
ClassId:0, ClassId: 0,
ClassName:'不限' ClassName: '不限'
} }
jsonData.unshift(obj) jsonData.unshift(obj)
if (jsonData && jsonData.length > 0) { if (jsonData && jsonData.length > 0) {
...@@ -360,7 +367,7 @@ import { number } from 'echarts' ...@@ -360,7 +367,7 @@ import { number } from 'echarts'
} }
}) })
}, },
getBranchList(){//获取校区 getBranchList() { //获取校区
getSchoolDropdown({}).then(res => { getSchoolDropdown({}).then(res => {
this.schoolList = res.Data; this.schoolList = res.Data;
var obj = { var obj = {
...@@ -374,7 +381,7 @@ import { number } from 'echarts' ...@@ -374,7 +381,7 @@ import { number } from 'echarts'
}, },
//获取部门下拉数据 //获取部门下拉数据
getDepartList(id) { getDepartList(id) {
if(id==-1){ if (id == -1) {
id = 0 id = 0
} }
let msg = { let msg = {
...@@ -429,7 +436,7 @@ import { number } from 'echarts' ...@@ -429,7 +436,7 @@ import { number } from 'echarts'
} }
}) })
}, },
getPeriodList(){//获取周期下拉列表 getPeriodList() { //获取周期下拉列表
getSellAchievementsPeriodsList({}).then(res => { getSellAchievementsPeriodsList({}).then(res => {
if (res.Code == 1) { if (res.Code == 1) {
this.PeriodsList = res.Data this.PeriodsList = res.Data
...@@ -439,9 +446,9 @@ import { number } from 'echarts' ...@@ -439,9 +446,9 @@ import { number } from 'echarts'
} }
this.PeriodsList.unshift(obj) this.PeriodsList.unshift(obj)
// 从业绩表跳转带参 // 从业绩表跳转带参
if(this.$route.query.Periods){ if (this.$route.query.Periods) {
this.PeriodsList.forEach(item=>{ this.PeriodsList.forEach(item => {
if(item.Periods==this.$route.query.Periods){ if (item.Periods == this.$route.query.Periods) {
this.msg.PeriodId = item.Id this.msg.PeriodId = item.Id
} }
}) })
...@@ -449,23 +456,22 @@ import { number } from 'echarts' ...@@ -449,23 +456,22 @@ import { number } from 'echarts'
} }
}) })
}, },
tcexport(){//导出 tcexport() { //导出
var msg = JSON.parse(JSON.stringify(this.msg)); var msg = JSON.parse(JSON.stringify(this.msg));
EduDownLoad("/SellAchievements/GetSellAchievementsStatisticsToExcel", msg, "业绩提成统计.xls") EduDownLoad("/SellAchievements/GetSellAchievementsStatisticsToExcel", msg, "业绩提成统计.xls")
}, },
goUrlclass(path,Names){//班级 goUrlclass(path, Names) { //班级
let Name = encodeURI(Names) let Name = encodeURI(Names)
this.OpenNewUrl(path, { this.OpenNewUrl(path, {
ClassName: Name, ClassName: Name,
}); });
}, },
goUrlorderList(path,row){//订单跳转 goUrlorderList(path, row) { //订单跳转
this.OpenNewUrl(path, { this.OpenNewUrl(path, {
OrderId: row.OrderId, OrderId: row.OrderId,
// EnterID:row.UserId
}); });
}, },
getmingxi(row){//明细 getmingxi(row) { //明细
getSellAchievementsChangeLog({ getSellAchievementsChangeLog({
OrderId: row.OrderId, OrderId: row.OrderId,
UserId: row.UserId, UserId: row.UserId,
...@@ -479,10 +485,7 @@ import { number } from 'echarts' ...@@ -479,10 +485,7 @@ import { number } from 'echarts'
} }
}, },
} }
</script>
</script> <style lang="sass">
<style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style>
</style> \ No newline at end of file
\ No newline at end of file
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<el-option :key="0" label="全部" :value="0"> </el-option> <el-option :key="0" label="全部" :value="0"> </el-option>
<el-option :key="1" label="跟班课" :value="1"> </el-option> <el-option :key="1" label="跟班课" :value="1"> </el-option>
<el-option :key="2" label="试听课" :value="2"> </el-option> <el-option :key="2" label="试听课" :value="2"> </el-option>
<el-option :key="2" label="预约课" :value="3"> </el-option> <el-option :key="3" label="预约课" :value="3"> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px"> <div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
类型: 类型:
</div> </div>
......
...@@ -2,8 +2,7 @@ ...@@ -2,8 +2,7 @@
<div class="page-body MainPlan xg"> <div class="page-body MainPlan xg">
<div class="col row wrap q-col-gutter-md"> <div class="col row wrap q-col-gutter-md">
<div class="col-2"> <div class="col-2">
<el-select v-model="msg.TeacherId" style="width: 100%" placeholder="教师" size="small" <el-select v-model="msg.TeacherId" style="width: 100%" placeholder="教师" size="small" @change="getTypeWay()">
@change="getTypeWay()">
<el-option v-for="item in TeacherList" :key="item.TeacherName" :label="item.TeacherName" :value="item.TId"> <el-option v-for="item in TeacherList" :key="item.TeacherName" :label="item.TeacherName" :value="item.TId">
</el-option> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px"> <div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
...@@ -36,13 +35,18 @@ ...@@ -36,13 +35,18 @@
<el-option :key="0" label="全部" :value="0"> </el-option> <el-option :key="0" label="全部" :value="0"> </el-option>
<el-option :key="1" label="跟班课" :value="1"> </el-option> <el-option :key="1" label="跟班课" :value="1"> </el-option>
<el-option :key="2" label="试听课" :value="2"> </el-option> <el-option :key="2" label="试听课" :value="2"> </el-option>
<el-option :key="2" label="预约课" :value="3"> </el-option> <el-option :key="3" label="预约课" :value="3"> </el-option>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px"> <div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
状态: 状态:
</div> </div>
</el-select> </el-select>
</div> </div>
<div class="col-2"> <div class="col-2">
<el-input v-model="msg.StuName" style="width: 100%" placeholder="学员姓名" size="small" @input="getTypeWay()" clearable>
<div slot="prefix" class="full-height flex items-center" style="color: #000; padding-right: 10px">
学员:
</div>
</el-input>
</div> </div>
</div> </div>
<teachTable v-if="commonType == 2" :tableData="tableData" :PageCount="PageCount" :setMsg="tabMsg" :showCZ="true" <teachTable v-if="commonType == 2" :tableData="tableData" :PageCount="PageCount" :setMsg="tabMsg" :showCZ="true"
...@@ -54,11 +58,13 @@ ...@@ -54,11 +58,13 @@
import { import {
getTeacherDropDownList, getTeacherDropDownList,
queryClassRoomList, queryClassRoomList,
getStudentDorpDownList,
} from "../../api/school/index"; } from "../../api/school/index";
import { import {
GetClassPlanStatistical, GetClassPlanStatistical,
GetClassPlanStatisticalPage, GetClassPlanStatisticalPage,
} from "../../api/teacher/index"; } from "../../api/teacher/index";
import classmateForm from "../../components/course/classmate-form"; import classmateForm from "../../components/course/classmate-form";
import teachTable from "../teacher/components/teachTable"; import teachTable from "../teacher/components/teachTable";
import changeClassForm from "../../components/teacher/changeClassForm.vue"; import changeClassForm from "../../components/teacher/changeClassForm.vue";
...@@ -81,13 +87,15 @@ ...@@ -81,13 +87,15 @@
TeacherId: 0, TeacherId: 0,
ClassRoomId: 0, ClassRoomId: 0,
dataList: {}, dataList: {},
loading:false, loading: false,
msg: { msg: {
StartTime: "", StartTime: "",
EndTime: "", EndTime: "",
TeacherId: 0, TeacherId: 0,
ClassRoomId: 0, ClassRoomId: 0,
ClassType: 0, ClassType: 0,
Student_Id: "",
StuName: "",
}, },
commonType: 2, //1日历模式 2列表模式 commonType: 2, //1日历模式 2列表模式
typeName: "列表模式", typeName: "列表模式",
...@@ -101,6 +109,7 @@ ...@@ -101,6 +109,7 @@
ClassRoomId: 0, ClassRoomId: 0,
ClassType: 0, ClassType: 0,
OrderBy: 1, OrderBy: 1,
StuName:"",
}, },
tableData: [], //表格数据 tableData: [], //表格数据
PageCount: 0, PageCount: 0,
...@@ -121,6 +130,7 @@ ...@@ -121,6 +130,7 @@
}, },
}, },
today: "", today: "",
StuList: [], //学员列表
}; };
}, },
created() { created() {
...@@ -148,6 +158,13 @@ ...@@ -148,6 +158,13 @@
this.getTableList(); this.getTableList();
}, },
methods: { methods: {
queryStuList() {
getStudentDorpDownList({}).then(res => {
if (res.Code == 1) {
this.StuList = res.Data;
}
});
},
refreshPage() { refreshPage() {
this.getPlanList(); this.getPlanList();
}, },
...@@ -212,10 +229,11 @@ ...@@ -212,10 +229,11 @@
this.tabMsg.EndTime = this.msg.EndTime; this.tabMsg.EndTime = this.msg.EndTime;
this.tabMsg.ClassRoomId = this.msg.ClassRoomId; this.tabMsg.ClassRoomId = this.msg.ClassRoomId;
this.tabMsg.ClassType = this.msg.ClassType; this.tabMsg.ClassType = this.msg.ClassType;
this.tabMsg.TeacherId=this.msg.TeacherId; this.tabMsg.TeacherId = this.msg.TeacherId;
this.loading=true; this.tabMsg.StuName=this.msg.StuName;
this.loading = true;
GetClassPlanStatisticalPage(this.tabMsg).then((res) => { GetClassPlanStatisticalPage(this.tabMsg).then((res) => {
this.loading=false; this.loading = false;
if (res.Code == 1) { if (res.Code == 1) {
this.tableData = res.Data.PageData; this.tableData = res.Data.PageData;
this.PageCount = res.Data.PageCount; this.PageCount = res.Data.PageCount;
...@@ -235,11 +253,9 @@ ...@@ -235,11 +253,9 @@
}, },
}, },
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.xg .el-input--prefix .el-input__inner { .xg .el-input--prefix .el-input__inner {
padding-left: 50px; padding-left: 50px;
} }
</style> </style>
\ No newline at end of file
<style> <style>
li { li {
list-style-type: none; list-style-type: none;
} }
.stuList ul { .stuList ul {
padding: 0px; padding: 0px;
} }
.stuList li { .stuList li {
background: rgba(221, 222, 224, 0.2); background: rgba(221, 222, 224, 0.2);
border-radius: 4px; border-radius: 4px;
margin-top: 15px; margin-top: 15px;
} }
.stuList li .dline { .stuList li .dline {
display: table; display: table;
width: 100%; width: 100%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
} }
.stuList li .d1, .stuList li .d1,
.stuList li .d2, .stuList li .d2,
.stuList li .d3, .stuList li .d3,
.stuList li .d4, .stuList li .d4,
.stuList li .d5 { .stuList li .d5 {
width: 18%; width: 18%;
padding: 20px 20px 10px; padding: 20px 20px 10px;
} }
.stuList li .d7 { .stuList li .d7 {
flex: 1; flex: 1;
width: 1px; width: 1px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.stuList li .d1 .di-title { .stuList li .d1 .di-title {
font-size: 16px; font-size: 16px;
color: #111111; color: #111111;
} }
.stuList li .d1 .di-c { .stuList li .d1 .di-c {
font-size: 14px; font-size: 14px;
display: flex; display: flex;
line-height: 28px; line-height: 28px;
color: #111111; color: #111111;
} }
.stuList li .d6 { .stuList li .d6 {
padding: 10px 20px; padding: 10px 20px;
width: 100%; width: 100%;
height: inherit; height: inherit;
position: relative; position: relative;
border-top: 1px solid #dddee0; border-top: 1px solid #dddee0;
} }
.stuList li .d6 .progress { .stuList li .d6 .progress {
width: 100%; width: 100%;
height: 5px; height: 5px;
position: absolute; position: absolute;
left: 0; left: 0;
bottom: 0; bottom: 0;
} }
.stuList li .d2 div { .stuList li .d2 div {
margin: 2px 0; margin: 2px 0;
font-size: 14px; font-size: 14px;
color: #111111; color: #111111;
} }
.stuList li .d2-n { .stuList li .d2-n {
font-size: 12px; font-size: 12px;
color: #999999; color: #999999;
margin-right: 20px; margin-right: 20px;
} }
.stuList li .d3 .d3-s { .stuList li .d3 .d3-s {
color: var(--q-color-negative); color: var(--q-color-negative);
font-weight: bold; font-weight: bold;
} }
.stuList li .d3 div { .stuList li .d3 div {
margin: 2px 0; margin: 2px 0;
font-size: 14px; font-size: 14px;
} }
.stuList li .d4 div { .stuList li .d4 div {
font-size: 14px; font-size: 14px;
color: #111111; color: #111111;
margin: 2px 0; margin: 2px 0;
} }
.stuList li .d5 div { .stuList li .d5 div {
font-size: 14px; font-size: 14px;
color: #111111; color: #111111;
margin: 2px 0; margin: 2px 0;
} }
.stuList .myCourseNName { .stuList .myCourseNName {
width: 25px; width: 25px;
height: 25px; height: 25px;
border-radius: 50%; border-radius: 50%;
...@@ -108,45 +108,45 @@ li { ...@@ -108,45 +108,45 @@ li {
text-align: center; text-align: center;
line-height: 25px; line-height: 25px;
background-color: #004d40; background-color: #004d40;
} }
.stuList .app-image { .stuList .app-image {
background-position: center center; background-position: center center;
width: 50px; width: 50px;
height: 50px; height: 50px;
border-radius: 0%; border-radius: 0%;
float: left; float: left;
margin-right: 8px; margin-right: 8px;
} }
.Sysuser_Date .el-input { .Sysuser_Date .el-input {
width: 100%; width: 100%;
border: none; border: none;
background-color: transparent; background-color: transparent;
} }
.Sysuser_Date .el-input__inner { .Sysuser_Date .el-input__inner {
width: 100%; width: 100%;
border: none; border: none;
background-color: transparent; background-color: transparent;
} }
.Sysuser_Date .el-range-editor .el-range-input { .Sysuser_Date .el-range-editor .el-range-input {
width: 100%; width: 100%;
border: none; border: none;
background-color: transparent; background-color: transparent;
} }
.el-picker-panel { .el-picker-panel {
z-index: 99999 !important; z-index: 99999 !important;
} }
.syster_qDropdown .q-btn__wrapper { .syster_qDropdown .q-btn__wrapper {
padding: 0 3px; padding: 0 3px;
min-height: 0 !important; min-height: 0 !important;
} }
.editOrderDrawerTop { .editOrderDrawerTop {
width: 100%; width: 100%;
height: 50px; height: 50px;
display: flex; display: flex;
...@@ -154,37 +154,32 @@ li { ...@@ -154,37 +154,32 @@ li {
background-color: #f0f5fb; background-color: #f0f5fb;
padding: 5px 10px; padding: 5px 10px;
align-items: center; align-items: center;
} }
.stics {
.stics {
padding: 10px 20px; padding: 10px 20px;
background: #dddee0; background: #dddee0;
border-radius: 4px; border-radius: 4px;
font-size: 13px; font-size: 13px;
color: #000000; color: #000000;
font-weight: bold; font-weight: bold;
} }
.stics .stics-name { .stics .stics-name {
color: #2d2d2d; color: #2d2d2d;
font-weight: 600; font-weight: 600;
margin-right: 10px; margin-right: 10px;
} }
</style> </style>
<template> <template>
<div <div :class="[
:class="[
{ 'page-body stuList': !isComponent }, { 'page-body stuList': !isComponent },
{ 'full-height': isComponent } { 'full-height': isComponent }
]" ]">
>
<div class="row q-mb-md" v-if="source != 1 && !isComponent"> <div class="row q-mb-md" v-if="source != 1 && !isComponent">
<q-space></q-space> <q-space></q-space>
<div style="position: relative"> <div style="position: relative">
<q-btn <q-btn color="accent" label="高级查询" @click="IsShowQuery = true"></q-btn>
color="accent"
label="高级查询"
@click="IsShowQuery = true"
></q-btn>
<q-badge floating rounded color="red">{{ queryNum }}</q-badge> <q-badge floating rounded color="red">{{ queryNum }}</q-badge>
</div> </div>
</div> </div>
...@@ -194,37 +189,13 @@ li { ...@@ -194,37 +189,13 @@ li {
<div class="page-search row items-center flex" v-if="!isComponent"> <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 row wrap q-mr-lg q-col-gutter-md">
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="changeSchool" dense filled v-model="msg.School_Id" class="col-6" option-label="SName"
@input="changeSchool" option-value="SId" :options="SchoolList" emit-value map-options label="校区" />
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>
<div class="col-3" v-if="source != 1"> <div class="col-3" v-if="source != 1">
<q-select <q-select @input="changeCourse" dense filled v-model="msg.CourseId" class="col-6" option-label="CourseName"
@input="changeCourse" option-value="CourseId" use-input :options="CourseList" @filter="filterCourse" emit-value map-options
dense label="课程" clearable>
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> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -235,31 +206,16 @@ li { ...@@ -235,31 +206,16 @@ li {
</q-select> </q-select>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetSearch" dense filled v-model="msg.ClassId" class="col-6" use-input
@input="resetSearch" @filter="filterClass" option-label="ClassName" option-value="ClassId" :options="classList" emit-value
dense map-options label="班级" clearable>
filled <template v-slot:option="{
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, itemProps,
itemEvents, itemEvents,
opt, opt,
selected, selected,
toggleOption toggleOption
}" }">
>
<q-item v-bind="itemProps" v-on="itemEvents"> <q-item v-bind="itemProps" v-on="itemEvents">
<q-item-section> <q-item-section>
<q-item-label v-html="opt.ClassName"></q-item-label> <q-item-label v-html="opt.ClassName"></q-item-label>
...@@ -279,33 +235,12 @@ li { ...@@ -279,33 +235,12 @@ li {
</q-select> </q-select>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-input <q-input @keyup.enter.native="resetSearch" clearable dense filled v-model="msg.GuestName" label="学员姓名"
@keyup.enter.native="resetSearch" @clear="resetSearch" maxlength="20" />
clearable
dense
filled
v-model="msg.GuestName"
label="学员姓名"
@clear="resetSearch"
maxlength="20"
/>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="resetSearch" dense filled v-model="msg.GuestState" class="col-6" option-label="Name"
@input="resetSearch" option-value="Id" use-input :options="GuestStateList" emit-value map-options label="学员状态" clearable>
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> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -316,37 +251,13 @@ li { ...@@ -316,37 +251,13 @@ li {
</q-select> </q-select>
</div> </div>
<div class="col-3"> <div class="col-3">
<q-select <q-select @input="getShaixuanFrom()" dense filled clearable option-value="Id" option-label="Name"
@input="getShaixuanFrom()" v-model="msg.CreateType" :options="customFromList" emit-value map-options label="客户来源" />
dense
filled
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 <q-select filled v-model="msg.StuChannelId" @input="resetSearch" label="收客渠道" :dense="false"
filled :options="StuChannelList" option-label="Name" option-value="Id" emit-value map-options use-input clearable
v-model="msg.StuChannelId" @filter="filterStuChannel">
@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> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -357,21 +268,9 @@ li { ...@@ -357,21 +268,9 @@ li {
</q-select> </q-select>
</div> </div>
<div class="col-3" v-if="msg.CreateType == 2"> <div class="col-3" v-if="msg.CreateType == 2">
<q-select <q-select filled v-model="msg.StuSourceId" :dense="false" :options="customList" use-input label="关联同行"
filled @filter="filterFn" option-label="CustomerName" @input="resetSearch" clearable option-value="CustomerId"
v-model="msg.StuSourceId" emit-value map-options>
: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> <template v-slot:no-option>
<q-item> <q-item>
<q-item-section class="text-grey"> <q-item-section class="text-grey">
...@@ -382,38 +281,14 @@ li { ...@@ -382,38 +281,14 @@ li {
</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 <q-select filled v-model="msg.StuSourceId" :dense="false" @filter="filterEmployee" label="介绍人" use-input
filled :options="myEmployeeList" option-label="EmployeeName" @input="resetSearch" clearable option-value="Id"
v-model="msg.StuSourceId" emit-value map-options />
:dense="false"
@filter="filterEmployee"
label="介绍人"
use-input
:options="myEmployeeList"
option-label="EmployeeName"
@input="resetSearch"
clearable
option-value="Id"
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 <q-select filled v-model="msg.StuSourceId" :dense="false" use-input @filter="filterStudent" label="转介人"
filled :options="MyTransListData" option-label="StuName" @input="resetSearch" clearable option-value="StuId"
v-model="msg.StuSourceId" emit-value map-options />
: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>
</div> </div>
...@@ -424,62 +299,37 @@ li { ...@@ -424,62 +299,37 @@ li {
</div> </div>
<div class="col stics"> <div class="col stics">
<span class="stics-name">退课学员数量</span> <span class="stics-name">退课学员数量</span>
<span style="color: #F72E52" <span style="color: #F72E52">{{ staticObj.DropOutNum ? staticObj.DropOutNum : 0 }}人</span>
>{{ staticObj.DropOutNum ? staticObj.DropOutNum : 0 }}人</span
>
</div> </div>
<div class="col stics"> <div class="col stics">
<span class="stics-name">停课学员数量</span> <span class="stics-name">停课学员数量</span>
<span style="color:#2961FE;" <span style="color:#2961FE;">{{ staticObj.StopClassesNum ? staticObj.StopClassesNum : 0 }}人</span>
>{{ staticObj.StopClassesNum ? staticObj.StopClassesNum : 0 }}人</span
>
</div> </div>
<div class="col stics"> <div class="col stics">
<span class="stics-name">毕业学员数量</span> <span class="stics-name">毕业学员数量</span>
<span>{{ staticObj.GraduateNum ? staticObj.GraduateNum : 0 }}人</span> <span>{{ staticObj.GraduateNum ? staticObj.GraduateNum : 0 }}人</span>
</div> </div>
</div> </div>
<div <div :class="[
:class="[
{ 'page-content': !isComponent }, { 'page-content': !isComponent },
{ 'full-height': isComponent } { 'full-height': isComponent }
]" ]">
> <q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-tow-column-table" :class="[
<q-table
:pagination="msg"
:loading="loading"
no-data-label="暂无相关数据"
flat
class="sticky-tow-column-table"
:class="[
{ 'my-sticky-header-table full-height': isComponent }, { 'my-sticky-header-table full-height': isComponent },
{ 'sticky-right-column-table': !isComponent } { 'sticky-right-column-table': !isComponent }
]" ]" separator="none" :data="data" :columns="columns" row-key="name" :hide-bottom="isComponent">
separator="none"
:data="data"
:columns="columns"
row-key="name"
:hide-bottom="isComponent"
>
<template v-slot:top> <template v-slot:top>
<!-- <div class="col-2 q-table__title">学员名单</div> -->
</template> </template>
<template v-slot:body-cell-ContractNo="props"> <template v-slot:body-cell-ContractNo="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="seeContract(props.row)">
style="color: #f00; cursor: pointer"
@click="seeContract(props.row)"
>
{{ props.row.ContractNo }} {{ props.row.ContractNo }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-GuestName="props"> <template v-slot:body-cell-GuestName="props">
<q-td :props="props"> <q-td :props="props">
<div <div class="text-blue cursor-pointer" @click="getStuRight(props.row)">
class="text-blue cursor-pointer"
@click="getStuRight(props.row)"
>
{{ props.value }} {{ props.value }}
</div> </div>
</q-td> </q-td>
...@@ -488,99 +338,70 @@ li { ...@@ -488,99 +338,70 @@ li {
<template v-slot:body-cell-StuSourceIdName="props"> <template v-slot:body-cell-StuSourceIdName="props">
<q-td :props="props"> <q-td :props="props">
<div> <div>
<span v-if="props.row.CreateType == 2 && props.row.EnterpriseName" <span v-if="props.row.CreateType == 2 && props.row.EnterpriseName">{{ props.row.EnterpriseName }}:</span>
>{{ props.row.EnterpriseName }}:</span
>
{{ props.row.StuSourceIdName }} {{ props.row.StuSourceIdName }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-ClassName="props"> <template v-slot:body-cell-ClassName="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="seeClassDetail(props.row)">
style="color: #f00; cursor: pointer"
@click="seeClassDetail(props.row)"
>
{{ props.row.ClassName }} {{ props.row.ClassName }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-OrderId="props"> <template v-slot:body-cell-OrderId="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 1)">
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 1)"
>
{{ props.row.OrderId }} {{ props.row.OrderId }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Income="props"> <template v-slot:body-cell-Income="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 4)">
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 4)"
>
{{ props.row.Income }} {{ props.row.Income }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-Refund="props"> <template v-slot:body-cell-Refund="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showOrderDetail(props.row, 4)">
style="color: #f00; cursor: pointer"
@click="showOrderDetail(props.row, 4)"
>
{{ props.row.Refund }} {{ props.row.Refund }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-CompleteHours="props"> <template v-slot:body-cell-CompleteHours="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="seeStudentsClassUse(props.row)">
style="color: #f00; cursor: pointer"
@click="seeStudentsClassUse(props.row)"
>
{{ props.row.CompleteHours }} {{ props.row.CompleteHours }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-MakeUpHours="props"> <template v-slot:body-cell-MakeUpHours="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showList(props.row, 1)">
style="color: #f00; cursor: pointer"
@click="showList(props.row, 1)"
>
{{ props.row.MakeUpHours }} {{ props.row.MakeUpHours }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-AbsenceNum="props"> <template v-slot:body-cell-AbsenceNum="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showList(props.row, 2)">
style="color: #f00; cursor: pointer"
@click="showList(props.row, 2)"
>
{{ props.row.AbsenceNum }} {{ props.row.AbsenceNum }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-LeaveNum="props"> <template v-slot:body-cell-LeaveNum="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showList(props.row, 3)">
style="color: #f00; cursor: pointer"
@click="showList(props.row, 3)"
>
{{ props.row.LeaveNum }} {{ props.row.LeaveNum }}
</div> </div>
</q-td> </q-td>
</template> </template>
<template v-slot:body-cell-EventlogNum="props"> <template v-slot:body-cell-EventlogNum="props">
<q-td :props="props"> <q-td :props="props">
<div <div style="color: #f00; cursor: pointer" @click="showEventLog(props.row)">
style="color: #f00; cursor: pointer"
@click="showEventLog(props.row)"
>
{{ props.row.EventlogNum }} {{ props.row.EventlogNum }}
</div> </div>
</q-td> </q-td>
...@@ -594,38 +415,13 @@ li { ...@@ -594,38 +415,13 @@ li {
<template v-slot:body-cell-optioned="props" v-if="!isComponent"> <template v-slot:body-cell-optioned="props" v-if="!isComponent">
<q-td :props="props"> <q-td :props="props">
<div> <div>
<q-btn <q-btn flat size="xs" color="accent" style="font-weight: 400" label="停课" v-if="props.row.GuestState === 1"
flat @click="ShowStopLesson(props.row)" />
size="xs" <q-btn flat size="xs" color="accent" style="font-weight: 400" label="转班" v-if="props.row.GuestState === 1"
color="accent" @click="transferClass(props.row, 1)" />
style="font-weight: 400" <q-btn-dropdown flat size="xs" color="dark" label="更多" style="margin-left: 10px">
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-list>
<q-item <q-item dense clickable v-close-popup @click="showAddEvent(props.row)">
dense
clickable
v-close-popup
@click="showAddEvent(props.row)"
>
<q-item-section> <q-item-section>
<q-item-label overline>添加事件</q-item-label> <q-item-label overline>添加事件</q-item-label>
</q-item-section> </q-item-section>
...@@ -641,124 +437,71 @@ li { ...@@ -641,124 +437,71 @@ li {
</q-td> </q-td>
</template> </template>
<template v-if="!isComponent" v-slot:bottom> <template v-if="!isComponent" v-slot:bottom>
<q-pagination <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="pageCount"
class="full-width justify-end" :input="true" @input="changePage" />
v-model="msg.pageIndex"
color="primary"
:max="pageCount"
:input="true"
@input="changePage"
/>
</template> </template>
</q-table> </q-table>
</div> </div>
<!-- 高级查询 --> <!-- 高级查询 -->
<MoreQuery <MoreQuery v-if="IsShowQuery" :typeEnum="typeEnum" :warnEnum="warnEnum" :saveQuery="msg" @close="closeHandle"
v-if="IsShowQuery" @success="morequery">
:typeEnum="typeEnum"
:warnEnum="warnEnum"
:saveQuery="msg"
@close="closeHandle"
@success="morequery"
>
</MoreQuery> </MoreQuery>
<!-- 停课申请 --> <!-- 停课申请 -->
<StopLesson-form <StopLesson-form v-if="isShowStopLesson" :setObj="stuObj" @success="resetSearch" @close="closeHandle" />
v-if="isShowStopLesson"
:setObj="stuObj"
@success="resetSearch"
@close="closeHandle"
/>
<!-- 转班申请 --> <!-- 转班申请 -->
<transferclass-form <transferclass-form v-if="isShowTransferClass" :save-obj="orderObj" :ChangeType="ChangeType" @close="closeHandle"
v-if="isShowTransferClass" @success="resetSearch"></transferclass-form>
:save-obj="orderObj"
:ChangeType="ChangeType"
@close="closeHandle"
@success="resetSearch"
></transferclass-form>
<!-- 添加事件 --> <!-- 添加事件 -->
<AddEvent-form <AddEvent-form v-if="isShowAddEvent" :setObj="eventObj" @success="resetSearch" @close="closeHandle" />
v-if="isShowAddEvent"
:setObj="eventObj"
@success="resetSearch"
@close="closeHandle"
/>
<!-- 班级详情 --> <!-- 班级详情 -->
<classinfo-form <classinfo-form v-if="isShowClassInfo" :seting-obj="eventObj" @close="closeHandle" @success="refreshPage" />
v-if="isShowClassInfo"
:seting-obj="eventObj"
@close="closeHandle"
@success="refreshPage"
/>
<!-- 订单详情 --> <!-- 订单详情 -->
<myOrder-form <myOrder-form v-if="isShowmyorderForm" :save-obj="eventObj" @close="closeHandle"></myOrder-form>
v-if="isShowmyorderForm"
:save-obj="eventObj"
@close="closeHandle"
></myOrder-form>
<!-- 可补课课时,缺勤次数,请假次数 --> <!-- 可补课课时,缺勤次数,请假次数 -->
<list <list v-if="isShowList" :type="showType" :set-obj="eventObj" @close="closeHandle" />
v-if="isShowList"
:type="showType"
:set-obj="eventObj"
@close="closeHandle"
/>
<!-- 事件记录 --> <!-- 事件记录 -->
<eventLog <eventLog v-if="isShowEventLog" :set-obj="eventObj" @modify="modifyEvent" @close="closeHandle" />
v-if="isShowEventLog" <studentRight-form v-if="isShowStuRight" :isJudgeTrans="isJudgeTrans" :BelongType="BelongType" :save-obj="stuOption"
:set-obj="eventObj" @close="closeStuForm" @success="refreshStuList" @reload="refreshStuList">
@modify="modifyEvent"
@close="closeHandle"
/>
<studentRight-form
v-if="isShowStuRight"
:isJudgeTrans="isJudgeTrans"
:BelongType="BelongType"
:save-obj="stuOption"
@close="closeStuForm"
@success="refreshStuList"
@reload="refreshStuList"
>
</studentRight-form> </studentRight-form>
<!-- 跳课 --> <!-- 跳课 -->
<JumpCourse <JumpCourse v-model="isShowChangeCourse" :saveObj="ChangeCourseObj" @success="refreshPage"></JumpCourse>
v-model="isShowChangeCourse"
:saveObj="ChangeCourseObj"
@success="refreshPage"
></JumpCourse>
</div> </div>
</template> </template>
<script> <script>
import { import {
getSchoolDropdown, getSchoolDropdown,
getClassDropDownList, getClassDropDownList,
getStudentDorpDownList getStudentDorpDownList
} from "../../api/school/index"; } from "../../api/school/index";
import { queryCourseDropdownList } from "../../api/course/index"; import {
import { queryCourseDropdownList
} from "../../api/course/index";
import {
getStuList, getStuList,
getEarlyWarningEnum, getEarlyWarningEnum,
getTypeEnum getTypeEnum
} from "../../api/stuMan/index.js"; } from "../../api/stuMan/index.js";
import { import {
queryGuestStateList, queryGuestStateList,
CreateTypeList, CreateTypeList,
GetStuChannelList, GetStuChannelList,
GetCustomerList GetCustomerList
} from "../../api/sale/sale.js"; } from "../../api/sale/sale.js";
import MoreQuery from "../../components/stuMan/moreQuery.vue"; import MoreQuery from "../../components/stuMan/moreQuery.vue";
import StopLessonForm from "../../components/teacher/stopLessonForm"; import StopLessonForm from "../../components/teacher/stopLessonForm";
import transferclassForm from "../../components/sale/transferclass-form"; //转班信息 import transferclassForm from "../../components/sale/transferclass-form"; //转班信息
import AddEventForm from "../../components/stuMan/addEvent-form.vue"; //转班信息 import AddEventForm from "../../components/stuMan/addEvent-form.vue"; //转班信息
import classinfoForm from "../../components/course/classinfo-form"; //班级详情 import classinfoForm from "../../components/course/classinfo-form"; //班级详情
import myOrderForm from "../../components/sale/myOrder-form"; //订单详情 import myOrderForm from "../../components/sale/myOrder-form"; //订单详情
import list from "../../components/stuMan/makeUpHours.vue"; //可补课课时,缺勤次数,请假次数 import list from "../../components/stuMan/makeUpHours.vue"; //可补课课时,缺勤次数,请假次数
import eventLog from "../../components/stuMan/eventRecord.vue"; //事件记录 import eventLog from "../../components/stuMan/eventRecord.vue"; //事件记录
import studentRightForm from "../../components/school/student/studentRight-form"; import studentRightForm from "../../components/school/student/studentRight-form";
import JumpCourse from "../../components/stuMan/jumpCourse"; import JumpCourse from "../../components/stuMan/jumpCourse";
import { queryEmployee } from "../../api/users/user"; import {
export default { queryEmployee
} from "../../api/users/user";
export default {
props: { props: {
isComponent: { isComponent: {
type: Boolean, type: Boolean,
...@@ -792,7 +535,6 @@ export default { ...@@ -792,7 +535,6 @@ export default {
studentRightForm, studentRightForm,
JumpCourse JumpCourse
}, },
data() { data() {
return { return {
IsShowQuery: false, IsShowQuery: false,
...@@ -820,8 +562,7 @@ export default { ...@@ -820,8 +562,7 @@ export default {
StuSourceId: "" StuSourceId: ""
}, },
pageCount: 0, pageCount: 0,
columns: [ columns: [{
{
name: "Id", name: "Id",
label: "编号", label: "编号",
field: "Id", field: "Id",
...@@ -996,7 +737,6 @@ export default { ...@@ -996,7 +737,6 @@ export default {
field: "EventlogNum", field: "EventlogNum",
align: "left" align: "left"
}, },
{ {
name: "GuestStateStr", name: "GuestStateStr",
label: "状态", label: "状态",
...@@ -1089,7 +829,7 @@ export default { ...@@ -1089,7 +829,7 @@ export default {
}, },
watch: { watch: {
outData: { outData: {
handler: function(val) { handler: function (val) {
if (this.isComponent) { if (this.isComponent) {
this.data = val; this.data = val;
} }
...@@ -1097,7 +837,7 @@ export default { ...@@ -1097,7 +837,7 @@ export default {
deep: true deep: true
}, },
outLoading: { outLoading: {
handler: function(val) { handler: function (val) {
if (this.isComponent) { if (this.isComponent) {
this.loading = val; this.loading = val;
} }
...@@ -1270,7 +1010,7 @@ export default { ...@@ -1270,7 +1010,7 @@ export default {
} }
}); });
}, },
// 筛选课程 //筛选课程
filterCourse(val, update) { filterCourse(val, update) {
update(() => { update(() => {
if (val === "") { if (val === "") {
...@@ -1527,8 +1267,8 @@ export default { ...@@ -1527,8 +1267,8 @@ export default {
this.ChangeCourseObj = item; this.ChangeCourseObj = item;
} }
} }
}; };
</script> </script>
<style lang="sass"> <style lang="sass">
@import url('~assets/css/table.sass') @import url('~assets/css/table.sass')
</style> </style>
\ No newline at end of file
...@@ -38,7 +38,8 @@ ...@@ -38,7 +38,8 @@
</q-td> </q-td>
<template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"> <template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList">
<q-td :key="subIndex+200000" class="assessmentType_td"> <q-td :key="subIndex+200000" class="assessmentType_td">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green" v-if="subItem.LevelScore>0"> <div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green"
v-if="subItem.LevelScore>0">
{{subItem.LevelScore}} {{subItem.LevelScore}}
</q-badge> </q-badge>
</div> </div>
...@@ -60,7 +61,8 @@ ...@@ -60,7 +61,8 @@
</q-td> </q-td>
<template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList"> <template v-for="(subItem,subIndex) in props.row.SubtypeList[cIndex].OptionList">
<q-td :key="subIndex+400000" class="assessmentType_td"> <q-td :key="subIndex+400000" class="assessmentType_td">
<div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green" v-if="subItem.LevelScore>0"> <div style="width:150px;white-space:normal; "> {{subItem.LevelDesc}} <q-badge color="green"
v-if="subItem.LevelScore>0">
{{subItem.LevelScore}} {{subItem.LevelScore}}
</q-badge> </q-badge>
</div> </div>
...@@ -113,7 +115,6 @@ ...@@ -113,7 +115,6 @@
this.columns = []; this.columns = [];
queryAssessmentTypeList(this.msg).then(res => { queryAssessmentTypeList(this.msg).then(res => {
this.loading = false; this.loading = false;
console.log("res", res);
if (res.Code == 1) { if (res.Code == 1) {
this.dataList = res.Data.result; this.dataList = res.Data.result;
this.columns = res.Data.header; this.columns = res.Data.header;
......
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